Skip to content

Commit 76a0bfe

Browse files
authored
Merge pull request #84 from ncss-tech/osd-multiline1
feat: OSD: add detection and logging of multiline formatting in typical pedon
2 parents 28cc477 + a208ff0 commit 76a0bfe

File tree

620 files changed

+14592
-14029
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

620 files changed

+14592
-14029
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Imports: curl, xml2, jsonlite, rvest, stringi, tibble, dplyr, pdftools, data.tab
99
License: GPL-3
1010
Encoding: UTF-8
1111
LazyData: true
12-
RoxygenNote: 7.3.1
12+
RoxygenNote: 7.3.2
1313
Suggests: knitr, rmarkdown, testthat
1414
URL: https://github.com/ncss-tech/SoilKnowledgeBase, https://ncss-tech.github.io/SoilKnowledgeBase
1515
BugReports: https://github.com/ncss-tech/SoilKnowledgeBase/issues

R/create_OSD.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,16 +365,16 @@ validateOSD <- function(logfile, filepath) {
365365
#' @param logfile Path to log file; default: \code{file.path(output_dir, "OSD/OSD.log")}
366366
#' @param input_dir Default: \code{'OSD'}; files matching pattern are listed recursively
367367
#' @param pattern Argument passed to \code{list.files} when \code{osd_files} is not specified
368-
#' @param output_dir Default: \code{'inst/extdata'}; folder to create alphabetical folder structure with JSON files
368+
#' @param output_dir Default: \code{'inst/extdata/OSD'}; folder to create alphabetical folder structure with JSON files
369369
#' @param osd_files Default \code{NULL}; Optional over-ride vector of file names for testing
370370
#'
371371
#' @return A logical vector equal in length to the number of input files.
372372
#' @export
373373
#' @importFrom jsonlite toJSON
374-
osd_to_json <- function(logfile = file.path(output_dir, "OSD/OSD.log"),
374+
osd_to_json <- function(logfile = file.path(output_dir, "OSD.log"),
375375
input_dir = 'OSD',
376376
pattern = "txt",
377-
output_dir = "inst/extdata",
377+
output_dir = "inst/extdata/OSD",
378378
osd_files = NULL) {
379379

380380
if (!is.null(osd_files)) {
@@ -390,7 +390,7 @@ osd_to_json <- function(logfile = file.path(output_dir, "OSD/OSD.log"),
390390

391391
x <- validateOSD(logfile, filepath)
392392

393-
parsed.OSD <- .doParseOSD(x)
393+
parsed.OSD <- .doParseOSD(x, logfile, filepath)
394394

395395
# SPC-style components from parseOSD returned as nested data.frames in JSON
396396
x$SITE <- I(list(parsed.OSD$`site-data`))

R/parseOSD_functions.R

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#' @param x a _list_ result of SoilKnowledgeBase::validateOSD()
1111
#' @keywords internal
1212
#' @noRd
13-
.doParseOSD <- function(x) {
13+
.doParseOSD <- function(x, logfile = "OSD.log", filename = "FOO.txt") {
1414
# # get data
1515
# res <- soilDB:::.getLocalOSD(x, path)
1616
#
@@ -22,10 +22,10 @@
2222
# l[['section-indices']] <- .findSectionIndices(res)
2323

2424
l <- list()
25-
l[['site-data']] <- .extractSiteData(x)
25+
l[['site-data']] <- .extractSiteData(x, logfile, filename)
2626
tp <- strsplit(as.character(x$`TYPICAL PEDON`$content), "\n")
2727
if (length(tp) > 0)
28-
l[['hz-data']] <- .extractHzData(tp[[1]])
28+
l[['hz-data']] <- .extractHzData(tp[[1]], logfile, filename)
2929
else
3030
l[['hz-data']] <- data.frame(name = NA)
3131

@@ -269,7 +269,7 @@
269269

270270
# parse important pieces from sections
271271
# x: list of section chunks
272-
.extractSiteData <- function(x) {
272+
.extractSiteData <- function(x, logfile = "OSD.log", filename = "FOO.txt") {
273273

274274
## drainage class
275275

@@ -302,7 +302,7 @@
302302

303303

304304
#' @importFrom stringi stri_match_all
305-
.extractHzData <- function(tp) {
305+
.extractHzData <- function(tp, logfile = "OSD.log", filename = "FOO.txt") {
306306

307307
# detect horizons with both top and bottom depths
308308
hz.rule <- "([\\^\\'\\/a-zA-Z0-9]+(?: and [\\^\\'\\/a-zA-Z0-9]+)?)\\s*[-=\u2014]+\\s*([Ol0-9.]+)\\s*?(to|-)?\\s+?([Ol0-9.]+)\\s*?(in|inches|cm|centimeters)"
@@ -345,14 +345,23 @@
345345
# note that dry/moist may not always be present
346346
color.rule <- "\\(([Ol0-9]?[\\.]?[Ol0-9]?[B|G|Y|R|N]+) *([Ol0-9\\.]+) */([Ol0-9]*) *\\)\\s?(dry|moist|)"
347347

348-
# ID actual lines of horizon information
349-
hz.idx <- unique(c(grep(hz.rule, tp), grep(hz.rule.no.bottom, tp)))
348+
# eliminate empty lines within typical pedon
349+
tp <- tp[nzchar(trimws(tp))]
350+
351+
# ID starting lines of horizon information
352+
hz.idx <- sort(unique(c(grep(hz.rule, tp), grep(hz.rule.no.bottom, tp))))
350353

351354
# the first line of the TYPICAL PEDON section should not appear in this index
352355
first.line.flag <- which(hz.idx == 1)
353356
if (length(first.line.flag) > 0) {
354357
hz.idx <- hz.idx[-first.line.flag]
355358
}
359+
360+
check.multiline <- diff(hz.idx) > 1
361+
if (any(check.multiline)) {
362+
# multiline typical pedon horizon formatting (needs fix)
363+
logmsg(logfile, paste0("CHECK MULTILINE TYPICAL PEDON: ", filename, " [number of multilines=", sum(check.multiline), "]"))
364+
}
356365

357366
# init empty lists to store hz data and colors
358367
hz.data <- list()
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,74 @@
11
"soilseriesname","errorkind","context","mlraoffice"
2+
"ACKWATER","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
3+
"AMELIA","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
4+
"ANDRY","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
5+
"ANNISTON","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
6+
"BASSFIELD","MULTILINE TYPICAL PEDON","[number of multilines=5]","auburn, al"
7+
"BEARKNOB","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
8+
"BOWMANTOWN","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
9+
"BREWTON","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
210
"BUGLEY","DUPLICATION OF HEADERS","[RANGE IN CHARACTERISTICS:]","auburn, al"
311
"BUGLEY","DUPLICATE STANDARD SECTIONS","[RANGE IN CHARACTERISTICS]","auburn, al"
412
"BURTON","DUPLICATE STANDARD SECTIONS","[ADDITIONAL DATA]","auburn, al"
13+
"BUSSY","MULTILINE TYPICAL PEDON","[number of multilines=7]","auburn, al"
14+
"CANTUCHE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
15+
"CHIPOLA","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
16+
"CHISCA","MULTILINE TYPICAL PEDON","[number of multilines=7]","auburn, al"
17+
"CITICO","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
18+
"CLOUDLAND","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
19+
"COLUMBUS","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
520
"CRAGGEY","DUPLICATE STANDARD SECTIONS","[ADDITIONAL DATA]","auburn, al"
21+
"DAWHOO","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
22+
"DEBUTE","MULTILINE TYPICAL PEDON","[number of multilines=7]","auburn, al"
623
"DUCKBOTTOM","DUPLICATION OF HEADERS","[TAXONOMIC CLASS: Very-fine, kaolinitic, acid, thermic Fluvaquentic Endoaquepts]","auburn, al"
24+
"DURALDE","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
25+
"ELLZEY","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
26+
"ELRED","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
27+
"ENCROW","MULTILINE TYPICAL PEDON","[number of multilines=2]","auburn, al"
28+
"EVANGELINE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
29+
"FLEMINGTON","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
30+
"FRED","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
31+
"FREDONIA","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
32+
"GAINESVILLE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
33+
"GOODWILL","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
34+
"GRASMERE","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
735
"GUNDY","DUPLICATE STANDARD SECTIONS","[REMARKS]","auburn, al"
36+
"HANCEVILLE","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
37+
"HEIGHTS","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
38+
"HILOLO","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
39+
"HOBCAW","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
40+
"HOBONNY","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
41+
"KETONA","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
42+
"KIAWAH","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
43+
"LOCUST","MULTILINE TYPICAL PEDON","[number of multilines=5]","auburn, al"
844
"MICAVILLE","DUPLICATE STANDARD SECTIONS","[ADDITIONAL DATA]","auburn, al"
945
"MIMMS","DUPLICATION OF HEADERS","[TAXONOMIC CLASS: Fine, kaolinitic, acid, thermic Fluvaquentic Endoaquepts]","auburn, al"
46+
"MONACAN","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
47+
"MONTEOCHA","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
48+
"MUCKALEE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
49+
"NAHUNTA","MULTILINE TYPICAL PEDON","[number of multilines=2]","auburn, al"
50+
"NECTAR","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
51+
"NEMOURS","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
52+
"NOBLETON","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
53+
"OLENO","MULTILINE TYPICAL PEDON","[number of multilines=6]","auburn, al"
54+
"PECKISH","MULTILINE TYPICAL PEDON","[number of multilines=8]","auburn, al"
55+
"PERDIDO","MULTILINE TYPICAL PEDON","[number of multilines=2]","auburn, al"
56+
"PILGRIMS","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
57+
"POUNCEY","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
58+
"RION","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
59+
"SATSUMA","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
60+
"SHADYGROVE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
61+
"SOLWAY","MULTILINE TYPICAL PEDON","[number of multilines=5]","auburn, al"
62+
"STERRETT","MULTILINE TYPICAL PEDON","[number of multilines=4]","auburn, al"
63+
"STUCKEY","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
64+
"TADLOCK","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
1065
"TILLERY","DUPLICATE STANDARD SECTIONS","[ADDITIONAL DATA]","auburn, al"
66+
"TILLOU","MULTILINE TYPICAL PEDON","[number of multilines=7]","auburn, al"
67+
"TOTIER","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
68+
"TUCKAHOE","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
69+
"VERDUN","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
70+
"VERO","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
71+
"WADMALAW","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"
72+
"WESTWEGO","MULTILINE TYPICAL PEDON","[number of multilines=7]","auburn, al"
73+
"WOLFGAP","MULTILINE TYPICAL PEDON","[number of multilines=3]","auburn, al"
74+
"YADKIN","MULTILINE TYPICAL PEDON","[number of multilines=1]","auburn, al"

inst/extdata/OSD-error-reporting/RO/bozeman-hz.csv

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@
7676
"BOSSBURG","30a2",137,173,"2.5Y","6","2","2.5Y","4","2"
7777
"BROADAX","Apl",0,10,"10YR","4","2","10YR","2","2"
7878
"BROMO","Al",0,10,"l0YR","6",NA,"l0YR","3",NA
79-
"BROMO","AB",10,10,"l0YR","5","2","l0YR","3","2"
80-
"BROMO","0",10,58,NA,NA,NA,NA,NA,NA
79+
"BROMO","0",10,10,NA,NA,NA,NA,NA,NA
80+
"BROMO","AB",10,58,"l0YR","5","2","l0YR","3","2"
8181
"BROMO","2Bsb1",58,89,"l0YR","6","4","l0YR","3","3"
8282
"BROMO","2Bsb2",89,152,"l0YR","7","4","l0YR","4","4"
8383
"BROMO","A2",NA,10,"l0YR","5","3","l0YR","3","3"
@@ -104,6 +104,7 @@
104104
"CHICKAMAN","0i",0,5,NA,NA,NA,NA,NA,NA
105105
"CINEBAR","0a",3,4,NA,NA,NA,NA,NA,NA
106106
"CINEBAR","0i",4,3,NA,NA,NA,NA,NA,NA
107+
"CINNAMON","Oa",8,8,NA,NA,NA,NA,NA,NA
107108
"CINNAMON","Oi",10,8,NA,NA,NA,NA,NA,NA
108109
"CISPUS","A",0,5,"l0YR","5","2","l0YR","3","2"
109110
"CISPUS","2Bwb",109,152,"l0YR","6","3","l0YR","4","4"
@@ -125,9 +126,9 @@
125126
"CRACKERCREEK","2Btbl",41,53,"10YR","5","4","10YR","3","3"
126127
"CRIMS","20e1",23,51,"10YR","3","1","10YR","2","1"
127128
"CRIMS","20e2",51,102,"10YR","3","1","2.5Y","3","2"
128-
"CRINKER","02",3,8,NA,NA,NA,NA,NA,NA
129+
"CRINKER","02",3,3,NA,NA,NA,NA,NA,NA
129130
"CRINKER","01",8,3,NA,NA,NA,NA,NA,NA
130-
"CROQUIB","0",5,15,NA,NA,NA,NA,NA,NA
131+
"CROQUIB","0",5,5,NA,NA,NA,NA,NA,NA
131132
"CRUTCH","0i",0,3,NA,NA,NA,NA,NA,NA
132133
"CRUTCH","0e",3,5,NA,NA,NA,NA,NA,NA
133134
"CULVING","Bwl",13,23,"10YR","6","3","10YR","4","2"
@@ -182,7 +183,7 @@
182183
"FELTNER","Cca",30,41,"l0YR","6","4","10YR","5","4"
183184
"FERN CLIFF","02",5,0,NA,NA,NA,NA,NA,NA
184185
"FERN CLIFF","O1",10,5,NA,NA,NA,NA,NA,NA
185-
"FERNHAVEN","0i",10,30,NA,NA,NA,NA,NA,NA
186+
"FERNHAVEN","0i",10,10,NA,NA,NA,NA,NA,NA
186187
"FERTEG","0",8,13,NA,NA,NA,NA,NA,NA
187188
"FIVES","01",5,10,NA,NA,NA,NA,NA,NA
188189
"FLANNERY","Oi",4,3,NA,NA,NA,NA,NA,NA
@@ -191,7 +192,7 @@
191192
"FORDCREEK","Btl",15,41,"10YR","6","3","10YR","3","4"
192193
"FORDCREEK","Cr",104,NA,NA,NA,NA,NA,NA,NA
193194
"FORDCREEK","Al",NA,8,"10YR","5","3","10YR","3","3"
194-
"FORSYTH","0a",3,5,NA,NA,NA,NA,NA,NA
195+
"FORSYTH","0a",3,3,NA,NA,NA,NA,NA,NA
195196
"FORSYTH","0e",5,3,NA,NA,NA,NA,NA,NA
196197
"FORTRAN","A",0,8,"l0YR","5","3","l0YR","3","3"
197198
"FORTRAN","Oi",8,3,NA,NA,NA,NA,NA,NA
@@ -228,10 +229,10 @@
228229
"HIGHHORN","0i",0,8,NA,NA,NA,NA,NA,NA
229230
"HOOTER","0e",5,0,NA,NA,NA,NA,NA,NA
230231
"HOOTER","0i",8,5,NA,NA,NA,NA,NA,NA
231-
"HOVDE","A",0,23,NA,NA,NA,"l0YR","3","2"
232-
"HOVDE","2C4",99,152,"l0YR","4","2","l0YR","3","2"
233-
"HOVDE","2C2",NA,74,"l0YR","5","3","l0YR","4","3"
234-
"HOVDE","0i",NA,1554,NA,NA,NA,NA,NA,NA
232+
"HOVDE","A",0,9,NA,NA,NA,"l0YR","3","2"
233+
"HOVDE","2C4",39,60,"l0YR","4","2","l0YR","3","2"
234+
"HOVDE","0i",NA,NA,NA,NA,NA,NA,NA,NA
235+
"HOVDE","2C2",NA,29,"l0YR","5","3","l0YR","4","3"
235236
"HOZOMEEN","Oi",15,13,NA,NA,NA,NA,NA,NA
236237
"HUCKLE","Bwl",10,20,"10YR","5","4","10YR","3","4"
237238
"HUMSKEL","01",3,5,NA,NA,NA,NA,NA,NA
@@ -242,7 +243,7 @@
242243
"ILLABOT","01",8,3,NA,NA,NA,NA,NA,NA
243244
"INDART","0i",0,8,NA,NA,NA,NA,NA,NA
244245
"INDART","0e",8,10,NA,NA,NA,NA,NA,NA
245-
"JACKMAN","0i",10,38,NA,NA,NA,NA,NA,NA
246+
"JACKMAN","0i",10,10,NA,NA,NA,NA,NA,NA
246247
"JACKNIFE","Btl",48,86,"7.5YR","3","2","7.5YR","3","2"
247248
"JENKINS","02",3,0,NA,NA,NA,NA,NA,NA
248249
"JENKINS","01",5,8,NA,NA,NA,NA,NA,NA
@@ -282,15 +283,17 @@
282283
"LAGALL","0i",0,3,NA,NA,NA,NA,NA,NA
283284
"LANTERN","0i",0,5,NA,NA,NA,NA,NA,NA
284285
"LASSEL","Clca",30,46,"10YR","6","3","10YR","5","3"
285-
"LASTANCE","0e",3,5,NA,NA,NA,"10YR","2","1"
286-
"LASTANCE","0i",5,30,NA,NA,NA,NA,NA,NA
286+
"LASTANCE","0e",3,3,NA,NA,NA,"10YR","2","1"
287+
"LASTANCE","0i",5,5,NA,NA,NA,NA,NA,NA
287288
"LEADVILLE","0i",0,8,NA,NA,NA,NA,NA,NA
288289
"LEADVILLE","0e",8,10,NA,NA,NA,NA,NA,NA
289290
"LEGAULT","0e",0,3,NA,NA,NA,NA,NA,NA
290291
"LEMAH","0e",0,1,NA,NA,NA,NA,NA,NA
292+
"LEMOLO","Oa",13,13,NA,NA,NA,"10YR","2","1"
291293
"LEMOLO","Oi",15,13,NA,NA,NA,NA,NA,NA
292294
"LITTLESALMON","2Cl",79,109,"10YR","5","2","10YR","6","2"
293295
"LOLOPEAK","0i",0,8,NA,NA,NA,NA,NA,NA
296+
"LONESTAR","Oa",5,5,NA,NA,NA,NA,NA,NA
294297
"LONESTAR","Oi",8,5,NA,NA,NA,NA,NA,NA
295298
"LOPER","Oa",5,0,NA,NA,NA,NA,NA,NA
296299
"LOWERCREEK","01 and 02",3,8,NA,NA,NA,NA,NA,NA
@@ -333,12 +336,12 @@
333336
"NATKIM","0i",0,1,NA,NA,NA,NA,NA,NA
334337
"NATKIM","0e",1,3,NA,NA,NA,NA,NA,NA
335338
"NELSON","Alp",0,23,"10YR","6","2","10YR","4","2"
336-
"NETRAC","Al",0,5,"l0YR","5",NA,"l0YR","3",NA
337-
"NETRAC","Cl",5,18,"l0YR","8","3","l0YR","5",NA
338-
"NETRAC","2Alb",18,NA,"l0YR","4","3","l0YR","3","2"
339+
"NETRAC","Al",0,2,"l0YR","5",NA,"l0YR","3",NA
340+
"NETRAC","Cl",2,7,"l0YR","8","3","l0YR","5",NA
341+
"NETRAC","2Alb",7,NA,"l0YR","4","3","l0YR","3","2"
342+
"NETRAC","0l",NA,NA,NA,NA,NA,NA,NA,NA
339343
"NETRAC","2B2b",NA,NA,"l0YR","5","3","l0YR","3","4"
340-
"NETRAC","2C2",NA,152,"l0YR","4","3","l0YR","3","4"
341-
"NETRAC","0l",NA,1554,NA,NA,NA,NA,NA,NA
344+
"NETRAC","2C2",NA,60,"l0YR","4","3","l0YR","3","4"
342345
"NEVINE","0i",0,3,NA,NA,NA,NA,NA,NA
343346
"NEVINE","A",3,3,"10YR","6","2","10YR","4","2"
344347
"NEWAUKUM","A",0,23,"l0YR","4","3","l0YR","2","2"
@@ -392,6 +395,7 @@
392395
"PLATORO","B3ca",38,46,"1OYR","5","3","1OYR","4","3"
393396
"PLATORO","Clca",46,66,"10YR","5","3","10YR","4","3"
394397
"POOSE","Oe",5,0,NA,NA,NA,NA,NA,NA
398+
"POTCHUB","Oa",18,18,NA,NA,NA,NA,NA,NA
395399
"POTCHUB","Oi",23,18,NA,NA,NA,NA,NA,NA
396400
"POTCHUB","Bsl",33,43,"7.5YR","7","6","7.5YR","5","6"
397401
"PRATHER","Bt1",NA,66,"10YR","5","8","7.5YR","4","4"
@@ -422,11 +426,11 @@
422426
"RARICK","02",5,8,NA,NA,NA,NA,NA,NA
423427
"RARICK","01",8,5,NA,NA,NA,NA,NA,NA
424428
"RATON","Al",0,13,"10YR","3","2","10YR","2","2"
425-
"RAUGHT","Al",0,5,"5YR","4","2","5YR","3","2"
426-
"RAUGHT","AB",18,NA,"5YR","5","3","5YR","3","3"
429+
"RAUGHT","Al",0,2,"5YR","4","2","5YR","3","2"
430+
"RAUGHT","AB",7,NA,"5YR","5","3","5YR","3","3"
431+
"RAUGHT","Oe",NA,NA,NA,NA,NA,NA,NA,NA
427432
"RAUGHT","BA",NA,NA,"5YR","5","4","5YR","3","4"
428-
"RAUGHT","Bt",NA,165,"5YR","5","4","2.5YR","3","6"
429-
"RAUGHT","Oe",NA,1554,NA,NA,NA,NA,NA,NA
433+
"RAUGHT","Bt",NA,65,"5YR","5","4","2.5YR","3","6"
430434
"RAWAH","Clca",51,76,"2.5YR","6","4","2.5YR","5","4"
431435
"REDCLOUD","C1ca",56,91,"1OYR","7","3","1OYR","5","3"
432436
"REDCLOUD","A1",NA,30,"7.5YR","5","3","7.5YR","3","3"
@@ -435,8 +439,8 @@
435439
"REVEL","Bs",10,89,"l0YR","5","4","7.5YR","4","4"
436440
"REVEL","2Cr",89,NA,NA,NA,NA,NA,NA,NA
437441
"REVEL","Oi",NA,1,NA,NA,NA,NA,NA,NA
442+
"REVEL","Oa",NA,NA,NA,NA,NA,NA,NA,NA
438443
"REVEL","C",NA,89,"l0YR","6","4","l0YR","4","4"
439-
"REVEL","Oa",NA,1554,NA,NA,NA,NA,NA,NA
440444
"RINEARSON","0",3,8,NA,NA,NA,NA,NA,NA
441445
"RINKER","0a",3,5,NA,NA,NA,NA,NA,NA
442446
"RINKER","0i",13,3,NA,NA,NA,NA,NA,NA
@@ -463,13 +467,13 @@
463467
"SARATON","A1",NA,13,"7.5YR","5","4","7.5YR","4","4"
464468
"SAUK","0a",3,8,NA,NA,NA,NA,NA,NA
465469
"SAUK","0i",10,3,NA,NA,NA,NA,NA,NA
466-
"SAUVOLA","A",0,66,"l0YR","3","2",NA,NA,NA
467-
"SAUVOLA","Bt2",66,81,"l0YR","5","3",NA,NA,NA
468-
"SAUVOLA","Bt3",81,109,"l0YR","5","3",NA,NA,NA
469-
"SAUVOLA","BC",109,152,"l0YR","5","3",NA,NA,NA
470+
"SAUVOLA","A",0,26,"l0YR","3","2",NA,NA,NA
471+
"SAUVOLA","Bt2",26,32,"l0YR","5","3",NA,NA,NA
472+
"SAUVOLA","Bt3",32,43,"l0YR","5","3",NA,NA,NA
473+
"SAUVOLA","BC",43,60,"l0YR","5","3",NA,NA,NA
474+
"SAUVOLA","Oe",NA,NA,NA,NA,NA,NA,NA,NA
470475
"SAUVOLA","ABt",NA,NA,"l0YR","3","3",NA,NA,NA
471-
"SAUVOLA","Bt1",NA,66,"l0YR","5","3",NA,NA,NA
472-
"SAUVOLA","Oe",NA,1554,NA,NA,NA,NA,NA,NA
476+
"SAUVOLA","Bt1",NA,26,"l0YR","5","3",NA,NA,NA
473477
"SAWATCH","01",15,20,NA,NA,NA,NA,NA,NA
474478
"SAWATCH","Allg",NA,20,"10YR","4","2","7.5YR","5","6"
475479
"SAXON","Oi",23,10,NA,NA,NA,NA,NA,NA
@@ -508,8 +512,8 @@
508512
"SKATE","B2lir",6,18,"l0YR","5","4","l0YR","4","3"
509513
"SKATE","B22ir",18,99,"l0YR","5","8","7.5YR","5","8"
510514
"SKATE","3Cl",99,124,NA,NA,NA,"2.5Y","4","4"
515+
"SKATE","0l and 02",NA,NA,NA,NA,NA,NA,NA,NA
511516
"SKATE","2B2irb",NA,99,"l0YR","6","6","l0YR","4","6"
512-
"SKATE","0l and 02",NA,1554,NA,NA,NA,NA,NA,NA
513517
"SKOOKUMHOUSE","0i",3,28,NA,NA,NA,NA,NA,NA
514518
"SKYKOMISH","Oi",10,8,NA,NA,NA,NA,NA,NA
515519
"SLY","0i",0,2,NA,NA,NA,NA,NA,NA
@@ -518,20 +522,21 @@
518522
"SNOHOMISH","Apl",0,18,"10YR","6","2","10YR","3","2"
519523
"SODACREEK","Oi",3,0,NA,NA,NA,NA,NA,NA
520524
"SOLO","Oe",5,0,NA,NA,NA,NA,NA,NA
521-
"SORENSEN","Oi",NA,1554,NA,NA,NA,NA,NA,NA
522525
"SPANA","2Cl",74,91,"10YR","6","2","10YR","4","2"
523526
"SPIEDEN","Cl",91,122,"2.5Y","6","3","2.5Y","3","3"
524527
"SPOKEL","0i",0,3,NA,NA,NA,NA,NA,NA
525528
"SPOKEL","0e",3,5,NA,NA,NA,NA,NA,NA
529+
"SPRINGSTEEN","Oa",5,5,NA,NA,NA,NA,NA,NA
526530
"SPRINGSTEEN","Oi",13,5,NA,NA,NA,NA,NA,NA
527-
"SQUALICUM","A",0,8,"l0YR","5","3","l0YR","3","2"
528-
"SQUALICUM","Bs1",8,76,"l0YR","7","6","l0YR","4","6"
529-
"SQUALICUM","Bs2",NA,76,"l0YR","7","6","l0YR","3","6"
530-
"SQUALICUM","Oi",NA,1554,NA,NA,NA,NA,NA,NA
531-
"SQUALLY","Al",0,160,"7.5YR","5","4","7.5YR","3","3"
532-
"SQUALLY","C",160,190,"l0YR","6","3","l0YR","4","3"
533-
"SQUALLY","B2",NA,160,"l0YR","6","6","5YR","3","4"
534-
"SQUALLY","0l",NA,1554,NA,NA,NA,NA,NA,NA
531+
"SQUALICUM","A",0,3,"l0YR","5","3","l0YR","3","2"
532+
"SQUALICUM","Bs1",3,30,"l0YR","7","6","l0YR","4","6"
533+
"SQUALICUM","Oi",NA,NA,NA,NA,NA,NA,NA,NA
534+
"SQUALICUM","Bs2",NA,30,"l0YR","7","6","l0YR","3","6"
535+
"SQUALLY","Al",0,63,"7.5YR","5","4","7.5YR","3","3"
536+
"SQUALLY","C",63,75,"l0YR","6","3","l0YR","4","3"
537+
"SQUALLY","0l",NA,NA,NA,NA,NA,NA,NA,NA
538+
"SQUALLY","B2",NA,63,"l0YR","6","6","5YR","3","4"
539+
"SQUIRES","Oa",3,3,NA,NA,NA,NA,NA,NA
535540
"ST. ELMO","Clca",25,76,"10YR","7","3",NA,NA,NA
536541
"ST. ELMO","A1",NA,25,"7.5YR","5","2",NA,NA,NA
537542
"ST. MARTIN","0i",5,10,NA,NA,NA,NA,NA,NA
@@ -642,6 +647,7 @@
642647
"WARRENTON","0",8,28,NA,NA,NA,"N","2",NA
643648
"WEDGEMONT","Bsl",5,51,"10YR","7","3","10YR","5","3"
644649
"WELCOME","E",0,5,NA,NA,NA,"l0YR","4","3"
650+
"WELCOME","Oa",5,5,NA,NA,NA,NA,NA,NA
645651
"WELCOME","Bs1",5,15,NA,NA,NA,"l0YR","3","4"
646652
"WELCOME","Oi",8,5,NA,NA,NA,NA,NA,NA
647653
"WELCOME","Bs2",15,69,NA,NA,NA,"l0YR","3","6"

0 commit comments

Comments
 (0)