source: subversion/applications/utils/nominatim/utils/tigerAddressImport.py @ 27846

Last change on this file since 27846 was 27846, checked in by lonvia, 3 years ago

extend scripts for Tiger 2011 data

  • Property svn:executable set to *
File size: 111.3 KB
Line 
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
10VERSION="0.3"
11# Version 0.3 is optimized for the tiger road conversion
12
13# Tag Source  = iSource + _import_v + version + _ + date and time
14iSource="tiger"
15# Tag Attribution = iAttrib
16iAttrib="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
31ignoremtfcc = [ "H1100", "H3010", "H3013", "H3020", "L4130", "L4140", "P0001", "P0002", "P0003", "P0004" ]
32
33#Files will be split when longer than this number of nodes
34maxNodes = 300000
35
36# Set the maximum length of a way (in nodes) before it is split into
37# shorter ways
38Max_Waylength = 500
39
40# Sets the distance that the address ways should be from the main way, in feet.
41address_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
44address_pullback = 45
45
46try:
47    from osgeo import ogr
48    from osgeo import osr
49except:
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
63fipscodes = {
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
127county_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}
3329
3330def fipsstate(fips,countyfp):
3331    tags = {}
3332
3333    if not fips:
3334        tags['is_in'] = 'USA'
3335        tags['is_in:country'] = 'USA'
3336        tags['is_in:country_code'] = 'US'
3337        return tags
3338
3339    if fips not in fipscodes:
3340        raise KeyError, 'missing FIPS code', fips
3341
3342    state, statecode, isocode = fipscodes[fips]
3343    county_fips_code = fips + "" + countyfp
3344    county = county_fips[county_fips_code]
3345    tags["tiger:county"] = county
3346    tags["is_in:county"] = county
3347
3348    tags["is_in"] =  'USA, '+state
3349    tags["is_in:state"] =  state
3350    tags["is_in:state_code"] = statecode
3351    tags["is_in:country_code"] = isocode
3352
3353    if isocode == 'US':
3354        tags["is_in:iso_3166_2"] =  isocode+':'+statecode
3355        tags["is_in:country"] = "USA"
3356
3357    else:
3358        # Reasonable to specify both here
3359        tags["is_in:country"] = 'USA;'+state
3360
3361    return tags
3362
3363def parse_shp_for_osm( filename ):
3364    #ogr.RegisterAll()
3365
3366    dr = ogr.GetDriverByName("ESRI Shapefile")
3367    poDS = dr.Open( filename )
3368
3369    if poDS == None:
3370        raise "Open failed."
3371
3372    poLayer = poDS.GetLayer( 0 )
3373
3374    poLayer.ResetReading()
3375
3376    ret = []
3377
3378    poFeature = poLayer.GetNextFeature()
3379    while poFeature:
3380        tags = {}
3381       
3382        # WAY ID
3383        tags[iSource + ":way_id"] = int( poFeature.GetField("TLID") )
3384       
3385        # FEATURE IDENTIFICATION
3386        mtfcc = poFeature.GetField("MTFCC");
3387        if mtfcc != None:
3388
3389            if mtfcc == "L4010":        #Pipeline
3390                tags["man_made"] = "pipeline"
3391            if mtfcc == "L4020":        #Powerline
3392                tags["power"] = "line"
3393            if mtfcc == "L4031":        #Aerial Tramway/Ski Lift
3394                tags["aerialway"] = "cable_car"
3395            if mtfcc == "L4110":        #Fence Line
3396                tags["barrier"] = "fence"
3397            if mtfcc == "L4125":        #Cliff/Escarpment
3398                tags["natural"] = "cliff"
3399            if mtfcc == "L4165":        #Ferry Crossing
3400                tags["route"] = "ferry"
3401            if mtfcc == "R1011":        #Railroad Feature (Main, Spur, or Yard)
3402                tags["railway"] = "rail"
3403                ttyp = poFeature.GetField("TTYP")
3404                if ttyp != None:
3405                    if ttyp == "S":
3406                        tags["service"] = "spur"
3407                    if ttyp == "Y":
3408                        tags["service"] = "yard"
3409                    tags["tiger:ttyp"] = ttyp
3410            if mtfcc == "R1051":        #Carline, Streetcar Track, Monorail, Other Mass Transit Rail)
3411                tags["railway"] = "light_rail"
3412            if mtfcc == "R1052":        #Cog Rail Line, Incline Rail Line, Tram
3413                tags["railway"] = "incline"
3414            if mtfcc == "S1100":
3415                tags["highway"] = "primary"
3416            if mtfcc == "S1200":
3417                tags["highway"] = "secondary"
3418            if mtfcc == "S1400":
3419                tags["highway"] = "residential"
3420            if mtfcc == "S1500":
3421                tags["highway"] = "track"
3422            if mtfcc == "S1630":        #Ramp
3423                tags["highway"] = "motorway_link"
3424            if mtfcc == "S1640":        #Service Drive usually along a limited access highway
3425                tags["highway"] = "service"
3426            if mtfcc == "S1710":        #Walkway/Pedestrian Trail
3427                tags["highway"] = "path"
3428            if mtfcc == "S1720":
3429                tags["highway"] = "steps"
3430            if mtfcc == "S1730":        #Alley
3431                tags["highway"] = "service"
3432                tags["service"] = "alley"
3433            if mtfcc == "S1740":        #Private Road for service vehicles (logging, oil, fields, ranches, etc.)
3434                tags["highway"] = "service"
3435                tags["access"] = "private"
3436            if mtfcc == "S1750":        #Private Driveway
3437                tags["highway"] = "service"
3438                tags["access"] = "private"
3439                tags["service"] = "driveway"
3440            if mtfcc == "S1780":        #Parking Lot Road
3441                tags["highway"] = "service"
3442                tags["service"] = "parking_aisle"
3443            if mtfcc == "S1820":        #Bike Path or Trail
3444                tags["highway"] = "cycleway"
3445            if mtfcc == "S1830":        #Bridle Path
3446                tags["highway"] = "bridleway"
3447            tags["tiger:mtfcc"] = mtfcc
3448
3449        # FEATURE NAME
3450        if poFeature.GetField("FULLNAME"):
3451            #capitalizes the first letter of each word
3452            name = poFeature.GetField( "FULLNAME" )
3453            tags["name"] = name
3454
3455            #Attempt to guess highway grade
3456            if name[0:2] == "I-":
3457                tags["highway"] = "motorway"
3458            if name[0:3] == "US ":
3459                tags["highway"] = "primary"
3460            if name[0:3] == "US-":
3461                tags["highway"] = "primary"
3462            if name[0:3] == "Hwy":
3463                if tags["highway"] != "primary":
3464                    tags["highway"] = "secondary"
3465
3466        divroad = poFeature.GetField("DIVROAD")
3467        if divroad != None:
3468            if divroad == "Y" and "highway" in tags and tags["highway"] == "residential":
3469                tags["highway"] = "tertiary"
3470            tags["tiger:separated"] = divroad
3471
3472        statefp = poFeature.GetField("STATEFP")
3473        countyfp = poFeature.GetField("COUNTYFP")
3474        if (statefp != None) and (countyfp != None):
3475           tags.update( fipsstate(statefp, countyfp) )
3476
3477        tlid = poFeature.GetField("TLID")
3478        if tlid != None:
3479            tags["tiger:tlid"] = tlid
3480
3481        lfromadd = poFeature.GetField("LFROMADD")
3482        if lfromadd != None:
3483            tags["tiger:lfromadd"] = lfromadd
3484
3485        rfromadd = poFeature.GetField("RFROMADD")
3486        if rfromadd != None:
3487            tags["tiger:rfromadd"] = rfromadd
3488
3489        ltoadd = poFeature.GetField("LTOADD")
3490        if ltoadd != None:
3491            tags["tiger:ltoadd"] = ltoadd
3492
3493        rtoadd = poFeature.GetField("RTOADD")
3494        if rtoadd != None:
3495            tags["tiger:rtoadd"] = rtoadd
3496
3497        zipl = poFeature.GetField("ZIPL")
3498        if zipl != None:
3499            tags["tiger:zip_left"] = zipl
3500
3501        zipr = poFeature.GetField("ZIPR")
3502        if zipr != None:
3503            tags["tiger:zip_right"] = zipr
3504
3505        if mtfcc not in ignoremtfcc:
3506            # COPY DOWN THE GEOMETRY
3507            geom = []
3508           
3509            rawgeom = poFeature.GetGeometryRef()
3510            for i in range( rawgeom.GetPointCount() ):
3511                geom.append( (rawgeom.GetX(i), rawgeom.GetY(i)) )
3512   
3513            ret.append( (geom, tags) )
3514        poFeature = poLayer.GetNextFeature()
3515       
3516    return ret
3517
3518
3519# ====================================
3520# to do read .prj file for this data
3521# Change the Projcs_wkt to match your datas prj file.
3522# ====================================
3523projcs_wkt = \
3524"""GEOGCS["GCS_North_American_1983",
3525        DATUM["D_North_American_1983",
3526        SPHEROID["GRS_1980",6378137,298.257222101]],
3527        PRIMEM["Greenwich",0],
3528        UNIT["Degree",0.017453292519943295]]"""
3529
3530from_proj = osr.SpatialReference()
3531from_proj.ImportFromWkt( projcs_wkt )
3532
3533# output to WGS84
3534to_proj = osr.SpatialReference()
3535to_proj.SetWellKnownGeogCS( "EPSG:4326" )
3536
3537tr = osr.CoordinateTransformation( from_proj, to_proj )
3538
3539import math
3540def length(segment, nodelist):
3541    '''Returns the length (in feet) of a segment'''
3542    first = True
3543    distance = 0
3544    lat_feet = 364613  #The approximate number of feet in one degree of latitude
3545    for point in segment:
3546        pointid, (lat, lon) = nodelist[ round_point( point ) ]
3547        if first:
3548            first = False
3549        else:
3550            #The approximate number of feet in one degree of longitute
3551            lrad = math.radians(lat)
3552            lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad)
3553            distance += math.sqrt(((lat - previous[0])*lat_feet)**2 + ((lon - previous[1])*lon_feet)**2)
3554        previous = (lat, lon)
3555    return distance
3556
3557def addressways(waylist, nodelist, first_id):
3558    id = first_id
3559    awaylist = {}
3560    lat_feet = 364613  #The approximate number of feet in one degree of latitude
3561    distance = float(address_distance)
3562    ret = []
3563
3564    for waykey, segments in waylist.iteritems():
3565        waykey = dict(waykey)
3566        rsegments = []
3567        lsegments = []
3568        for segment in segments:
3569            lsegment = []
3570            rsegment = []
3571            lastpoint = None
3572
3573            #Don't pull back the ends of very short ways too much
3574            seglength = length(segment, nodelist)
3575            if seglength < float(address_pullback) * 3.0:
3576                pullback = seglength / 3.0
3577            else:
3578                pullback = float(address_pullback)
3579            if "tiger:lfromadd" in waykey:
3580                lfromadd = waykey["tiger:lfromadd"]
3581            else:
3582                lfromadd = None
3583            if "tiger:ltoadd" in waykey:
3584                ltoadd = waykey["tiger:ltoadd"]
3585            else:
3586                ltoadd = None
3587            if "tiger:rfromadd" in waykey:
3588                rfromadd = waykey["tiger:rfromadd"]
3589            else: 
3590                rfromadd = None
3591            if "tiger:rtoadd" in waykey:
3592                rtoadd = waykey["tiger:rtoadd"]
3593            else:
3594                rtoadd = None
3595            if rfromadd != None and rtoadd != None:
3596                right = True
3597            else:
3598                right = False
3599            if lfromadd != None and ltoadd != None:
3600                left = True
3601            else:
3602                left = False
3603            if left or right:
3604                first = True
3605                firstpointid, firstpoint = nodelist[ round_point( segment[0] ) ]
3606
3607                finalpointid, finalpoint = nodelist[ round_point( segment[len(segment) - 1] ) ]
3608                for point in segment:
3609                    pointid, (lat, lon) = nodelist[ round_point( point ) ]
3610
3611                    #The approximate number of feet in one degree of longitute
3612                    lrad = math.radians(lat)
3613                    lon_feet = 365527.822 * math.cos(lrad) - 306.75853 * math.cos(3 * lrad) + 0.3937 * math.cos(5 * lrad)
3614
3615#Calculate the points of the offset ways
3616                    if lastpoint != None:
3617                        #Skip points too close to start
3618                        if math.sqrt((lat * lat_feet - firstpoint[0] * lat_feet)**2 + (lon * lon_feet - firstpoint[1] * lon_feet)**2) < pullback:
3619                            #Preserve very short ways (but will be rendered backwards)
3620                            if pointid != finalpointid:
3621                                continue
3622                        #Skip points too close to end
3623                        if math.sqrt((lat * lat_feet - finalpoint[0] * lat_feet)**2 + (lon * lon_feet - finalpoint[1] * lon_feet)**2) < pullback:
3624                            #Preserve very short ways (but will be rendered backwards)
3625                            if (pointid != firstpointid) and (pointid != finalpointid):
3626                                continue
3627
3628                        X = (lon - lastpoint[1]) * lon_feet
3629                        Y = (lat - lastpoint[0]) * lat_feet
3630                        if Y != 0:
3631                            theta = math.pi/2 - math.atan( X / Y)
3632                            Xp = math.sin(theta) * distance
3633                            Yp = math.cos(theta) * distance
3634                        else:
3635                            Xp = 0
3636                            if X > 0:
3637                                Yp = -distance
3638                            else:
3639                                Yp = distance
3640
3641                        if Y > 0:
3642                            Xp = -Xp
3643                        else:
3644                            Yp = -Yp
3645                               
3646                        if first:
3647                            first = False
3648                            dX =  - (Yp * (pullback / distance)) / lon_feet #Pull back the first point
3649                            dY = (Xp * (pullback / distance)) / lat_feet
3650                            if left:
3651                                lpoint = (lastpoint[0] + (Yp / lat_feet) - dY, lastpoint[1] + (Xp / lon_feet) - dX)
3652                                lsegment.append( (id, lpoint) )
3653                                id += 1
3654                            if right:
3655                                rpoint = (lastpoint[0] - (Yp / lat_feet) - dY, lastpoint[1] - (Xp / lon_feet) - dX)
3656                                rsegment.append( (id, rpoint) )
3657                                id += 1
3658
3659                        else:
3660                            #round the curves
3661                            if delta[1] != 0:
3662                                theta = abs(math.atan(delta[0] / delta[1]))
3663                            else:
3664                                theta = math.pi / 2
3665                            if Xp != 0:
3666                                theta = theta - abs(math.atan(Yp / Xp))
3667                            else: theta = theta - math.pi / 2
3668                            r = 1 + abs(math.tan(theta/2))
3669                            if left:
3670                                lpoint = (lastpoint[0] + (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] + (Xp + delta[1]) * r / (lon_feet * 2))
3671                                lsegment.append( (id, lpoint) )
3672                                id += 1
3673                            if right:
3674                                rpoint = (lastpoint[0] - (Yp + delta[0]) * r / (lat_feet * 2), lastpoint[1] - (Xp + delta[1]) * r / (lon_feet * 2))
3675                               
3676                                rsegment.append( (id, rpoint) )
3677                                id += 1
3678
3679                        delta = (Yp, Xp)
3680
3681                    lastpoint = (lat, lon)
3682
3683
3684#Add in the last node
3685                dX =  - (Yp * (pullback / distance)) / lon_feet
3686                dY = (Xp * (pullback / distance)) / lat_feet
3687                if left:
3688                    lpoint = (lastpoint[0] + (Yp + delta[0]) / (lat_feet * 2) + dY, lastpoint[1] + (Xp + delta[1]) / (lon_feet * 2) + dX )
3689                    lsegment.append( (id, lpoint) )
3690                    id += 1
3691                if right:
3692                    rpoint = (lastpoint[0] - Yp / lat_feet + dY, lastpoint[1] - Xp / lon_feet + dX)
3693                    rsegment.append( (id, rpoint) )
3694                    id += 1
3695
3696#Generate the tags for ways and nodes
3697                rtags = []
3698                ltags = []
3699                tags = []
3700                zipr = ''
3701                zipl = ''
3702                name = ''
3703                county = ''
3704                if "tiger:zip_right" in waykey:
3705                    zipr = waykey["tiger:zip_right"]
3706                    rtags.append( "<tag k=\"addr:postcode\" v=\"%s\" />" % zipr )
3707                if "tiger:zip_left" in waykey:
3708                    zipl = waykey["tiger:zip_left"]
3709                    ltags.append( "<tag k=\"addr:postcode\" v=\"%s\" />" % zipl )
3710                if "name" in waykey:
3711                    name = waykey["name"]
3712                    tags.append( "<tag k=\"addr:street\" v=\"%s\" />" % name )
3713                if "is_in:state" in waykey:
3714                    state = waykey["is_in:state"]
3715                    tags.append( "<tag k=\"addr:state\" v=\"%s\" />" % state )
3716                if "tiger:county" in waykey:
3717                    county = waykey["tiger:county"]
3718                    tags.append( "<tag k=\"addr:county\" v=\"%s\" />" % county )
3719                if "is_in:country_code" in waykey:
3720                    country = waykey["is_in:country_code"]
3721                    tags.append( "<tag k=\"addr:country\" v=\"%s\" />" % country )
3722                if "tiger:separated" in waykey:
3723                    separated = waykey["tiger:separated"]
3724                else:
3725                    separated = "N"
3726                ltags.extend(tags)
3727                rtags.extend(tags)
3728
3729#Write the nodes of the offset ways
3730                if right:
3731                    rlinestring = [];
3732                    for i, point in rsegment:
3733                        rlinestring.append( "%f %f" % (point[1], point[0]) )
3734                if left:
3735                    llinestring = [];
3736                    for i, point in lsegment:
3737                        llinestring.append( "%f %f" % (point[1], point[0]) )
3738                if right:
3739                    rsegments.append( rsegment )
3740                if left:
3741                    lsegments.append( lsegment )
3742                rtofromint = right      #Do the addresses convert to integers?
3743                ltofromint = left       #Do the addresses convert to integers?
3744                if right:
3745                    try: rfromint = int(rfromadd)
3746                    except:
3747                        print("Non integer address: %s" % rfromadd)
3748                        rtofromint = False
3749                    try: rtoint = int(rtoadd)
3750                    except:
3751                        print("Non integer address: %s" % rtoadd)
3752                        rtofromint = False
3753                if left:
3754                    try: lfromint = int(lfromadd)
3755                    except:
3756                        print("Non integer address: %s" % lfromadd)
3757                        ltofromint = False
3758                    try: ltoint = int(ltoadd)
3759                    except:
3760                        print("Non integer address: %s" % ltoadd)
3761                        ltofromint = False
3762                import_guid = time.strftime( '%Y%m%d%H%M%S' )
3763                if right:
3764                    id += 1
3765
3766                    interpolationtype = "";
3767                    if rtofromint:
3768                        if (rfromint % 2) == 0 and (rtoint % 2) == 0:
3769                            if separated == "Y":        #Doesn't matter if there is another side
3770        #                        ret.append( "<tag k=\"addr:interpolation\" v=\"even\" />" )
3771                                interpolationtype = "even";
3772                            elif ltofromint and (lfromint % 2) == 1 and (ltoint % 2) == 1:
3773                                interpolationtype = "even";
3774       #                         ret.append( "<tag k=\"addr:interpolation\" v=\"even\" />" )
3775                            else:
3776                                interpolationtype = "all";
3777      #                          ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3778                        elif (rfromint % 2) == 1 and (rtoint % 2) == 1:
3779                            if separated == "Y":        #Doesn't matter if there is another side
3780                                interpolationtype = "odd";
3781     #                           ret.append( "<tag k=\"addr:interpolation\" v=\"odd\" />" )
3782                            elif ltofromint and (lfromint % 2) == 0 and (ltoint % 2) == 0:
3783                                interpolationtype = "odd";
3784    #                            ret.append( "<tag k=\"addr:interpolation\" v=\"odd\" />" )
3785                            else:
3786                                interpolationtype = "all";
3787   #                             ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3788                        else:
3789                            interpolationtype = "all";
3790  #                          ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3791                    else:
3792                        interpolationtype = "all";
3793 #                       ret.append( "<tag k=\"addr:interpolation\" v=\"all\" />" )
3794#                   ret.extend(rtags)
3795  #                  ret.append( "<tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
3796 #                   ret.append( "<tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
3797#                    ret.append( "</way>" )
3798
3799                    ret.append( "select tigger_create_interpolation(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" %
3800                                ( ",".join(rlinestring), rfromadd.replace("'", "''"), rtoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipr.replace("'", "''") ) )
3801
3802                if left:
3803                    id += 1
3804                    if ltofromint:
3805                        if (lfromint % 2) == 0 and (ltoint % 2) == 0:
3806                            if separated == "Y":
3807                                interpolationtype = "even";
3808                            elif rtofromint and (rfromint % 2) == 1 and (rtoint % 2) == 1:
3809                                interpolationtype = "even";
3810                            else:
3811                                interpolationtype = "all";
3812
3813                        elif (lfromint % 2) == 1 and (ltoint % 2) == 1:
3814                            if separated == "Y":
3815                                interpolationtype = "odd";
3816                            elif rtofromint and (rfromint %2 ) == 0 and (rtoint % 2) == 0:
3817                                interpolationtype = "odd";
3818                            else:
3819                                interpolationtype = "all";
3820                        else:
3821                            interpolationtype = "all";
3822                    else:
3823                        interpolationtype = "all";
3824                    ret.append( "select tigger_create_interpolation(ST_GeomFromText('LINESTRING(%s)',4326), '%s', '%s', '%s', '%s', '%s', '%s');" %
3825                                ( ",".join(llinestring), lfromadd.replace("'", "''"), ltoadd.replace("'", "''"), interpolationtype.replace("'", "''"), name.replace("'", "''"), county.replace("'", "''"), zipl.replace("'", "''") ) )
3826
3827    return ret
3828
3829def unproject( point ):
3830    pt = tr.TransformPoint( point[0], point[1] )
3831    return (pt[1], pt[0])
3832
3833def round_point( point, accuracy=8 ):
3834    return tuple( [ round(x,accuracy) for x in point ] )
3835
3836def compile_nodelist( parsed_gisdata, first_id=1 ):
3837    nodelist = {}
3838   
3839    i = first_id
3840    for geom, tags in parsed_gisdata:
3841        if len( geom )==0:
3842            continue
3843       
3844        for point in geom:
3845            r_point = round_point( point )
3846            if r_point not in nodelist:
3847                nodelist[ r_point ] = (i, unproject( point ))
3848                i += 1
3849           
3850    return (i, nodelist)
3851
3852def adjacent( left, right ):
3853    left_left = round_point(left[0])
3854    left_right = round_point(left[-1])
3855    right_left = round_point(right[0])
3856    right_right = round_point(right[-1])
3857   
3858    return ( left_left == right_left or
3859             left_left == right_right or
3860             left_right == right_left or
3861             left_right == right_right )
3862             
3863def glom( left, right ):
3864   
3865    left = list( left )
3866    right = list( right )
3867   
3868    left_left = round_point(left[0])
3869    left_right = round_point(left[-1])
3870    right_left = round_point(right[0])
3871    right_right = round_point(right[-1])
3872   
3873    if left_left == right_left:
3874        left.reverse()
3875        return left[0:-1] + right
3876       
3877    if left_left == right_right:
3878        return right[0:-1] + left
3879       
3880    if left_right == right_left:
3881        return left[0:-1] + right
3882       
3883    if left_right == right_right:
3884        right.reverse()
3885        return left[0:-1] + right
3886       
3887    raise 'segments are not adjacent'
3888
3889def glom_once( segments ):
3890    if len(segments)==0:
3891        return segments
3892   
3893    unsorted = list( segments )
3894    x = unsorted.pop(0)
3895   
3896    while len( unsorted ) > 0:
3897        n = len( unsorted )
3898       
3899        for i in range(0, n):
3900            y = unsorted[i]
3901            if adjacent( x, y ):
3902                y = unsorted.pop(i)
3903                x = glom( x, y )
3904                break
3905               
3906        # Sorted and unsorted lists have no adjacent segments
3907        if len( unsorted ) == n:
3908            break
3909           
3910    return x, unsorted
3911   
3912def glom_all( segments ):
3913    unsorted = segments
3914    chunks = []
3915   
3916    while unsorted != []:
3917        chunk, unsorted = glom_once( unsorted )
3918        chunks.append( chunk )
3919       
3920    return chunks
3921       
3922               
3923
3924def compile_waylist( parsed_gisdata, blank_way_id ):
3925    waylist = {}
3926   
3927    #Group by iSource:way_id
3928    for geom, tags in parsed_gisdata:
3929        way_key = tags.copy()
3930        way_key = ( way_key[iSource + ':way_id'], tuple( [(k,v) for k,v in way_key.iteritems()] ) )
3931       
3932        if way_key not in waylist:
3933            waylist[way_key] = []
3934           
3935        waylist[way_key].append( geom )
3936   
3937    ret = {}
3938    for (way_id, way_key), segments in waylist.iteritems():
3939       
3940        if way_id != blank_way_id:
3941            ret[way_key] = glom_all( segments )
3942        else:
3943            ret[way_key] = segments
3944       
3945    return ret
3946           
3947
3948import time
3949from xml.sax.saxutils import escape
3950def shape_to_osm( shp_filename, base_filename, blank_way_id ):
3951   
3952    import_guid = time.strftime( '%Y%m%d%H%M%S' )
3953
3954    print "parsing shpfile"
3955    parsed_features = parse_shp_for_osm( shp_filename )
3956   
3957    print "compiling nodelist"
3958    i, nodelist = compile_nodelist( parsed_features )
3959   
3960    print "compiling waylist"
3961    waylist = compile_waylist( parsed_features, blank_way_id )
3962
3963    filenumber = 1
3964    objectcount = 0
3965    seen = {}
3966
3967    print "preparing address ways"
3968    ret = addressways(waylist, nodelist, i)
3969    osm_filename = "%s%d.osm" % (base_filename, filenumber)
3970    print "writing %s" %osm_filename
3971    fp = open( osm_filename, "w" )
3972    fp.write( "\n".join( ret ) )
3973    fp.close()
3974    filenumber += 1
3975
3976   
3977    print "constructing osm xml file"
3978    ret = []
3979    ret.append( "<?xml version='1.0' encoding='UTF-8'?>" )
3980    ret.append( "<osm version='0.6' generator='shape_to_osm.py'>" )
3981   
3982    for waykey, segments in waylist.iteritems():
3983        for segment in segments:
3984            #write the nodes
3985            for point in segment:
3986                id, (lat, lon) = nodelist[ round_point( point ) ]
3987                if id not in seen:
3988                    seen[id] = True
3989                    #write node
3990                    ret.append( "  <node id='-%d' action='create' visible='true' lat='%f' lon='%f' >" % (id, lat, lon) )
3991                    ret.append( "  </node>" )
3992                    objectcount += 1
3993                else:
3994                    pass
3995                    #print "Skipping node %d" %id
3996
3997            #write the way
3998            ret.append( "  <way id='-%d' action='create' visible='true'>" % i )
3999           
4000            ids = [ nodelist[ round_point( point ) ][0] for point in segment ]
4001
4002            count = 0
4003            for id in ids:
4004                count += 1
4005                ret.append( "    <nd ref='-%d' />" % id )
4006                if (count % Max_Waylength == 0) and (count != len(ids)):        #Split the way
4007                    for k, v in waykey:
4008                        ret.append( "    <tag k=\"%s\" v=\"%s\" />" % (k, escape(str(v))) )
4009                    ret.append( "    <tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
4010                    ret.append( "    <tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
4011               
4012                    ret.append( "  </way>" )
4013                    objectcount += 1
4014                    i += 1
4015                    ret.append( "  <way id='-%d' action='create' visible='true'>" % i )
4016                    ret.append( "    <nd ref='-%d' />" % id )
4017               
4018            for k, v in waykey:
4019                ret.append( "    <tag k=\"%s\" v=\"%s\" />" % (k, escape(str(v))) )
4020            ret.append( "    <tag k=\"source\" v=\"%s_import_v%s_%s\" />" % (iSource, VERSION, import_guid) )
4021            ret.append( "    <tag k=\"attribution\" v=\"%s\" />" % (iAttrib) )
4022               
4023            ret.append( "  </way>" )
4024            objectcount += 1
4025           
4026            i += 1
4027
4028            if objectcount > maxNodes:  #Write a file
4029                ret.append( "</osm>" )
4030                osm_filename = "%s%d.osm" % (base_filename, filenumber)
4031                print "writing %s" %osm_filename
4032                fp = open( osm_filename, "w" )
4033                fp.write( "\n".join( ret ) )
4034                fp.close()
4035
4036                objectcount = 0
4037                filenumber += 1
4038                seen = {}
4039                ret = []
4040                ret.append( "<?xml version='1.0' encoding='UTF-8'?>" )
4041                ret.append( "<osm version='0.6' generator='shape_to_osm.py'>" )
4042       
4043    ret.append( "</osm>" )
4044   
4045    osm_filename = "%s%d.osm" % (base_filename, filenumber)
4046    print "writing %s" %osm_filename
4047    fp = open( osm_filename, "w" )
4048    fp.write( "\n".join( ret ) )
4049    fp.close()
4050   
4051if __name__ == '__main__':
4052    import sys, os.path
4053    if len(sys.argv) < 2:
4054        print "%s filename.shp [filename.osm]" % sys.argv[0]
4055        sys.exit()
4056    shape = sys.argv[1]
4057    if len(sys.argv) > 2:
4058        osm = sys.argv[2]
4059    else:
4060        osm = shape[0:-4] + ".osm" 
4061    id = "1.shp"
4062        # 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,
4063        #id = os.path.basename(shape).split("_")[-1]
4064    shape_to_osm( shape, osm, id )
Note: See TracBrowser for help on using the repository browser.