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