]> git.openstreetmap.org Git - nominatim.git/blob - utils/tigerAddressImport.py
timestamp info message and repeat warnings at end
[nominatim.git] / utils / tigerAddressImport.py
1 #!/usr/bin/python
2 # Tiger road data to OSM conversion script
3 # Creates Karlsruhe-style address ways beside the main way
4 # based on the Massachusetts GIS script by christopher schmidt
5
6 #BUGS:
7 # On very tight curves, a loop may be generated in the address way.
8 # It would be nice if the ends of the address ways were not pulled back from dead ends
9
10 VERSION="0.3"
11 # Version 0.3 is optimized for the tiger road conversion
12
13 # Tag Source  = iSource + _import_v + version + _ + date and time
14 iSource="tiger"
15 # Tag Attribution = iAttrib
16 iAttrib="tiger"
17
18 # Ways that include these mtfccs should not be uploaded
19 # H1100 Connector
20 # H3010 Stream/River
21 # H3013 Braided Stream
22 # H3020 Canal, Ditch or Aqueduct
23 # L4130 Point-to-Point Line
24 # L4140 Property/Parcel Line (Including PLSS)
25 # P0001 Nonvisible Linear Legal/Statistical Boundary
26 # P0002 Perennial Shoreline
27 # P0003 Intermittent Shoreline
28 # P0004 Other non-visible bounding Edge (e.g., Census water boundary, boundary of an areal feature)
29
30
31 ignoremtfcc = [ "H1100", "H3010", "H3013", "H3020", "L4130", "L4140", "P0001", "P0002", "P0003", "P0004" ]
32
33 #Files will be split when longer than this number of nodes
34 maxNodes = 300000
35
36 # Set the maximum length of a way (in nodes) before it is split into
37 # shorter ways
38 Max_Waylength = 500
39
40 # Sets the distance that the address ways should be from the main way, in feet.
41 address_distance = 30
42
43 # Sets the distance that the ends of the address ways should be pulled back from the ends of the main way, in feet
44 address_pullback = 45
45
46 try:
47     from osgeo import ogr
48     from osgeo import osr
49 except:
50     import ogr
51     import osr
52
53 # ====================================
54 # Edit parse_shp_for_osm section to fit your data!
55 # change poFeature.GetField("    ") to contain only the shape column names for the data you want
56 # and  tags["   "] to match the osm tag names you wish to use for that data.
57 # some tags will require changing a number to a meaningful value like the Highway tag.  See the metadata for the meaning of these tags.
58 # For any measurements be sure to check the unit value of the original data, and convert if needed to the expected unit for osm.
59 # ====================================
60
61 # Long name, short name, ISO-3166-1 alpha-2
62 # from http://www.census.gov/geo/www/ansi/statetables.html
63 fipscodes = {
64     '01' : ('Alabama', 'AL', 'US'),
65     '02' : ('Alaska', 'AK', 'US'),
66     '04' : ('Arizona', 'AZ', 'US'),
67     '05' : ('Arkansas', 'AR', 'US'),
68     '06' : ('California', 'CA', 'US'),
69     '08' : ('Colorado', 'CO', 'US'),
70     '09' : ('Connecticut', 'CT', 'US'),
71     '10' : ('Delaware', 'DE', 'US'),
72     '11' : ('District of Columbia', 'DC', 'US'),
73     '12' : ('Florida', 'FL', 'US'),
74     '13' : ('Georgia', 'GA', 'US'),
75     '15' : ('Hawaii', 'HI', 'US'),
76     '16' : ('Idaho', 'ID', 'US'),
77     '17' : ('Illinois', 'IL', 'US'),
78     '18' : ('Indiana', 'IN', 'US'),
79     '19' : ('Iowa', 'IA', 'US'),
80     '20' : ('Kansas', 'KS', 'US'),
81     '21' : ('Kentucky', 'KY', 'US'),
82     '22' : ('Louisiana', 'LA', 'US'),
83     '23' : ('Maine', 'ME', 'US'),
84     '24' : ('Maryland', 'MD', 'US'),
85     '25' : ('Massachusetts', 'MA', 'US'),
86     '26' : ('Michigan', 'MI', 'US'),
87     '27' : ('Minnesota', 'MN', 'US'),
88     '28' : ('Mississippi', 'MS', 'US'),
89     '29' : ('Missouri', 'MO', 'US'),
90     '30' : ('Montana', 'MT', 'US'),
91     '31' : ('Nebraska', 'NE', 'US'),
92     '32' : ('Nevada', 'NV', 'US'),
93     '33' : ('New Hampshire', 'NH', 'US'),
94     '34' : ('New Jersey', 'NJ', 'US'),
95     '35' : ('New Mexico', 'NM', 'US'),
96     '36' : ('New York', 'NY', 'US'),
97     '37' : ('North Carolina', 'NC', 'US'),
98     '38' : ('North Dakota', 'ND', 'US'),
99     '39' : ('Ohio', 'OH', 'US'),
100     '40' : ('Oklahoma', 'OK', 'US'),
101     '41' : ('Oregon', 'OR', 'US'),
102     '42' : ('Pennsylvania', 'PA', 'US'),
103     '44' : ('Rhode Island', 'RI', 'US'),
104     '45' : ('South Carolina', 'SC', 'US'),
105     '46' : ('South Dakota', 'SD', 'US'),
106     '47' : ('Tennessee', 'TN', 'US'),
107     '48' : ('Texas', 'TX', 'US'),
108     '49' : ('Utah', 'UT', 'US'),
109     '50' : ('Vermont', 'VT', 'US'),
110     '51' : ('Virginia', 'VA', 'US'),
111     '53' : ('Washington', 'WA', 'US'),
112     '54' : ('West Virginia', 'WV', 'US'),
113     '55' : ('Wisconsin', 'WI', 'US'),
114     '56' : ('Wyoming', 'WY', 'US'),
115     # Outlying areas w/census data
116     '60' : ('American Samoa', 'AS', 'AS'),
117     '66' : ('Guam', 'GU', 'GU'),
118     '69' : ('Commonwealth of the Northern Mariana Islands', 'MP', 'MP'),
119     '72' : ('Puerto Rico', 'PR', 'PR'),
120     '78' : ('U.S. Virgin Islands', 'VI', 'VI'),
121     }
122
123 # This was generated with the following:
124 # wget http://www.census.gov/datamap/fipslist/AllSt.txt
125 # cat AllSt.txt  | grep '^                [0-9]' | awk "{printf \"'%s' : '%s' ,\\n\", \$1, substr(\$0, 31)}" | > countyfips.py
126
127 county_fips = {
128 '01000' : 'ALABAMA' ,
129 '01001' : 'Autauga, AL' ,
130 '01003' : 'Baldwin, AL' ,
131 '01005' : 'Barbour, AL' ,
132 '01007' : 'Bibb, AL' ,
133 '01009' : 'Blount, AL' ,
134 '01011' : 'Bullock, AL' ,
135 '01013' : 'Butler, AL' ,
136 '01015' : 'Calhoun, AL' ,
137 '01017' : 'Chambers, AL' ,
138 '01019' : 'Cherokee, AL' ,
139 '01021' : 'Chilton, AL' ,
140 '01023' : 'Choctaw, AL' ,
141 '01025' : 'Clarke, AL' ,
142 '01027' : 'Clay, AL' ,
143 '01029' : 'Cleburne, AL' ,
144 '01031' : 'Coffee, AL' ,
145 '01033' : 'Colbert, AL' ,
146 '01035' : 'Conecuh, AL' ,
147 '01037' : 'Coosa, AL' ,
148 '01039' : 'Covington, AL' ,
149 '01041' : 'Crenshaw, AL' ,
150 '01043' : 'Cullman, AL' ,
151 '01045' : 'Dale, AL' ,
152 '01047' : 'Dallas, AL' ,
153 '01049' : 'De Kalb, AL' ,
154 '01051' : 'Elmore, AL' ,
155 '01053' : 'Escambia, AL' ,
156 '01055' : 'Etowah, AL' ,
157 '01057' : 'Fayette, AL' ,
158 '01059' : 'Franklin, AL' ,
159 '01061' : 'Geneva, AL' ,
160 '01063' : 'Greene, AL' ,
161 '01065' : 'Hale, AL' ,
162 '01067' : 'Henry, AL' ,
163 '01069' : 'Houston, AL' ,
164 '01071' : 'Jackson, AL' ,
165 '01073' : 'Jefferson, AL' ,
166 '01075' : 'Lamar, AL' ,
167 '01077' : 'Lauderdale, AL' ,
168 '01079' : 'Lawrence, AL' ,
169 '01081' : 'Lee, AL' ,
170 '01083' : 'Limestone, AL' ,
171 '01085' : 'Lowndes, AL' ,
172 '01087' : 'Macon, AL' ,
173 '01089' : 'Madison, AL' ,
174 '01091' : 'Marengo, AL' ,
175 '01093' : 'Marion, AL' ,
176 '01095' : 'Marshall, AL' ,
177 '01097' : 'Mobile, AL' ,
178 '01099' : 'Monroe, AL' ,
179 '01101' : 'Montgomery, AL' ,
180 '01103' : 'Morgan, AL' ,
181 '01105' : 'Perry, AL' ,
182 '01107' : 'Pickens, AL' ,
183 '01109' : 'Pike, AL' ,
184 '01111' : 'Randolph, AL' ,
185 '01113' : 'Russell, AL' ,
186 '01115' : 'St. Clair, AL' ,
187 '01117' : 'Shelby, AL' ,
188 '01119' : 'Sumter, AL' ,
189 '01121' : 'Talladega, AL' ,
190 '01123' : 'Tallapoosa, AL' ,
191 '01125' : 'Tuscaloosa, AL' ,
192 '01127' : 'Walker, AL' ,
193 '01129' : 'Washington, AL' ,
194 '01131' : 'Wilcox, AL' ,
195 '01133' : 'Winston, AL' ,
196 '02000' : 'ALASKA' ,
197 '02013' : 'Aleutians East, AK' ,
198 '02016' : 'Aleutians West, AK' ,
199 '02020' : 'Anchorage, AK' ,
200 '02050' : 'Bethel, AK' ,
201 '02060' : 'Bristol Bay, AK' ,
202 '02068' : 'Denali, AK' ,
203 '02070' : 'Dillingham, AK' ,
204 '02090' : 'Fairbanks North Star, AK' ,
205 '02100' : 'Haines, AK' ,
206 '02105' : 'Hoonah-Angoon Census Area, AK' ,
207 '02110' : 'Juneau, AK' ,
208 '02122' : 'Kenai Peninsula, AK' ,
209 '02130' : 'Ketchikan Gateway, AK' ,
210 '02150' : 'Kodiak Island, AK' ,
211 '02158' : 'Kusilvak Census Area, AK' ,
212 '02164' : 'Lake and Peninsula, AK' ,
213 '02170' : 'Matanuska-Susitna, AK' ,
214 '02180' : 'Nome, AK' ,
215 '02185' : 'North Slope, AK' ,
216 '02188' : 'Northwest Arctic, AK' ,
217 '02195' : 'Petersburg, AK' ,
218 '02198' : 'Prince of Wales-Hyder Census Area, AK' ,
219 '02201' : 'Prince of Wales-Outer Ketchikan, AK' ,
220 '02220' : 'Sitka, AK' ,
221 '02230' : 'Skagway, AK' ,
222 '02232' : 'Skagway-Hoonah-Angoon, AK' ,
223 '02240' : 'Southeast Fairbanks, AK' ,
224 '02261' : 'Valdez-Cordova, AK' ,
225 '02270' : 'Wade Hampton, AK' ,
226 '02275' : 'Wrangell City and Borough, AK' ,
227 '02280' : 'Wrangell-Petersburg, AK' ,
228 '02282' : 'Yakutat, AK' ,
229 '02290' : 'Yukon-Koyukuk, AK' ,
230 '04001' : 'Apache, AZ' ,
231 '04003' : 'Cochise, AZ' ,
232 '04005' : 'Coconino, AZ' ,
233 '04007' : 'Gila, AZ' ,
234 '04009' : 'Graham, AZ' ,
235 '04011' : 'Greenlee, AZ' ,
236 '04012' : 'La Paz, AZ' ,
237 '04013' : 'Maricopa, AZ' ,
238 '04015' : 'Mohave, AZ' ,
239 '04017' : 'Navajo, AZ' ,
240 '04019' : 'Pima, AZ' ,
241 '04021' : 'Pinal, AZ' ,
242 '04023' : 'Santa Cruz, AZ' ,
243 '04025' : 'Yavapai, AZ' ,
244 '04027' : 'Yuma, AZ' ,
245 '05000' : 'ARKANSAS' ,
246 '05001' : 'Arkansas, AR' ,
247 '05003' : 'Ashley, AR' ,
248 '05005' : 'Baxter, AR' ,
249 '05007' : 'Benton, AR' ,
250 '05009' : 'Boone, AR' ,
251 '05011' : 'Bradley, AR' ,
252 '05013' : 'Calhoun, AR' ,
253 '05015' : 'Carroll, AR' ,
254 '05017' : 'Chicot, AR' ,
255 '05019' : 'Clark, AR' ,
256 '05021' : 'Clay, AR' ,
257 '05023' : 'Cleburne, AR' ,
258 '05025' : 'Cleveland, AR' ,
259 '05027' : 'Columbia, AR' ,
260 '05029' : 'Conway, AR' ,
261 '05031' : 'Craighead, AR' ,
262 '05033' : 'Crawford, AR' ,
263 '05035' : 'Crittenden, AR' ,
264 '05037' : 'Cross, AR' ,
265 '05039' : 'Dallas, AR' ,
266 '05041' : 'Desha, AR' ,
267 '05043' : 'Drew, AR' ,
268 '05045' : 'Faulkner, AR' ,
269 '05047' : 'Franklin, AR' ,
270 '05049' : 'Fulton, AR' ,
271 '05051' : 'Garland, AR' ,
272 '05053' : 'Grant, AR' ,
273 '05055' : 'Greene, AR' ,
274 '05057' : 'Hempstead, AR' ,
275 '05059' : 'Hot Spring, AR' ,
276 '05061' : 'Howard, AR' ,
277 '05063' : 'Independence, AR' ,
278 '05065' : 'Izard, AR' ,
279 '05067' : 'Jackson, AR' ,
280 '05069' : 'Jefferson, AR' ,
281 '05071' : 'Johnson, AR' ,
282 '05073' : 'Lafayette, AR' ,
283 '05075' : 'Lawrence, AR' ,
284 '05077' : 'Lee, AR' ,
285 '05079' : 'Lincoln, AR' ,
286 '05081' : 'Little River, AR' ,
287 '05083' : 'Logan, AR' ,
288 '05085' : 'Lonoke, AR' ,
289 '05087' : 'Madison, AR' ,
290 '05089' : 'Marion, AR' ,
291 '05091' : 'Miller, AR' ,
292 '05093' : 'Mississippi, AR' ,
293 '05095' : 'Monroe, AR' ,
294 '05097' : 'Montgomery, AR' ,
295 '05099' : 'Nevada, AR' ,
296 '05101' : 'Newton, AR' ,
297 '05103' : 'Ouachita, AR' ,
298 '05105' : 'Perry, AR' ,
299 '05107' : 'Phillips, AR' ,
300 '05109' : 'Pike, AR' ,
301 '05111' : 'Poinsett, AR' ,
302 '05113' : 'Polk, AR' ,
303 '05115' : 'Pope, AR' ,
304 '05117' : 'Prairie, AR' ,
305 '05119' : 'Pulaski, AR' ,
306 '05121' : 'Randolph, AR' ,
307 '05123' : 'St. Francis, AR' ,
308 '05125' : 'Saline, AR' ,
309 '05127' : 'Scott, AR' ,
310 '05129' : 'Searcy, AR' ,
311 '05131' : 'Sebastian, AR' ,
312 '05133' : 'Sevier, AR' ,
313 '05135' : 'Sharp, AR' ,
314 '05137' : 'Stone, AR' ,
315 '05139' : 'Union, AR' ,
316 '05141' : 'Van Buren, AR' ,
317 '05143' : 'Washington, AR' ,
318 '05145' : 'White, AR' ,
319 '05147' : 'Woodruff, AR' ,
320 '05149' : 'Yell, AR' ,
321 '06000' : 'CALIFORNIA' ,
322 '06001' : 'Alameda, CA' ,
323 '06003' : 'Alpine, CA' ,
324 '06005' : 'Amador, CA' ,
325 '06007' : 'Butte, CA' ,
326 '06009' : 'Calaveras, CA' ,
327 '06011' : 'Colusa, CA' ,
328 '06013' : 'Contra Costa, CA' ,
329 '06015' : 'Del Norte, CA' ,
330 '06017' : 'El Dorado, CA' ,
331 '06019' : 'Fresno, CA' ,
332 '06021' : 'Glenn, CA' ,
333 '06023' : 'Humboldt, CA' ,
334 '06025' : 'Imperial, CA' ,
335 '06027' : 'Inyo, CA' ,
336 '06029' : 'Kern, CA' ,
337 '06031' : 'Kings, CA' ,
338 '06033' : 'Lake, CA' ,
339 '06035' : 'Lassen, CA' ,
340 '06037' : 'Los Angeles, CA' ,
341 '06039' : 'Madera, CA' ,
342 '06041' : 'Marin, CA' ,
343 '06043' : 'Mariposa, CA' ,
344 '06045' : 'Mendocino, CA' ,
345 '06047' : 'Merced, CA' ,
346 '06049' : 'Modoc, CA' ,
347 '06051' : 'Mono, CA' ,
348 '06053' : 'Monterey, CA' ,
349 '06055' : 'Napa, CA' ,
350 '06057' : 'Nevada, CA' ,
351 '06059' : 'Orange, CA' ,
352 '06061' : 'Placer, CA' ,
353 '06063' : 'Plumas, CA' ,
354 '06065' : 'Riverside, CA' ,
355 '06067' : 'Sacramento, CA' ,
356 '06069' : 'San Benito, CA' ,
357 '06071' : 'San Bernardino, CA' ,
358 '06073' : 'San Diego, CA' ,
359 '06075' : 'San Francisco, CA' ,
360 '06077' : 'San Joaquin, CA' ,
361 '06079' : 'San Luis Obispo, CA' ,
362 '06081' : 'San Mateo, CA' ,
363 '06083' : 'Santa Barbara, CA' ,
364 '06085' : 'Santa Clara, CA' ,
365 '06087' : 'Santa Cruz, CA' ,
366 '06089' : 'Shasta, CA' ,
367 '06091' : 'Sierra, CA' ,
368 '06093' : 'Siskiyou, CA' ,
369 '06095' : 'Solano, CA' ,
370 '06097' : 'Sonoma, CA' ,
371 '06099' : 'Stanislaus, CA' ,
372 '06101' : 'Sutter, CA' ,
373 '06103' : 'Tehama, CA' ,
374 '06105' : 'Trinity, CA' ,
375 '06107' : 'Tulare, CA' ,
376 '06109' : 'Tuolumne, CA' ,
377 '06111' : 'Ventura, CA' ,
378 '06113' : 'Yolo, CA' ,
379 '06115' : 'Yuba, CA' ,
380 '08000' : 'COLORADO' ,
381 '08001' : 'Adams, CO' ,
382 '08003' : 'Alamosa, CO' ,
383 '08005' : 'Arapahoe, CO' ,
384 '08007' : 'Archuleta, CO' ,
385 '08009' : 'Baca, CO' ,
386 '08011' : 'Bent, CO' ,
387 '08013' : 'Boulder, CO' ,
388 '08015' : 'Chaffee, CO' ,
389 '08014' : 'Broomfield, CO',
390 '08017' : 'Cheyenne, CO' ,
391 '08019' : 'Clear Creek, CO' ,
392 '08021' : 'Conejos, CO' ,
393 '08023' : 'Costilla, CO' ,
394 '08025' : 'Crowley, CO' ,
395 '08027' : 'Custer, CO' ,
396 '08029' : 'Delta, CO' ,
397 '08031' : 'Denver, CO' ,
398 '08033' : 'Dolores, CO' ,
399 '08035' : 'Douglas, CO' ,
400 '08037' : 'Eagle, CO' ,
401 '08039' : 'Elbert, CO' ,
402 '08041' : 'El Paso, CO' ,
403 '08043' : 'Fremont, CO' ,
404 '08045' : 'Garfield, CO' ,
405 '08047' : 'Gilpin, CO' ,
406 '08049' : 'Grand, CO' ,
407 '08051' : 'Gunnison, CO' ,
408 '08053' : 'Hinsdale, CO' ,
409 '08055' : 'Huerfano, CO' ,
410 '08057' : 'Jackson, CO' ,
411 '08059' : 'Jefferson, CO' ,
412 '08061' : 'Kiowa, CO' ,
413 '08063' : 'Kit Carson, CO' ,
414 '08065' : 'Lake, CO' ,
415 '08067' : 'La Plata, CO' ,
416 '08069' : 'Larimer, CO' ,
417 '08071' : 'Las Animas, CO' ,
418 '08073' : 'Lincoln, CO' ,
419 '08075' : 'Logan, CO' ,
420 '08077' : 'Mesa, CO' ,
421 '08079' : 'Mineral, CO' ,
422 '08081' : 'Moffat, CO' ,
423 '08083' : 'Montezuma, CO' ,
424 '08085' : 'Montrose, CO' ,
425 '08087' : 'Morgan, CO' ,
426 '08089' : 'Otero, CO' ,
427 '08091' : 'Ouray, CO' ,
428 '08093' : 'Park, CO' ,
429 '08095' : 'Phillips, CO' ,
430 '08097' : 'Pitkin, CO' ,
431 '08099' : 'Prowers, CO' ,
432 '08101' : 'Pueblo, CO' ,
433 '08103' : 'Rio Blanco, CO' ,
434 '08105' : 'Rio Grande, CO' ,
435 '08107' : 'Routt, CO' ,
436 '08109' : 'Saguache, CO' ,
437 '08111' : 'San Juan, CO' ,
438 '08113' : 'San Miguel, CO' ,
439 '08115' : 'Sedgwick, CO' ,
440 '08117' : 'Summit, CO' ,
441 '08119' : 'Teller, CO' ,
442 '08121' : 'Washington, CO' ,
443 '08123' : 'Weld, CO' ,
444 '08125' : 'Yuma, CO' ,
445 '09000' : 'CONNECTICUT' ,
446 '09001' : 'Fairfield, CT' ,
447 '09003' : 'Hartford, CT' ,
448 '09005' : 'Litchfield, CT' ,
449 '09007' : 'Middlesex, CT' ,
450 '09009' : 'New Haven, CT' ,
451 '09011' : 'New London, CT' ,
452 '09013' : 'Tolland, CT' ,
453 '09015' : 'Windham, CT' ,
454 '10000' : 'DELAWARE' ,
455 '10001' : 'Kent, DE' ,
456 '10003' : 'New Castle, DE' ,
457 '10005' : 'Sussex, DE' ,
458 '11000' : 'DISTRICT OF COLUMBIA' ,
459 '11001' : 'District of Columbia' ,
460 '12000' : 'FLORIDA' ,
461 '12001' : 'Alachua, FL' ,
462 '12003' : 'Baker, FL' ,
463 '12005' : 'Bay, FL' ,
464 '12007' : 'Bradford, FL' ,
465 '12009' : 'Brevard, FL' ,
466 '12011' : 'Broward, FL' ,
467 '12013' : 'Calhoun, FL' ,
468 '12015' : 'Charlotte, FL' ,
469 '12017' : 'Citrus, FL' ,
470 '12019' : 'Clay, FL' ,
471 '12021' : 'Collier, FL' ,
472 '12023' : 'Columbia, FL' ,
473 '12025' : 'Dade, FL' ,
474 '12027' : 'De Soto, FL' ,
475 '12029' : 'Dixie, FL' ,
476 '12031' : 'Duval, FL' ,
477 '12033' : 'Escambia, FL' ,
478 '12035' : 'Flagler, FL' ,
479 '12037' : 'Franklin, FL' ,
480 '12039' : 'Gadsden, FL' ,
481 '12041' : 'Gilchrist, FL' ,
482 '12043' : 'Glades, FL' ,
483 '12045' : 'Gulf, FL' ,
484 '12047' : 'Hamilton, FL' ,
485 '12049' : 'Hardee, FL' ,
486 '12051' : 'Hendry, FL' ,
487 '12053' : 'Hernando, FL' ,
488 '12055' : 'Highlands, FL' ,
489 '12057' : 'Hillsborough, FL' ,
490 '12059' : 'Holmes, FL' ,
491 '12061' : 'Indian River, FL' ,
492 '12063' : 'Jackson, FL' ,
493 '12065' : 'Jefferson, FL' ,
494 '12067' : 'Lafayette, FL' ,
495 '12069' : 'Lake, FL' ,
496 '12071' : 'Lee, FL' ,
497 '12073' : 'Leon, FL' ,
498 '12075' : 'Levy, FL' ,
499 '12077' : 'Liberty, FL' ,
500 '12079' : 'Madison, FL' ,
501 '12081' : 'Manatee, FL' ,
502 '12083' : 'Marion, FL' ,
503 '12085' : 'Martin, FL' ,
504 '12086' : 'Miami-Dade, FL' ,
505 '12087' : 'Monroe, FL' ,
506 '12089' : 'Nassau, FL' ,
507 '12091' : 'Okaloosa, FL' ,
508 '12093' : 'Okeechobee, FL' ,
509 '12095' : 'Orange, FL' ,
510 '12097' : 'Osceola, FL' ,
511 '12099' : 'Palm Beach, FL' ,
512 '12101' : 'Pasco, FL' ,
513 '12103' : 'Pinellas, FL' ,
514 '12105' : 'Polk, FL' ,
515 '12107' : 'Putnam, FL' ,
516 '12109' : 'St. Johns, FL' ,
517 '12111' : 'St. Lucie, FL' ,
518 '12113' : 'Santa Rosa, FL' ,
519 '12115' : 'Sarasota, FL' ,
520 '12117' : 'Seminole, FL' ,
521 '12119' : 'Sumter, FL' ,
522 '12121' : 'Suwannee, FL' ,
523 '12123' : 'Taylor, FL' ,
524 '12125' : 'Union, FL' ,
525 '12127' : 'Volusia, FL' ,
526 '12129' : 'Wakulla, FL' ,
527 '12131' : 'Walton, FL' ,
528 '12133' : 'Washington, FL' ,
529 '13000' : 'GEORGIA' ,
530 '13001' : 'Appling, GA' ,
531 '13003' : 'Atkinson, GA' ,
532 '13005' : 'Bacon, GA' ,
533 '13007' : 'Baker, GA' ,
534 '13009' : 'Baldwin, GA' ,
535 '13011' : 'Banks, GA' ,
536 '13013' : 'Barrow, GA' ,
537 '13015' : 'Bartow, GA' ,
538 '13017' : 'Ben Hill, GA' ,
539 '13019' : 'Berrien, GA' ,
540 '13021' : 'Bibb, GA' ,
541 '13023' : 'Bleckley, GA' ,
542 '13025' : 'Brantley, GA' ,
543 '13027' : 'Brooks, GA' ,
544 '13029' : 'Bryan, GA' ,
545 '13031' : 'Bulloch, GA' ,
546 '13033' : 'Burke, GA' ,
547 '13035' : 'Butts, GA' ,
548 '13037' : 'Calhoun, GA' ,
549 '13039' : 'Camden, GA' ,
550 '13043' : 'Candler, GA' ,
551 '13045' : 'Carroll, GA' ,
552 '13047' : 'Catoosa, GA' ,
553 '13049' : 'Charlton, GA' ,
554 '13051' : 'Chatham, GA' ,
555 '13053' : 'Chattahoochee, GA' ,
556 '13055' : 'Chattooga, GA' ,
557 '13057' : 'Cherokee, GA' ,
558 '13059' : 'Clarke, GA' ,
559 '13061' : 'Clay, GA' ,
560 '13063' : 'Clayton, GA' ,
561 '13065' : 'Clinch, GA' ,
562 '13067' : 'Cobb, GA' ,
563 '13069' : 'Coffee, GA' ,
564 '13071' : 'Colquitt, GA' ,
565 '13073' : 'Columbia, GA' ,
566 '13075' : 'Cook, GA' ,
567 '13077' : 'Coweta, GA' ,
568 '13079' : 'Crawford, GA' ,
569 '13081' : 'Crisp, GA' ,
570 '13083' : 'Dade, GA' ,
571 '13085' : 'Dawson, GA' ,
572 '13087' : 'Decatur, GA' ,
573 '13089' : 'De Kalb, GA' ,
574 '13091' : 'Dodge, GA' ,
575 '13093' : 'Dooly, GA' ,
576 '13095' : 'Dougherty, GA' ,
577 '13097' : 'Douglas, GA' ,
578 '13099' : 'Early, GA' ,
579 '13101' : 'Echols, GA' ,
580 '13103' : 'Effingham, GA' ,
581 '13105' : 'Elbert, GA' ,
582 '13107' : 'Emanuel, GA' ,
583 '13109' : 'Evans, GA' ,
584 '13111' : 'Fannin, GA' ,
585 '13113' : 'Fayette, GA' ,
586 '13115' : 'Floyd, GA' ,
587 '13117' : 'Forsyth, GA' ,
588 '13119' : 'Franklin, GA' ,
589 '13121' : 'Fulton, GA' ,
590 '13123' : 'Gilmer, GA' ,
591 '13125' : 'Glascock, GA' ,
592 '13127' : 'Glynn, GA' ,
593 '13129' : 'Gordon, GA' ,
594 '13131' : 'Grady, GA' ,
595 '13133' : 'Greene, GA' ,
596 '13135' : 'Gwinnett, GA' ,
597 '13137' : 'Habersham, GA' ,
598 '13139' : 'Hall, GA' ,
599 '13141' : 'Hancock, GA' ,
600 '13143' : 'Haralson, GA' ,
601 '13145' : 'Harris, GA' ,
602 '13147' : 'Hart, GA' ,
603 '13149' : 'Heard, GA' ,
604 '13151' : 'Henry, GA' ,
605 '13153' : 'Houston, GA' ,
606 '13155' : 'Irwin, GA' ,
607 '13157' : 'Jackson, GA' ,
608 '13159' : 'Jasper, GA' ,
609 '13161' : 'Jeff Davis, GA' ,
610 '13163' : 'Jefferson, GA' ,
611 '13165' : 'Jenkins, GA' ,
612 '13167' : 'Johnson, GA' ,
613 '13169' : 'Jones, GA' ,
614 '13171' : 'Lamar, GA' ,
615 '13173' : 'Lanier, GA' ,
616 '13175' : 'Laurens, GA' ,
617 '13177' : 'Lee, GA' ,
618 '13179' : 'Liberty, GA' ,
619 '13181' : 'Lincoln, GA' ,
620 '13183' : 'Long, GA' ,
621 '13185' : 'Lowndes, GA' ,
622 '13187' : 'Lumpkin, GA' ,
623 '13189' : 'McDuffie, GA' ,
624 '13191' : 'McIntosh, GA' ,
625 '13193' : 'Macon, GA' ,
626 '13195' : 'Madison, GA' ,
627 '13197' : 'Marion, GA' ,
628 '13199' : 'Meriwether, GA' ,
629 '13201' : 'Miller, GA' ,
630 '13205' : 'Mitchell, GA' ,
631 '13207' : 'Monroe, GA' ,
632 '13209' : 'Montgomery, GA' ,
633 '13211' : 'Morgan, GA' ,
634 '13213' : 'Murray, GA' ,
635 '13215' : 'Muscogee, GA' ,
636 '13217' : 'Newton, GA' ,
637 '13219' : 'Oconee, GA' ,
638 '13221' : 'Oglethorpe, GA' ,
639 '13223' : 'Paulding, GA' ,
640 '13225' : 'Peach, GA' ,
641 '13227' : 'Pickens, GA' ,
642 '13229' : 'Pierce, GA' ,
643 '13231' : 'Pike, GA' ,
644 '13233' : 'Polk, GA' ,
645 '13235' : 'Pulaski, GA' ,
646 '13237' : 'Putnam, GA' ,
647 '13239' : 'Quitman, GA' ,
648 '13241' : 'Rabun, GA' ,
649 '13243' : 'Randolph, GA' ,
650 '13245' : 'Richmond, GA' ,
651 '13247' : 'Rockdale, GA' ,
652 '13249' : 'Schley, GA' ,
653 '13251' : 'Screven, GA' ,
654 '13253' : 'Seminole, GA' ,
655 '13255' : 'Spalding, GA' ,
656 '13257' : 'Stephens, GA' ,
657 '13259' : 'Stewart, GA' ,
658 '13261' : 'Sumter, GA' ,
659 '13263' : 'Talbot, GA' ,
660 '13265' : 'Taliaferro, GA' ,
661 '13267' : 'Tattnall, GA' ,
662 '13269' : 'Taylor, GA' ,
663 '13271' : 'Telfair, GA' ,
664 '13273' : 'Terrell, GA' ,
665 '13275' : 'Thomas, GA' ,
666 '13277' : 'Tift, GA' ,
667 '13279' : 'Toombs, GA' ,
668 '13281' : 'Towns, GA' ,
669 '13283' : 'Treutlen, GA' ,
670 '13285' : 'Troup, GA' ,
671 '13287' : 'Turner, GA' ,
672 '13289' : 'Twiggs, GA' ,
673 '13291' : 'Union, GA' ,
674 '13293' : 'Upson, GA' ,
675 '13295' : 'Walker, GA' ,
676 '13297' : 'Walton, GA' ,
677 '13299' : 'Ware, GA' ,
678 '13301' : 'Warren, GA' ,
679 '13303' : 'Washington, GA' ,
680 '13305' : 'Wayne, GA' ,
681 '13307' : 'Webster, GA' ,
682 '13309' : 'Wheeler, GA' ,
683 '13311' : 'White, GA' ,
684 '13313' : 'Whitfield, GA' ,
685 '13315' : 'Wilcox, GA' ,
686 '13317' : 'Wilkes, GA' ,
687 '13319' : 'Wilkinson, GA' ,
688 '13321' : 'Worth, GA' ,
689 '15000' : 'HAWAII' ,
690 '15001' : 'Hawaii, HI' ,
691 '15003' : 'Honolulu, HI' ,
692 '15005' : 'Kalawao, HI' ,
693 '15007' : 'Kauai, HI' ,
694 '15009' : 'Maui, HI' ,
695 '16000' : 'IDAHO' ,
696 '16001' : 'Ada, ID' ,
697 '16003' : 'Adams, ID' ,
698 '16005' : 'Bannock, ID' ,
699 '16007' : 'Bear Lake, ID' ,
700 '16009' : 'Benewah, ID' ,
701 '16011' : 'Bingham, ID' ,
702 '16013' : 'Blaine, ID' ,
703 '16015' : 'Boise, ID' ,
704 '16017' : 'Bonner, ID' ,
705 '16019' : 'Bonneville, ID' ,
706 '16021' : 'Boundary, ID' ,
707 '16023' : 'Butte, ID' ,
708 '16025' : 'Camas, ID' ,
709 '16027' : 'Canyon, ID' ,
710 '16029' : 'Caribou, ID' ,
711 '16031' : 'Cassia, ID' ,
712 '16033' : 'Clark, ID' ,
713 '16035' : 'Clearwater, ID' ,
714 '16037' : 'Custer, ID' ,
715 '16039' : 'Elmore, ID' ,
716 '16041' : 'Franklin, ID' ,
717 '16043' : 'Fremont, ID' ,
718 '16045' : 'Gem, ID' ,
719 '16047' : 'Gooding, ID' ,
720 '16049' : 'Idaho, ID' ,
721 '16051' : 'Jefferson, ID' ,
722 '16053' : 'Jerome, ID' ,
723 '16055' : 'Kootenai, ID' ,
724 '16057' : 'Latah, ID' ,
725 '16059' : 'Lemhi, ID' ,
726 '16061' : 'Lewis, ID' ,
727 '16063' : 'Lincoln, ID' ,
728 '16065' : 'Madison, ID' ,
729 '16067' : 'Minidoka, ID' ,
730 '16069' : 'Nez Perce, ID' ,
731 '16071' : 'Oneida, ID' ,
732 '16073' : 'Owyhee, ID' ,
733 '16075' : 'Payette, ID' ,
734 '16077' : 'Power, ID' ,
735 '16079' : 'Shoshone, ID' ,
736 '16081' : 'Teton, ID' ,
737 '16083' : 'Twin Falls, ID' ,
738 '16085' : 'Valley, ID' ,
739 '16087' : 'Washington, ID' ,
740 '17000' : 'ILLINOIS' ,
741 '17001' : 'Adams, IL' ,
742 '17003' : 'Alexander, IL' ,
743 '17005' : 'Bond, IL' ,
744 '17007' : 'Boone, IL' ,
745 '17009' : 'Brown, IL' ,
746 '17011' : 'Bureau, IL' ,
747 '17013' : 'Calhoun, IL' ,
748 '17015' : 'Carroll, IL' ,
749 '17017' : 'Cass, IL' ,
750 '17019' : 'Champaign, IL' ,
751 '17021' : 'Christian, IL' ,
752 '17023' : 'Clark, IL' ,
753 '17025' : 'Clay, IL' ,
754 '17027' : 'Clinton, IL' ,
755 '17029' : 'Coles, IL' ,
756 '17031' : 'Cook, IL' ,
757 '17033' : 'Crawford, IL' ,
758 '17035' : 'Cumberland, IL' ,
759 '17037' : 'DeKalb, IL' ,
760 '17039' : 'De Witt, IL' ,
761 '17041' : 'Douglas, IL' ,
762 '17043' : 'DuPage, IL' ,
763 '17045' : 'Edgar, IL' ,
764 '17047' : 'Edwards, IL' ,
765 '17049' : 'Effingham, IL' ,
766 '17051' : 'Fayette, IL' ,
767 '17053' : 'Ford, IL' ,
768 '17055' : 'Franklin, IL' ,
769 '17057' : 'Fulton, IL' ,
770 '17059' : 'Gallatin, IL' ,
771 '17061' : 'Greene, IL' ,
772 '17063' : 'Grundy, IL' ,
773 '17065' : 'Hamilton, IL' ,
774 '17067' : 'Hancock, IL' ,
775 '17069' : 'Hardin, IL' ,
776 '17071' : 'Henderson, IL' ,
777 '17073' : 'Henry, IL' ,
778 '17075' : 'Iroquois, IL' ,
779 '17077' : 'Jackson, IL' ,
780 '17079' : 'Jasper, IL' ,
781 '17081' : 'Jefferson, IL' ,
782 '17083' : 'Jersey, IL' ,
783 '17085' : 'Jo Daviess, IL' ,
784 '17087' : 'Johnson, IL' ,
785 '17089' : 'Kane, IL' ,
786 '17091' : 'Kankakee, IL' ,
787 '17093' : 'Kendall, IL' ,
788 '17095' : 'Knox, IL' ,
789 '17097' : 'Lake, IL' ,
790 '17099' : 'LaSalle, IL' ,
791 '17101' : 'Lawrence, IL' ,
792 '17103' : 'Lee, IL' ,
793 '17105' : 'Livingston, IL' ,
794 '17107' : 'Logan, IL' ,
795 '17109' : 'McDonough, IL' ,
796 '17111' : 'McHenry, IL' ,
797 '17113' : 'McLean, IL' ,
798 '17115' : 'Macon, IL' ,
799 '17117' : 'Macoupin, IL' ,
800 '17119' : 'Madison, IL' ,
801 '17121' : 'Marion, IL' ,
802 '17123' : 'Marshall, IL' ,
803 '17125' : 'Mason, IL' ,
804 '17127' : 'Massac, IL' ,
805 '17129' : 'Menard, IL' ,
806 '17131' : 'Mercer, IL' ,
807 '17133' : 'Monroe, IL' ,
808 '17135' : 'Montgomery, IL' ,
809 '17137' : 'Morgan, IL' ,
810 '17139' : 'Moultrie, IL' ,
811 '17141' : 'Ogle, IL' ,
812 '17143' : 'Peoria, IL' ,
813 '17145' : 'Perry, IL' ,
814 '17147' : 'Piatt, IL' ,
815 '17149' : 'Pike, IL' ,
816 '17151' : 'Pope, IL' ,
817 '17153' : 'Pulaski, IL' ,
818 '17155' : 'Putnam, IL' ,
819 '17157' : 'Randolph, IL' ,
820 '17159' : 'Richland, IL' ,
821 '17161' : 'Rock Island, IL' ,
822 '17163' : 'St. Clair, IL' ,
823 '17165' : 'Saline, IL' ,
824 '17167' : 'Sangamon, IL' ,
825 '17169' : 'Schuyler, IL' ,
826 '17171' : 'Scott, IL' ,
827 '17173' : 'Shelby, IL' ,
828 '17175' : 'Stark, IL' ,
829 '17177' : 'Stephenson, IL' ,
830 '17179' : 'Tazewell, IL' ,
831 '17181' : 'Union, IL' ,
832 '17183' : 'Vermilion, IL' ,
833 '17185' : 'Wabash, IL' ,
834 '17187' : 'Warren, IL' ,
835 '17189' : 'Washington, IL' ,
836 '17191' : 'Wayne, IL' ,
837 '17193' : 'White, IL' ,
838 '17195' : 'Whiteside, IL' ,
839 '17197' : 'Will, IL' ,
840 '17199' : 'Williamson, IL' ,
841 '17201' : 'Winnebago, IL' ,
842 '17203' : 'Woodford, IL' ,
843 '18000' : 'INDIANA' ,
844 '18001' : 'Adams, IN' ,
845 '18003' : 'Allen, IN' ,
846 '18005' : 'Bartholomew, IN' ,
847 '18007' : 'Benton, IN' ,
848 '18009' : 'Blackford, IN' ,
849 '18011' : 'Boone, IN' ,
850 '18013' : 'Brown, IN' ,
851 '18015' : 'Carroll, IN' ,
852 '18017' : 'Cass, IN' ,
853 '18019' : 'Clark, IN' ,
854 '18021' : 'Clay, IN' ,
855 '18023' : 'Clinton, IN' ,
856 '18025' : 'Crawford, IN' ,
857 '18027' : 'Daviess, IN' ,
858 '18029' : 'Dearborn, IN' ,
859 '18031' : 'Decatur, IN' ,
860 '18033' : 'De Kalb, IN' ,
861 '18035' : 'Delaware, IN' ,
862 '18037' : 'Dubois, IN' ,
863 '18039' : 'Elkhart, IN' ,
864 '18041' : 'Fayette, IN' ,
865 '18043' : 'Floyd, IN' ,
866 '18045' : 'Fountain, IN' ,
867 '18047' : 'Franklin, IN' ,
868 '18049' : 'Fulton, IN' ,
869 '18051' : 'Gibson, IN' ,
870 '18053' : 'Grant, IN' ,
871 '18055' : 'Greene, IN' ,
872 '18057' : 'Hamilton, IN' ,
873 '18059' : 'Hancock, IN' ,
874 '18061' : 'Harrison, IN' ,
875 '18063' : 'Hendricks, IN' ,
876 '18065' : 'Henry, IN' ,
877 '18067' : 'Howard, IN' ,
878 '18069' : 'Huntington, IN' ,
879 '18071' : 'Jackson, IN' ,
880 '18073' : 'Jasper, IN' ,
881 '18075' : 'Jay, IN' ,
882 '18077' : 'Jefferson, IN' ,
883 '18079' : 'Jennings, IN' ,
884 '18081' : 'Johnson, IN' ,
885 '18083' : 'Knox, IN' ,
886 '18085' : 'Kosciusko, IN' ,
887 '18087' : 'Lagrange, IN' ,
888 '18089' : 'Lake, IN' ,
889 '18091' : 'La Porte, IN' ,
890 '18093' : 'Lawrence, IN' ,
891 '18095' : 'Madison, IN' ,
892 '18097' : 'Marion, IN' ,
893 '18099' : 'Marshall, IN' ,
894 '18101' : 'Martin, IN' ,
895 '18103' : 'Miami, IN' ,
896 '18105' : 'Monroe, IN' ,
897 '18107' : 'Montgomery, IN' ,
898 '18109' : 'Morgan, IN' ,
899 '18111' : 'Newton, IN' ,
900 '18113' : 'Noble, IN' ,
901 '18115' : 'Ohio, IN' ,
902 '18117' : 'Orange, IN' ,
903 '18119' : 'Owen, IN' ,
904 '18121' : 'Parke, IN' ,
905 '18123' : 'Perry, IN' ,
906 '18125' : 'Pike, IN' ,
907 '18127' : 'Porter, IN' ,
908 '18129' : 'Posey, IN' ,
909 '18131' : 'Pulaski, IN' ,
910 '18133' : 'Putnam, IN' ,
911 '18135' : 'Randolph, IN' ,
912 '18137' : 'Ripley, IN' ,
913 '18139' : 'Rush, IN' ,
914 '18141' : 'St. Joseph, IN' ,
915 '18143' : 'Scott, IN' ,
916 '18145' : 'Shelby, IN' ,
917 '18147' : 'Spencer, IN' ,
918 '18149' : 'Starke, IN' ,
919 '18151' : 'Steuben, IN' ,
920 '18153' : 'Sullivan, IN' ,
921 '18155' : 'Switzerland, IN' ,
922 '18157' : 'Tippecanoe, IN' ,
923 '18159' : 'Tipton, IN' ,
924 '18161' : 'Union, IN' ,
925 '18163' : 'Vanderburgh, IN' ,
926 '18165' : 'Vermillion, IN' ,
927 '18167' : 'Vigo, IN' ,
928 '18169' : 'Wabash, IN' ,
929 '18171' : 'Warren, IN' ,
930 '18173' : 'Warrick, IN' ,
931 '18175' : 'Washington, IN' ,
932 '18177' : 'Wayne, IN' ,
933 '18179' : 'Wells, IN' ,
934 '18181' : 'White, IN' ,
935 '18183' : 'Whitley, IN' ,
936 '19000' : 'IOWA' ,
937 '19001' : 'Adair, IA' ,
938 '19003' : 'Adams, IA' ,
939 '19005' : 'Allamakee, IA' ,
940 '19007' : 'Appanoose, IA' ,
941 '19009' : 'Audubon, IA' ,
942 '19011' : 'Benton, IA' ,
943 '19013' : 'Black Hawk, IA' ,
944 '19015' : 'Boone, IA' ,
945 '19017' : 'Bremer, IA' ,
946 '19019' : 'Buchanan, IA' ,
947 '19021' : 'Buena Vista, IA' ,
948 '19023' : 'Butler, IA' ,
949 '19025' : 'Calhoun, IA' ,
950 '19027' : 'Carroll, IA' ,
951 '19029' : 'Cass, IA' ,
952 '19031' : 'Cedar, IA' ,
953 '19033' : 'Cerro Gordo, IA' ,
954 '19035' : 'Cherokee, IA' ,
955 '19037' : 'Chickasaw, IA' ,
956 '19039' : 'Clarke, IA' ,
957 '19041' : 'Clay, IA' ,
958 '19043' : 'Clayton, IA' ,
959 '19045' : 'Clinton, IA' ,
960 '19047' : 'Crawford, IA' ,
961 '19049' : 'Dallas, IA' ,
962 '19051' : 'Davis, IA' ,
963 '19053' : 'Decatur, IA' ,
964 '19055' : 'Delaware, IA' ,
965 '19057' : 'Des Moines, IA' ,
966 '19059' : 'Dickinson, IA' ,
967 '19061' : 'Dubuque, IA' ,
968 '19063' : 'Emmet, IA' ,
969 '19065' : 'Fayette, IA' ,
970 '19067' : 'Floyd, IA' ,
971 '19069' : 'Franklin, IA' ,
972 '19071' : 'Fremont, IA' ,
973 '19073' : 'Greene, IA' ,
974 '19075' : 'Grundy, IA' ,
975 '19077' : 'Guthrie, IA' ,
976 '19079' : 'Hamilton, IA' ,
977 '19081' : 'Hancock, IA' ,
978 '19083' : 'Hardin, IA' ,
979 '19085' : 'Harrison, IA' ,
980 '19087' : 'Henry, IA' ,
981 '19089' : 'Howard, IA' ,
982 '19091' : 'Humboldt, IA' ,
983 '19093' : 'Ida, IA' ,
984 '19095' : 'Iowa, IA' ,
985 '19097' : 'Jackson, IA' ,
986 '19099' : 'Jasper, IA' ,
987 '19101' : 'Jefferson, IA' ,
988 '19103' : 'Johnson, IA' ,
989 '19105' : 'Jones, IA' ,
990 '19107' : 'Keokuk, IA' ,
991 '19109' : 'Kossuth, IA' ,
992 '19111' : 'Lee, IA' ,
993 '19113' : 'Linn, IA' ,
994 '19115' : 'Louisa, IA' ,
995 '19117' : 'Lucas, IA' ,
996 '19119' : 'Lyon, IA' ,
997 '19121' : 'Madison, IA' ,
998 '19123' : 'Mahaska, IA' ,
999 '19125' : 'Marion, IA' ,
1000 '19127' : 'Marshall, IA' ,
1001 '19129' : 'Mills, IA' ,
1002 '19131' : 'Mitchell, IA' ,
1003 '19133' : 'Monona, IA' ,
1004 '19135' : 'Monroe, IA' ,
1005 '19137' : 'Montgomery, IA' ,
1006 '19139' : 'Muscatine, IA' ,
1007 '19141' : 'O\'Brien, IA' ,
1008 '19143' : 'Osceola, IA' ,
1009 '19145' : 'Page, IA' ,
1010 '19147' : 'Palo Alto, IA' ,
1011 '19149' : 'Plymouth, IA' ,
1012 '19151' : 'Pocahontas, IA' ,
1013 '19153' : 'Polk, IA' ,
1014 '19155' : 'Pottawattamie, IA' ,
1015 '19157' : 'Poweshiek, IA' ,
1016 '19159' : 'Ringgold, IA' ,
1017 '19161' : 'Sac, IA' ,
1018 '19163' : 'Scott, IA' ,
1019 '19165' : 'Shelby, IA' ,
1020 '19167' : 'Sioux, IA' ,
1021 '19169' : 'Story, IA' ,
1022 '19171' : 'Tama, IA' ,
1023 '19173' : 'Taylor, IA' ,
1024 '19175' : 'Union, IA' ,
1025 '19177' : 'Van Buren, IA' ,
1026 '19179' : 'Wapello, IA' ,
1027 '19181' : 'Warren, IA' ,
1028 '19183' : 'Washington, IA' ,
1029 '19185' : 'Wayne, IA' ,
1030 '19187' : 'Webster, IA' ,
1031 '19189' : 'Winnebago, IA' ,
1032 '19191' : 'Winneshiek, IA' ,
1033 '19193' : 'Woodbury, IA' ,
1034 '19195' : 'Worth, IA' ,
1035 '19197' : 'Wright, IA' ,
1036 '20000' : 'KANSAS' ,
1037 '20001' : 'Allen, KS' ,
1038 '20003' : 'Anderson, KS' ,
1039 '20005' : 'Atchison, KS' ,
1040 '20007' : 'Barber, KS' ,
1041 '20009' : 'Barton, KS' ,
1042 '20011' : 'Bourbon, KS' ,
1043 '20013' : 'Brown, KS' ,
1044 '20015' : 'Butler, KS' ,
1045 '20017' : 'Chase, KS' ,
1046 '20019' : 'Chautauqua, KS' ,
1047 '20021' : 'Cherokee, KS' ,
1048 '20023' : 'Cheyenne, KS' ,
1049 '20025' : 'Clark, KS' ,
1050 '20027' : 'Clay, KS' ,
1051 '20029' : 'Cloud, KS' ,
1052 '20031' : 'Coffey, KS' ,
1053 '20033' : 'Comanche, KS' ,
1054 '20035' : 'Cowley, KS' ,
1055 '20037' : 'Crawford, KS' ,
1056 '20039' : 'Decatur, KS' ,
1057 '20041' : 'Dickinson, KS' ,
1058 '20043' : 'Doniphan, KS' ,
1059 '20045' : 'Douglas, KS' ,
1060 '20047' : 'Edwards, KS' ,
1061 '20049' : 'Elk, KS' ,
1062 '20051' : 'Ellis, KS' ,
1063 '20053' : 'Ellsworth, KS' ,
1064 '20055' : 'Finney, KS' ,
1065 '20057' : 'Ford, KS' ,
1066 '20059' : 'Franklin, KS' ,
1067 '20061' : 'Geary, KS' ,
1068 '20063' : 'Gove, KS' ,
1069 '20065' : 'Graham, KS' ,
1070 '20067' : 'Grant, KS' ,
1071 '20069' : 'Gray, KS' ,
1072 '20071' : 'Greeley, KS' ,
1073 '20073' : 'Greenwood, KS' ,
1074 '20075' : 'Hamilton, KS' ,
1075 '20077' : 'Harper, KS' ,
1076 '20079' : 'Harvey, KS' ,
1077 '20081' : 'Haskell, KS' ,
1078 '20083' : 'Hodgeman, KS' ,
1079 '20085' : 'Jackson, KS' ,
1080 '20087' : 'Jefferson, KS' ,
1081 '20089' : 'Jewell, KS' ,
1082 '20091' : 'Johnson, KS' ,
1083 '20093' : 'Kearny, KS' ,
1084 '20095' : 'Kingman, KS' ,
1085 '20097' : 'Kiowa, KS' ,
1086 '20099' : 'Labette, KS' ,
1087 '20101' : 'Lane, KS' ,
1088 '20103' : 'Leavenworth, KS' ,
1089 '20105' : 'Lincoln, KS' ,
1090 '20107' : 'Linn, KS' ,
1091 '20109' : 'Logan, KS' ,
1092 '20111' : 'Lyon, KS' ,
1093 '20113' : 'McPherson, KS' ,
1094 '20115' : 'Marion, KS' ,
1095 '20117' : 'Marshall, KS' ,
1096 '20119' : 'Meade, KS' ,
1097 '20121' : 'Miami, KS' ,
1098 '20123' : 'Mitchell, KS' ,
1099 '20125' : 'Montgomery, KS' ,
1100 '20127' : 'Morris, KS' ,
1101 '20129' : 'Morton, KS' ,
1102 '20131' : 'Nemaha, KS' ,
1103 '20133' : 'Neosho, KS' ,
1104 '20135' : 'Ness, KS' ,
1105 '20137' : 'Norton, KS' ,
1106 '20139' : 'Osage, KS' ,
1107 '20141' : 'Osborne, KS' ,
1108 '20143' : 'Ottawa, KS' ,
1109 '20145' : 'Pawnee, KS' ,
1110 '20147' : 'Phillips, KS' ,
1111 '20149' : 'Pottawatomie, KS' ,
1112 '20151' : 'Pratt, KS' ,
1113 '20153' : 'Rawlins, KS' ,
1114 '20155' : 'Reno, KS' ,
1115 '20157' : 'Republic, KS' ,
1116 '20159' : 'Rice, KS' ,
1117 '20161' : 'Riley, KS' ,
1118 '20163' : 'Rooks, KS' ,
1119 '20165' : 'Rush, KS' ,
1120 '20167' : 'Russell, KS' ,
1121 '20169' : 'Saline, KS' ,
1122 '20171' : 'Scott, KS' ,
1123 '20173' : 'Sedgwick, KS' ,
1124 '20175' : 'Seward, KS' ,
1125 '20177' : 'Shawnee, KS' ,
1126 '20179' : 'Sheridan, KS' ,
1127 '20181' : 'Sherman, KS' ,
1128 '20183' : 'Smith, KS' ,
1129 '20185' : 'Stafford, KS' ,
1130 '20187' : 'Stanton, KS' ,
1131 '20189' : 'Stevens, KS' ,
1132 '20191' : 'Sumner, KS' ,
1133 '20193' : 'Thomas, KS' ,
1134 '20195' : 'Trego, KS' ,
1135 '20197' : 'Wabaunsee, KS' ,
1136 '20199' : 'Wallace, KS' ,
1137 '20201' : 'Washington, KS' ,
1138 '20203' : 'Wichita, KS' ,
1139 '20205' : 'Wilson, KS' ,
1140 '20207' : 'Woodson, KS' ,
1141 '20209' : 'Wyandotte, KS' ,
1142 '21000' : 'KENTUCKY' ,
1143 '21001' : 'Adair, KY' ,
1144 '21003' : 'Allen, KY' ,
1145 '21005' : 'Anderson, KY' ,
1146 '21007' : 'Ballard, KY' ,
1147 '21009' : 'Barren, KY' ,
1148 '21011' : 'Bath, KY' ,
1149 '21013' : 'Bell, KY' ,
1150 '21015' : 'Boone, KY' ,
1151 '21017' : 'Bourbon, KY' ,
1152 '21019' : 'Boyd, KY' ,
1153 '21021' : 'Boyle, KY' ,
1154 '21023' : 'Bracken, KY' ,
1155 '21025' : 'Breathitt, KY' ,
1156 '21027' : 'Breckinridge, KY' ,
1157 '21029' : 'Bullitt, KY' ,
1158 '21031' : 'Butler, KY' ,
1159 '21033' : 'Caldwell, KY' ,
1160 '21035' : 'Calloway, KY' ,
1161 '21037' : 'Campbell, KY' ,
1162 '21039' : 'Carlisle, KY' ,
1163 '21041' : 'Carroll, KY' ,
1164 '21043' : 'Carter, KY' ,
1165 '21045' : 'Casey, KY' ,
1166 '21047' : 'Christian, KY' ,
1167 '21049' : 'Clark, KY' ,
1168 '21051' : 'Clay, KY' ,
1169 '21053' : 'Clinton, KY' ,
1170 '21055' : 'Crittenden, KY' ,
1171 '21057' : 'Cumberland, KY' ,
1172 '21059' : 'Daviess, KY' ,
1173 '21061' : 'Edmonson, KY' ,
1174 '21063' : 'Elliott, KY' ,
1175 '21065' : 'Estill, KY' ,
1176 '21067' : 'Fayette, KY' ,
1177 '21069' : 'Fleming, KY' ,
1178 '21071' : 'Floyd, KY' ,
1179 '21073' : 'Franklin, KY' ,
1180 '21075' : 'Fulton, KY' ,
1181 '21077' : 'Gallatin, KY' ,
1182 '21079' : 'Garrard, KY' ,
1183 '21081' : 'Grant, KY' ,
1184 '21083' : 'Graves, KY' ,
1185 '21085' : 'Grayson, KY' ,
1186 '21087' : 'Green, KY' ,
1187 '21089' : 'Greenup, KY' ,
1188 '21091' : 'Hancock, KY' ,
1189 '21093' : 'Hardin, KY' ,
1190 '21095' : 'Harlan, KY' ,
1191 '21097' : 'Harrison, KY' ,
1192 '21099' : 'Hart, KY' ,
1193 '21101' : 'Henderson, KY' ,
1194 '21103' : 'Henry, KY' ,
1195 '21105' : 'Hickman, KY' ,
1196 '21107' : 'Hopkins, KY' ,
1197 '21109' : 'Jackson, KY' ,
1198 '21111' : 'Jefferson, KY' ,
1199 '21113' : 'Jessamine, KY' ,
1200 '21115' : 'Johnson, KY' ,
1201 '21117' : 'Kenton, KY' ,
1202 '21119' : 'Knott, KY' ,
1203 '21121' : 'Knox, KY' ,
1204 '21123' : 'Larue, KY' ,
1205 '21125' : 'Laurel, KY' ,
1206 '21127' : 'Lawrence, KY' ,
1207 '21129' : 'Lee, KY' ,
1208 '21131' : 'Leslie, KY' ,
1209 '21133' : 'Letcher, KY' ,
1210 '21135' : 'Lewis, KY' ,
1211 '21137' : 'Lincoln, KY' ,
1212 '21139' : 'Livingston, KY' ,
1213 '21141' : 'Logan, KY' ,
1214 '21143' : 'Lyon, KY' ,
1215 '21145' : 'McCracken, KY' ,
1216 '21147' : 'McCreary, KY' ,
1217 '21149' : 'McLean, KY' ,
1218 '21151' : 'Madison, KY' ,
1219 '21153' : 'Magoffin, KY' ,
1220 '21155' : 'Marion, KY' ,
1221 '21157' : 'Marshall, KY' ,
1222 '21159' : 'Martin, KY' ,
1223 '21161' : 'Mason, KY' ,
1224 '21163' : 'Meade, KY' ,
1225 '21165' : 'Menifee, KY' ,
1226 '21167' : 'Mercer, KY' ,
1227 '21169' : 'Metcalfe, KY' ,
1228 '21171' : 'Monroe, KY' ,
1229 '21173' : 'Montgomery, KY' ,
1230 '21175' : 'Morgan, KY' ,
1231 '21177' : 'Muhlenberg, KY' ,
1232 '21179' : 'Nelson, KY' ,
1233 '21181' : 'Nicholas, KY' ,
1234 '21183' : 'Ohio, KY' ,
1235 '21185' : 'Oldham, KY' ,
1236 '21187' : 'Owen, KY' ,
1237 '21189' : 'Owsley, KY' ,
1238 '21191' : 'Pendleton, KY' ,
1239 '21193' : 'Perry, KY' ,
1240 '21195' : 'Pike, KY' ,
1241 '21197' : 'Powell, KY' ,
1242 '21199' : 'Pulaski, KY' ,
1243 '21201' : 'Robertson, KY' ,
1244 '21203' : 'Rockcastle, KY' ,
1245 '21205' : 'Rowan, KY' ,
1246 '21207' : 'Russell, KY' ,
1247 '21209' : 'Scott, KY' ,
1248 '21211' : 'Shelby, KY' ,
1249 '21213' : 'Simpson, KY' ,
1250 '21215' : 'Spencer, KY' ,
1251 '21217' : 'Taylor, KY' ,
1252 '21219' : 'Todd, KY' ,
1253 '21221' : 'Trigg, KY' ,
1254 '21223' : 'Trimble, KY' ,
1255 '21225' : 'Union, KY' ,
1256 '21227' : 'Warren, KY' ,
1257 '21229' : 'Washington, KY' ,
1258 '21231' : 'Wayne, KY' ,
1259 '21233' : 'Webster, KY' ,
1260 '21235' : 'Whitley, KY' ,
1261 '21237' : 'Wolfe, KY' ,
1262 '21239' : 'Woodford, KY' ,
1263 '22000' : 'LOUISIANA' ,
1264 '22001' : 'Acadia, LA' ,
1265 '22003' : 'Allen, LA' ,
1266 '22005' : 'Ascension, LA' ,
1267 '22007' : 'Assumption, LA' ,
1268 '22009' : 'Avoyelles, LA' ,
1269 '22011' : 'Beauregard, LA' ,
1270 '22013' : 'Bienville, LA' ,
1271 '22015' : 'Bossier, LA' ,
1272 '22017' : 'Caddo, LA' ,
1273 '22019' : 'Calcasieu, LA' ,
1274 '22021' : 'Caldwell, LA' ,
1275 '22023' : 'Cameron, LA' ,
1276 '22025' : 'Catahoula, LA' ,
1277 '22027' : 'Claiborne, LA' ,
1278 '22029' : 'Concordia, LA' ,
1279 '22031' : 'De Soto, LA' ,
1280 '22033' : 'East Baton Rouge, LA' ,
1281 '22035' : 'East Carroll, LA' ,
1282 '22037' : 'East Feliciana, LA' ,
1283 '22039' : 'Evangeline, LA' ,
1284 '22041' : 'Franklin, LA' ,
1285 '22043' : 'Grant, LA' ,
1286 '22045' : 'Iberia, LA' ,
1287 '22047' : 'Iberville, LA' ,
1288 '22049' : 'Jackson, LA' ,
1289 '22051' : 'Jefferson, LA' ,
1290 '22053' : 'Jefferson Davis, LA' ,
1291 '22055' : 'Lafayette, LA' ,
1292 '22057' : 'Lafourche, LA' ,
1293 '22059' : 'LaSalle, LA' ,
1294 '22061' : 'Lincoln, LA' ,
1295 '22063' : 'Livingston, LA' ,
1296 '22065' : 'Madison, LA' ,
1297 '22067' : 'Morehouse, LA' ,
1298 '22069' : 'Natchitoches, LA' ,
1299 '22071' : 'Orleans, LA' ,
1300 '22073' : 'Ouachita, LA' ,
1301 '22075' : 'Plaquemines, LA' ,
1302 '22077' : 'Pointe Coupee, LA' ,
1303 '22079' : 'Rapides, LA' ,
1304 '22081' : 'Red River, LA' ,
1305 '22083' : 'Richland, LA' ,
1306 '22085' : 'Sabine, LA' ,
1307 '22087' : 'St. Bernard, LA' ,
1308 '22089' : 'St. Charles, LA' ,
1309 '22091' : 'St. Helena, LA' ,
1310 '22093' : 'St. James, LA' ,
1311 '22095' : 'St. John the Baptist, LA' ,
1312 '22097' : 'St. Landry, LA' ,
1313 '22099' : 'St. Martin, LA' ,
1314 '22101' : 'St. Mary, LA' ,
1315 '22103' : 'St. Tammany, LA' ,
1316 '22105' : 'Tangipahoa, LA' ,
1317 '22107' : 'Tensas, LA' ,
1318 '22109' : 'Terrebonne, LA' ,
1319 '22111' : 'Union, LA' ,
1320 '22113' : 'Vermilion, LA' ,
1321 '22115' : 'Vernon, LA' ,
1322 '22117' : 'Washington, LA' ,
1323 '22119' : 'Webster, LA' ,
1324 '22121' : 'West Baton Rouge, LA' ,
1325 '22123' : 'West Carroll, LA' ,
1326 '22125' : 'West Feliciana, LA' ,
1327 '22127' : 'Winn, LA' ,
1328 '23000' : 'MAINE' ,
1329 '23001' : 'Androscoggin, ME' ,
1330 '23003' : 'Aroostook, ME' ,
1331 '23005' : 'Cumberland, ME' ,
1332 '23007' : 'Franklin, ME' ,
1333 '23009' : 'Hancock, ME' ,
1334 '23011' : 'Kennebec, ME' ,
1335 '23013' : 'Knox, ME' ,
1336 '23015' : 'Lincoln, ME' ,
1337 '23017' : 'Oxford, ME' ,
1338 '23019' : 'Penobscot, ME' ,
1339 '23021' : 'Piscataquis, ME' ,
1340 '23023' : 'Sagadahoc, ME' ,
1341 '23025' : 'Somerset, ME' ,
1342 '23027' : 'Waldo, ME' ,
1343 '23029' : 'Washington, ME' ,
1344 '23031' : 'York, ME' ,
1345 '24000' : 'MARYLAND' ,
1346 '24001' : 'Allegany, MD' ,
1347 '24003' : 'Anne Arundel, MD' ,
1348 '24005' : 'Baltimore, MD' ,
1349 '24009' : 'Calvert, MD' ,
1350 '24011' : 'Caroline, MD' ,
1351 '24013' : 'Carroll, MD' ,
1352 '24015' : 'Cecil, MD' ,
1353 '24017' : 'Charles, MD' ,
1354 '24019' : 'Dorchester, MD' ,
1355 '24021' : 'Frederick, MD' ,
1356 '24023' : 'Garrett, MD' ,
1357 '24025' : 'Harford, MD' ,
1358 '24027' : 'Howard, MD' ,
1359 '24029' : 'Kent, MD' ,
1360 '24031' : 'Montgomery, MD' ,
1361 '24033' : 'Prince George\'s, MD' ,
1362 '24035' : 'Queen Anne\'s, MD' ,
1363 '24037' : 'St. Mary\'s, MD' ,
1364 '24039' : 'Somerset, MD' ,
1365 '24041' : 'Talbot, MD' ,
1366 '24043' : 'Washington, MD' ,
1367 '24045' : 'Wicomico, MD' ,
1368 '24047' : 'Worcester, MD' ,
1369 '24510' : 'Baltimore City, MD' ,
1370 '25000' : 'MASSACHUSETTS' ,
1371 '25001' : 'Barnstable, MA' ,
1372 '25003' : 'Berkshire, MA' ,
1373 '25005' : 'Bristol, MA' ,
1374 '25007' : 'Dukes, MA' ,
1375 '25009' : 'Essex, MA' ,
1376 '25011' : 'Franklin, MA' ,
1377 '25013' : 'Hampden, MA' ,
1378 '25015' : 'Hampshire, MA' ,
1379 '25017' : 'Middlesex, MA' ,
1380 '25019' : 'Nantucket, MA' ,
1381 '25021' : 'Norfolk, MA' ,
1382 '25023' : 'Plymouth, MA' ,
1383 '25025' : 'Suffolk, MA' ,
1384 '25027' : 'Worcester, MA' ,
1385 '26000' : 'MICHIGAN' ,
1386 '26001' : 'Alcona, MI' ,
1387 '26003' : 'Alger, MI' ,
1388 '26005' : 'Allegan, MI' ,
1389 '26007' : 'Alpena, MI' ,
1390 '26009' : 'Antrim, MI' ,
1391 '26011' : 'Arenac, MI' ,
1392 '26013' : 'Baraga, MI' ,
1393 '26015' : 'Barry, MI' ,
1394 '26017' : 'Bay, MI' ,
1395 '26019' : 'Benzie, MI' ,
1396 '26021' : 'Berrien, MI' ,
1397 '26023' : 'Branch, MI' ,
1398 '26025' : 'Calhoun, MI' ,
1399 '26027' : 'Cass, MI' ,
1400 '26029' : 'Charlevoix, MI' ,
1401 '26031' : 'Cheboygan, MI' ,
1402 '26033' : 'Chippewa, MI' ,
1403 '26035' : 'Clare, MI' ,
1404 '26037' : 'Clinton, MI' ,
1405 '26039' : 'Crawford, MI' ,
1406 '26041' : 'Delta, MI' ,
1407 '26043' : 'Dickinson, MI' ,
1408 '26045' : 'Eaton, MI' ,
1409 '26047' : 'Emmet, MI' ,
1410 '26049' : 'Genesee, MI' ,
1411 '26051' : 'Gladwin, MI' ,
1412 '26053' : 'Gogebic, MI' ,
1413 '26055' : 'Grand Traverse, MI' ,
1414 '26057' : 'Gratiot, MI' ,
1415 '26059' : 'Hillsdale, MI' ,
1416 '26061' : 'Houghton, MI' ,
1417 '26063' : 'Huron, MI' ,
1418 '26065' : 'Ingham, MI' ,
1419 '26067' : 'Ionia, MI' ,
1420 '26069' : 'Iosco, MI' ,
1421 '26071' : 'Iron, MI' ,
1422 '26073' : 'Isabella, MI' ,
1423 '26075' : 'Jackson, MI' ,
1424 '26077' : 'Kalamazoo, MI' ,
1425 '26079' : 'Kalkaska, MI' ,
1426 '26081' : 'Kent, MI' ,
1427 '26083' : 'Keweenaw, MI' ,
1428 '26085' : 'Lake, MI' ,
1429 '26087' : 'Lapeer, MI' ,
1430 '26089' : 'Leelanau, MI' ,
1431 '26091' : 'Lenawee, MI' ,
1432 '26093' : 'Livingston, MI' ,
1433 '26095' : 'Luce, MI' ,
1434 '26097' : 'Mackinac, MI' ,
1435 '26099' : 'Macomb, MI' ,
1436 '26101' : 'Manistee, MI' ,
1437 '26103' : 'Marquette, MI' ,
1438 '26105' : 'Mason, MI' ,
1439 '26107' : 'Mecosta, MI' ,
1440 '26109' : 'Menominee, MI' ,
1441 '26111' : 'Midland, MI' ,
1442 '26113' : 'Missaukee, MI' ,
1443 '26115' : 'Monroe, MI' ,
1444 '26117' : 'Montcalm, MI' ,
1445 '26119' : 'Montmorency, MI' ,
1446 '26121' : 'Muskegon, MI' ,
1447 '26123' : 'Newaygo, MI' ,
1448 '26125' : 'Oakland, MI' ,
1449 '26127' : 'Oceana, MI' ,
1450 '26129' : 'Ogemaw, MI' ,
1451 '26131' : 'Ontonagon, MI' ,
1452 '26133' : 'Osceola, MI' ,
1453 '26135' : 'Oscoda, MI' ,
1454 '26137' : 'Otsego, MI' ,
1455 '26139' : 'Ottawa, MI' ,
1456 '26141' : 'Presque Isle, MI' ,
1457 '26143' : 'Roscommon, MI' ,
1458 '26145' : 'Saginaw, MI' ,
1459 '26147' : 'St. Clair, MI' ,
1460 '26149' : 'St. Joseph, MI' ,
1461 '26151' : 'Sanilac, MI' ,
1462 '26153' : 'Schoolcraft, MI' ,
1463 '26155' : 'Shiawassee, MI' ,
1464 '26157' : 'Tuscola, MI' ,
1465 '26159' : 'Van Buren, MI' ,
1466 '26161' : 'Washtenaw, MI' ,
1467 '26163' : 'Wayne, MI' ,
1468 '26165' : 'Wexford, MI' ,
1469 '27000' : 'MINNESOTA' ,
1470 '27001' : 'Aitkin, MN' ,
1471 '27003' : 'Anoka, MN' ,
1472 '27005' : 'Becker, MN' ,
1473 '27007' : 'Beltrami, MN' ,
1474 '27009' : 'Benton, MN' ,
1475 '27011' : 'Big Stone, MN' ,
1476 '27013' : 'Blue Earth, MN' ,
1477 '27015' : 'Brown, MN' ,
1478 '27017' : 'Carlton, MN' ,
1479 '27019' : 'Carver, MN' ,
1480 '27021' : 'Cass, MN' ,
1481 '27023' : 'Chippewa, MN' ,
1482 '27025' : 'Chisago, MN' ,
1483 '27027' : 'Clay, MN' ,
1484 '27029' : 'Clearwater, MN' ,
1485 '27031' : 'Cook, MN' ,
1486 '27033' : 'Cottonwood, MN' ,
1487 '27035' : 'Crow Wing, MN' ,
1488 '27037' : 'Dakota, MN' ,
1489 '27039' : 'Dodge, MN' ,
1490 '27041' : 'Douglas, MN' ,
1491 '27043' : 'Faribault, MN' ,
1492 '27045' : 'Fillmore, MN' ,
1493 '27047' : 'Freeborn, MN' ,
1494 '27049' : 'Goodhue, MN' ,
1495 '27051' : 'Grant, MN' ,
1496 '27053' : 'Hennepin, MN' ,
1497 '27055' : 'Houston, MN' ,
1498 '27057' : 'Hubbard, MN' ,
1499 '27059' : 'Isanti, MN' ,
1500 '27061' : 'Itasca, MN' ,
1501 '27063' : 'Jackson, MN' ,
1502 '27065' : 'Kanabec, MN' ,
1503 '27067' : 'Kandiyohi, MN' ,
1504 '27069' : 'Kittson, MN' ,
1505 '27071' : 'Koochiching, MN' ,
1506 '27073' : 'Lac qui Parle, MN' ,
1507 '27075' : 'Lake, MN' ,
1508 '27077' : 'Lake of the Woods, MN' ,
1509 '27079' : 'Le Sueur, MN' ,
1510 '27081' : 'Lincoln, MN' ,
1511 '27083' : 'Lyon, MN' ,
1512 '27085' : 'McLeod, MN' ,
1513 '27087' : 'Mahnomen, MN' ,
1514 '27089' : 'Marshall, MN' ,
1515 '27091' : 'Martin, MN' ,
1516 '27093' : 'Meeker, MN' ,
1517 '27095' : 'Mille Lacs, MN' ,
1518 '27097' : 'Morrison, MN' ,
1519 '27099' : 'Mower, MN' ,
1520 '27101' : 'Murray, MN' ,
1521 '27103' : 'Nicollet, MN' ,
1522 '27105' : 'Nobles, MN' ,
1523 '27107' : 'Norman, MN' ,
1524 '27109' : 'Olmsted, MN' ,
1525 '27111' : 'Otter Tail, MN' ,
1526 '27113' : 'Pennington, MN' ,
1527 '27115' : 'Pine, MN' ,
1528 '27117' : 'Pipestone, MN' ,
1529 '27119' : 'Polk, MN' ,
1530 '27121' : 'Pope, MN' ,
1531 '27123' : 'Ramsey, MN' ,
1532 '27125' : 'Red Lake, MN' ,
1533 '27127' : 'Redwood, MN' ,
1534 '27129' : 'Renville, MN' ,
1535 '27131' : 'Rice, MN' ,
1536 '27133' : 'Rock, MN' ,
1537 '27135' : 'Roseau, MN' ,
1538 '27137' : 'St. Louis, MN' ,
1539 '27139' : 'Scott, MN' ,
1540 '27141' : 'Sherburne, MN' ,
1541 '27143' : 'Sibley, MN' ,
1542 '27145' : 'Stearns, MN' ,
1543 '27147' : 'Steele, MN' ,
1544 '27149' : 'Stevens, MN' ,
1545 '27151' : 'Swift, MN' ,
1546 '27153' : 'Todd, MN' ,
1547 '27155' : 'Traverse, MN' ,
1548 '27157' : 'Wabasha, MN' ,
1549 '27159' : 'Wadena, MN' ,
1550 '27161' : 'Waseca, MN' ,
1551 '27163' : 'Washington, MN' ,
1552 '27165' : 'Watonwan, MN' ,
1553 '27167' : 'Wilkin, MN' ,
1554 '27169' : 'Winona, MN' ,
1555 '27171' : 'Wright, MN' ,
1556 '27173' : 'Yellow Medicine, MN' ,
1557 '28000' : 'MISSISSIPPI' ,
1558 '28001' : 'Adams, MS' ,
1559 '28003' : 'Alcorn, MS' ,
1560 '28005' : 'Amite, MS' ,
1561 '28007' : 'Attala, MS' ,
1562 '28009' : 'Benton, MS' ,
1563 '28011' : 'Bolivar, MS' ,
1564 '28013' : 'Calhoun, MS' ,
1565 '28015' : 'Carroll, MS' ,
1566 '28017' : 'Chickasaw, MS' ,
1567 '28019' : 'Choctaw, MS' ,
1568 '28021' : 'Claiborne, MS' ,
1569 '28023' : 'Clarke, MS' ,
1570 '28025' : 'Clay, MS' ,
1571 '28027' : 'Coahoma, MS' ,
1572 '28029' : 'Copiah, MS' ,
1573 '28031' : 'Covington, MS' ,
1574 '28033' : 'DeSoto, MS' ,
1575 '28035' : 'Forrest, MS' ,
1576 '28037' : 'Franklin, MS' ,
1577 '28039' : 'George, MS' ,
1578 '28041' : 'Greene, MS' ,
1579 '28043' : 'Grenada, MS' ,
1580 '28045' : 'Hancock, MS' ,
1581 '28047' : 'Harrison, MS' ,
1582 '28049' : 'Hinds, MS' ,
1583 '28051' : 'Holmes, MS' ,
1584 '28053' : 'Humphreys, MS' ,
1585 '28055' : 'Issaquena, MS' ,
1586 '28057' : 'Itawamba, MS' ,
1587 '28059' : 'Jackson, MS' ,
1588 '28061' : 'Jasper, MS' ,
1589 '28063' : 'Jefferson, MS' ,
1590 '28065' : 'Jefferson Davis, MS' ,
1591 '28067' : 'Jones, MS' ,
1592 '28069' : 'Kemper, MS' ,
1593 '28071' : 'Lafayette, MS' ,
1594 '28073' : 'Lamar, MS' ,
1595 '28075' : 'Lauderdale, MS' ,
1596 '28077' : 'Lawrence, MS' ,
1597 '28079' : 'Leake, MS' ,
1598 '28081' : 'Lee, MS' ,
1599 '28083' : 'Leflore, MS' ,
1600 '28085' : 'Lincoln, MS' ,
1601 '28087' : 'Lowndes, MS' ,
1602 '28089' : 'Madison, MS' ,
1603 '28091' : 'Marion, MS' ,
1604 '28093' : 'Marshall, MS' ,
1605 '28095' : 'Monroe, MS' ,
1606 '28097' : 'Montgomery, MS' ,
1607 '28099' : 'Neshoba, MS' ,
1608 '28101' : 'Newton, MS' ,
1609 '28103' : 'Noxubee, MS' ,
1610 '28105' : 'Oktibbeha, MS' ,
1611 '28107' : 'Panola, MS' ,
1612 '28109' : 'Pearl River, MS' ,
1613 '28111' : 'Perry, MS' ,
1614 '28113' : 'Pike, MS' ,
1615 '28115' : 'Pontotoc, MS' ,
1616 '28117' : 'Prentiss, MS' ,
1617 '28119' : 'Quitman, MS' ,
1618 '28121' : 'Rankin, MS' ,
1619 '28123' : 'Scott, MS' ,
1620 '28125' : 'Sharkey, MS' ,
1621 '28127' : 'Simpson, MS' ,
1622 '28129' : 'Smith, MS' ,
1623 '28131' : 'Stone, MS' ,
1624 '28133' : 'Sunflower, MS' ,
1625 '28135' : 'Tallahatchie, MS' ,
1626 '28137' : 'Tate, MS' ,
1627 '28139' : 'Tippah, MS' ,
1628 '28141' : 'Tishomingo, MS' ,
1629 '28143' : 'Tunica, MS' ,
1630 '28145' : 'Union, MS' ,
1631 '28147' : 'Walthall, MS' ,
1632 '28149' : 'Warren, MS' ,
1633 '28151' : 'Washington, MS' ,
1634 '28153' : 'Wayne, MS' ,
1635 '28155' : 'Webster, MS' ,
1636 '28157' : 'Wilkinson, MS' ,
1637 '28159' : 'Winston, MS' ,
1638 '28161' : 'Yalobusha, MS' ,
1639 '28163' : 'Yazoo, MS' ,
1640 '29000' : 'MISSOURI' ,
1641 '29001' : 'Adair, MO' ,
1642 '29003' : 'Andrew, MO' ,
1643 '29005' : 'Atchison, MO' ,
1644 '29007' : 'Audrain, MO' ,
1645 '29009' : 'Barry, MO' ,
1646 '29011' : 'Barton, MO' ,
1647 '29013' : 'Bates, MO' ,
1648 '29015' : 'Benton, MO' ,
1649 '29017' : 'Bollinger, MO' ,
1650 '29019' : 'Boone, MO' ,
1651 '29021' : 'Buchanan, MO' ,
1652 '29023' : 'Butler, MO' ,
1653 '29025' : 'Caldwell, MO' ,
1654 '29027' : 'Callaway, MO' ,
1655 '29029' : 'Camden, MO' ,
1656 '29031' : 'Cape Girardeau, MO' ,
1657 '29033' : 'Carroll, MO' ,
1658 '29035' : 'Carter, MO' ,
1659 '29037' : 'Cass, MO' ,
1660 '29039' : 'Cedar, MO' ,
1661 '29041' : 'Chariton, MO' ,
1662 '29043' : 'Christian, MO' ,
1663 '29045' : 'Clark, MO' ,
1664 '29047' : 'Clay, MO' ,
1665 '29049' : 'Clinton, MO' ,
1666 '29051' : 'Cole, MO' ,
1667 '29053' : 'Cooper, MO' ,
1668 '29055' : 'Crawford, MO' ,
1669 '29057' : 'Dade, MO' ,
1670 '29059' : 'Dallas, MO' ,
1671 '29061' : 'Daviess, MO' ,
1672 '29063' : 'De Kalb, MO' ,
1673 '29065' : 'Dent, MO' ,
1674 '29067' : 'Douglas, MO' ,
1675 '29069' : 'Dunklin, MO' ,
1676 '29071' : 'Franklin, MO' ,
1677 '29073' : 'Gasconade, MO' ,
1678 '29075' : 'Gentry, MO' ,
1679 '29077' : 'Greene, MO' ,
1680 '29079' : 'Grundy, MO' ,
1681 '29081' : 'Harrison, MO' ,
1682 '29083' : 'Henry, MO' ,
1683 '29085' : 'Hickory, MO' ,
1684 '29087' : 'Holt, MO' ,
1685 '29089' : 'Howard, MO' ,
1686 '29091' : 'Howell, MO' ,
1687 '29093' : 'Iron, MO' ,
1688 '29095' : 'Jackson, MO' ,
1689 '29097' : 'Jasper, MO' ,
1690 '29099' : 'Jefferson, MO' ,
1691 '29101' : 'Johnson, MO' ,
1692 '29103' : 'Knox, MO' ,
1693 '29105' : 'Laclede, MO' ,
1694 '29107' : 'Lafayette, MO' ,
1695 '29109' : 'Lawrence, MO' ,
1696 '29111' : 'Lewis, MO' ,
1697 '29113' : 'Lincoln, MO' ,
1698 '29115' : 'Linn, MO' ,
1699 '29117' : 'Livingston, MO' ,
1700 '29119' : 'McDonald, MO' ,
1701 '29121' : 'Macon, MO' ,
1702 '29123' : 'Madison, MO' ,
1703 '29125' : 'Maries, MO' ,
1704 '29127' : 'Marion, MO' ,
1705 '29129' : 'Mercer, MO' ,
1706 '29131' : 'Miller, MO' ,
1707 '29133' : 'Mississippi, MO' ,
1708 '29135' : 'Moniteau, MO' ,
1709 '29137' : 'Monroe, MO' ,
1710 '29139' : 'Montgomery, MO' ,
1711 '29141' : 'Morgan, MO' ,
1712 '29143' : 'New Madrid, MO' ,
1713 '29145' : 'Newton, MO' ,
1714 '29147' : 'Nodaway, MO' ,
1715 '29149' : 'Oregon, MO' ,
1716 '29151' : 'Osage, MO' ,
1717 '29153' : 'Ozark, MO' ,
1718 '29155' : 'Pemiscot, MO' ,
1719 '29157' : 'Perry, MO' ,
1720 '29159' : 'Pettis, MO' ,
1721 '29161' : 'Phelps, MO' ,
1722 '29163' : 'Pike, MO' ,
1723 '29165' : 'Platte, MO' ,
1724 '29167' : 'Polk, MO' ,
1725 '29169' : 'Pulaski, MO' ,
1726 '29171' : 'Putnam, MO' ,
1727 '29173' : 'Ralls, MO' ,
1728 '29175' : 'Randolph, MO' ,
1729 '29177' : 'Ray, MO' ,
1730 '29179' : 'Reynolds, MO' ,
1731 '29181' : 'Ripley, MO' ,
1732 '29183' : 'St. Charles, MO' ,
1733 '29185' : 'St. Clair, MO' ,
1734 '29186' : 'Ste. Genevieve, MO' ,
1735 '29187' : 'St. Francois, MO' ,
1736 '29189' : 'St. Louis, MO' ,
1737 '29195' : 'Saline, MO' ,
1738 '29197' : 'Schuyler, MO' ,
1739 '29199' : 'Scotland, MO' ,
1740 '29201' : 'Scott, MO' ,
1741 '29203' : 'Shannon, MO' ,
1742 '29205' : 'Shelby, MO' ,
1743 '29207' : 'Stoddard, MO' ,
1744 '29209' : 'Stone, MO' ,
1745 '29211' : 'Sullivan, MO' ,
1746 '29213' : 'Taney, MO' ,
1747 '29215' : 'Texas, MO' ,
1748 '29217' : 'Vernon, MO' ,
1749 '29219' : 'Warren, MO' ,
1750 '29221' : 'Washington, MO' ,
1751 '29223' : 'Wayne, MO' ,
1752 '29225' : 'Webster, MO' ,
1753 '29227' : 'Worth, MO' ,
1754 '29229' : 'Wright, MO' ,
1755 '29510' : 'St. Louis City, MO' ,
1756 '30000' : 'MONTANA' ,
1757 '30001' : 'Beaverhead, MT' ,
1758 '30003' : 'Big Horn, MT' ,
1759 '30005' : 'Blaine, MT' ,
1760 '30007' : 'Broadwater, MT' ,
1761 '30009' : 'Carbon, MT' ,
1762 '30011' : 'Carter, MT' ,
1763 '30013' : 'Cascade, MT' ,
1764 '30015' : 'Chouteau, MT' ,
1765 '30017' : 'Custer, MT' ,
1766 '30019' : 'Daniels, MT' ,
1767 '30021' : 'Dawson, MT' ,
1768 '30023' : 'Deer Lodge, MT' ,
1769 '30025' : 'Fallon, MT' ,
1770 '30027' : 'Fergus, MT' ,
1771 '30029' : 'Flathead, MT' ,
1772 '30031' : 'Gallatin, MT' ,
1773 '30033' : 'Garfield, MT' ,
1774 '30035' : 'Glacier, MT' ,
1775 '30037' : 'Golden Valley, MT' ,
1776 '30039' : 'Granite, MT' ,
1777 '30041' : 'Hill, MT' ,
1778 '30043' : 'Jefferson, MT' ,
1779 '30045' : 'Judith Basin, MT' ,
1780 '30047' : 'Lake, MT' ,
1781 '30049' : 'Lewis and Clark, MT' ,
1782 '30051' : 'Liberty, MT' ,
1783 '30053' : 'Lincoln, MT' ,
1784 '30055' : 'McCone, MT' ,
1785 '30057' : 'Madison, MT' ,
1786 '30059' : 'Meagher, MT' ,
1787 '30061' : 'Mineral, MT' ,
1788 '30063' : 'Missoula, MT' ,
1789 '30065' : 'Musselshell, MT' ,
1790 '30067' : 'Park, MT' ,
1791 '30069' : 'Petroleum, MT' ,
1792 '30071' : 'Phillips, MT' ,
1793 '30073' : 'Pondera, MT' ,
1794 '30075' : 'Powder River, MT' ,
1795 '30077' : 'Powell, MT' ,
1796 '30079' : 'Prairie, MT' ,
1797 '30081' : 'Ravalli, MT' ,
1798 '30083' : 'Richland, MT' ,
1799 '30085' : 'Roosevelt, MT' ,
1800 '30087' : 'Rosebud, MT' ,
1801 '30089' : 'Sanders, MT' ,
1802 '30091' : 'Sheridan, MT' ,
1803 '30093' : 'Silver Bow, MT' ,
1804 '30095' : 'Stillwater, MT' ,
1805 '30097' : 'Sweet Grass, MT' ,
1806 '30099' : 'Teton, MT' ,
1807 '30101' : 'Toole, MT' ,
1808 '30103' : 'Treasure, MT' ,
1809 '30105' : 'Valley, MT' ,
1810 '30107' : 'Wheatland, MT' ,
1811 '30109' : 'Wibaux, MT' ,
1812 '30111' : 'Yellowstone, MT' ,
1813 '30113' : 'Yellowstone National Park, MT' ,
1814 '31000' : 'NEBRASKA' ,
1815 '31001' : 'Adams, NE' ,
1816 '31003' : 'Antelope, NE' ,
1817 '31005' : 'Arthur, NE' ,
1818 '31007' : 'Banner, NE' ,
1819 '31009' : 'Blaine, NE' ,
1820 '31011' : 'Boone, NE' ,
1821 '31013' : 'Box Butte, NE' ,
1822 '31015' : 'Boyd, NE' ,
1823 '31017' : 'Brown, NE' ,
1824 '31019' : 'Buffalo, NE' ,
1825 '31021' : 'Burt, NE' ,
1826 '31023' : 'Butler, NE' ,
1827 '31025' : 'Cass, NE' ,
1828 '31027' : 'Cedar, NE' ,
1829 '31029' : 'Chase, NE' ,
1830 '31031' : 'Cherry, NE' ,
1831 '31033' : 'Cheyenne, NE' ,
1832 '31035' : 'Clay, NE' ,
1833 '31037' : 'Colfax, NE' ,
1834 '31039' : 'Cuming, NE' ,
1835 '31041' : 'Custer, NE' ,
1836 '31043' : 'Dakota, NE' ,
1837 '31045' : 'Dawes, NE' ,
1838 '31047' : 'Dawson, NE' ,
1839 '31049' : 'Deuel, NE' ,
1840 '31051' : 'Dixon, NE' ,
1841 '31053' : 'Dodge, NE' ,
1842 '31055' : 'Douglas, NE' ,
1843 '31057' : 'Dundy, NE' ,
1844 '31059' : 'Fillmore, NE' ,
1845 '31061' : 'Franklin, NE' ,
1846 '31063' : 'Frontier, NE' ,
1847 '31065' : 'Furnas, NE' ,
1848 '31067' : 'Gage, NE' ,
1849 '31069' : 'Garden, NE' ,
1850 '31071' : 'Garfield, NE' ,
1851 '31073' : 'Gosper, NE' ,
1852 '31075' : 'Grant, NE' ,
1853 '31077' : 'Greeley, NE' ,
1854 '31079' : 'Hall, NE' ,
1855 '31081' : 'Hamilton, NE' ,
1856 '31083' : 'Harlan, NE' ,
1857 '31085' : 'Hayes, NE' ,
1858 '31087' : 'Hitchcock, NE' ,
1859 '31089' : 'Holt, NE' ,
1860 '31091' : 'Hooker, NE' ,
1861 '31093' : 'Howard, NE' ,
1862 '31095' : 'Jefferson, NE' ,
1863 '31097' : 'Johnson, NE' ,
1864 '31099' : 'Kearney, NE' ,
1865 '31101' : 'Keith, NE' ,
1866 '31103' : 'Keya Paha, NE' ,
1867 '31105' : 'Kimball, NE' ,
1868 '31107' : 'Knox, NE' ,
1869 '31109' : 'Lancaster, NE' ,
1870 '31111' : 'Lincoln, NE' ,
1871 '31113' : 'Logan, NE' ,
1872 '31115' : 'Loup, NE' ,
1873 '31117' : 'McPherson, NE' ,
1874 '31119' : 'Madison, NE' ,
1875 '31121' : 'Merrick, NE' ,
1876 '31123' : 'Morrill, NE' ,
1877 '31125' : 'Nance, NE' ,
1878 '31127' : 'Nemaha, NE' ,
1879 '31129' : 'Nuckolls, NE' ,
1880 '31131' : 'Otoe, NE' ,
1881 '31133' : 'Pawnee, NE' ,
1882 '31135' : 'Perkins, NE' ,
1883 '31137' : 'Phelps, NE' ,
1884 '31139' : 'Pierce, NE' ,
1885 '31141' : 'Platte, NE' ,
1886 '31143' : 'Polk, NE' ,
1887 '31145' : 'Red Willow, NE' ,
1888 '31147' : 'Richardson, NE' ,
1889 '31149' : 'Rock, NE' ,
1890 '31151' : 'Saline, NE' ,
1891 '31153' : 'Sarpy, NE' ,
1892 '31155' : 'Saunders, NE' ,
1893 '31157' : 'Scotts Bluff, NE' ,
1894 '31159' : 'Seward, NE' ,
1895 '31161' : 'Sheridan, NE' ,
1896 '31163' : 'Sherman, NE' ,
1897 '31165' : 'Sioux, NE' ,
1898 '31167' : 'Stanton, NE' ,
1899 '31169' : 'Thayer, NE' ,
1900 '31171' : 'Thomas, NE' ,
1901 '31173' : 'Thurston, NE' ,
1902 '31175' : 'Valley, NE' ,
1903 '31177' : 'Washington, NE' ,
1904 '31179' : 'Wayne, NE' ,
1905 '31181' : 'Webster, NE' ,
1906 '31183' : 'Wheeler, NE' ,
1907 '31185' : 'York, NE' ,
1908 '32000' : 'NEVADA' ,
1909 '32001' : 'Churchill, NV' ,
1910 '32003' : 'Clark, NV' ,
1911 '32005' : 'Douglas, NV' ,
1912 '32007' : 'Elko, NV' ,
1913 '32009' : 'Esmeralda, NV' ,
1914 '32011' : 'Eureka, NV' ,
1915 '32013' : 'Humboldt, NV' ,
1916 '32015' : 'Lander, NV' ,
1917 '32017' : 'Lincoln, NV' ,
1918 '32019' : 'Lyon, NV' ,
1919 '32021' : 'Mineral, NV' ,
1920 '32023' : 'Nye, NV' ,
1921 '32027' : 'Pershing, NV' ,
1922 '32029' : 'Storey, NV' ,
1923 '32031' : 'Washoe, NV' ,
1924 '32033' : 'White Pine, NV' ,
1925 '32510' : 'Carson City, NV' ,
1926 '33000' : 'NEW HAMPSHIRE' ,
1927 '33001' : 'Belknap, NH' ,
1928 '33003' : 'Carroll, NH' ,
1929 '33005' : 'Cheshire, NH' ,
1930 '33007' : 'Coos, NH' ,
1931 '33009' : 'Grafton, NH' ,
1932 '33011' : 'Hillsborough, NH' ,
1933 '33013' : 'Merrimack, NH' ,
1934 '33015' : 'Rockingham, NH' ,
1935 '33017' : 'Strafford, NH' ,
1936 '33019' : 'Sullivan, NH' ,
1937 '34000' : 'NEW JERSEY' ,
1938 '34001' : 'Atlantic, NJ' ,
1939 '34003' : 'Bergen, NJ' ,
1940 '34005' : 'Burlington, NJ' ,
1941 '34007' : 'Camden, NJ' ,
1942 '34009' : 'Cape May, NJ' ,
1943 '34011' : 'Cumberland, NJ' ,
1944 '34013' : 'Essex, NJ' ,
1945 '34015' : 'Gloucester, NJ' ,
1946 '34017' : 'Hudson, NJ' ,
1947 '34019' : 'Hunterdon, NJ' ,
1948 '34021' : 'Mercer, NJ' ,
1949 '34023' : 'Middlesex, NJ' ,
1950 '34025' : 'Monmouth, NJ' ,
1951 '34027' : 'Morris, NJ' ,
1952 '34029' : 'Ocean, NJ' ,
1953 '34031' : 'Passaic, NJ' ,
1954 '34033' : 'Salem, NJ' ,
1955 '34035' : 'Somerset, NJ' ,
1956 '34037' : 'Sussex, NJ' ,
1957 '34039' : 'Union, NJ' ,
1958 '34041' : 'Warren, NJ' ,
1959 '35000' : 'NEW MEXICO' ,
1960 '35001' : 'Bernalillo, NM' ,
1961 '35003' : 'Catron, NM' ,
1962 '35005' : 'Chaves, NM' ,
1963 '35006' : 'Cibola, NM' ,
1964 '35007' : 'Colfax, NM' ,
1965 '35009' : 'Curry, NM' ,
1966 '35011' : 'De Baca, NM' ,
1967 '35013' : 'Dona Ana, NM' ,
1968 '35015' : 'Eddy, NM' ,
1969 '35017' : 'Grant, NM' ,
1970 '35019' : 'Guadalupe, NM' ,
1971 '35021' : 'Harding, NM' ,
1972 '35023' : 'Hidalgo, NM' ,
1973 '35025' : 'Lea, NM' ,
1974 '35027' : 'Lincoln, NM' ,
1975 '35028' : 'Los Alamos, NM' ,
1976 '35029' : 'Luna, NM' ,
1977 '35031' : 'McKinley, NM' ,
1978 '35033' : 'Mora, NM' ,
1979 '35035' : 'Otero, NM' ,
1980 '35037' : 'Quay, NM' ,
1981 '35039' : 'Rio Arriba, NM' ,
1982 '35041' : 'Roosevelt, NM' ,
1983 '35043' : 'Sandoval, NM' ,
1984 '35045' : 'San Juan, NM' ,
1985 '35047' : 'San Miguel, NM' ,
1986 '35049' : 'Santa Fe, NM' ,
1987 '35051' : 'Sierra, NM' ,
1988 '35053' : 'Socorro, NM' ,
1989 '35055' : 'Taos, NM' ,
1990 '35057' : 'Torrance, NM' ,
1991 '35059' : 'Union, NM' ,
1992 '35061' : 'Valencia, NM' ,
1993 '36000' : 'NEW YORK' ,
1994 '36001' : 'Albany, NY' ,
1995 '36003' : 'Allegany, NY' ,
1996 '36005' : 'Bronx, NY' ,
1997 '36007' : 'Broome, NY' ,
1998 '36009' : 'Cattaraugus, NY' ,
1999 '36011' : 'Cayuga, NY' ,
2000 '36013' : 'Chautauqua, NY' ,
2001 '36015' : 'Chemung, NY' ,
2002 '36017' : 'Chenango, NY' ,
2003 '36019' : 'Clinton, NY' ,
2004 '36021' : 'Columbia, NY' ,
2005 '36023' : 'Cortland, NY' ,
2006 '36025' : 'Delaware, NY' ,
2007 '36027' : 'Dutchess, NY' ,
2008 '36029' : 'Erie, NY' ,
2009 '36031' : 'Essex, NY' ,
2010 '36033' : 'Franklin, NY' ,
2011 '36035' : 'Fulton, NY' ,
2012 '36037' : 'Genesee, NY' ,
2013 '36039' : 'Greene, NY' ,
2014 '36041' : 'Hamilton, NY' ,
2015 '36043' : 'Herkimer, NY' ,
2016 '36045' : 'Jefferson, NY' ,
2017 '36047' : 'Kings, NY' ,
2018 '36049' : 'Lewis, NY' ,
2019 '36051' : 'Livingston, NY' ,
2020 '36053' : 'Madison, NY' ,
2021 '36055' : 'Monroe, NY' ,
2022 '36057' : 'Montgomery, NY' ,
2023 '36059' : 'Nassau, NY' ,
2024 '36061' : 'New York, NY' ,
2025 '36063' : 'Niagara, NY' ,
2026 '36065' : 'Oneida, NY' ,
2027 '36067' : 'Onondaga, NY' ,
2028 '36069' : 'Ontario, NY' ,
2029 '36071' : 'Orange, NY' ,
2030 '36073' : 'Orleans, NY' ,
2031 '36075' : 'Oswego, NY' ,
2032 '36077' : 'Otsego, NY' ,
2033 '36079' : 'Putnam, NY' ,
2034 '36081' : 'Queens, NY' ,
2035 '36083' : 'Rensselaer, NY' ,
2036 '36085' : 'Richmond, NY' ,
2037 '36087' : 'Rockland, NY' ,
2038 '36089' : 'St. Lawrence, NY' ,
2039 '36091' : 'Saratoga, NY' ,
2040 '36093' : 'Schenectady, NY' ,
2041 '36095' : 'Schoharie, NY' ,
2042 '36097' : 'Schuyler, NY' ,
2043 '36099' : 'Seneca, NY' ,
2044 '36101' : 'Steuben, NY' ,
2045 '36103' : 'Suffolk, NY' ,
2046 '36105' : 'Sullivan, NY' ,
2047 '36107' : 'Tioga, NY' ,
2048 '36109' : 'Tompkins, NY' ,
2049 '36111' : 'Ulster, NY' ,
2050 '36113' : 'Warren, NY' ,
2051 '36115' : 'Washington, NY' ,
2052 '36117' : 'Wayne, NY' ,
2053 '36119' : 'Westchester, NY' ,
2054 '36121' : 'Wyoming, NY' ,
2055 '36123' : 'Yates, NY' ,
2056 '37000' : 'NORTH CAROLINA' ,
2057 '37001' : 'Alamance, NC' ,
2058 '37003' : 'Alexander, NC' ,
2059 '37005' : 'Alleghany, NC' ,
2060 '37007' : 'Anson, NC' ,
2061 '37009' : 'Ashe, NC' ,
2062 '37011' : 'Avery, NC' ,
2063 '37013' : 'Beaufort, NC' ,
2064 '37015' : 'Bertie, NC' ,
2065 '37017' : 'Bladen, NC' ,
2066 '37019' : 'Brunswick, NC' ,
2067 '37021' : 'Buncombe, NC' ,
2068 '37023' : 'Burke, NC' ,
2069 '37025' : 'Cabarrus, NC' ,
2070 '37027' : 'Caldwell, NC' ,
2071 '37029' : 'Camden, NC' ,
2072 '37031' : 'Carteret, NC' ,
2073 '37033' : 'Caswell, NC' ,
2074 '37035' : 'Catawba, NC' ,
2075 '37037' : 'Chatham, NC' ,
2076 '37039' : 'Cherokee, NC' ,
2077 '37041' : 'Chowan, NC' ,
2078 '37043' : 'Clay, NC' ,
2079 '37045' : 'Cleveland, NC' ,
2080 '37047' : 'Columbus, NC' ,
2081 '37049' : 'Craven, NC' ,
2082 '37051' : 'Cumberland, NC' ,
2083 '37053' : 'Currituck, NC' ,
2084 '37055' : 'Dare, NC' ,
2085 '37057' : 'Davidson, NC' ,
2086 '37059' : 'Davie, NC' ,
2087 '37061' : 'Duplin, NC' ,
2088 '37063' : 'Durham, NC' ,
2089 '37065' : 'Edgecombe, NC' ,
2090 '37067' : 'Forsyth, NC' ,
2091 '37069' : 'Franklin, NC' ,
2092 '37071' : 'Gaston, NC' ,
2093 '37073' : 'Gates, NC' ,
2094 '37075' : 'Graham, NC' ,
2095 '37077' : 'Granville, NC' ,
2096 '37079' : 'Greene, NC' ,
2097 '37081' : 'Guilford, NC' ,
2098 '37083' : 'Halifax, NC' ,
2099 '37085' : 'Harnett, NC' ,
2100 '37087' : 'Haywood, NC' ,
2101 '37089' : 'Henderson, NC' ,
2102 '37091' : 'Hertford, NC' ,
2103 '37093' : 'Hoke, NC' ,
2104 '37095' : 'Hyde, NC' ,
2105 '37097' : 'Iredell, NC' ,
2106 '37099' : 'Jackson, NC' ,
2107 '37101' : 'Johnston, NC' ,
2108 '37103' : 'Jones, NC' ,
2109 '37105' : 'Lee, NC' ,
2110 '37107' : 'Lenoir, NC' ,
2111 '37109' : 'Lincoln, NC' ,
2112 '37111' : 'McDowell, NC' ,
2113 '37113' : 'Macon, NC' ,
2114 '37115' : 'Madison, NC' ,
2115 '37117' : 'Martin, NC' ,
2116 '37119' : 'Mecklenburg, NC' ,
2117 '37121' : 'Mitchell, NC' ,
2118 '37123' : 'Montgomery, NC' ,
2119 '37125' : 'Moore, NC' ,
2120 '37127' : 'Nash, NC' ,
2121 '37129' : 'New Hanover, NC' ,
2122 '37131' : 'Northampton, NC' ,
2123 '37133' : 'Onslow, NC' ,
2124 '37135' : 'Orange, NC' ,
2125 '37137' : 'Pamlico, NC' ,
2126 '37139' : 'Pasquotank, NC' ,
2127 '37141' : 'Pender, NC' ,
2128 '37143' : 'Perquimans, NC' ,
2129 '37145' : 'Person, NC' ,
2130 '37147' : 'Pitt, NC' ,
2131 '37149' : 'Polk, NC' ,
2132 '37151' : 'Randolph, NC' ,
2133 '37153' : 'Richmond, NC' ,
2134 '37155' : 'Robeson, NC' ,
2135 '37157' : 'Rockingham, NC' ,
2136 '37159' : 'Rowan, NC' ,
2137 '37161' : 'Rutherford, NC' ,
2138 '37163' : 'Sampson, NC' ,
2139 '37165' : 'Scotland, NC' ,
2140 '37167' : 'Stanly, NC' ,
2141 '37169' : 'Stokes, NC' ,
2142 '37171' : 'Surry, NC' ,
2143 '37173' : 'Swain, NC' ,
2144 '37175' : 'Transylvania, NC' ,
2145 '37177' : 'Tyrrell, NC' ,
2146 '37179' : 'Union, NC' ,
2147 '37181' : 'Vance, NC' ,
2148 '37183' : 'Wake, NC' ,
2149 '37185' : 'Warren, NC' ,
2150 '37187' : 'Washington, NC' ,
2151 '37189' : 'Watauga, NC' ,
2152 '37191' : 'Wayne, NC' ,
2153 '37193' : 'Wilkes, NC' ,
2154 '37195' : 'Wilson, NC' ,
2155 '37197' : 'Yadkin, NC' ,
2156 '37199' : 'Yancey, NC' ,
2157 '38000' : 'NORTH DAKOTA' ,
2158 '38001' : 'Adams, ND' ,
2159 '38003' : 'Barnes, ND' ,
2160 '38005' : 'Benson, ND' ,
2161 '38007' : 'Billings, ND' ,
2162 '38009' : 'Bottineau, ND' ,
2163 '38011' : 'Bowman, ND' ,
2164 '38013' : 'Burke, ND' ,
2165 '38015' : 'Burleigh, ND' ,
2166 '38017' : 'Cass, ND' ,
2167 '38019' : 'Cavalier, ND' ,
2168 '38021' : 'Dickey, ND' ,
2169 '38023' : 'Divide, ND' ,
2170 '38025' : 'Dunn, ND' ,
2171 '38027' : 'Eddy, ND' ,
2172 '38029' : 'Emmons, ND' ,
2173 '38031' : 'Foster, ND' ,
2174 '38033' : 'Golden Valley, ND' ,
2175 '38035' : 'Grand Forks, ND' ,
2176 '38037' : 'Grant, ND' ,
2177 '38039' : 'Griggs, ND' ,
2178 '38041' : 'Hettinger, ND' ,
2179 '38043' : 'Kidder, ND' ,
2180 '38045' : 'La Moure, ND' ,
2181 '38047' : 'Logan, ND' ,
2182 '38049' : 'McHenry, ND' ,
2183 '38051' : 'McIntosh, ND' ,
2184 '38053' : 'McKenzie, ND' ,
2185 '38055' : 'McLean, ND' ,
2186 '38057' : 'Mercer, ND' ,
2187 '38059' : 'Morton, ND' ,
2188 '38061' : 'Mountrail, ND' ,
2189 '38063' : 'Nelson, ND' ,
2190 '38065' : 'Oliver, ND' ,
2191 '38067' : 'Pembina, ND' ,
2192 '38069' : 'Pierce, ND' ,
2193 '38071' : 'Ramsey, ND' ,
2194 '38073' : 'Ransom, ND' ,
2195 '38075' : 'Renville, ND' ,
2196 '38077' : 'Richland, ND' ,
2197 '38079' : 'Rolette, ND' ,
2198 '38081' : 'Sargent, ND' ,
2199 '38083' : 'Sheridan, ND' ,
2200 '38085' : 'Sioux, ND' ,
2201 '38087' : 'Slope, ND' ,
2202 '38089' : 'Stark, ND' ,
2203 '38091' : 'Steele, ND' ,
2204 '38093' : 'Stutsman, ND' ,
2205 '38095' : 'Towner, ND' ,
2206 '38097' : 'Traill, ND' ,
2207 '38099' : 'Walsh, ND' ,
2208 '38101' : 'Ward, ND' ,
2209 '38103' : 'Wells, ND' ,
2210 '38105' : 'Williams, ND' ,
2211 '39000' : 'OHIO' ,
2212 '39001' : 'Adams, OH' ,
2213 '39003' : 'Allen, OH' ,
2214 '39005' : 'Ashland, OH' ,
2215 '39007' : 'Ashtabula, OH' ,
2216 '39009' : 'Athens, OH' ,
2217 '39011' : 'Auglaize, OH' ,
2218 '39013' : 'Belmont, OH' ,
2219 '39015' : 'Brown, OH' ,
2220 '39017' : 'Butler, OH' ,
2221 '39019' : 'Carroll, OH' ,
2222 '39021' : 'Champaign, OH' ,
2223 '39023' : 'Clark, OH' ,
2224 '39025' : 'Clermont, OH' ,
2225 '39027' : 'Clinton, OH' ,
2226 '39029' : 'Columbiana, OH' ,
2227 '39031' : 'Coshocton, OH' ,
2228 '39033' : 'Crawford, OH' ,
2229 '39035' : 'Cuyahoga, OH' ,
2230 '39037' : 'Darke, OH' ,
2231 '39039' : 'Defiance, OH' ,
2232 '39041' : 'Delaware, OH' ,
2233 '39043' : 'Erie, OH' ,
2234 '39045' : 'Fairfield, OH' ,
2235 '39047' : 'Fayette, OH' ,
2236 '39049' : 'Franklin, OH' ,
2237 '39051' : 'Fulton, OH' ,
2238 '39053' : 'Gallia, OH' ,
2239 '39055' : 'Geauga, OH' ,
2240 '39057' : 'Greene, OH' ,
2241 '39059' : 'Guernsey, OH' ,
2242 '39061' : 'Hamilton, OH' ,
2243 '39063' : 'Hancock, OH' ,
2244 '39065' : 'Hardin, OH' ,
2245 '39067' : 'Harrison, OH' ,
2246 '39069' : 'Henry, OH' ,
2247 '39071' : 'Highland, OH' ,
2248 '39073' : 'Hocking, OH' ,
2249 '39075' : 'Holmes, OH' ,
2250 '39077' : 'Huron, OH' ,
2251 '39079' : 'Jackson, OH' ,
2252 '39081' : 'Jefferson, OH' ,
2253 '39083' : 'Knox, OH' ,
2254 '39085' : 'Lake, OH' ,
2255 '39087' : 'Lawrence, OH' ,
2256 '39089' : 'Licking, OH' ,
2257 '39091' : 'Logan, OH' ,
2258 '39093' : 'Lorain, OH' ,
2259 '39095' : 'Lucas, OH' ,
2260 '39097' : 'Madison, OH' ,
2261 '39099' : 'Mahoning, OH' ,
2262 '39101' : 'Marion, OH' ,
2263 '39103' : 'Medina, OH' ,
2264 '39105' : 'Meigs, OH' ,
2265 '39107' : 'Mercer, OH' ,
2266 '39109' : 'Miami, OH' ,
2267 '39111' : 'Monroe, OH' ,
2268 '39113' : 'Montgomery, OH' ,
2269 '39115' : 'Morgan, OH' ,
2270 '39117' : 'Morrow, OH' ,
2271 '39119' : 'Muskingum, OH' ,
2272 '39121' : 'Noble, OH' ,
2273 '39123' : 'Ottawa, OH' ,
2274 '39125' : 'Paulding, OH' ,
2275 '39127' : 'Perry, OH' ,
2276 '39129' : 'Pickaway, OH' ,
2277 '39131' : 'Pike, OH' ,
2278 '39133' : 'Portage, OH' ,
2279 '39135' : 'Preble, OH' ,
2280 '39137' : 'Putnam, OH' ,
2281 '39139' : 'Richland, OH' ,
2282 '39141' : 'Ross, OH' ,
2283 '39143' : 'Sandusky, OH' ,
2284 '39145' : 'Scioto, OH' ,
2285 '39147' : 'Seneca, OH' ,
2286 '39149' : 'Shelby, OH' ,
2287 '39151' : 'Stark, OH' ,
2288 '39153' : 'Summit, OH' ,
2289 '39155' : 'Trumbull, OH' ,
2290 '39157' : 'Tuscarawas, OH' ,
2291 '39159' : 'Union, OH' ,
2292 '39161' : 'Van Wert, OH' ,
2293 '39163' : 'Vinton, OH' ,
2294 '39165' : 'Warren, OH' ,
2295 '39167' : 'Washington, OH' ,
2296 '39169' : 'Wayne, OH' ,
2297 '39171' : 'Williams, OH' ,
2298 '39173' : 'Wood, OH' ,
2299 '39175' : 'Wyandot, OH' ,
2300 '40000' : 'OKLAHOMA' ,
2301 '40001' : 'Adair, OK' ,
2302 '40003' : 'Alfalfa, OK' ,
2303 '40005' : 'Atoka, OK' ,
2304 '40007' : 'Beaver, OK' ,
2305 '40009' : 'Beckham, OK' ,
2306 '40011' : 'Blaine, OK' ,
2307 '40013' : 'Bryan, OK' ,
2308 '40015' : 'Caddo, OK' ,
2309 '40017' : 'Canadian, OK' ,
2310 '40019' : 'Carter, OK' ,
2311 '40021' : 'Cherokee, OK' ,
2312 '40023' : 'Choctaw, OK' ,
2313 '40025' : 'Cimarron, OK' ,
2314 '40027' : 'Cleveland, OK' ,
2315 '40029' : 'Coal, OK' ,
2316 '40031' : 'Comanche, OK' ,
2317 '40033' : 'Cotton, OK' ,
2318 '40035' : 'Craig, OK' ,
2319 '40037' : 'Creek, OK' ,
2320 '40039' : 'Custer, OK' ,
2321 '40041' : 'Delaware, OK' ,
2322 '40043' : 'Dewey, OK' ,
2323 '40045' : 'Ellis, OK' ,
2324 '40047' : 'Garfield, OK' ,
2325 '40049' : 'Garvin, OK' ,
2326 '40051' : 'Grady, OK' ,
2327 '40053' : 'Grant, OK' ,
2328 '40055' : 'Greer, OK' ,
2329 '40057' : 'Harmon, OK' ,
2330 '40059' : 'Harper, OK' ,
2331 '40061' : 'Haskell, OK' ,
2332 '40063' : 'Hughes, OK' ,
2333 '40065' : 'Jackson, OK' ,
2334 '40067' : 'Jefferson, OK' ,
2335 '40069' : 'Johnston, OK' ,
2336 '40071' : 'Kay, OK' ,
2337 '40073' : 'Kingfisher, OK' ,
2338 '40075' : 'Kiowa, OK' ,
2339 '40077' : 'Latimer, OK' ,
2340 '40079' : 'Le Flore, OK' ,
2341 '40081' : 'Lincoln, OK' ,
2342 '40083' : 'Logan, OK' ,
2343 '40085' : 'Love, OK' ,
2344 '40087' : 'McClain, OK' ,
2345 '40089' : 'McCurtain, OK' ,
2346 '40091' : 'McIntosh, OK' ,
2347 '40093' : 'Major, OK' ,
2348 '40095' : 'Marshall, OK' ,
2349 '40097' : 'Mayes, OK' ,
2350 '40099' : 'Murray, OK' ,
2351 '40101' : 'Muskogee, OK' ,
2352 '40103' : 'Noble, OK' ,
2353 '40105' : 'Nowata, OK' ,
2354 '40107' : 'Okfuskee, OK' ,
2355 '40109' : 'Oklahoma, OK' ,
2356 '40111' : 'Okmulgee, OK' ,
2357 '40113' : 'Osage, OK' ,
2358 '40115' : 'Ottawa, OK' ,
2359 '40117' : 'Pawnee, OK' ,
2360 '40119' : 'Payne, OK' ,
2361 '40121' : 'Pittsburg, OK' ,
2362 '40123' : 'Pontotoc, OK' ,
2363 '40125' : 'Pottawatomie, OK' ,
2364 '40127' : 'Pushmataha, OK' ,
2365 '40129' : 'Roger Mills, OK' ,
2366 '40131' : 'Rogers, OK' ,
2367 '40133' : 'Seminole, OK' ,
2368 '40135' : 'Sequoyah, OK' ,
2369 '40137' : 'Stephens, OK' ,
2370 '40139' : 'Texas, OK' ,
2371 '40141' : 'Tillman, OK' ,
2372 '40143' : 'Tulsa, OK' ,
2373 '40145' : 'Wagoner, OK' ,
2374 '40147' : 'Washington, OK' ,
2375 '40149' : 'Washita, OK' ,
2376 '40151' : 'Woods, OK' ,
2377 '40153' : 'Woodward, OK' ,
2378 '41000' : 'OREGON' ,
2379 '41001' : 'Baker, OR' ,
2380 '41003' : 'Benton, OR' ,
2381 '41005' : 'Clackamas, OR' ,
2382 '41007' : 'Clatsop, OR' ,
2383 '41009' : 'Columbia, OR' ,
2384 '41011' : 'Coos, OR' ,
2385 '41013' : 'Crook, OR' ,
2386 '41015' : 'Curry, OR' ,
2387 '41017' : 'Deschutes, OR' ,
2388 '41019' : 'Douglas, OR' ,
2389 '41021' : 'Gilliam, OR' ,
2390 '41023' : 'Grant, OR' ,
2391 '41025' : 'Harney, OR' ,
2392 '41027' : 'Hood River, OR' ,
2393 '41029' : 'Jackson, OR' ,
2394 '41031' : 'Jefferson, OR' ,
2395 '41033' : 'Josephine, OR' ,
2396 '41035' : 'Klamath, OR' ,
2397 '41037' : 'Lake, OR' ,
2398 '41039' : 'Lane, OR' ,
2399 '41041' : 'Lincoln, OR' ,
2400 '41043' : 'Linn, OR' ,
2401 '41045' : 'Malheur, OR' ,
2402 '41047' : 'Marion, OR' ,
2403 '41049' : 'Morrow, OR' ,
2404 '41051' : 'Multnomah, OR' ,
2405 '41053' : 'Polk, OR' ,
2406 '41055' : 'Sherman, OR' ,
2407 '41057' : 'Tillamook, OR' ,
2408 '41059' : 'Umatilla, OR' ,
2409 '41061' : 'Union, OR' ,
2410 '41063' : 'Wallowa, OR' ,
2411 '41065' : 'Wasco, OR' ,
2412 '41067' : 'Washington, OR' ,
2413 '41069' : 'Wheeler, OR' ,
2414 '41071' : 'Yamhill, OR' ,
2415 '42000' : 'PENNSYLVANIA' ,
2416 '42001' : 'Adams, PA' ,
2417 '42003' : 'Allegheny, PA' ,
2418 '42005' : 'Armstrong, PA' ,
2419 '42007' : 'Beaver, PA' ,
2420 '42009' : 'Bedford, PA' ,
2421 '42011' : 'Berks, PA' ,
2422 '42013' : 'Blair, PA' ,
2423 '42015' : 'Bradford, PA' ,
2424 '42017' : 'Bucks, PA' ,
2425 '42019' : 'Butler, PA' ,
2426 '42021' : 'Cambria, PA' ,
2427 '42023' : 'Cameron, PA' ,
2428 '42025' : 'Carbon, PA' ,
2429 '42027' : 'Centre, PA' ,
2430 '42029' : 'Chester, PA' ,
2431 '42031' : 'Clarion, PA' ,
2432 '42033' : 'Clearfield, PA' ,
2433 '42035' : 'Clinton, PA' ,
2434 '42037' : 'Columbia, PA' ,
2435 '42039' : 'Crawford, PA' ,
2436 '42041' : 'Cumberland, PA' ,
2437 '42043' : 'Dauphin, PA' ,
2438 '42045' : 'Delaware, PA' ,
2439 '42047' : 'Elk, PA' ,
2440 '42049' : 'Erie, PA' ,
2441 '42051' : 'Fayette, PA' ,
2442 '42053' : 'Forest, PA' ,
2443 '42055' : 'Franklin, PA' ,
2444 '42057' : 'Fulton, PA' ,
2445 '42059' : 'Greene, PA' ,
2446 '42061' : 'Huntingdon, PA' ,
2447 '42063' : 'Indiana, PA' ,
2448 '42065' : 'Jefferson, PA' ,
2449 '42067' : 'Juniata, PA' ,
2450 '42069' : 'Lackawanna, PA' ,
2451 '42071' : 'Lancaster, PA' ,
2452 '42073' : 'Lawrence, PA' ,
2453 '42075' : 'Lebanon, PA' ,
2454 '42077' : 'Lehigh, PA' ,
2455 '42079' : 'Luzerne, PA' ,
2456 '42081' : 'Lycoming, PA' ,
2457 '42083' : 'McKean, PA' ,
2458 '42085' : 'Mercer, PA' ,
2459 '42087' : 'Mifflin, PA' ,
2460 '42089' : 'Monroe, PA' ,
2461 '42091' : 'Montgomery, PA' ,
2462 '42093' : 'Montour, PA' ,
2463 '42095' : 'Northampton, PA' ,
2464 '42097' : 'Northumberland, PA' ,
2465 '42099' : 'Perry, PA' ,
2466 '42101' : 'Philadelphia, PA' ,
2467 '42103' : 'Pike, PA' ,
2468 '42105' : 'Potter, PA' ,
2469 '42107' : 'Schuylkill, PA' ,
2470 '42109' : 'Snyder, PA' ,
2471 '42111' : 'Somerset, PA' ,
2472 '42113' : 'Sullivan, PA' ,
2473 '42115' : 'Susquehanna, PA' ,
2474 '42117' : 'Tioga, PA' ,
2475 '42119' : 'Union, PA' ,
2476 '42121' : 'Venango, PA' ,
2477 '42123' : 'Warren, PA' ,
2478 '42125' : 'Washington, PA' ,
2479 '42127' : 'Wayne, PA' ,
2480 '42129' : 'Westmoreland, PA' ,
2481 '42131' : 'Wyoming, PA' ,
2482 '42133' : 'York, PA' ,
2483 '44000' : 'RHODE ISLAND' ,
2484 '44001' : 'Bristol, RI' ,
2485 '44003' : 'Kent, RI' ,
2486 '44005' : 'Newport, RI' ,
2487 '44007' : 'Providence, RI' ,
2488 '44009' : 'Washington, RI' ,
2489 '45000' : 'SOUTH CAROLINA' ,
2490 '45001' : 'Abbeville, SC' ,
2491 '45003' : 'Aiken, SC' ,
2492 '45005' : 'Allendale, SC' ,
2493 '45007' : 'Anderson, SC' ,
2494 '45009' : 'Bamberg, SC' ,
2495 '45011' : 'Barnwell, SC' ,
2496 '45013' : 'Beaufort, SC' ,
2497 '45015' : 'Berkeley, SC' ,
2498 '45017' : 'Calhoun, SC' ,
2499 '45019' : 'Charleston, SC' ,
2500 '45021' : 'Cherokee, SC' ,
2501 '45023' : 'Chester, SC' ,
2502 '45025' : 'Chesterfield, SC' ,
2503 '45027' : 'Clarendon, SC' ,
2504 '45029' : 'Colleton, SC' ,
2505 '45031' : 'Darlington, SC' ,
2506 '45033' : 'Dillon, SC' ,
2507 '45035' : 'Dorchester, SC' ,
2508 '45037' : 'Edgefield, SC' ,
2509 '45039' : 'Fairfield, SC' ,
2510 '45041' : 'Florence, SC' ,
2511 '45043' : 'Georgetown, SC' ,
2512 '45045' : 'Greenville, SC' ,
2513 '45047' : 'Greenwood, SC' ,
2514 '45049' : 'Hampton, SC' ,
2515 '45051' : 'Horry, SC' ,
2516 '45053' : 'Jasper, SC' ,
2517 '45055' : 'Kershaw, SC' ,
2518 '45057' : 'Lancaster, SC' ,
2519 '45059' : 'Laurens, SC' ,
2520 '45061' : 'Lee, SC' ,
2521 '45063' : 'Lexington, SC' ,
2522 '45065' : 'McCormick, SC' ,
2523 '45067' : 'Marion, SC' ,
2524 '45069' : 'Marlboro, SC' ,
2525 '45071' : 'Newberry, SC' ,
2526 '45073' : 'Oconee, SC' ,
2527 '45075' : 'Orangeburg, SC' ,
2528 '45077' : 'Pickens, SC' ,
2529 '45079' : 'Richland, SC' ,
2530 '45081' : 'Saluda, SC' ,
2531 '45083' : 'Spartanburg, SC' ,
2532 '45085' : 'Sumter, SC' ,
2533 '45087' : 'Union, SC' ,
2534 '45089' : 'Williamsburg, SC' ,
2535 '45091' : 'York, SC' ,
2536 '46000' : 'SOUTH DAKOTA' ,
2537 '46003' : 'Aurora, SD' ,
2538 '46005' : 'Beadle, SD' ,
2539 '46007' : 'Bennett, SD' ,
2540 '46009' : 'Bon Homme, SD' ,
2541 '46011' : 'Brookings, SD' ,
2542 '46013' : 'Brown, SD' ,
2543 '46015' : 'Brule, SD' ,
2544 '46017' : 'Buffalo, SD' ,
2545 '46019' : 'Butte, SD' ,
2546 '46021' : 'Campbell, SD' ,
2547 '46023' : 'Charles Mix, SD' ,
2548 '46025' : 'Clark, SD' ,
2549 '46027' : 'Clay, SD' ,
2550 '46029' : 'Codington, SD' ,
2551 '46031' : 'Corson, SD' ,
2552 '46033' : 'Custer, SD' ,
2553 '46035' : 'Davison, SD' ,
2554 '46037' : 'Day, SD' ,
2555 '46039' : 'Deuel, SD' ,
2556 '46041' : 'Dewey, SD' ,
2557 '46043' : 'Douglas, SD' ,
2558 '46045' : 'Edmunds, SD' ,
2559 '46047' : 'Fall River, SD' ,
2560 '46049' : 'Faulk, SD' ,
2561 '46051' : 'Grant, SD' ,
2562 '46053' : 'Gregory, SD' ,
2563 '46055' : 'Haakon, SD' ,
2564 '46057' : 'Hamlin, SD' ,
2565 '46059' : 'Hand, SD' ,
2566 '46061' : 'Hanson, SD' ,
2567 '46063' : 'Harding, SD' ,
2568 '46065' : 'Hughes, SD' ,
2569 '46067' : 'Hutchinson, SD' ,
2570 '46069' : 'Hyde, SD' ,
2571 '46071' : 'Jackson, SD' ,
2572 '46073' : 'Jerauld, SD' ,
2573 '46075' : 'Jones, SD' ,
2574 '46077' : 'Kingsbury, SD' ,
2575 '46079' : 'Lake, SD' ,
2576 '46081' : 'Lawrence, SD' ,
2577 '46083' : 'Lincoln, SD' ,
2578 '46085' : 'Lyman, SD' ,
2579 '46087' : 'McCook, SD' ,
2580 '46089' : 'McPherson, SD' ,
2581 '46091' : 'Marshall, SD' ,
2582 '46093' : 'Meade, SD' ,
2583 '46095' : 'Mellette, SD' ,
2584 '46097' : 'Miner, SD' ,
2585 '46099' : 'Minnehaha, SD' ,
2586 '46101' : 'Moody, SD' ,
2587 '46102' : 'Oglala Lakota, SD' ,
2588 '46103' : 'Pennington, SD' ,
2589 '46105' : 'Perkins, SD' ,
2590 '46107' : 'Potter, SD' ,
2591 '46109' : 'Roberts, SD' ,
2592 '46111' : 'Sanborn, SD' ,
2593 '46113' : 'Shannon, SD' ,
2594 '46115' : 'Spink, SD' ,
2595 '46117' : 'Stanley, SD' ,
2596 '46119' : 'Sully, SD' ,
2597 '46121' : 'Todd, SD' ,
2598 '46123' : 'Tripp, SD' ,
2599 '46125' : 'Turner, SD' ,
2600 '46127' : 'Union, SD' ,
2601 '46129' : 'Walworth, SD' ,
2602 '46135' : 'Yankton, SD' ,
2603 '46137' : 'Ziebach, SD' ,
2604 '47000' : 'TENNESSEE' ,
2605 '47001' : 'Anderson, TN' ,
2606 '47003' : 'Bedford, TN' ,
2607 '47005' : 'Benton, TN' ,
2608 '47007' : 'Bledsoe, TN' ,
2609 '47009' : 'Blount, TN' ,
2610 '47011' : 'Bradley, TN' ,
2611 '47013' : 'Campbell, TN' ,
2612 '47015' : 'Cannon, TN' ,
2613 '47017' : 'Carroll, TN' ,
2614 '47019' : 'Carter, TN' ,
2615 '47021' : 'Cheatham, TN' ,
2616 '47023' : 'Chester, TN' ,
2617 '47025' : 'Claiborne, TN' ,
2618 '47027' : 'Clay, TN' ,
2619 '47029' : 'Cocke, TN' ,
2620 '47031' : 'Coffee, TN' ,
2621 '47033' : 'Crockett, TN' ,
2622 '47035' : 'Cumberland, TN' ,
2623 '47037' : 'Davidson, TN' ,
2624 '47039' : 'Decatur, TN' ,
2625 '47041' : 'DeKalb, TN' ,
2626 '47043' : 'Dickson, TN' ,
2627 '47045' : 'Dyer, TN' ,
2628 '47047' : 'Fayette, TN' ,
2629 '47049' : 'Fentress, TN' ,
2630 '47051' : 'Franklin, TN' ,
2631 '47053' : 'Gibson, TN' ,
2632 '47055' : 'Giles, TN' ,
2633 '47057' : 'Grainger, TN' ,
2634 '47059' : 'Greene, TN' ,
2635 '47061' : 'Grundy, TN' ,
2636 '47063' : 'Hamblen, TN' ,
2637 '47065' : 'Hamilton, TN' ,
2638 '47067' : 'Hancock, TN' ,
2639 '47069' : 'Hardeman, TN' ,
2640 '47071' : 'Hardin, TN' ,
2641 '47073' : 'Hawkins, TN' ,
2642 '47075' : 'Haywood, TN' ,
2643 '47077' : 'Henderson, TN' ,
2644 '47079' : 'Henry, TN' ,
2645 '47081' : 'Hickman, TN' ,
2646 '47083' : 'Houston, TN' ,
2647 '47085' : 'Humphreys, TN' ,
2648 '47087' : 'Jackson, TN' ,
2649 '47089' : 'Jefferson, TN' ,
2650 '47091' : 'Johnson, TN' ,
2651 '47093' : 'Knox, TN' ,
2652 '47095' : 'Lake, TN' ,
2653 '47097' : 'Lauderdale, TN' ,
2654 '47099' : 'Lawrence, TN' ,
2655 '47101' : 'Lewis, TN' ,
2656 '47103' : 'Lincoln, TN' ,
2657 '47105' : 'Loudon, TN' ,
2658 '47107' : 'McMinn, TN' ,
2659 '47109' : 'McNairy, TN' ,
2660 '47111' : 'Macon, TN' ,
2661 '47113' : 'Madison, TN' ,
2662 '47115' : 'Marion, TN' ,
2663 '47117' : 'Marshall, TN' ,
2664 '47119' : 'Maury, TN' ,
2665 '47121' : 'Meigs, TN' ,
2666 '47123' : 'Monroe, TN' ,
2667 '47125' : 'Montgomery, TN' ,
2668 '47127' : 'Moore, TN' ,
2669 '47129' : 'Morgan, TN' ,
2670 '47131' : 'Obion, TN' ,
2671 '47133' : 'Overton, TN' ,
2672 '47135' : 'Perry, TN' ,
2673 '47137' : 'Pickett, TN' ,
2674 '47139' : 'Polk, TN' ,
2675 '47141' : 'Putnam, TN' ,
2676 '47143' : 'Rhea, TN' ,
2677 '47145' : 'Roane, TN' ,
2678 '47147' : 'Robertson, TN' ,
2679 '47149' : 'Rutherford, TN' ,
2680 '47151' : 'Scott, TN' ,
2681 '47153' : 'Sequatchie, TN' ,
2682 '47155' : 'Sevier, TN' ,
2683 '47157' : 'Shelby, TN' ,
2684 '47159' : 'Smith, TN' ,
2685 '47161' : 'Stewart, TN' ,
2686 '47163' : 'Sullivan, TN' ,
2687 '47165' : 'Sumner, TN' ,
2688 '47167' : 'Tipton, TN' ,
2689 '47169' : 'Trousdale, TN' ,
2690 '47171' : 'Unicoi, TN' ,
2691 '47173' : 'Union, TN' ,
2692 '47175' : 'Van Buren, TN' ,
2693 '47177' : 'Warren, TN' ,
2694 '47179' : 'Washington, TN' ,
2695 '47181' : 'Wayne, TN' ,
2696 '47183' : 'Weakley, TN' ,
2697 '47185' : 'White, TN' ,
2698 '47187' : 'Williamson, TN' ,
2699 '47189' : 'Wilson, TN' ,
2700 '48000' : 'TEXAS' ,
2701 '48001' : 'Anderson, TX' ,
2702 '48003' : 'Andrews, TX' ,
2703 '48005' : 'Angelina, TX' ,
2704 '48007' : 'Aransas, TX' ,
2705 '48009' : 'Archer, TX' ,
2706 '48011' : 'Armstrong, TX' ,
2707 '48013' : 'Atascosa, TX' ,
2708 '48015' : 'Austin, TX' ,
2709 '48017' : 'Bailey, TX' ,
2710 '48019' : 'Bandera, TX' ,
2711 '48021' : 'Bastrop, TX' ,
2712 '48023' : 'Baylor, TX' ,
2713 '48025' : 'Bee, TX' ,
2714 '48027' : 'Bell, TX' ,
2715 '48029' : 'Bexar, TX' ,
2716 '48031' : 'Blanco, TX' ,
2717 '48033' : 'Borden, TX' ,
2718 '48035' : 'Bosque, TX' ,
2719 '48037' : 'Bowie, TX' ,
2720 '48039' : 'Brazoria, TX' ,
2721 '48041' : 'Brazos, TX' ,
2722 '48043' : 'Brewster, TX' ,
2723 '48045' : 'Briscoe, TX' ,
2724 '48047' : 'Brooks, TX' ,
2725 '48049' : 'Brown, TX' ,
2726 '48051' : 'Burleson, TX' ,
2727 '48053' : 'Burnet, TX' ,
2728 '48055' : 'Caldwell, TX' ,
2729 '48057' : 'Calhoun, TX' ,
2730 '48059' : 'Callahan, TX' ,
2731 '48061' : 'Cameron, TX' ,
2732 '48063' : 'Camp, TX' ,
2733 '48065' : 'Carson, TX' ,
2734 '48067' : 'Cass, TX' ,
2735 '48069' : 'Castro, TX' ,
2736 '48071' : 'Chambers, TX' ,
2737 '48073' : 'Cherokee, TX' ,
2738 '48075' : 'Childress, TX' ,
2739 '48077' : 'Clay, TX' ,
2740 '48079' : 'Cochran, TX' ,
2741 '48081' : 'Coke, TX' ,
2742 '48083' : 'Coleman, TX' ,
2743 '48085' : 'Collin, TX' ,
2744 '48087' : 'Collingsworth, TX' ,
2745 '48089' : 'Colorado, TX' ,
2746 '48091' : 'Comal, TX' ,
2747 '48093' : 'Comanche, TX' ,
2748 '48095' : 'Concho, TX' ,
2749 '48097' : 'Cooke, TX' ,
2750 '48099' : 'Coryell, TX' ,
2751 '48101' : 'Cottle, TX' ,
2752 '48103' : 'Crane, TX' ,
2753 '48105' : 'Crockett, TX' ,
2754 '48107' : 'Crosby, TX' ,
2755 '48109' : 'Culberson, TX' ,
2756 '48111' : 'Dallam, TX' ,
2757 '48113' : 'Dallas, TX' ,
2758 '48115' : 'Dawson, TX' ,
2759 '48117' : 'Deaf Smith, TX' ,
2760 '48119' : 'Delta, TX' ,
2761 '48121' : 'Denton, TX' ,
2762 '48123' : 'De Witt, TX' ,
2763 '48125' : 'Dickens, TX' ,
2764 '48127' : 'Dimmit, TX' ,
2765 '48129' : 'Donley, TX' ,
2766 '48131' : 'Duval, TX' ,
2767 '48133' : 'Eastland, TX' ,
2768 '48135' : 'Ector, TX' ,
2769 '48137' : 'Edwards, TX' ,
2770 '48139' : 'Ellis, TX' ,
2771 '48141' : 'El Paso, TX' ,
2772 '48143' : 'Erath, TX' ,
2773 '48145' : 'Falls, TX' ,
2774 '48147' : 'Fannin, TX' ,
2775 '48149' : 'Fayette, TX' ,
2776 '48151' : 'Fisher, TX' ,
2777 '48153' : 'Floyd, TX' ,
2778 '48155' : 'Foard, TX' ,
2779 '48157' : 'Fort Bend, TX' ,
2780 '48159' : 'Franklin, TX' ,
2781 '48161' : 'Freestone, TX' ,
2782 '48163' : 'Frio, TX' ,
2783 '48165' : 'Gaines, TX' ,
2784 '48167' : 'Galveston, TX' ,
2785 '48169' : 'Garza, TX' ,
2786 '48171' : 'Gillespie, TX' ,
2787 '48173' : 'Glasscock, TX' ,
2788 '48175' : 'Goliad, TX' ,
2789 '48177' : 'Gonzales, TX' ,
2790 '48179' : 'Gray, TX' ,
2791 '48181' : 'Grayson, TX' ,
2792 '48183' : 'Gregg, TX' ,
2793 '48185' : 'Grimes, TX' ,
2794 '48187' : 'Guadalupe, TX' ,
2795 '48189' : 'Hale, TX' ,
2796 '48191' : 'Hall, TX' ,
2797 '48193' : 'Hamilton, TX' ,
2798 '48195' : 'Hansford, TX' ,
2799 '48197' : 'Hardeman, TX' ,
2800 '48199' : 'Hardin, TX' ,
2801 '48201' : 'Harris, TX' ,
2802 '48203' : 'Harrison, TX' ,
2803 '48205' : 'Hartley, TX' ,
2804 '48207' : 'Haskell, TX' ,
2805 '48209' : 'Hays, TX' ,
2806 '48211' : 'Hemphill, TX' ,
2807 '48213' : 'Henderson, TX' ,
2808 '48215' : 'Hidalgo, TX' ,
2809 '48217' : 'Hill, TX' ,
2810 '48219' : 'Hockley, TX' ,
2811 '48221' : 'Hood, TX' ,
2812 '48223' : 'Hopkins, TX' ,
2813 '48225' : 'Houston, TX' ,
2814 '48227' : 'Howard, TX' ,
2815 '48229' : 'Hudspeth, TX' ,
2816 '48231' : 'Hunt, TX' ,
2817 '48233' : 'Hutchinson, TX' ,
2818 '48235' : 'Irion, TX' ,
2819 '48237' : 'Jack, TX' ,
2820 '48239' : 'Jackson, TX' ,
2821 '48241' : 'Jasper, TX' ,
2822 '48243' : 'Jeff Davis, TX' ,
2823 '48245' : 'Jefferson, TX' ,
2824 '48247' : 'Jim Hogg, TX' ,
2825 '48249' : 'Jim Wells, TX' ,
2826 '48251' : 'Johnson, TX' ,
2827 '48253' : 'Jones, TX' ,
2828 '48255' : 'Karnes, TX' ,
2829 '48257' : 'Kaufman, TX' ,
2830 '48259' : 'Kendall, TX' ,
2831 '48261' : 'Kenedy, TX' ,
2832 '48263' : 'Kent, TX' ,
2833 '48265' : 'Kerr, TX' ,
2834 '48267' : 'Kimble, TX' ,
2835 '48269' : 'King, TX' ,
2836 '48271' : 'Kinney, TX' ,
2837 '48273' : 'Kleberg, TX' ,
2838 '48275' : 'Knox, TX' ,
2839 '48277' : 'Lamar, TX' ,
2840 '48279' : 'Lamb, TX' ,
2841 '48281' : 'Lampasas, TX' ,
2842 '48283' : 'La Salle, TX' ,
2843 '48285' : 'Lavaca, TX' ,
2844 '48287' : 'Lee, TX' ,
2845 '48289' : 'Leon, TX' ,
2846 '48291' : 'Liberty, TX' ,
2847 '48293' : 'Limestone, TX' ,
2848 '48295' : 'Lipscomb, TX' ,
2849 '48297' : 'Live Oak, TX' ,
2850 '48299' : 'Llano, TX' ,
2851 '48301' : 'Loving, TX' ,
2852 '48303' : 'Lubbock, TX' ,
2853 '48305' : 'Lynn, TX' ,
2854 '48307' : 'McCulloch, TX' ,
2855 '48309' : 'McLennan, TX' ,
2856 '48311' : 'McMullen, TX' ,
2857 '48313' : 'Madison, TX' ,
2858 '48315' : 'Marion, TX' ,
2859 '48317' : 'Martin, TX' ,
2860 '48319' : 'Mason, TX' ,
2861 '48321' : 'Matagorda, TX' ,
2862 '48323' : 'Maverick, TX' ,
2863 '48325' : 'Medina, TX' ,
2864 '48327' : 'Menard, TX' ,
2865 '48329' : 'Midland, TX' ,
2866 '48331' : 'Milam, TX' ,
2867 '48333' : 'Mills, TX' ,
2868 '48335' : 'Mitchell, TX' ,
2869 '48337' : 'Montague, TX' ,
2870 '48339' : 'Montgomery, TX' ,
2871 '48341' : 'Moore, TX' ,
2872 '48343' : 'Morris, TX' ,
2873 '48345' : 'Motley, TX' ,
2874 '48347' : 'Nacogdoches, TX' ,
2875 '48349' : 'Navarro, TX' ,
2876 '48351' : 'Newton, TX' ,
2877 '48353' : 'Nolan, TX' ,
2878 '48355' : 'Nueces, TX' ,
2879 '48357' : 'Ochiltree, TX' ,
2880 '48359' : 'Oldham, TX' ,
2881 '48361' : 'Orange, TX' ,
2882 '48363' : 'Palo Pinto, TX' ,
2883 '48365' : 'Panola, TX' ,
2884 '48367' : 'Parker, TX' ,
2885 '48369' : 'Parmer, TX' ,
2886 '48371' : 'Pecos, TX' ,
2887 '48373' : 'Polk, TX' ,
2888 '48375' : 'Potter, TX' ,
2889 '48377' : 'Presidio, TX' ,
2890 '48379' : 'Rains, TX' ,
2891 '48381' : 'Randall, TX' ,
2892 '48383' : 'Reagan, TX' ,
2893 '48385' : 'Real, TX' ,
2894 '48387' : 'Red River, TX' ,
2895 '48389' : 'Reeves, TX' ,
2896 '48391' : 'Refugio, TX' ,
2897 '48393' : 'Roberts, TX' ,
2898 '48395' : 'Robertson, TX' ,
2899 '48397' : 'Rockwall, TX' ,
2900 '48399' : 'Runnels, TX' ,
2901 '48401' : 'Rusk, TX' ,
2902 '48403' : 'Sabine, TX' ,
2903 '48405' : 'San Augustine, TX' ,
2904 '48407' : 'San Jacinto, TX' ,
2905 '48409' : 'San Patricio, TX' ,
2906 '48411' : 'San Saba, TX' ,
2907 '48413' : 'Schleicher, TX' ,
2908 '48415' : 'Scurry, TX' ,
2909 '48417' : 'Shackelford, TX' ,
2910 '48419' : 'Shelby, TX' ,
2911 '48421' : 'Sherman, TX' ,
2912 '48423' : 'Smith, TX' ,
2913 '48425' : 'Somervell, TX' ,
2914 '48427' : 'Starr, TX' ,
2915 '48429' : 'Stephens, TX' ,
2916 '48431' : 'Sterling, TX' ,
2917 '48433' : 'Stonewall, TX' ,
2918 '48435' : 'Sutton, TX' ,
2919 '48437' : 'Swisher, TX' ,
2920 '48439' : 'Tarrant, TX' ,
2921 '48441' : 'Taylor, TX' ,
2922 '48443' : 'Terrell, TX' ,
2923 '48445' : 'Terry, TX' ,
2924 '48447' : 'Throckmorton, TX' ,
2925 '48449' : 'Titus, TX' ,
2926 '48451' : 'Tom Green, TX' ,
2927 '48453' : 'Travis, TX' ,
2928 '48455' : 'Trinity, TX' ,
2929 '48457' : 'Tyler, TX' ,
2930 '48459' : 'Upshur, TX' ,
2931 '48461' : 'Upton, TX' ,
2932 '48463' : 'Uvalde, TX' ,
2933 '48465' : 'Val Verde, TX' ,
2934 '48467' : 'Van Zandt, TX' ,
2935 '48469' : 'Victoria, TX' ,
2936 '48471' : 'Walker, TX' ,
2937 '48473' : 'Waller, TX' ,
2938 '48475' : 'Ward, TX' ,
2939 '48477' : 'Washington, TX' ,
2940 '48479' : 'Webb, TX' ,
2941 '48481' : 'Wharton, TX' ,
2942 '48483' : 'Wheeler, TX' ,
2943 '48485' : 'Wichita, TX' ,
2944 '48487' : 'Wilbarger, TX' ,
2945 '48489' : 'Willacy, TX' ,
2946 '48491' : 'Williamson, TX' ,
2947 '48493' : 'Wilson, TX' ,
2948 '48495' : 'Winkler, TX' ,
2949 '48497' : 'Wise, TX' ,
2950 '48499' : 'Wood, TX' ,
2951 '48501' : 'Yoakum, TX' ,
2952 '48503' : 'Young, TX' ,
2953 '48505' : 'Zapata, TX' ,
2954 '48507' : 'Zavala, TX' ,
2955 '49000' : 'UTAH' ,
2956 '49001' : 'Beaver, UT' ,
2957 '49003' : 'Box Elder, UT' ,
2958 '49005' : 'Cache, UT' ,
2959 '49007' : 'Carbon, UT' ,
2960 '49009' : 'Daggett, UT' ,
2961 '49011' : 'Davis, UT' ,
2962 '49013' : 'Duchesne, UT' ,
2963 '49015' : 'Emery, UT' ,
2964 '49017' : 'Garfield, UT' ,
2965 '49019' : 'Grand, UT' ,
2966 '49021' : 'Iron, UT' ,
2967 '49023' : 'Juab, UT' ,
2968 '49025' : 'Kane, UT' ,
2969 '49027' : 'Millard, UT' ,
2970 '49029' : 'Morgan, UT' ,
2971 '49031' : 'Piute, UT' ,
2972 '49033' : 'Rich, UT' ,
2973 '49035' : 'Salt Lake, UT' ,
2974 '49037' : 'San Juan, UT' ,
2975 '49039' : 'Sanpete, UT' ,
2976 '49041' : 'Sevier, UT' ,
2977 '49043' : 'Summit, UT' ,
2978 '49045' : 'Tooele, UT' ,
2979 '49047' : 'Uintah, UT' ,
2980 '49049' : 'Utah, UT' ,
2981 '49051' : 'Wasatch, UT' ,
2982 '49053' : 'Washington, UT' ,
2983 '49055' : 'Wayne, UT' ,
2984 '49057' : 'Weber, UT' ,
2985 '50000' : 'VERMONT' ,
2986 '50001' : 'Addison, VT' ,
2987 '50003' : 'Bennington, VT' ,
2988 '50005' : 'Caledonia, VT' ,
2989 '50007' : 'Chittenden, VT' ,
2990 '50009' : 'Essex, VT' ,
2991 '50011' : 'Franklin, VT' ,
2992 '50013' : 'Grand Isle, VT' ,
2993 '50015' : 'Lamoille, VT' ,
2994 '50017' : 'Orange, VT' ,
2995 '50019' : 'Orleans, VT' ,
2996 '50021' : 'Rutland, VT' ,
2997 '50023' : 'Washington, VT' ,
2998 '50025' : 'Windham, VT' ,
2999 '50027' : 'Windsor, VT' ,
3000 '51000' : 'VIRGINIA' ,
3001 '51001' : 'Accomack, VA' ,
3002 '51003' : 'Albemarle, VA' ,
3003 '51005' : 'Alleghany, VA' ,
3004 '51007' : 'Amelia, VA' ,
3005 '51009' : 'Amherst, VA' ,
3006 '51011' : 'Appomattox, VA' ,
3007 '51013' : 'Arlington, VA' ,
3008 '51015' : 'Augusta, VA' ,
3009 '51017' : 'Bath, VA' ,
3010 '51019' : 'Bedford, VA' ,
3011 '51021' : 'Bland, VA' ,
3012 '51023' : 'Botetourt, VA' ,
3013 '51025' : 'Brunswick, VA' ,
3014 '51027' : 'Buchanan, VA' ,
3015 '51029' : 'Buckingham, VA' ,
3016 '51031' : 'Campbell, VA' ,
3017 '51033' : 'Caroline, VA' ,
3018 '51035' : 'Carroll, VA' ,
3019 '51036' : 'Charles City, VA' ,
3020 '51037' : 'Charlotte, VA' ,
3021 '51041' : 'Chesterfield, VA' ,
3022 '51043' : 'Clarke, VA' ,
3023 '51045' : 'Craig, VA' ,
3024 '51047' : 'Culpeper, VA' ,
3025 '51049' : 'Cumberland, VA' ,
3026 '51051' : 'Dickenson, VA' ,
3027 '51053' : 'Dinwiddie, VA' ,
3028 '51057' : 'Essex, VA' ,
3029 '51059' : 'Fairfax, VA' ,
3030 '51061' : 'Fauquier, VA' ,
3031 '51063' : 'Floyd, VA' ,
3032 '51065' : 'Fluvanna, VA' ,
3033 '51067' : 'Franklin, VA' ,
3034 '51069' : 'Frederick, VA' ,
3035 '51071' : 'Giles, VA' ,
3036 '51073' : 'Gloucester, VA' ,
3037 '51075' : 'Goochland, VA' ,
3038 '51077' : 'Grayson, VA' ,
3039 '51079' : 'Greene, VA' ,
3040 '51081' : 'Greensville, VA' ,
3041 '51083' : 'Halifax, VA' ,
3042 '51085' : 'Hanover, VA' ,
3043 '51087' : 'Henrico, VA' ,
3044 '51089' : 'Henry, VA' ,
3045 '51091' : 'Highland, VA' ,
3046 '51093' : 'Isle of Wight, VA' ,
3047 '51095' : 'James City, VA' ,
3048 '51097' : 'King and Queen, VA' ,
3049 '51099' : 'King George, VA' ,
3050 '51101' : 'King William, VA' ,
3051 '51103' : 'Lancaster, VA' ,
3052 '51105' : 'Lee, VA' ,
3053 '51107' : 'Loudoun, VA' ,
3054 '51109' : 'Louisa, VA' ,
3055 '51111' : 'Lunenburg, VA' ,
3056 '51113' : 'Madison, VA' ,
3057 '51115' : 'Mathews, VA' ,
3058 '51117' : 'Mecklenburg, VA' ,
3059 '51119' : 'Middlesex, VA' ,
3060 '51121' : 'Montgomery, VA' ,
3061 '51125' : 'Nelson, VA' ,
3062 '51127' : 'New Kent, VA' ,
3063 '51131' : 'Northampton, VA' ,
3064 '51133' : 'Northumberland, VA' ,
3065 '51135' : 'Nottoway, VA' ,
3066 '51137' : 'Orange, VA' ,
3067 '51139' : 'Page, VA' ,
3068 '51141' : 'Patrick, VA' ,
3069 '51143' : 'Pittsylvania, VA' ,
3070 '51145' : 'Powhatan, VA' ,
3071 '51147' : 'Prince Edward, VA' ,
3072 '51149' : 'Prince George, VA' ,
3073 '51153' : 'Prince William, VA' ,
3074 '51155' : 'Pulaski, VA' ,
3075 '51157' : 'Rappahannock, VA' ,
3076 '51159' : 'Richmond, VA' ,
3077 '51161' : 'Roanoke, VA' ,
3078 '51163' : 'Rockbridge, VA' ,
3079 '51165' : 'Rockingham, VA' ,
3080 '51167' : 'Russell, VA' ,
3081 '51169' : 'Scott, VA' ,
3082 '51171' : 'Shenandoah, VA' ,
3083 '51173' : 'Smyth, VA' ,
3084 '51175' : 'Southampton, VA' ,
3085 '51177' : 'Spotsylvania, VA' ,
3086 '51179' : 'Stafford, VA' ,
3087 '51181' : 'Surry, VA' ,
3088 '51183' : 'Sussex, VA' ,
3089 '51185' : 'Tazewell, VA' ,
3090 '51187' : 'Warren, VA' ,
3091 '51191' : 'Washington, VA' ,
3092 '51193' : 'Westmoreland, VA' ,
3093 '51195' : 'Wise, VA' ,
3094 '51197' : 'Wythe, VA' ,
3095 '51199' : 'York, VA' ,
3096 '51510' : 'Alexandria, VA' ,
3097 '51515' : 'Bedford, VA' ,
3098 '51520' : 'Bristol, VA' ,
3099 '51530' : 'Buena Vista, VA' ,
3100 '51540' : 'Charlottesville, VA' ,
3101 '51550' : 'Chesapeake, VA' ,
3102 '51560' : 'Clifton Forge, VA' ,
3103 '51570' : 'Colonial Heights, VA' ,
3104 '51580' : 'Covington, VA' ,
3105 '51590' : 'Danville, VA' ,
3106 '51595' : 'Emporia, VA' ,
3107 '51600' : 'Fairfax, VA' ,
3108 '51610' : 'Falls Church, VA' ,
3109 '51620' : 'Franklin, VA' ,
3110 '51630' : 'Fredericksburg, VA' ,
3111 '51640' : 'Galax, VA' ,
3112 '51650' : 'Hampton, VA' ,
3113 '51660' : 'Harrisonburg, VA' ,
3114 '51670' : 'Hopewell, VA' ,
3115 '51678' : 'Lexington, VA' ,
3116 '51680' : 'Lynchburg, VA' ,
3117 '51683' : 'Manassas, VA' ,
3118 '51685' : 'Manassas Park, VA' ,
3119 '51690' : 'Martinsville, VA' ,
3120 '51700' : 'Newport News, VA' ,
3121 '51710' : 'Norfolk, VA' ,
3122 '51720' : 'Norton, VA' ,
3123 '51730' : 'Petersburg, VA' ,
3124 '51735' : 'Poquoson, VA' ,
3125 '51740' : 'Portsmouth, VA' ,
3126 '51750' : 'Radford, VA' ,
3127 '51760' : 'Richmond, VA' ,
3128 '51770' : 'Roanoke, VA' ,
3129 '51775' : 'Salem, VA' ,
3130 '51780' : 'South Boston, VA' ,
3131 '51790' : 'Staunton, VA' ,
3132 '51800' : 'Suffolk, VA' ,
3133 '51810' : 'Virginia Beach, VA' ,
3134 '51820' : 'Waynesboro, VA' ,
3135 '51830' : 'Williamsburg, VA' ,
3136 '51840' : 'Winchester, VA' ,
3137 '53000' : 'WASHINGTON' ,
3138 '53001' : 'Adams, WA' ,
3139 '53003' : 'Asotin, WA' ,
3140 '53005' : 'Benton, WA' ,
3141 '53007' : 'Chelan, WA' ,
3142 '53009' : 'Clallam, WA' ,
3143 '53011' : 'Clark, WA' ,
3144 '53013' : 'Columbia, WA' ,
3145 '53015' : 'Cowlitz, WA' ,
3146 '53017' : 'Douglas, WA' ,
3147 '53019' : 'Ferry, WA' ,
3148 '53021' : 'Franklin, WA' ,
3149 '53023' : 'Garfield, WA' ,
3150 '53025' : 'Grant, WA' ,
3151 '53027' : 'Grays Harbor, WA' ,
3152 '53029' : 'Island, WA' ,
3153 '53031' : 'Jefferson, WA' ,
3154 '53033' : 'King, WA' ,
3155 '53035' : 'Kitsap, WA' ,
3156 '53037' : 'Kittitas, WA' ,
3157 '53039' : 'Klickitat, WA' ,
3158 '53041' : 'Lewis, WA' ,
3159 '53043' : 'Lincoln, WA' ,
3160 '53045' : 'Mason, WA' ,
3161 '53047' : 'Okanogan, WA' ,
3162 '53049' : 'Pacific, WA' ,
3163 '53051' : 'Pend Oreille, WA' ,
3164 '53053' : 'Pierce, WA' ,
3165 '53055' : 'San Juan, WA' ,
3166 '53057' : 'Skagit, WA' ,
3167 '53059' : 'Skamania, WA' ,
3168 '53061' : 'Snohomish, WA' ,
3169 '53063' : 'Spokane, WA' ,
3170 '53065' : 'Stevens, WA' ,
3171 '53067' : 'Thurston, WA' ,
3172 '53069' : 'Wahkiakum, WA' ,
3173 '53071' : 'Walla Walla, WA' ,
3174 '53073' : 'Whatcom, WA' ,
3175 '53075' : 'Whitman, WA' ,
3176 '53077' : 'Yakima, WA' ,
3177 '54000' : 'WEST VIRGINIA' ,
3178 '54001' : 'Barbour, WV' ,
3179 '54003' : 'Berkeley, WV' ,
3180 '54005' : 'Boone, WV' ,
3181 '54007' : 'Braxton, WV' ,
3182 '54009' : 'Brooke, WV' ,
3183 '54011' : 'Cabell, WV' ,
3184 '54013' : 'Calhoun, WV' ,
3185 '54015' : 'Clay, WV' ,
3186 '54017' : 'Doddridge, WV' ,
3187 '54019' : 'Fayette, WV' ,
3188 '54021' : 'Gilmer, WV' ,
3189 '54023' : 'Grant, WV' ,
3190 '54025' : 'Greenbrier, WV' ,
3191 '54027' : 'Hampshire, WV' ,
3192 '54029' : 'Hancock, WV' ,
3193 '54031' : 'Hardy, WV' ,
3194 '54033' : 'Harrison, WV' ,
3195 '54035' : 'Jackson, WV' ,
3196 '54037' : 'Jefferson, WV' ,
3197 '54039' : 'Kanawha, WV' ,
3198 '54041' : 'Lewis, WV' ,
3199 '54043' : 'Lincoln, WV' ,
3200 '54045' : 'Logan, WV' ,
3201 '54047' : 'McDowell, WV' ,
3202 '54049' : 'Marion, WV' ,
3203 '54051' : 'Marshall, WV' ,
3204 '54053' : 'Mason, WV' ,
3205 '54055' : 'Mercer, WV' ,
3206 '54057' : 'Mineral, WV' ,
3207 '54059' : 'Mingo, WV' ,
3208 '54061' : 'Monongalia, WV' ,
3209 '54063' : 'Monroe, WV' ,
3210 '54065' : 'Morgan, WV' ,
3211 '54067' : 'Nicholas, WV' ,
3212 '54069' : 'Ohio, WV' ,
3213 '54071' : 'Pendleton, WV' ,
3214 '54073' : 'Pleasants, WV' ,
3215 '54075' : 'Pocahontas, WV' ,
3216 '54077' : 'Preston, WV' ,
3217 '54079' : 'Putnam, WV' ,
3218 '54081' : 'Raleigh, WV' ,
3219 '54083' : 'Randolph, WV' ,
3220 '54085' : 'Ritchie, WV' ,
3221 '54087' : 'Roane, WV' ,
3222 '54089' : 'Summers, WV' ,
3223 '54091' : 'Taylor, WV' ,
3224 '54093' : 'Tucker, WV' ,
3225 '54095' : 'Tyler, WV' ,
3226 '54097' : 'Upshur, WV' ,
3227 '54099' : 'Wayne, WV' ,
3228 '54101' : 'Webster, WV' ,
3229 '54103' : 'Wetzel, WV' ,
3230 '54105' : 'Wirt, WV' ,
3231 '54107' : 'Wood, WV' ,
3232 '54109' : 'Wyoming, WV' ,
3233 '55000' : 'WISCONSIN' ,
3234 '55001' : 'Adams, WI' ,
3235 '55003' : 'Ashland, WI' ,
3236 '55005' : 'Barron, WI' ,
3237 '55007' : 'Bayfield, WI' ,
3238 '55009' : 'Brown, WI' ,
3239 '55011' : 'Buffalo, WI' ,
3240 '55013' : 'Burnett, WI' ,
3241 '55015' : 'Calumet, WI' ,
3242 '55017' : 'Chippewa, WI' ,
3243 '55019' : 'Clark, WI' ,
3244 '55021' : 'Columbia, WI' ,
3245 '55023' : 'Crawford, WI' ,
3246 '55025' : 'Dane, WI' ,
3247 '55027' : 'Dodge, WI' ,
3248 '55029' : 'Door, WI' ,
3249 '55031' : 'Douglas, WI' ,
3250 '55033' : 'Dunn, WI' ,
3251 '55035' : 'Eau Claire, WI' ,
3252 '55037' : 'Florence, WI' ,
3253 '55039' : 'Fond du Lac, WI' ,
3254 '55041' : 'Forest, WI' ,
3255 '55043' : 'Grant, WI' ,
3256 '55045' : 'Green, WI' ,
3257 '55047' : 'Green Lake, WI' ,
3258 '55049' : 'Iowa, WI' ,
3259 '55051' : 'Iron, WI' ,
3260 '55053' : 'Jackson, WI' ,
3261 '55055' : 'Jefferson, WI' ,
3262 '55057' : 'Juneau, WI' ,
3263 '55059' : 'Kenosha, WI' ,
3264 '55061' : 'Kewaunee, WI' ,
3265 '55063' : 'La Crosse, WI' ,
3266 '55065' : 'Lafayette, WI' ,
3267 '55067' : 'Langlade, WI' ,
3268 '55069' : 'Lincoln, WI' ,
3269 '55071' : 'Manitowoc, WI' ,
3270 '55073' : 'Marathon, WI' ,
3271 '55075' : 'Marinette, WI' ,
3272 '55077' : 'Marquette, WI' ,
3273 '55078' : 'Menominee, WI' ,
3274 '55079' : 'Milwaukee, WI' ,
3275 '55081' : 'Monroe, WI' ,
3276 '55083' : 'Oconto, WI' ,
3277 '55085' : 'Oneida, WI' ,
3278 '55087' : 'Outagamie, WI' ,
3279 '55089' : 'Ozaukee, WI' ,
3280 '55091' : 'Pepin, WI' ,
3281 '55093' : 'Pierce, WI' ,
3282 '55095' : 'Polk, WI' ,
3283 '55097' : 'Portage, WI' ,
3284 '55099' : 'Price, WI' ,
3285 '55101' : 'Racine, WI' ,
3286 '55103' : 'Richland, WI' ,
3287 '55105' : 'Rock, WI' ,
3288 '55107' : 'Rusk, WI' ,
3289 '55109' : 'St. Croix, WI' ,
3290 '55111' : 'Sauk, WI' ,
3291 '55113' : 'Sawyer, WI' ,
3292 '55115' : 'Shawano, WI' ,
3293 '55117' : 'Sheboygan, WI' ,
3294 '55119' : 'Taylor, WI' ,
3295 '55121' : 'Trempealeau, WI' ,
3296 '55123' : 'Vernon, WI' ,
3297 '55125' : 'Vilas, WI' ,
3298 '55127' : 'Walworth, WI' ,
3299 '55129' : 'Washburn, WI' ,
3300 '55131' : 'Washington, WI' ,
3301 '55133' : 'Waukesha, WI' ,
3302 '55135' : 'Waupaca, WI' ,
3303 '55137' : 'Waushara, WI' ,
3304 '55139' : 'Winnebago, WI' ,
3305 '55141' : 'Wood, WI' ,
3306 '56000' : 'WYOMING' ,
3307 '56001' : 'Albany, WY' ,
3308 '56003' : 'Big Horn, WY' ,
3309 '56005' : 'Campbell, WY' ,
3310 '56007' : 'Carbon, WY' ,
3311 '56009' : 'Converse, WY' ,
3312 '56011' : 'Crook, WY' ,
3313 '56013' : 'Fremont, WY' ,
3314 '56015' : 'Goshen, WY' ,
3315 '56017' : 'Hot Springs, WY' ,
3316 '56019' : 'Johnson, WY' ,
3317 '56021' : 'Laramie, WY' ,
3318 '56023' : 'Lincoln, WY' ,
3319 '56025' : 'Natrona, WY' ,
3320 '56027' : 'Niobrara, WY' ,
3321 '56029' : 'Park, WY' ,
3322 '56031' : 'Platte, WY' ,
3323 '56033' : 'Sheridan, WY' ,
3324 '56035' : 'Sublette, WY' ,
3325 '56037' : 'Sweetwater, WY' ,
3326 '56039' : 'Teton, WY' ,
3327 '56041' : 'Uinta, WY' ,
3328 '56043' : 'Washakie, WY' ,
3329 '56045' : 'Weston, WY' ,
3330 '60000' : 'AMERICAN SAMOA',
3331 '60010' : 'Eastern District, AS' ,
3332 '60020' : 'Manu\'a District, AS' ,
3333 '60030' : 'Rose Island, AS' ,
3334 '60040' : 'Swains Island, AS' ,
3335 '60050' : 'Western District, AS' ,
3336 '66000' : 'GUAM' ,
3337 '66010' : 'Guam, GU' ,
3338 '69000' : 'COMMONWEALTH OF THE NORTHERN MARIANA ISLANDS' ,
3339 '69085' : 'Northern Islands, MP' ,
3340 '69100' : 'Rota, MP' ,
3341 '69110' : 'Saipan, MP' ,
3342 '69120' : 'Tinian, MP' ,
3343 '72000' : 'PUERTO RICO' ,
3344 '72001' : 'Adjuntas, PR' ,
3345 '72003' : 'Aguada, PR' ,
3346 '72005' : 'Aguadilla, PR' ,
3347 '72007' : 'Aguas Buenas, PR' ,
3348 '72009' : 'Aibonito, PR' ,
3349 '72011' : 'Anasco, PR' ,
3350 '72013' : 'Arecibo, PR' ,
3351 '72015' : 'Arroyo, PR' ,
3352 '72017' : 'Barceloneta, PR' ,
3353 '72019' : 'Barranquitas, PR' ,
3354 '72021' : 'Bayamon, PR' ,
3355 '72023' : 'Cabo Rojo, PR' ,
3356 '72025' : 'Caguas, PR' ,
3357 '72027' : 'Camuy, PR' ,
3358 '72029' : 'Canovanas, PR' ,
3359 '72031' : 'Carolina, PR' ,
3360 '72033' : 'Catano, PR' ,
3361 '72035' : 'Cayey, PR' ,
3362 '72037' : 'Ceiba, PR' ,
3363 '72039' : 'Ciales, PR' ,
3364 '72041' : 'Cidra, PR' ,
3365 '72043' : 'Coamo, PR' ,
3366 '72045' : 'Comerio, PR' ,
3367 '72047' : 'Corozal, PR' ,
3368 '72049' : 'Culebra, PR' ,
3369 '72051' : 'Dorado, PR' ,
3370 '72053' : 'Fajardo, PR' ,
3371 '72054' : 'Florida, PR' ,
3372 '72055' : 'Guanica, PR' ,
3373 '72057' : 'Guayama, PR' ,
3374 '72059' : 'Guayanilla, PR' ,
3375 '72061' : 'Guaynabo, PR' ,
3376 '72063' : 'Gurabo, PR' ,
3377 '72065' : 'Hatillo, PR' ,
3378 '72067' : 'Hormigueros, PR' ,
3379 '72069' : 'Humacao, PR' ,
3380 '72071' : 'Isabela, PR' ,
3381 '72073' : 'Jayuya, PR' ,
3382 '72075' : 'Juana Diaz, PR' ,
3383 '72077' : 'Juncos, PR' ,
3384 '72079' : 'Lajas, PR' ,
3385 '72081' : 'Lares, PR' ,
3386 '72083' : 'Las Marias, PR' ,
3387 '72085' : 'Las Piedras, PR' ,
3388 '72087' : 'Loiza, PR' ,
3389 '72089' : 'Luquillo, PR' ,
3390 '72091' : 'Manati, PR' ,
3391 '72093' : 'Maricao, PR' ,
3392 '72095' : 'Maunabo, PR' ,
3393 '72097' : 'Mayaguez, PR' ,
3394 '72099' : 'Moca, PR' ,
3395 '72101' : 'Morovis, PR' ,
3396 '72103' : 'Naguabo, PR' ,
3397 '72105' : 'Naranjito, PR' ,
3398 '72107' : 'Orocovis, PR' ,
3399 '72109' : 'Patillas, PR' ,
3400 '72111' : 'Penuelas, PR' ,
3401 '72113' : 'Ponce, PR' ,
3402 '72115' : 'Quebradillas, PR' ,
3403 '72117' : 'Rincon, PR' ,
3404 '72119' : 'Rio Grande, PR' ,
3405 '72121' : 'Sabana Grande, PR' ,
3406 '72123' : 'Salinas, PR' ,
3407 '72125' : 'San German, PR' ,
3408 '72127' : 'San Juan, PR' ,
3409 '72129' : 'San Lorenzo, PR' ,
3410 '72131' : 'San Sebastian, PR' ,
3411 '72133' : 'Santa Isabel, PR' ,
3412 '72135' : 'Toa Alta, PR' ,
3413 '72137' : 'Toa Baja, PR' ,
3414 '72139' : 'Trujillo Alto, PR' ,
3415 '72141' : 'Utuado, PR' ,
3416 '72143' : 'Vega Alta, PR' ,
3417 '72145' : 'Vega Baja, PR' ,
3418 '72147' : 'Vieques, PR' ,
3419 '72149' : 'Villalba, PR' ,
3420 '72151' : 'Yabucoa, PR' ,
3421 '72153' : 'Yauco, PR' ,
3422 '78000' : 'VIRGIN ISLANDS' ,
3423 '78010' : 'St. Croix, VI' ,
3424 '78020' : 'St. John, VI' ,
3425 '78030' : 'St. Thomas, VI' ,
3426 }
3427
3428 def fipsstate(fips,countyfp):
3429     tags = {}
3430
3431     if not fips:
3432         tags['is_in'] = 'USA'
3433         tags['is_in:country'] = 'USA'
3434         tags['is_in:country_code'] = 'US'
3435         return tags
3436
3437     if fips not in fipscodes:
3438         raise KeyError('missing FIPS code', fips)
3439
3440     state, statecode, isocode = fipscodes[fips]
3441     county_fips_code = fips + "" + countyfp
3442     county = county_fips[county_fips_code]
3443     tags["tiger:county"] = county
3444     tags["is_in:county"] = county
3445
3446     tags["is_in"] =  'USA, '+state
3447     tags["is_in:state"] =  state
3448     tags["is_in:state_code"] = statecode
3449     tags["is_in:country_code"] = isocode
3450
3451     if isocode == 'US':
3452         tags["is_in:iso_3166_2"] =  isocode+':'+statecode
3453         tags["is_in:country"] = "USA"
3454
3455     else:
3456         # Reasonable to specify both here
3457         tags["is_in:country"] = 'USA;'+state
3458
3459     return tags
3460
3461 def parse_shp_for_osm( filename ):
3462     #ogr.RegisterAll()
3463
3464     dr = ogr.GetDriverByName("ESRI Shapefile")
3465     poDS = dr.Open( filename )
3466
3467     if poDS == None:
3468         raise "Open failed."
3469
3470     poLayer = poDS.GetLayer( 0 )
3471
3472     poLayer.ResetReading()
3473
3474     ret = []
3475
3476     poFeature = poLayer.GetNextFeature()
3477     while poFeature:
3478         tags = {}
3479         
3480         # WAY ID
3481         tags[iSource + ":way_id"] = int( poFeature.GetField("TLID") )
3482         
3483         # FEATURE IDENTIFICATION
3484         mtfcc = poFeature.GetField("MTFCC");
3485         if mtfcc != None:
3486
3487             if mtfcc == "L4010":        #Pipeline
3488                 tags["man_made"] = "pipeline"
3489             if mtfcc == "L4020":        #Powerline
3490                 tags["power"] = "line"
3491             if mtfcc == "L4031":        #Aerial Tramway/Ski Lift
3492                 tags["aerialway"] = "cable_car"
3493             if mtfcc == "L4110":        #Fence Line
3494                 tags["barrier"] = "fence"
3495             if mtfcc == "L4125":        #Cliff/Escarpment
3496                 tags["natural"] = "cliff"
3497             if mtfcc == "L4165":        #Ferry Crossing
3498                 tags["route"] = "ferry"
3499             if mtfcc == "R1011":        #Railroad Feature (Main, Spur, or Yard)
3500                 tags["railway"] = "rail"
3501                 ttyp = poFeature.GetField("TTYP")
3502                 if ttyp != None:
3503                     if ttyp == "S":
3504                         tags["service"] = "spur"
3505                     if ttyp == "Y":
3506                         tags["service"] = "yard"
3507                     tags["tiger:ttyp"] = ttyp
3508             if mtfcc == "R1051":        #Carline, Streetcar Track, Monorail, Other Mass Transit Rail)
3509                 tags["railway"] = "light_rail"
3510             if mtfcc == "R1052":        #Cog Rail Line, Incline Rail Line, Tram
3511                 tags["railway"] = "incline"
3512             if mtfcc == "S1100":
3513                 tags["highway"] = "primary"
3514             if mtfcc == "S1200":
3515                 tags["highway"] = "secondary"
3516             if mtfcc == "S1400":
3517                 tags["highway"] = "residential"
3518             if mtfcc == "S1500":
3519                 tags["highway"] = "track"
3520             if mtfcc == "S1630":        #Ramp
3521                 tags["highway"] = "motorway_link"
3522             if mtfcc == "S1640":        #Service Drive usually along a limited access highway
3523                 tags["highway"] = "service"
3524             if mtfcc == "S1710":        #Walkway/Pedestrian Trail
3525                 tags["highway"] = "path"
3526             if mtfcc == "S1720":
3527                 tags["highway"] = "steps"
3528             if mtfcc == "S1730":        #Alley
3529                 tags["highway"] = "service"
3530                 tags["service"] = "alley"
3531             if mtfcc == "S1740":        #Private Road for service vehicles (logging, oil, fields, ranches, etc.)
3532                 tags["highway"] = "service"
3533                 tags["access"] = "private"
3534             if mtfcc == "S1750":        #Private Driveway
3535                 tags["highway"] = "service"
3536                 tags["access"] = "private"
3537                 tags["service"] = "driveway"
3538             if mtfcc == "S1780":        #Parking Lot Road
3539                 tags["highway"] = "service"
3540                 tags["service"] = "parking_aisle"
3541             if mtfcc == "S1820":        #Bike Path or Trail
3542                 tags["highway"] = "cycleway"
3543             if mtfcc == "S1830":        #Bridle Path
3544                 tags["highway"] = "bridleway"
3545             tags["tiger:mtfcc"] = mtfcc
3546
3547         # FEATURE NAME
3548         if poFeature.GetField("FULLNAME"):
3549             #capitalizes the first letter of each word
3550             name = poFeature.GetField( "FULLNAME" )
3551             tags["name"] = name
3552
3553             #Attempt to guess highway grade
3554             if name[0:2] == "I-":
3555                 tags["highway"] = "motorway"
3556             if name[0:3] == "US ":
3557                 tags["highway"] = "primary"
3558             if name[0:3] == "US-":
3559                 tags["highway"] = "primary"
3560             if name[0:3] == "Hwy":
3561                 if tags["highway"] != "primary":
3562                     tags["highway"] = "secondary"
3563
3564         divroad = poFeature.GetField("DIVROAD")
3565         if divroad != None:
3566             if divroad == "Y" and "highway" in tags and tags["highway"] == "residential":
3567                 tags["highway"] = "tertiary"
3568             tags["tiger:separated"] = divroad
3569
3570         statefp = poFeature.GetField("STATEFP")
3571         countyfp = poFeature.GetField("COUNTYFP")
3572         if (statefp != None) and (countyfp != None):
3573            tags.update( fipsstate(statefp, countyfp) )
3574
3575         tlid = poFeature.GetField("TLID")
3576         if tlid != None:
3577             tags["tiger:tlid"] = tlid
3578
3579         lfromadd = poFeature.GetField("LFROMADD")
3580         if lfromadd != None:
3581             tags["tiger:lfromadd"] = lfromadd
3582
3583         rfromadd = poFeature.GetField("RFROMADD")
3584         if rfromadd != None:
3585             tags["tiger:rfromadd"] = rfromadd
3586
3587         ltoadd = poFeature.GetField("LTOADD")
3588         if ltoadd != None:
3589             tags["tiger:ltoadd"] = ltoadd
3590
3591         rtoadd = poFeature.GetField("RTOADD")
3592         if rtoadd != None:
3593             tags["tiger:rtoadd"] = rtoadd
3594
3595         zipl = poFeature.GetField("ZIPL")
3596         if zipl != None:
3597             tags["tiger:zip_left"] = zipl
3598
3599         zipr = poFeature.GetField("ZIPR")
3600         if zipr != None:
3601             tags["tiger:zip_right"] = zipr
3602
3603         if mtfcc not in ignoremtfcc:
3604             # COPY DOWN THE GEOMETRY
3605             geom = []
3606             
3607             rawgeom = poFeature.GetGeometryRef()
3608             for i in range( rawgeom.GetPointCount() ):
3609                 geom.append( (rawgeom.GetX(i), rawgeom.GetY(i)) )
3610     
3611             ret.append( (geom, tags) )
3612         poFeature = poLayer.GetNextFeature()
3613         
3614     return ret
3615
3616
3617 # ====================================
3618 # to do read .prj file for this data
3619 # Change the Projcs_wkt to match your datas prj file.
3620 # ====================================
3621 projcs_wkt = \
3622 """GEOGCS["GCS_North_American_1983",
3623         DATUM["D_North_American_1983",
3624         SPHEROID["GRS_1980",6378137,298.257222101]],
3625         PRIMEM["Greenwich",0],
3626         UNIT["Degree",0.017453292519943295]]"""
3627
3628 from_proj = osr.SpatialReference()
3629 from_proj.ImportFromWkt( projcs_wkt )
3630
3631 # output to WGS84
3632 to_proj = osr.SpatialReference()
3633 to_proj.SetWellKnownGeogCS( "EPSG:4326" )
3634
3635 tr = osr.CoordinateTransformation( from_proj, to_proj )
3636
3637 import math
3638 def length(segment, nodelist):
3639     '''Returns the length (in feet) of a segment'''
3640     first = True
3641     distance = 0
3642     lat_feet = 364613  #The approximate number of feet in one degree of latitude
3643     for point in segment:
3644         pointid, (lat, lon) = nodelist[ round_point( point ) ]
3645         if first:
3646             first = False
3647         else:
3648             #The approximate number of feet in one degree of longitute
3649             lrad = math.radians(lat)
3650             lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad)
3651             distance += math.sqrt(((lat - previous[0])*lat_feet)**2 + ((lon - previous[1])*lon_feet)**2)
3652         previous = (lat, lon)
3653     return distance
3654
3655 def addressways(waylist, nodelist, first_id):
3656     id = first_id
3657     awaylist = {}
3658     lat_feet = 364613  #The approximate number of feet in one degree of latitude
3659     distance = float(address_distance)
3660     ret = []
3661
3662     for waykey, segments in waylist.items():
3663         waykey = dict(waykey)
3664         rsegments = []
3665         lsegments = []
3666         for segment in segments:
3667             lsegment = []
3668             rsegment = []
3669             lastpoint = None
3670
3671             #Don't pull back the ends of very short ways too much
3672             seglength = length(segment, nodelist)
3673             if seglength < float(address_pullback) * 3.0:
3674                 pullback = seglength / 3.0
3675             else:
3676                 pullback = float(address_pullback)
3677             if "tiger:lfromadd" in waykey:
3678                 lfromadd = waykey["tiger:lfromadd"]
3679             else:
3680                 lfromadd = None
3681             if "tiger:ltoadd" in waykey:
3682                 ltoadd = waykey["tiger:ltoadd"]
3683             else:
3684                 ltoadd = None
3685             if "tiger:rfromadd" in waykey:
3686                 rfromadd = waykey["tiger:rfromadd"]
3687             else: 
3688                 rfromadd = None
3689             if "tiger:rtoadd" in waykey:
3690                 rtoadd = waykey["tiger:rtoadd"]
3691             else:
3692                 rtoadd = None
3693             if rfromadd != None and rtoadd != None:
3694                 right = True
3695             else:
3696                 right = False
3697             if lfromadd != None and ltoadd != None:
3698                 left = True
3699             else:
3700                 left = False
3701             if left or right:
3702                 first = True
3703                 firstpointid, firstpoint = nodelist[ round_point( segment[0] ) ]
3704
3705                 finalpointid, finalpoint = nodelist[ round_point( segment[len(segment) - 1] ) ]
3706                 for point in segment:
3707                     pointid, (lat, lon) = nodelist[ round_point( point ) ]
3708
3709                     #The approximate number of feet in one degree of longitute
3710                     lrad = math.radians(lat)
3711                     lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad)
3712
3713 #Calculate the points of the offset ways
3714                     if lastpoint != None:
3715                         #Skip points too close to start
3716                         if math.sqrt((lat * lat_feet - firstpoint[0] * lat_feet)**2 + (lon * lon_feet - firstpoint[1] * lon_feet)**2) < pullback:
3717                             #Preserve very short ways (but will be rendered backwards)
3718                             if pointid != finalpointid:
3719                                 continue
3720                         #Skip points too close to end
3721                         if math.sqrt((lat * lat_feet - finalpoint[0] * lat_feet)**2 + (lon * lon_feet - finalpoint[1] * lon_feet)**2) < pullback:
3722                             #Preserve very short ways (but will be rendered backwards)
3723                             if (pointid != firstpointid) and (pointid != finalpointid):
3724                                 continue
3725
3726                         X = (lon - lastpoint[1]) * lon_feet
3727                         Y = (lat - lastpoint[0]) * lat_feet
3728                         if Y != 0:
3729                             theta = math.pi/2 - math.atan( X / Y)
3730                             Xp = math.sin(theta) * distance
3731                             Yp = math.cos(theta) * distance
3732                         else:
3733                             Xp = 0
3734                             if X > 0:
3735                                 Yp = -distance
3736                             else:
3737                                 Yp = distance
3738
3739                         if Y > 0:
3740                             Xp = -Xp
3741                         else:
3742                             Yp = -Yp
3743                                 
3744                         if first:
3745                             first = False
3746                             dX =  - (Yp * (pullback / distance)) / lon_feet #Pull back the first point
3747                             dY = (Xp * (pullback / distance)) / lat_feet
3748                             if left:
3749                                 lpoint = (lastpoint[0] + (Yp / lat_feet) - dY, lastpoint[1] + (Xp / lon_feet) - dX)
3750                                 lsegment.append( (id, lpoint) )
3751                                 id += 1
3752                             if right:
3753                                 rpoint = (lastpoint[0] - (Yp / lat_feet) - dY, lastpoint[1] - (Xp / lon_feet) - dX)
3754                                 rsegment.append( (id, rpoint) )
3755                                 id += 1
3756
3757                         else:
3758                             #round the curves
3759                             if delta[1] != 0:
3760                                 theta = abs(math.atan(delta[0] / delta[1]))
3761                             else:
3762                                 theta = math.pi / 2
3763                             if Xp != 0:
3764                                 theta = theta - abs(math.atan(Yp / Xp))
3765                             else: theta = theta - math.pi / 2
3766                             r = 1 + abs(math.tan(theta/2))
3767                             if left:
3768                                 lpoint = (lastpoint[0] + (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] + (Xp + delta[1]) * r / (lon_feet * 2))
3769                                 lsegment.append( (id, lpoint) )
3770                                 id += 1
3771                             if right:
3772                                 rpoint = (lastpoint[0] - (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] - (Xp + delta[1]) * r / (lon_feet * 2))
3773                                 
3774                                 rsegment.append( (id, rpoint) )
3775                                 id += 1
3776
3777                         delta = (Yp, Xp)
3778
3779                     lastpoint = (lat, lon)
3780
3781
3782 #Add in the last node
3783                 dX =  - (Yp * (pullback / distance)) / lon_feet
3784                 dY = (Xp * (pullback / distance)) / lat_feet
3785                 if left:
3786                     lpoint = (lastpoint[0] + (Yp + delta[0]) / (lat_feet * 2) + dY, lastpoint[1] + (Xp + delta[1]) / (lon_feet * 2) + dX )
3787                     lsegment.append( (id, lpoint) )
3788                     id += 1
3789                 if right:
3790                     rpoint = (lastpoint[0] - Yp / lat_feet + dY, lastpoint[1] - Xp / lon_feet + dX)
3791                     rsegment.append( (id, rpoint) )
3792                     id += 1
3793
3794 #Generate the tags for ways and nodes
3795                 rtags = []
3796                 ltags = []
3797                 tags = []
3798                 zipr = ''
3799                 zipl = ''
3800                 name = ''
3801                 county = ''
3802                 if "tiger:zip_right" in waykey:
3803                     zipr = waykey["tiger:zip_right"]
3804                     rtags.append( "<tag k=\"addr:postcode\" v=\"%s\" />" % zipr )
3805                 if "tiger:zip_left" in waykey:
3806                     zipl = waykey["tiger:zip_left"]
3807                     ltags.append( "<tag k=\"addr:postcode\" v=\"%s\" />" % zipl )
3808                 if "name" in waykey:
3809                     name = waykey["name"]
3810                     tags.append( "<tag k=\"addr:street\" v=\"%s\" />" % name )
3811                 if "is_in:state" in waykey:
3812                     state = waykey["is_in:state"]
3813                     tags.append( "<tag k=\"addr:state\" v=\"%s\" />" % state )
3814                 if "tiger:county" in waykey:
3815                     county = waykey["tiger:county"]
3816                     tags.append( "<tag k=\"addr:county\" v=\"%s\" />" % county )
3817                 if "is_in:country_code" in waykey:
3818                     country = waykey["is_in:country_code"]
3819                     tags.append( "<tag k=\"addr:country\" v=\"%s\" />" % country )
3820                 if "tiger:separated" in waykey:
3821                     separated = waykey["tiger:separated"]
3822                 else:
3823                     separated = "N"
3824                 ltags.extend(tags)
3825                 rtags.extend(tags)
3826
3827 #Write the nodes of the offset ways
3828                 if right:
3829                     rlinestring = [];
3830                     for i, point in rsegment:
3831                         rlinestring.append( "%f %f" % (point[1], point[0]) )
3832                 if left:
3833                     llinestring = [];
3834                     for i, point in lsegment:
3835                         llinestring.append( "%f %f" % (point[1], point[0]) )
3836                 if right:
3837                     rsegments.append( rsegment )
3838                 if left:
3839                     lsegments.append( lsegment )
3840                 rtofromint = right        #Do the addresses convert to integers?
3841                 ltofromint = left        #Do the addresses convert to integers?
3842                 if right:
3843                     try: rfromint = int(rfromadd)
3844                     except:
3845                         print("Non integer address: %s" % rfromadd)
3846                         rtofromint = False
3847                     try: rtoint = int(rtoadd)
3848                     except:
3849                         print("Non integer address: %s" % rtoadd)
3850                         rtofromint = False
3851                 if left:
3852                     try: lfromint = int(lfromadd)
3853                     except:
3854                         print("Non integer address: %s" % lfromadd)
3855                         ltofromint = False
3856                     try: ltoint = int(ltoadd)
3857                     except:
3858                         print("Non integer address: %s" % ltoadd)
3859                         ltofromint = False
3860                     import_guid = time.strftime( '%Y%m%d%H%M%S' )
3861                 if right:
3862                     id += 1
3863
3864                     interpolationtype = "";
3865                     if rtofromint:
3866                         if (rfromint % 2) == 0 and (rtoint % 2) == 0:
3867                             if separated == "Y":        #Doesn't matter if there is another side
3868         #                        ret.append( "<tag k=\"addr:interpolation\" v=\"even\" />" )
3869                                 interpolationtype = "even";
3870                             elif ltofromint and (lfromint % 2) == 1 and (ltoint % 2) == 1:
3871                                 interpolationtype = "even";
3872        #                         ret.append( "<tag k=\"addr:interpolation\" v=\"even\" />" )
3873                             else:
3874                                 interpolationtype = "all";
3875       #                          ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3876                         elif (rfromint % 2) == 1 and (rtoint % 2) == 1:
3877                             if separated == "Y":        #Doesn't matter if there is another side
3878                                 interpolationtype = "odd";
3879      #                           ret.append( "<tag k=\"addr:interpolation\" v=\"odd\" />" )
3880                             elif ltofromint and (lfromint % 2) == 0 and (ltoint % 2) == 0:
3881                                 interpolationtype = "odd";
3882     #                            ret.append( "<tag k=\"addr:interpolation\" v=\"odd\" />" )
3883                             else:
3884                                 interpolationtype = "all";
3885    #                             ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3886                         else:
3887                             interpolationtype = "all";
3888   #                          ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3889                     else:
3890                         interpolationtype = "all";
3891  #                       ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3892 #                    ret.extend(rtags)
3893   #                  ret.append( "<tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
3894  #                   ret.append( "<tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
3895 #                    ret.append( "</way>" )
3896                     # call new tiger_line_import function to save the lines in the DB.
3897                     ret.append( "select tiger_line_import(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" %
3898                                 ( ",".join(rlinestring), rfromadd.replace("'", "''"), rtoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipr.replace("'", "''") ) )
3899
3900                 if left:
3901                     id += 1
3902                     if ltofromint:
3903                         if (lfromint % 2) == 0 and (ltoint % 2) == 0:
3904                             if separated == "Y":
3905                                 interpolationtype = "even";
3906                             elif rtofromint and (rfromint % 2) == 1 and (rtoint % 2) == 1:
3907                                 interpolationtype = "even";
3908                             else:
3909                                 interpolationtype = "all";
3910
3911                         elif (lfromint % 2) == 1 and (ltoint % 2) == 1:
3912                             if separated == "Y":
3913                                 interpolationtype = "odd";
3914                             elif rtofromint and (rfromint %2 ) == 0 and (rtoint % 2) == 0:
3915                                 interpolationtype = "odd";
3916                             else:
3917                                 interpolationtype = "all";
3918                         else:
3919                             interpolationtype = "all";
3920                     else:
3921                         interpolationtype = "all";
3922                     ret.append( "select tiger_line_import(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" %
3923                                 ( ",".join(llinestring), lfromadd.replace("'", "''"), ltoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipl.replace("'", "''") ) )
3924
3925     return ret
3926
3927 def unproject( point ):
3928     pt = tr.TransformPoint( point[0], point[1] )
3929     return (pt[1], pt[0])
3930
3931 def round_point( point, accuracy=8 ):
3932     return tuple( [ round(x,accuracy) for x in point ] )
3933
3934 def compile_nodelist( parsed_gisdata, first_id=1 ):
3935     nodelist = {}
3936     
3937     i = first_id
3938     for geom, tags in parsed_gisdata:
3939         if len( geom )==0:
3940             continue
3941         
3942         for point in geom:
3943             r_point = round_point( point )
3944             if r_point not in nodelist:
3945                 nodelist[ r_point ] = (i, unproject( point ))
3946                 i += 1
3947             
3948     return (i, nodelist)
3949
3950 def adjacent( left, right ):
3951     left_left = round_point(left[0])
3952     left_right = round_point(left[-1])
3953     right_left = round_point(right[0])
3954     right_right = round_point(right[-1])
3955     
3956     return ( left_left == right_left or
3957              left_left == right_right or
3958              left_right == right_left or
3959              left_right == right_right )
3960              
3961 def glom( left, right ):
3962     
3963     left = list( left )
3964     right = list( right )
3965     
3966     left_left = round_point(left[0])
3967     left_right = round_point(left[-1])
3968     right_left = round_point(right[0])
3969     right_right = round_point(right[-1])
3970     
3971     if left_left == right_left:
3972         left.reverse()
3973         return left[0:-1] + right
3974         
3975     if left_left == right_right:
3976         return right[0:-1] + left
3977         
3978     if left_right == right_left:
3979         return left[0:-1] + right
3980         
3981     if left_right == right_right:
3982         right.reverse()
3983         return left[0:-1] + right
3984         
3985     raise 'segments are not adjacent'
3986
3987 def glom_once( segments ):
3988     if len(segments)==0:
3989         return segments
3990     
3991     unsorted = list( segments )
3992     x = unsorted.pop(0)
3993     
3994     while len( unsorted ) > 0:
3995         n = len( unsorted )
3996         
3997         for i in range(0, n):
3998             y = unsorted[i]
3999             if adjacent( x, y ):
4000                 y = unsorted.pop(i)
4001                 x = glom( x, y )
4002                 break
4003                 
4004         # Sorted and unsorted lists have no adjacent segments
4005         if len( unsorted ) == n:
4006             break
4007             
4008     return x, unsorted
4009     
4010 def glom_all( segments ):
4011     unsorted = segments
4012     chunks = []
4013     
4014     while unsorted != []:
4015         chunk, unsorted = glom_once( unsorted )
4016         chunks.append( chunk )
4017         
4018     return chunks
4019         
4020                 
4021
4022 def compile_waylist( parsed_gisdata, blank_way_id ):
4023     waylist = {}
4024     
4025     #Group by iSource:way_id
4026     for geom, tags in parsed_gisdata:
4027         way_key = tags.copy()
4028         way_key = ( way_key[iSource + ':way_id'], tuple( [(k,v) for k,v in way_key.items()] ) )
4029         
4030         if way_key not in waylist:
4031             waylist[way_key] = []
4032             
4033         waylist[way_key].append( geom )
4034     
4035     ret = {}
4036     for (way_id, way_key), segments in waylist.items():
4037         
4038         if way_id != blank_way_id:
4039             ret[way_key] = glom_all( segments )
4040         else:
4041             ret[way_key] = segments
4042         
4043     return ret
4044             
4045
4046 import time
4047 from xml.sax.saxutils import escape
4048 def shape_to_osm( shp_filename, base_filename, blank_way_id ):
4049     
4050     import_guid = time.strftime( '%Y%m%d%H%M%S' )
4051
4052     print("parsing shpfile")
4053     parsed_features = parse_shp_for_osm( shp_filename )
4054     
4055     print("compiling nodelist")
4056     i, nodelist = compile_nodelist( parsed_features )
4057     
4058     print("compiling waylist")
4059     waylist = compile_waylist( parsed_features, blank_way_id )
4060
4061     filenumber = 1
4062     objectcount = 0
4063     seen = {}
4064
4065     print("preparing address ways")
4066     ret = addressways(waylist, nodelist, i)
4067     osm_filename = "%s%d.osm" % (base_filename, filenumber)
4068     print("writing %s" %osm_filename)
4069     fp = open( osm_filename, "w" )
4070     fp.write( "\n".join( ret ) )
4071     fp.close()
4072     filenumber += 1
4073
4074     
4075     print("constructing osm xml file")
4076     ret = []
4077     ret.append( "<?xml version='1.0' encoding='UTF-8'?>" )
4078     ret.append( "<osm version='0.6' generator='shape_to_osm.py'>" )
4079     
4080     for waykey, segments in waylist.items():
4081         for segment in segments:
4082             #write the nodes
4083             for point in segment:
4084                 id, (lat, lon) = nodelist[ round_point( point ) ]
4085                 if id not in seen:
4086                     seen[id] = True
4087                     #write node
4088                     ret.append( "  <node id='-%d' action='create' visible='true' lat='%f' lon='%f' >" % (id, lat, lon) )
4089                     ret.append( "  </node>" )
4090                     objectcount += 1
4091                 else:
4092                     pass
4093                     #print "Skipping node %d" %id
4094
4095             #write the way
4096             ret.append( "  <way id='-%d' action='create' visible='true'>" % i )
4097             
4098             ids = [ nodelist[ round_point( point ) ][0] for point in segment ]
4099
4100             count = 0
4101             for id in ids:
4102                 count += 1
4103                 ret.append( "    <nd ref='-%d' />" % id )
4104                 if (count % Max_Waylength == 0) and (count != len(ids)):        #Split the way
4105                     for k, v in waykey:
4106                         ret.append( "    <tag k=\"%s\" v=\"%s\" />" % (k, escape(str(v))) )
4107                     ret.append( "    <tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
4108                     ret.append( "    <tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
4109                 
4110                     ret.append( "  </way>" )
4111                     objectcount += 1
4112                     i += 1
4113                     ret.append( "  <way id='-%d' action='create' visible='true'>" % i )
4114                     ret.append( "    <nd ref='-%d' />" % id )
4115                 
4116             for k, v in waykey:
4117                 ret.append( "    <tag k=\"%s\" v=\"%s\" />" % (k, escape(str(v))) )
4118             ret.append( "    <tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
4119             ret.append( "    <tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
4120                 
4121             ret.append( "  </way>" )
4122             objectcount += 1
4123             
4124             i += 1
4125
4126             if objectcount > maxNodes:        #Write a file
4127                 ret.append( "</osm>" )
4128                 osm_filename = "%s%d.osm" % (base_filename, filenumber)
4129                 print("writing %s" %osm_filename)
4130                 fp = open( osm_filename, "w" )
4131                 fp.write( "\n".join( ret ) )
4132                 fp.close()
4133
4134                 objectcount = 0
4135                 filenumber += 1
4136                 seen = {}
4137                 ret = []
4138                 ret.append( "<?xml version='1.0' encoding='UTF-8'?>" )
4139                 ret.append( "<osm version='0.6' generator='shape_to_osm.py'>" )
4140         
4141     ret.append( "</osm>" )
4142     
4143     osm_filename = "%s%d.osm" % (base_filename, filenumber)
4144     print("writing %s" %osm_filename)
4145     fp = open( osm_filename, "w" )
4146     fp.write( "\n".join( ret ) )
4147     fp.close()
4148     
4149 if __name__ == '__main__':
4150     import sys, os.path
4151     if len(sys.argv) < 2:
4152         print("%s filename.shp [filename.osm]" % sys.argv[0])
4153         sys.exit()
4154     shape = sys.argv[1]
4155     if len(sys.argv) > 2:
4156         osm = sys.argv[2]
4157     else:
4158         osm = shape[0:-4] + ".osm" 
4159     id = "1.shp"
4160         # Left over from massGIS unknown usage, but works fine hardcoded to "1.shp" which was the valu on a test of the actual mass data,
4161         #id = os.path.basename(shape).split("_")[-1]
4162     shape_to_osm( shape, osm, id )