├── 01-base ├── css │ ├── style.css │ └── lib │ │ └── leaflet-0.75.css ├── js │ ├── script.js │ └── lib │ │ ├── images │ │ ├── layers.png │ │ ├── zoom-in.png │ │ ├── zoom-out.png │ │ ├── layers-2x.png │ │ ├── marker-icon.png │ │ ├── marker-icon2x.png │ │ ├── marker-shadow.png │ │ └── marker-icon-2x.png │ │ └── tile.stamen-1.3.0.js ├── index.html ├── csv │ ├── population.csv │ └── ia-breweries.csv └── json │ ├── ia-breweries.json │ └── ia-counties.geojson ├── 02-final ├── css │ ├── style.css │ └── lib │ │ └── leaflet-0.75.css ├── js │ ├── lib │ │ ├── images │ │ │ ├── layers.png │ │ │ ├── zoom-in.png │ │ │ ├── layers-2x.png │ │ │ ├── zoom-out.png │ │ │ ├── marker-icon.png │ │ │ ├── marker-icon-2x.png │ │ │ ├── marker-icon2x.png │ │ │ └── marker-shadow.png │ │ └── tile.stamen-1.3.0.js │ └── script.js ├── index.html ├── csv │ ├── population.csv │ └── ia-breweries.csv └── json │ └── ia-breweries.json ├── imgs ├── 01.png ├── 02.png ├── 03.png ├── 04.png ├── 05.png └── 06.png ├── about.md └── readme.md /01-base/css/style.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01-base/js/script.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02-final/css/style.css: -------------------------------------------------------------------------------- 1 | #map { 2 | width: 100%; 3 | height: 500px; 4 | } -------------------------------------------------------------------------------- /imgs/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/01.png -------------------------------------------------------------------------------- /imgs/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/02.png -------------------------------------------------------------------------------- /imgs/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/03.png -------------------------------------------------------------------------------- /imgs/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/04.png -------------------------------------------------------------------------------- /imgs/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/05.png -------------------------------------------------------------------------------- /imgs/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/imgs/06.png -------------------------------------------------------------------------------- /01-base/js/lib/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/layers.png -------------------------------------------------------------------------------- /01-base/js/lib/images/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/zoom-in.png -------------------------------------------------------------------------------- /01-base/js/lib/images/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/zoom-out.png -------------------------------------------------------------------------------- /02-final/js/lib/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/layers.png -------------------------------------------------------------------------------- /02-final/js/lib/images/zoom-in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/zoom-in.png -------------------------------------------------------------------------------- /01-base/js/lib/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/layers-2x.png -------------------------------------------------------------------------------- /01-base/js/lib/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/marker-icon.png -------------------------------------------------------------------------------- /02-final/js/lib/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/layers-2x.png -------------------------------------------------------------------------------- /02-final/js/lib/images/zoom-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/zoom-out.png -------------------------------------------------------------------------------- /01-base/js/lib/images/marker-icon2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/marker-icon2x.png -------------------------------------------------------------------------------- /01-base/js/lib/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/marker-shadow.png -------------------------------------------------------------------------------- /02-final/js/lib/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/marker-icon.png -------------------------------------------------------------------------------- /01-base/js/lib/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/01-base/js/lib/images/marker-icon-2x.png -------------------------------------------------------------------------------- /02-final/js/lib/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/marker-icon-2x.png -------------------------------------------------------------------------------- /02-final/js/lib/images/marker-icon2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/marker-icon2x.png -------------------------------------------------------------------------------- /02-final/js/lib/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/HEAD/02-final/js/lib/images/marker-shadow.png -------------------------------------------------------------------------------- /about.md: -------------------------------------------------------------------------------- 1 | #Building maps with Leaflet.js 2 | * NICAR 2016 3 | * Friday, March 11 at 11:30 a.m. 4 | * [More information](http://www.ire.org/events-and-training/event/2198/2256/) 5 | 6 | ###Course description 7 | 8 | * Maps! Who doesn't love wonderful, colorful maps? In this course we will be building a map with Leaflet.js., a very popular Javascript mapping library. The map will display both markers and shapes. The shapes will be used to create a basic choropleth map. 9 | 10 | * I suggest participants have a beginner's knowledge of Javascript. It would be helpful if you are familiar with basic Javascript concepts like objects, arrays and for loops. We will also be working with JSON and GeoJSON data. Some knowledge of these would be also helpful. 11 | 12 | ###About the author 13 | * Chris Essig is a web developer at The Gazette in Cedar Rapids, Iowa. 14 | * [@CEssig](https://twitter.com/cessig) 15 | * csessig86@gmail.com -------------------------------------------------------------------------------- /01-base/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Intro to Leaflet 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /02-final/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Intro to Leaflet 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /02-final/js/script.js: -------------------------------------------------------------------------------- 1 | // Call Stamen tiles 2 | var layer = new L.StamenTileLayer('toner-background'); 3 | 4 | // Initialize our map 5 | // The first setview parameter is the lat, long 6 | // Of the initial zoom 7 | // The second parameter is the zoom level 8 | var map = new L.Map('map').setView([42,-93],7); 9 | map.addLayer(layer); 10 | 11 | // Set the color of the individual county 12 | // All colors are shades of green 13 | // The more population, the darker the county will appear on the map 14 | function setColor(population) { 15 | var population_num = parseInt(population) 16 | 17 | if (population_num > 150000) { 18 | return '#005824'; 19 | } else if (population_num > 125000) { 20 | return '#238b45'; 21 | } else if (population_num > 100000) { 22 | return '#41ae76'; 23 | } else if (population_num > 75000) { 24 | return '#66c2a4'; 25 | } else if (population_num > 50000) { 26 | return '#99d8c9'; 27 | } else if (population_num > 25000) { 28 | return '#ccece6'; 29 | } else { 30 | return '#edf8fb'; 31 | } 32 | } 33 | 34 | // Styles for each county on the map 35 | // With this, we grab each county's population 36 | // And send it to the setColor function above 37 | function setStyle(feature) { 38 | return { 39 | opacity: 1, 40 | weight: 2, 41 | color: "#FFF", 42 | fillColor: setColor(feature.properties.population), 43 | fillOpacity: 0.8 44 | } 45 | } 46 | 47 | // Call the GeoJSON file ia-counties 48 | // Which is in a variable called iowa_counties 49 | // And add to the map 50 | L.geoJson(iowa_counties, { 51 | style: setStyle 52 | }).addTo(map); 53 | 54 | // Loop through each brewery in our breweries variable 55 | // Each brewery is an object 56 | // Inside breweries, which is an array 57 | for (var num = 0; num < breweries.length; num++) { 58 | // Grab information on the brewery we are currently looping through 59 | var brewery = breweries[num]; 60 | var brewery_lat = brewery["latitude"]; 61 | var brewery_long = brewery["longitude"]; 62 | var brewery_name = brewery["brewery"]; 63 | var brewery_address = brewery["address"]; 64 | var brewery_city = brewery["city"]; 65 | 66 | // Use Leaflet to add a marker for each brewery 67 | // And give it the lat, long information 68 | // In the current brewery's object 69 | var marker = L.marker([brewery_lat, brewery_long]).addTo(map); 70 | 71 | // HTML that will appear in popup 72 | var popup_html = '

' + brewery_name + '

'; 73 | popup_html += '
' + brewery_address + '
'; 74 | popup_html += '
' + brewery_city + '
' 75 | 76 | // Bind the popup to the marker using Leaflet 77 | marker.bindPopup(popup_html); 78 | } -------------------------------------------------------------------------------- /01-base/csv/population.csv: -------------------------------------------------------------------------------- 1 | geoid,name,population 05000US19001,"Adair County, IA",7543 05000US19003,"Adams County, IA",3937 05000US19005,"Allamakee County, IA",14152 05000US19007,"Appanoose County, IA",12754 05000US19009,"Audubon County, IA",5935 05000US19011,"Benton County, IA",25895 05000US19013,"Black Hawk County, IA",131947 05000US19015,"Boone County, IA",26326 05000US19017,"Bremer County, IA",24481 05000US19019,"Buchanan County, IA",20947 05000US19021,"Buena Vista County, IA",20460 05000US19023,"Butler County, IA",14966 05000US19025,"Calhoun County, IA",9980 05000US19027,"Carroll County, IA",20702 05000US19029,"Cass County, IA",13694 05000US19031,"Cedar County, IA",18434 05000US19033,"Cerro Gordo County, IA",43707 05000US19035,"Cherokee County, IA",11982 05000US19037,"Chickasaw County, IA",12329 05000US19039,"Clarke County, IA",9284 05000US19041,"Clay County, IA",16555 05000US19043,"Clayton County, IA",17900 05000US19045,"Clinton County, IA",48663 05000US19047,"Crawford County, IA",17259 05000US19049,"Dallas County, IA",72124 05000US19051,"Davis County, IA",8765 05000US19053,"Decatur County, IA",8286 05000US19055,"Delaware County, IA",17578 05000US19057,"Des Moines County, IA",40265 05000US19059,"Dickinson County, IA",16877 05000US19061,"Dubuque County, IA",95166 05000US19063,"Emmet County, IA",10068 05000US19065,"Fayette County, IA",20693 05000US19067,"Floyd County, IA",16153 05000US19069,"Franklin County, IA",10572 05000US19071,"Fremont County, IA",7200 05000US19073,"Greene County, IA",9232 05000US19075,"Grundy County, IA",12403 05000US19077,"Guthrie County, IA",10794 05000US19079,"Hamilton County, IA",15363 05000US19081,"Hancock County, IA",11175 05000US19083,"Hardin County, IA",17406 05000US19085,"Harrison County, IA",14600 05000US19087,"Henry County, IA",20197 05000US19089,"Howard County, IA",9529 05000US19091,"Humboldt County, IA",9731 05000US19093,"Ida County, IA",7085 05000US19095,"Iowa County, IA",16316 05000US19097,"Jackson County, IA",19656 05000US19099,"Jasper County, IA",36715 05000US19101,"Jefferson County, IA",17102 05000US19103,"Johnson County, IA",136802 05000US19105,"Jones County, IA",20607 05000US19107,"Keokuk County, IA",10361 05000US19109,"Kossuth County, IA",15347 05000US19111,"Lee County, IA",35552 05000US19113,"Linn County, IA",214927 05000US19115,"Louisa County, IA",11305 05000US19117,"Lucas County, IA",8785 05000US19119,"Lyon County, IA",11680 05000US19121,"Madison County, IA",15629 05000US19123,"Mahaska County, IA",22420 05000US19125,"Marion County, IA",33308 05000US19127,"Marshall County, IA",40922 05000US19129,"Mills County, IA",14946 05000US19131,"Mitchell County, IA",10744 05000US19133,"Monona County, IA",9149 05000US19135,"Monroe County, IA",8019 05000US19137,"Montgomery County, IA",10549 05000US19139,"Muscatine County, IA",42857 05000US19141,"O'Brien County, IA",14173 05000US19143,"Osceola County, IA",6279 05000US19145,"Page County, IA",15737 05000US19147,"Palo Alto County, IA",9263 05000US19149,"Plymouth County, IA",24899 05000US19151,"Pocahontas County, IA",7191 05000US19153,"Polk County, IA",445136 05000US19155,"Pottawattamie County, IA",93153 05000US19157,"Poweshiek County, IA",18765 05000US19159,"Ringgold County, IA",5082 05000US19161,"Sac County, IA",10162 05000US19163,"Scott County, IA",168714 05000US19165,"Shelby County, IA",12034 05000US19167,"Sioux County, IA",34261 05000US19169,"Story County, IA",91939 05000US19171,"Tama County, IA",17568 05000US19173,"Taylor County, IA",6225 05000US19175,"Union County, IA",12554 05000US19177,"Van Buren County, IA",7487 05000US19179,"Wapello County, IA",35406 05000US19181,"Warren County, IA",47058 05000US19183,"Washington County, IA",21906 05000US19185,"Wayne County, IA",6385 05000US19187,"Webster County, IA",37399 05000US19189,"Winnebago County, IA",10645 05000US19191,"Winneshiek County, IA",20957 05000US19193,"Woodbury County, IA",102372 05000US19195,"Worth County, IA",7567 05000US19197,"Wright County, IA",13007 -------------------------------------------------------------------------------- /02-final/csv/population.csv: -------------------------------------------------------------------------------- 1 | geoid,name,population 05000US19001,"Adair County, IA",7543 05000US19003,"Adams County, IA",3937 05000US19005,"Allamakee County, IA",14152 05000US19007,"Appanoose County, IA",12754 05000US19009,"Audubon County, IA",5935 05000US19011,"Benton County, IA",25895 05000US19013,"Black Hawk County, IA",131947 05000US19015,"Boone County, IA",26326 05000US19017,"Bremer County, IA",24481 05000US19019,"Buchanan County, IA",20947 05000US19021,"Buena Vista County, IA",20460 05000US19023,"Butler County, IA",14966 05000US19025,"Calhoun County, IA",9980 05000US19027,"Carroll County, IA",20702 05000US19029,"Cass County, IA",13694 05000US19031,"Cedar County, IA",18434 05000US19033,"Cerro Gordo County, IA",43707 05000US19035,"Cherokee County, IA",11982 05000US19037,"Chickasaw County, IA",12329 05000US19039,"Clarke County, IA",9284 05000US19041,"Clay County, IA",16555 05000US19043,"Clayton County, IA",17900 05000US19045,"Clinton County, IA",48663 05000US19047,"Crawford County, IA",17259 05000US19049,"Dallas County, IA",72124 05000US19051,"Davis County, IA",8765 05000US19053,"Decatur County, IA",8286 05000US19055,"Delaware County, IA",17578 05000US19057,"Des Moines County, IA",40265 05000US19059,"Dickinson County, IA",16877 05000US19061,"Dubuque County, IA",95166 05000US19063,"Emmet County, IA",10068 05000US19065,"Fayette County, IA",20693 05000US19067,"Floyd County, IA",16153 05000US19069,"Franklin County, IA",10572 05000US19071,"Fremont County, IA",7200 05000US19073,"Greene County, IA",9232 05000US19075,"Grundy County, IA",12403 05000US19077,"Guthrie County, IA",10794 05000US19079,"Hamilton County, IA",15363 05000US19081,"Hancock County, IA",11175 05000US19083,"Hardin County, IA",17406 05000US19085,"Harrison County, IA",14600 05000US19087,"Henry County, IA",20197 05000US19089,"Howard County, IA",9529 05000US19091,"Humboldt County, IA",9731 05000US19093,"Ida County, IA",7085 05000US19095,"Iowa County, IA",16316 05000US19097,"Jackson County, IA",19656 05000US19099,"Jasper County, IA",36715 05000US19101,"Jefferson County, IA",17102 05000US19103,"Johnson County, IA",136802 05000US19105,"Jones County, IA",20607 05000US19107,"Keokuk County, IA",10361 05000US19109,"Kossuth County, IA",15347 05000US19111,"Lee County, IA",35552 05000US19113,"Linn County, IA",214927 05000US19115,"Louisa County, IA",11305 05000US19117,"Lucas County, IA",8785 05000US19119,"Lyon County, IA",11680 05000US19121,"Madison County, IA",15629 05000US19123,"Mahaska County, IA",22420 05000US19125,"Marion County, IA",33308 05000US19127,"Marshall County, IA",40922 05000US19129,"Mills County, IA",14946 05000US19131,"Mitchell County, IA",10744 05000US19133,"Monona County, IA",9149 05000US19135,"Monroe County, IA",8019 05000US19137,"Montgomery County, IA",10549 05000US19139,"Muscatine County, IA",42857 05000US19141,"O'Brien County, IA",14173 05000US19143,"Osceola County, IA",6279 05000US19145,"Page County, IA",15737 05000US19147,"Palo Alto County, IA",9263 05000US19149,"Plymouth County, IA",24899 05000US19151,"Pocahontas County, IA",7191 05000US19153,"Polk County, IA",445136 05000US19155,"Pottawattamie County, IA",93153 05000US19157,"Poweshiek County, IA",18765 05000US19159,"Ringgold County, IA",5082 05000US19161,"Sac County, IA",10162 05000US19163,"Scott County, IA",168714 05000US19165,"Shelby County, IA",12034 05000US19167,"Sioux County, IA",34261 05000US19169,"Story County, IA",91939 05000US19171,"Tama County, IA",17568 05000US19173,"Taylor County, IA",6225 05000US19175,"Union County, IA",12554 05000US19177,"Van Buren County, IA",7487 05000US19179,"Wapello County, IA",35406 05000US19181,"Warren County, IA",47058 05000US19183,"Washington County, IA",21906 05000US19185,"Wayne County, IA",6385 05000US19187,"Webster County, IA",37399 05000US19189,"Winnebago County, IA",10645 05000US19191,"Winneshiek County, IA",20957 05000US19193,"Woodbury County, IA",102372 05000US19195,"Worth County, IA",7567 05000US19197,"Wright County, IA",13007 -------------------------------------------------------------------------------- /01-base/csv/ia-breweries.csv: -------------------------------------------------------------------------------- 1 | brewery,address,city,phone,website,latitude,longitude 2 | 515 Brewing Company,7700 University Ave.,"Clive, IA 50325",(515) 661-4615,www.515brewing.com,41.600002,-93.722766 3 | Angry Cedar Brewing Company,"730 Technology Place 4 | ","Waverly, IA, 50677",NA,www.angrycedar.com,42.726667,-92.475278 5 | Appanoose Rapids Brewing Company,332 East Main Street,"Ottumwa, IA, 52501",(641) 684-4008,www.appanooserapidsbrewingcompany.com,41.015936,-92.410008 6 | Backpocket Brewing Company,903 Quarry Road,"Coralville, IA 52241",(319) 466-4444,www.backpocketbrewing.com,41.681596,-91.559932 7 | Beck’s Sports Brewery,3295 University Ave,"Waterloo, IA 50701",(319) 234-4333,www.barmuda.com/becks,42.500706,-92.38998 8 | "Boone Valley Brewing Company 9 | ",816 7th Street,"Boone, Iowa 50036",(515) 432-1232,NA,42.062616,-93.880685 10 | Briar Creek Brewery,NA,"Janesville, IA 50647",NA,www.briarcreekbrewery.com,42.627377,-92.46536 11 | C.I.B. (Chefs in Black) Brewery,39036 Aspen Road,"Macedonia, IA 51549",(515) 450-2981,www.cibbrewery.com,41.175571,-95.441562 12 | Confluence Brewing Company,"1235 Thomas Beck Rd., Suite A","Des Moines, IA 50315",(515) 285-9005,NA,41.568638,-93.631768 13 | Court Avenue Brewing Company,309 Court Ave,"Des Moines, IA 50309",(515) 282-2739,www.courtavebrew.com,41.585502,-93.620998 14 | Depot Deli Restaurant,101 North Railroad Street,"Shenandoah, IA 51601",(712) 246-4444,www.depotdeli.com,40.76499,-95.376992 15 | Exile Brewing Company,1514 Walnut Street,"Des Moines, IA 50309",(515) 883-2337,NA,41.583013,-93.637015 16 | Front Street Brewery,208 E. River Rd.,"Davenport, IA 52801",(319) 322-1569,www.frontstreetbrew.com,41.520357,-90.572245 17 | Granite City Food & Brewery – Worthouse,1722 Detroit Street,"Ellsworth, IA 50075",(515) 836-4060,www.gcfb.net,42.3141,-93.57481 18 | Granite City Food & Brewery – Cedar Rapids,4755 First Avenue SE,"Cedar Rapids, IA 52403",(319) 395-7500,www.gcfb.net/locations/loc_cedarrapids.cfm,42.025158,-91.621528 19 | Granite City Food & Brewery – Clive,12801 University Ave,"Clive, IA 50325",(515) 224-1300,www.gcfb.net/locations/loc_clive.cfm,41.600851,-93.79458 20 | Granite City Food & Brewery – Davenport,5280 Utica Ridge Rd,"Davenport, IA 52807",(563) 344-9700,www.gcfb.net/locations/loc_davenport.cfm,41.574625,-90.513509 21 | Great River Brewery,332 East 2nd Street,"Davenport, IA 52801",(319) 541-5160,www.greatriverbrewery.com,41.521383,-90.570087 22 | Keg Creek Brewing Company,"111 Sharp Street, PO Box 281","Glenwood, IA 51534",(712) 520-9029,www.kegcreekbrewing.com,41.047742,-95.734534 23 | Lost Duck,723 Avenue H,"Fort Madison, IA 52627",(319) 372-8255,www.duckbrewing.com,40.630008,-91.310758 24 | "Madhouse Brewing Company 25 | ","403 W. 4th St. N. 26 | ","Newton, IA 50208",(641) 831-3392,www.madhousebeer.com,41.702683,-93.060109 27 | Millstream Brewing Company,835 48th Ave,"Amana, IA 52203",(319) 622-3672,www.millstreambrewing.com,41.797214,-91.865153 28 | Number 7 Brewing,"302 SW Maple St. 29 | ","Ankeny, IA 50023",NA,NA,41.729437,-93.60883 30 | Old Man River Restaurant and Brewery,123 A. St.,"McGregor, IA 52157",(563) 873-1999,www.oldmanriverbrewery.com,43.024687,-91.174673 31 | Olde Main Brewing Co.,316 Main Street,"Ames, IA 50010",(515) 232-0553,www.oldemainbrewing.com,42.024803,-93.614693 32 | Peace Tree Brewing Company,107 West Main Street,"Knoxville, Iowa 50138",(641) 842-2739,www.peacetreebrewing.com,41.318956,-93.09892 33 | Raccoon River Brewing Company,200 Tenth Street,"Des Moines, IA 50309",(515) 362-5222,www.raccoonbrew.com,41.584066,-93.629609 34 | Rock Bottom Brewery,4508 University Ave,"West Des Moines, IA 50266",(515) 267-8900,www.rockbottom.com,41.600368,-93.789561 35 | Sutliff Cider Company,382 Sutliff Rd,"Lisbon, IA 52253",(319) 455-4093,www.sutliffcider.com,41.884377,-91.386917 36 | Third Base Brewery,500 Blairs Ferry Road NE,"Cedar Rapids, IA 52402",(319) 378-9090,www.thirdbasebrewery.com,42.035095,-91.639674 37 | Toppling Goliath Brewing Company,310 College Drive,"Decorah, IA 52101",(563) 387-6700,www.tgbrews.com,43.308374,-91.797114 38 | Twisted Wine Brewery,3021 St Charles Road,"Saint Charles, IA 50240",NA,www.twistedvinebrewery.com,41.290292,-93.800555 39 | Van Houzen Brewing Company,6602 Ginger Avenue,"Newton, IAᅠ 50208",(319) 594-9684,NA,41.680283,-93.05762 40 | Worth Brewing Company,826 Central Ave,"Northwood, IA 50459",(641) 324-9899,www.worthbrewing.com,43.444065,-93.220261 -------------------------------------------------------------------------------- /02-final/csv/ia-breweries.csv: -------------------------------------------------------------------------------- 1 | brewery,address,city,phone,website,latitude,longitude 2 | 515 Brewing Company,7700 University Ave.,"Clive, IA 50325",(515) 661-4615,www.515brewing.com,41.600002,-93.722766 3 | Angry Cedar Brewing Company,"730 Technology Place 4 | ","Waverly, IA, 50677",NA,www.angrycedar.com,42.726667,-92.475278 5 | Appanoose Rapids Brewing Company,332 East Main Street,"Ottumwa, IA, 52501",(641) 684-4008,www.appanooserapidsbrewingcompany.com,41.015936,-92.410008 6 | Backpocket Brewing Company,903 Quarry Road,"Coralville, IA 52241",(319) 466-4444,www.backpocketbrewing.com,41.681596,-91.559932 7 | Beck’s Sports Brewery,3295 University Ave,"Waterloo, IA 50701",(319) 234-4333,www.barmuda.com/becks,42.500706,-92.38998 8 | "Boone Valley Brewing Company 9 | ",816 7th Street,"Boone, Iowa 50036",(515) 432-1232,NA,42.062616,-93.880685 10 | Briar Creek Brewery,NA,"Janesville, IA 50647",NA,www.briarcreekbrewery.com,42.627377,-92.46536 11 | C.I.B. (Chefs in Black) Brewery,39036 Aspen Road,"Macedonia, IA 51549",(515) 450-2981,www.cibbrewery.com,41.175571,-95.441562 12 | Confluence Brewing Company,"1235 Thomas Beck Rd., Suite A","Des Moines, IA 50315",(515) 285-9005,NA,41.568638,-93.631768 13 | Court Avenue Brewing Company,309 Court Ave,"Des Moines, IA 50309",(515) 282-2739,www.courtavebrew.com,41.585502,-93.620998 14 | Depot Deli Restaurant,101 North Railroad Street,"Shenandoah, IA 51601",(712) 246-4444,www.depotdeli.com,40.76499,-95.376992 15 | Exile Brewing Company,1514 Walnut Street,"Des Moines, IA 50309",(515) 883-2337,NA,41.583013,-93.637015 16 | Front Street Brewery,208 E. River Rd.,"Davenport, IA 52801",(319) 322-1569,www.frontstreetbrew.com,41.520357,-90.572245 17 | Granite City Food & Brewery – Worthouse,1722 Detroit Street,"Ellsworth, IA 50075",(515) 836-4060,www.gcfb.net,42.3141,-93.57481 18 | Granite City Food & Brewery – Cedar Rapids,4755 First Avenue SE,"Cedar Rapids, IA 52403",(319) 395-7500,www.gcfb.net/locations/loc_cedarrapids.cfm,42.025158,-91.621528 19 | Granite City Food & Brewery – Clive,12801 University Ave,"Clive, IA 50325",(515) 224-1300,www.gcfb.net/locations/loc_clive.cfm,41.600851,-93.79458 20 | Granite City Food & Brewery – Davenport,5280 Utica Ridge Rd,"Davenport, IA 52807",(563) 344-9700,www.gcfb.net/locations/loc_davenport.cfm,41.574625,-90.513509 21 | Great River Brewery,332 East 2nd Street,"Davenport, IA 52801",(319) 541-5160,www.greatriverbrewery.com,41.521383,-90.570087 22 | Keg Creek Brewing Company,"111 Sharp Street, PO Box 281","Glenwood, IA 51534",(712) 520-9029,www.kegcreekbrewing.com,41.047742,-95.734534 23 | Lost Duck,723 Avenue H,"Fort Madison, IA 52627",(319) 372-8255,www.duckbrewing.com,40.630008,-91.310758 24 | "Madhouse Brewing Company 25 | ","403 W. 4th St. N. 26 | ","Newton, IA 50208",(641) 831-3392,www.madhousebeer.com,41.702683,-93.060109 27 | Millstream Brewing Company,835 48th Ave,"Amana, IA 52203",(319) 622-3672,www.millstreambrewing.com,41.797214,-91.865153 28 | Number 7 Brewing,"302 SW Maple St. 29 | ","Ankeny, IA 50023",NA,NA,41.729437,-93.60883 30 | Old Man River Restaurant and Brewery,123 A. St.,"McGregor, IA 52157",(563) 873-1999,www.oldmanriverbrewery.com,43.024687,-91.174673 31 | Olde Main Brewing Co.,316 Main Street,"Ames, IA 50010",(515) 232-0553,www.oldemainbrewing.com,42.024803,-93.614693 32 | Peace Tree Brewing Company,107 West Main Street,"Knoxville, Iowa 50138",(641) 842-2739,www.peacetreebrewing.com,41.318956,-93.09892 33 | Raccoon River Brewing Company,200 Tenth Street,"Des Moines, IA 50309",(515) 362-5222,www.raccoonbrew.com,41.584066,-93.629609 34 | Rock Bottom Brewery,4508 University Ave,"West Des Moines, IA 50266",(515) 267-8900,www.rockbottom.com,41.600368,-93.789561 35 | Sutliff Cider Company,382 Sutliff Rd,"Lisbon, IA 52253",(319) 455-4093,www.sutliffcider.com,41.884377,-91.386917 36 | Third Base Brewery,500 Blairs Ferry Road NE,"Cedar Rapids, IA 52402",(319) 378-9090,www.thirdbasebrewery.com,42.035095,-91.639674 37 | Toppling Goliath Brewing Company,310 College Drive,"Decorah, IA 52101",(563) 387-6700,www.tgbrews.com,43.308374,-91.797114 38 | Twisted Wine Brewery,3021 St Charles Road,"Saint Charles, IA 50240",NA,www.twistedvinebrewery.com,41.290292,-93.800555 39 | Van Houzen Brewing Company,6602 Ginger Avenue,"Newton, IAᅠ 50208",(319) 594-9684,NA,41.680283,-93.05762 40 | Worth Brewing Company,826 Central Ave,"Northwood, IA 50459",(641) 324-9899,www.worthbrewing.com,43.444065,-93.220261 -------------------------------------------------------------------------------- /01-base/json/ia-breweries.json: -------------------------------------------------------------------------------- 1 | [{"brewery":"515 Brewing Company","address":"7700 University Ave.","city":"Clive, IA 50325","phone":"(515) 661-4615","website":"www.515brewing.com","latitude":41.600002,"longitude":-93.722766}, 2 | {"brewery":"Angry Cedar Brewing Company","address":"730 Technology Place\n","city":"Waverly, IA, 50677","phone":"NA","website":"www.angrycedar.com","latitude":42.726667,"longitude":-92.475278}, 3 | {"brewery":"Appanoose Rapids Brewing Company","address":"332 East Main Street","city":"Ottumwa, IA, 52501","phone":"(641) 684-4008","website":"www.appanooserapidsbrewingcompany.com","latitude":41.015936,"longitude":-92.410008}, 4 | {"brewery":"Backpocket Brewing Company","address":"903 Quarry Road","city":"Coralville, IA 52241","phone":"(319) 466-4444","website":"www.backpocketbrewing.com","latitude":41.681596,"longitude":-91.559932}, 5 | {"brewery":"Beck’s Sports Brewery","address":"3295 University Ave","city":"Waterloo, IA 50701","phone":"(319) 234-4333","website":"www.barmuda.com/becks","latitude":42.500706,"longitude":-92.38998}, 6 | {"brewery":"Boone Valley Brewing Company\n","address":"816 7th Street","city":"Boone, Iowa 50036","phone":"(515) 432-1232","website":"NA","latitude":42.062616,"longitude":-93.880685}, 7 | {"brewery":"Briar Creek Brewery","address":"NA","city":"Janesville, IA 50647","phone":"NA","website":"www.briarcreekbrewery.com","latitude":42.627377,"longitude":-92.46536}, 8 | {"brewery":"C.I.B. (Chefs in Black) Brewery","address":"39036 Aspen Road","city":"Macedonia, IA 51549","phone":"(515) 450-2981","website":"www.cibbrewery.com","latitude":41.175571,"longitude":-95.441562}, 9 | {"brewery":"Confluence Brewing Company","address":"1235 Thomas Beck Rd., Suite A","city":"Des Moines, IA 50315","phone":"(515) 285-9005","website":"NA","latitude":41.568638,"longitude":-93.631768}, 10 | {"brewery":"Court Avenue Brewing Company","address":"309 Court Ave","city":"Des Moines, IA 50309","phone":"(515) 282-2739","website":"www.courtavebrew.com","latitude":41.585502,"longitude":-93.620998}, 11 | {"brewery":"Depot Deli Restaurant","address":"101 North Railroad Street","city":"Shenandoah, IA 51601","phone":"(712) 246-4444","website":"www.depotdeli.com","latitude":40.76499,"longitude":-95.376992}, 12 | {"brewery":"Exile Brewing Company","address":"1514 Walnut Street","city":"Des Moines, IA 50309","phone":"(515) 883-2337","website":"NA","latitude":41.583013,"longitude":-93.637015}, 13 | {"brewery":"Front Street Brewery","address":"208 E. River Rd.","city":"Davenport, IA 52801","phone":"(319) 322-1569","website":"www.frontstreetbrew.com","latitude":41.520357,"longitude":-90.572245}, 14 | {"brewery":"Granite City Food & Brewery – Worthouse","address":"1722 Detroit Street","city":"Ellsworth, IA 50075","phone":"(515) 836-4060","website":"www.gcfb.net","latitude":42.3141,"longitude":-93.57481}, 15 | {"brewery":"Granite City Food & Brewery – Cedar Rapids","address":"4755 First Avenue SE","city":"Cedar Rapids, IA 52403","phone":"(319) 395-7500","website":"www.gcfb.net/locations/loc_cedarrapids.cfm","latitude":42.025158,"longitude":-91.621528}, 16 | {"brewery":"Granite City Food & Brewery – Clive","address":"12801 University Ave","city":"Clive, IA 50325","phone":"(515) 224-1300","website":"www.gcfb.net/locations/loc_clive.cfm","latitude":41.600851,"longitude":-93.79458}, 17 | {"brewery":"Granite City Food & Brewery – Davenport","address":"5280 Utica Ridge Rd","city":"Davenport, IA 52807","phone":"(563) 344-9700","website":"www.gcfb.net/locations/loc_davenport.cfm","latitude":41.574625,"longitude":-90.513509}, 18 | {"brewery":"Great River Brewery","address":"332 East 2nd Street","city":"Davenport, IA 52801","phone":"(319) 541-5160","website":"www.greatriverbrewery.com","latitude":41.521383,"longitude":-90.570087}, 19 | {"brewery":"Keg Creek Brewing Company","address":"111 Sharp Street, PO Box 281","city":"Glenwood, IA 51534","phone":"(712) 520-9029","website":"www.kegcreekbrewing.com","latitude":41.047742,"longitude":-95.734534}, 20 | {"brewery":"Lost Duck","address":"723 Avenue H","city":"Fort Madison, IA 52627","phone":"(319) 372-8255","website":"www.duckbrewing.com","latitude":40.630008,"longitude":-91.310758}, 21 | {"brewery":"Madhouse Brewing Company\n","address":"403 W. 4th St. N.\n","city":"Newton, IA 50208","phone":"(641) 831-3392","website":"www.madhousebeer.com","latitude":41.702683,"longitude":-93.060109}, 22 | {"brewery":"Millstream Brewing Company","address":"835 48th Ave","city":"Amana, IA 52203","phone":"(319) 622-3672","website":"www.millstreambrewing.com","latitude":41.797214,"longitude":-91.865153}, 23 | {"brewery":"Number 7 Brewing","address":"302 SW Maple St.\n","city":"Ankeny, IA 50023","phone":"NA","website":"NA","latitude":41.729437,"longitude":-93.60883}, 24 | {"brewery":"Old Man River Restaurant and Brewery","address":"123 A. St.","city":"McGregor, IA 52157","phone":"(563) 873-1999","website":"www.oldmanriverbrewery.com","latitude":43.024687,"longitude":-91.174673}, 25 | {"brewery":"Olde Main Brewing Co.","address":"316 Main Street","city":"Ames, IA 50010","phone":"(515) 232-0553","website":"www.oldemainbrewing.com","latitude":42.024803,"longitude":-93.614693}, 26 | {"brewery":"Peace Tree Brewing Company","address":"107 West Main Street","city":"Knoxville, Iowa 50138","phone":"(641) 842-2739","website":"www.peacetreebrewing.com","latitude":41.318956,"longitude":-93.09892}, 27 | {"brewery":"Raccoon River Brewing Company","address":"200 Tenth Street","city":"Des Moines, IA 50309","phone":"(515) 362-5222","website":"www.raccoonbrew.com","latitude":41.584066,"longitude":-93.629609}, 28 | {"brewery":"Rock Bottom Brewery","address":"4508 University Ave","city":"West Des Moines, IA 50266","phone":"(515) 267-8900","website":"www.rockbottom.com","latitude":41.600368,"longitude":-93.789561}, 29 | {"brewery":"Sutliff Cider Company","address":"382 Sutliff Rd","city":"Lisbon, IA 52253","phone":"(319) 455-4093","website":"www.sutliffcider.com","latitude":41.884377,"longitude":-91.386917}, 30 | {"brewery":"Third Base Brewery","address":"500 Blairs Ferry Road NE","city":"Cedar Rapids, IA 52402","phone":"(319) 378-9090","website":"www.thirdbasebrewery.com","latitude":42.035095,"longitude":-91.639674}, 31 | {"brewery":"Toppling Goliath Brewing Company","address":"310 College Drive","city":"Decorah, IA 52101","phone":"(563) 387-6700","website":"www.tgbrews.com","latitude":43.308374,"longitude":-91.797114}, 32 | {"brewery":"Twisted Wine Brewery","address":"3021 St Charles Road","city":"Saint Charles, IA 50240","phone":"NA","website":"www.twistedvinebrewery.com","latitude":41.290292,"longitude":-93.800555}, 33 | {"brewery":"Van Houzen Brewing Company","address":"6602 Ginger Avenue","city":"Newton, IAï¾  50208","phone":"(319) 594-9684","website":"NA","latitude":41.680283,"longitude":-93.05762}, 34 | {"brewery":"Worth Brewing Company","address":"826 Central Ave","city":"Northwood, IA 50459","phone":"(641) 324-9899","website":"www.worthbrewing.com","latitude":43.444065,"longitude":-93.220261}] -------------------------------------------------------------------------------- /02-final/json/ia-breweries.json: -------------------------------------------------------------------------------- 1 | var breweries = [{"brewery":"515 Brewing Company","address":"7700 University Ave.","city":"Clive, IA 50325","phone":"(515) 661-4615","website":"www.515brewing.com","latitude":41.600002,"longitude":-93.722766}, 2 | {"brewery":"Angry Cedar Brewing Company","address":"730 Technology Place\n","city":"Waverly, IA, 50677","phone":"NA","website":"www.angrycedar.com","latitude":42.726667,"longitude":-92.475278}, 3 | {"brewery":"Appanoose Rapids Brewing Company","address":"332 East Main Street","city":"Ottumwa, IA, 52501","phone":"(641) 684-4008","website":"www.appanooserapidsbrewingcompany.com","latitude":41.015936,"longitude":-92.410008}, 4 | {"brewery":"Backpocket Brewing Company","address":"903 Quarry Road","city":"Coralville, IA 52241","phone":"(319) 466-4444","website":"www.backpocketbrewing.com","latitude":41.681596,"longitude":-91.559932}, 5 | {"brewery":"Beck's Sports Brewery","address":"3295 University Ave","city":"Waterloo, IA 50701","phone":"(319) 234-4333","website":"www.barmuda.com/becks","latitude":42.500706,"longitude":-92.38998}, 6 | {"brewery":"Boone Valley Brewing Company\n","address":"816 7th Street","city":"Boone, Iowa 50036","phone":"(515) 432-1232","website":"NA","latitude":42.062616,"longitude":-93.880685}, 7 | {"brewery":"Briar Creek Brewery","address":"NA","city":"Janesville, IA 50647","phone":"NA","website":"www.briarcreekbrewery.com","latitude":42.627377,"longitude":-92.46536}, 8 | {"brewery":"C.I.B. (Chefs in Black) Brewery","address":"39036 Aspen Road","city":"Macedonia, IA 51549","phone":"(515) 450-2981","website":"www.cibbrewery.com","latitude":41.175571,"longitude":-95.441562}, 9 | {"brewery":"Confluence Brewing Company","address":"1235 Thomas Beck Rd., Suite A","city":"Des Moines, IA 50315","phone":"(515) 285-9005","website":"NA","latitude":41.568638,"longitude":-93.631768}, 10 | {"brewery":"Court Avenue Brewing Company","address":"309 Court Ave","city":"Des Moines, IA 50309","phone":"(515) 282-2739","website":"www.courtavebrew.com","latitude":41.585502,"longitude":-93.620998}, 11 | {"brewery":"Depot Deli Restaurant","address":"101 North Railroad Street","city":"Shenandoah, IA 51601","phone":"(712) 246-4444","website":"www.depotdeli.com","latitude":40.76499,"longitude":-95.376992}, 12 | {"brewery":"Exile Brewing Company","address":"1514 Walnut Street","city":"Des Moines, IA 50309","phone":"(515) 883-2337","website":"NA","latitude":41.583013,"longitude":-93.637015}, 13 | {"brewery":"Front Street Brewery","address":"208 E. River Rd.","city":"Davenport, IA 52801","phone":"(319) 322-1569","website":"www.frontstreetbrew.com","latitude":41.520357,"longitude":-90.572245}, 14 | {"brewery":"Granite City Food & Brewery – Worthouse","address":"1722 Detroit Street","city":"Ellsworth, IA 50075","phone":"(515) 836-4060","website":"www.gcfb.net","latitude":42.3141,"longitude":-93.57481}, 15 | {"brewery":"Granite City Food & Brewery – Cedar Rapids","address":"4755 First Avenue SE","city":"Cedar Rapids, IA 52403","phone":"(319) 395-7500","website":"www.gcfb.net/locations/loc_cedarrapids.cfm","latitude":42.025158,"longitude":-91.621528}, 16 | {"brewery":"Granite City Food & Brewery – Clive","address":"12801 University Ave","city":"Clive, IA 50325","phone":"(515) 224-1300","website":"www.gcfb.net/locations/loc_clive.cfm","latitude":41.600851,"longitude":-93.79458}, 17 | {"brewery":"Granite City Food & Brewery – Davenport","address":"5280 Utica Ridge Rd","city":"Davenport, IA 52807","phone":"(563) 344-9700","website":"www.gcfb.net/locations/loc_davenport.cfm","latitude":41.574625,"longitude":-90.513509}, 18 | {"brewery":"Great River Brewery","address":"332 East 2nd Street","city":"Davenport, IA 52801","phone":"(319) 541-5160","website":"www.greatriverbrewery.com","latitude":41.521383,"longitude":-90.570087}, 19 | {"brewery":"Keg Creek Brewing Company","address":"111 Sharp Street, PO Box 281","city":"Glenwood, IA 51534","phone":"(712) 520-9029","website":"www.kegcreekbrewing.com","latitude":41.047742,"longitude":-95.734534}, 20 | {"brewery":"Lost Duck","address":"723 Avenue H","city":"Fort Madison, IA 52627","phone":"(319) 372-8255","website":"www.duckbrewing.com","latitude":40.630008,"longitude":-91.310758}, 21 | {"brewery":"Madhouse Brewing Company\n","address":"403 W. 4th St. N.\n","city":"Newton, IA 50208","phone":"(641) 831-3392","website":"www.madhousebeer.com","latitude":41.702683,"longitude":-93.060109}, 22 | {"brewery":"Millstream Brewing Company","address":"835 48th Ave","city":"Amana, IA 52203","phone":"(319) 622-3672","website":"www.millstreambrewing.com","latitude":41.797214,"longitude":-91.865153}, 23 | {"brewery":"Number 7 Brewing","address":"302 SW Maple St.\n","city":"Ankeny, IA 50023","phone":"NA","website":"NA","latitude":41.729437,"longitude":-93.60883}, 24 | {"brewery":"Old Man River Restaurant and Brewery","address":"123 A. St.","city":"McGregor, IA 52157","phone":"(563) 873-1999","website":"www.oldmanriverbrewery.com","latitude":43.024687,"longitude":-91.174673}, 25 | {"brewery":"Olde Main Brewing Co.","address":"316 Main Street","city":"Ames, IA 50010","phone":"(515) 232-0553","website":"www.oldemainbrewing.com","latitude":42.024803,"longitude":-93.614693}, 26 | {"brewery":"Peace Tree Brewing Company","address":"107 West Main Street","city":"Knoxville, Iowa 50138","phone":"(641) 842-2739","website":"www.peacetreebrewing.com","latitude":41.318956,"longitude":-93.09892}, 27 | {"brewery":"Raccoon River Brewing Company","address":"200 Tenth Street","city":"Des Moines, IA 50309","phone":"(515) 362-5222","website":"www.raccoonbrew.com","latitude":41.584066,"longitude":-93.629609}, 28 | {"brewery":"Rock Bottom Brewery","address":"4508 University Ave","city":"West Des Moines, IA 50266","phone":"(515) 267-8900","website":"www.rockbottom.com","latitude":41.600368,"longitude":-93.789561}, 29 | {"brewery":"Sutliff Cider Company","address":"382 Sutliff Rd","city":"Lisbon, IA 52253","phone":"(319) 455-4093","website":"www.sutliffcider.com","latitude":41.884377,"longitude":-91.386917}, 30 | {"brewery":"Third Base Brewery","address":"500 Blairs Ferry Road NE","city":"Cedar Rapids, IA 52402","phone":"(319) 378-9090","website":"www.thirdbasebrewery.com","latitude":42.035095,"longitude":-91.639674}, 31 | {"brewery":"Toppling Goliath Brewing Company","address":"310 College Drive","city":"Decorah, IA 52101","phone":"(563) 387-6700","website":"www.tgbrews.com","latitude":43.308374,"longitude":-91.797114}, 32 | {"brewery":"Twisted Wine Brewery","address":"3021 St Charles Road","city":"Saint Charles, IA 50240","phone":"NA","website":"www.twistedvinebrewery.com","latitude":41.290292,"longitude":-93.800555}, 33 | {"brewery":"Van Houzen Brewing Company","address":"6602 Ginger Avenue","city":"Newton, IAï¾  50208","phone":"(319) 594-9684","website":"NA","latitude":41.680283,"longitude":-93.05762}, 34 | {"brewery":"Worth Brewing Company","address":"826 Central Ave","city":"Northwood, IA 50459","phone":"(641) 324-9899","website":"www.worthbrewing.com","latitude":43.444065,"longitude":-93.220261}] -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | #Building your first Leaflet.js map 2 | This is the code behind my NICAR 2017 session on making maps with [Leaflet.js](https://github.com/Leaflet/Leaflet). 3 | 4 | This is [map we will be building](http://csessig86.github.io/leaflet-maps-intro/). 5 | 6 | ####Pre: Why Leaflet.js? 7 | * Free, open source and actively maintained 8 | * Well documented with great examples 9 | * Has a huge community behind it 10 | * Used by a lot of people 11 | * Minimal amount of code 12 | * Mobile friendly 13 | * Can handle thousands of data points without loading too slowly 14 | * [Plugins](http://leafletjs.com/plugins.html)! Example of the [markercluster plugin](http://csessig86.github.io/tabletop_to_leaflet/#cluster) 15 | 16 | ####Pre: The set up 17 | * This repo has two directories: 18 | * 01-base contains the base files you will need to get started. All the files you need have been created here, but none of the mapping code has been written yet. 19 | * 02-final is the final project we are going to build. 20 | 21 | ####1. Getting started 22 | * Download this repo onto your computer. Then open up the 01-base directory you created in a text editor. We'll be adding our mapping code to the files in this directory. 23 | 24 | * You'll notice at the bottom of the index.html file these lines: 25 | ```html 26 | 27 | 28 | 29 | ``` 30 | 31 | * These link to the data sources we're going to be using: [JSON data](http://www.copterlabs.com/json-what-it-is-how-it-works-how-to-use-it/) of breweries in Iowa and [GeoJSON data](http://geojson.org/) of the counties in Iowa. 32 | 33 | ####2. Base map 34 | * Add this to js/script.js: 35 | ```javascript 36 | var layer = new L.StamenTileLayer('toner-background'); 37 | 38 | var map = new L.Map('map').setView([42,-93],7); 39 | map.addLayer(layer); 40 | ``` 41 | 42 | ####3. CSS 43 | * Add this to css/style.css: 44 | ```css 45 | #map { 46 | width: 100%; 47 | height: 500px; 48 | } 49 | 50 | ``` 51 | * This gets us a map without any data points that looks like: 52 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/01.png) 53 | 54 | ####5. Add data to map 55 | * Our sample dataset is [a list of breweries in Iowa](https://docs.google.com/spreadsheets/d/1M6mREJiDMQ1NTbdbOXiw0sWN_6DE7E33JJY503GS7tc/pub?output=html). I've already included lat, long information for each brewery and converted the CSV into a JSON file. You must have lat, long information for each location for Leaflet to put them on the map. 56 | 57 | * Pro-tip: If you need a site to convert CSVs into JSON files, check out [Mr. Data Converter](http://shancarter.github.io/mr-data-converter/). And if you're looking for a site that can geocode addresses in a Google spreadsheet, check out [this site](http://gmaps-samples.googlecode.com/svn/trunk/spreadsheetsgeocoder/geocodespreadsheet.htm). 58 | 59 | * The breweries JSON data is one array. Each brewery is an object within that array. Objects have keys and values and each represent a data point. For instance, in the breweries data, one of the keys is address. The value is address for the specific brewery. 60 | 61 | * You need to make sure the array is a variable, so go into the file and add this before it: 62 | ```javascript 63 | var breweries = 64 | ``` 65 | 66 | * This makes it easy for us to loop through that variable of our JSON array: 67 | ```javascript 68 | for (var num = 0; num < breweries.length; num++) { 69 | var brewery = breweries[num]; 70 | var brewery_lat = brewery["latitude"]; 71 | var brewery_long = brewery["longitude"]; 72 | 73 | L.marker([brewery_lat, brewery_long]).addTo(map); 74 | } 75 | ``` 76 | * This loops through each brewery, grabs the brewery's latitude and longitude information and puts it on the map. The [L.marker function](http://leafletjs.com/reference.html#marker) is a Leaflet function that is used to create a new marker for each brewery we are looping through. It's placed on the map based on the brewery's latitude and longitude information. 77 | 78 | * Your map should now look like: 79 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/02.png) 80 | 81 | ####4. Add GeoJSON data 82 | * The second dataset we will be working is a list of counties in Iowa, which is available in GeoJSON format [here](http://catalog.opendata.city/dataset/iowa-counties-polygon/resource/52b6d8b4-b203-4ab3-94db-e5e93c335a14). I've downloaded this already and included it within the data directory. 83 | 84 | * NOTE: The counties also have population data in them, which we use later. 85 | 86 | * Like with our breweries, we need to make the GeoJSON object a variable so it can be easiliy called within script.js: 87 | ```javascript 88 | var iowa_counties = 89 | ``` 90 | 91 | * Adding our counties to the map only takes one line of code: 92 | ```javascript 93 | L.geoJson(iowa_counties).addTo(map); 94 | ``` 95 | 96 | * You'll what to place this ABOVE the for loop that places the marker on the map. The makes sure the counties appear under the markers. 97 | 98 | * Refresh your map and you'll see the counties now on the map: 99 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/03.png?ver=2) 100 | 101 | ####5. Styling the counties 102 | * The counties kind of look ugly right now. We can fix that by extending the geojson object we added: 103 | 104 | ```javascript 105 | function setStyle(feature) { 106 | return { 107 | opacity: 1, 108 | weight: 2, 109 | color: "#FFF", 110 | fillColor: "#005824", 111 | fillOpacity: 0.8 112 | } 113 | } 114 | 115 | L.geoJson(iowa_counties, { 116 | style: setStyle 117 | }).addTo(map); 118 | ``` 119 | 120 | * Every time a county is looped through, the [Leaflet GeJSON function](http://leafletjs.com/reference.html#geojson) calls the [style method](http://leafletjs.com/reference.html#geojson-style), which, in turn, calls the setSyle function. The function then returns styles for the particular county. Right now, we are returning the same fillColor for each county, so all the counties will be colored the same. 121 | 122 | * For more information on the different styling options available for GeoJSON layers, visit [this page](http://mourner.github.io/Leaflet/reference.html#path-options). 123 | 124 | * Your map should now look like: 125 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/04.png?ver=2) 126 | 127 | ####6. Color counties based on population data 128 | * Our map is cool and all but the counties don't tell us much. Wouldn't it be neat if we could shade the counties based on how many people lived within them? Fortunately we can do that relatively easily in Leaflet. 129 | 130 | * The final piece of data we will be working with is population data from the [U.S. Census](http://www.census.gov/). We will create a basic [choropleth map](http://leafletjs.com/examples/choropleth.html) where the counties will be shaded based on their population. The more people, the darker the county. 131 | 132 | * I've already downloaded the data from the [Census Reporter site](http://censusreporter.org/data/table/?table=B01003&geo_ids=04000US19,050|04000US19,050|04000US19&primary_geo_id=04000US19) and merged it into the county GeoJSON file that's on the map. I used [QGIS](http://www.qgis.org/en/site/) to do this. If you're not familiar with QGIS, I recommend checking it out. It's a like watered-down version of [ArcGIS](https://www.arcgis.com/features/). But unlike ArcGIS, it's free. 133 | 134 | * Instead setting the same color for each county, we're going to grab the population for each county we're looping through and set the color based on its value: 135 | ```javascript 136 | function setColor(population) { 137 | var population_num = parseInt(population) 138 | 139 | if (population_num > 150000) { 140 | return '#005824'; 141 | } else if (population_num > 125000) { 142 | return '#238b45'; 143 | } else if (population_num > 100000) { 144 | return '#41ae76'; 145 | } else if (population_num > 75000) { 146 | return '#66c2a4'; 147 | } else if (population_num > 50000) { 148 | return '#99d8c9'; 149 | } else if (population_num > 25000) { 150 | return '#ccece6'; 151 | } else { 152 | return '#edf8fb'; 153 | } 154 | } 155 | 156 | function setStyle(feature) { 157 | return { 158 | opacity: 1, 159 | weight: 2, 160 | color: "#FFF", 161 | fillColor: setColor(feature.properties.population), 162 | fillOpacity: 0.8 163 | } 164 | } 165 | 166 | L.geoJson(iowa_counties, { 167 | style: setStyle 168 | }).addTo(map); 169 | ``` 170 | 171 | * Each county setStyle loops through is an object, with a couple of data points, including the shape of the county and the population (which I added with QGIS). We're after the county's population, and we can grab it by calling feature.properties.population. 172 | 173 | * This value is sent to the setColor function, which sets the color of the county based on its value. The population is stored as a string in the object, so we need to convert it to an integer using the handy [parseInt function](http://www.w3schools.com/jsref/jsref_parseint.asp). 174 | 175 | * The setColor function looks at the population and it assigns it a color. The higher the population, the darker the green. The colors were grabbed from [ColorBrewer](http://colorbrewer2.org/). 176 | 177 | * Now refresh the map one more time. You have created a beautiful choropleth map with markers on top of it. Congrats! 178 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/05.png?ver=2) 179 | 180 | ####Bonus: Adding popups to the markers 181 | 182 | * If we want to add popups to the markers on the map, we need to change our for loop to look like: 183 | ```javascript 184 | for (var num = 0; num < breweries.length; num++) { 185 | var brewery = breweries[num]; 186 | var brewery_lat = brewery["latitude"]; 187 | var brewery_long = brewery["longitude"]; 188 | var brewery_name = brewery["brewery"]; 189 | var brewery_address = brewery["address"]; 190 | var brewery_city = brewery["city"]; 191 | 192 | var marker = L.marker([brewery_lat, brewery_long]).addTo(map); 193 | 194 | var popup_html = '

' + brewery_name + '

'; 195 | popup_html += '
' + brewery_address + '
'; 196 | popup_html += '
' + brewery_city + '
' 197 | 198 | marker.bindPopup(popup_html); 199 | } 200 | ``` 201 | 202 | * The first thing this does is find more information about each brewery we are looping through. In addition to its latitude and longitude information, the loop is now grabbing the brewery's name, address and city, which we will use in the popup. 203 | 204 | * It then creates the HTML for the popup using the properties we've grabbed. 205 | 206 | * Finally, it binds the HTML to the marker variable using Leaflet's handy [bindPopup method](http://leafletjs.com/reference.html#marker-bindpopup). This makes it so the popup will show up when you click on the marker. 207 | ![alt tag](https://raw.githubusercontent.com/csessig86/leaflet-maps-intro/master/imgs/06.png) -------------------------------------------------------------------------------- /01-base/js/lib/tile.stamen-1.3.0.js: -------------------------------------------------------------------------------- 1 | (function(exports) { 2 | 3 | /* 4 | * tile.stamen.js v1.3.0 5 | */ 6 | 7 | var SUBDOMAINS = "a. b. c. d.".split(" "), 8 | MAKE_PROVIDER = function(layer, type, minZoom, maxZoom) { 9 | return { 10 | "url": ["http://{S}tile.stamen.com/", layer, "/{Z}/{X}/{Y}.", type].join(""), 11 | "type": type, 12 | "subdomains": SUBDOMAINS.slice(), 13 | "minZoom": minZoom, 14 | "maxZoom": maxZoom, 15 | "attribution": [ 16 | 'Map tiles by Stamen Design, ', 17 | 'under CC BY 3.0. ', 18 | 'Data by OpenStreetMap, ', 19 | 'under CC BY SA.' 20 | ].join("") 21 | }; 22 | }, 23 | PROVIDERS = { 24 | "toner": MAKE_PROVIDER("toner", "png", 0, 20), 25 | "terrain": MAKE_PROVIDER("terrain", "jpg", 4, 18), 26 | "watercolor": MAKE_PROVIDER("watercolor", "jpg", 1, 18), 27 | "trees-cabs-crime": { 28 | "url": "http://{S}.tiles.mapbox.com/v3/stamen.trees-cabs-crime/{Z}/{X}/{Y}.png", 29 | "type": "png", 30 | "subdomains": "a b c d".split(" "), 31 | "minZoom": 11, 32 | "maxZoom": 18, 33 | "extent": [ 34 | {"lat": 37.853, "lon": -122.577}, 35 | {"lat": 37.684, "lon": -122.313} 36 | ], 37 | "attribution": [ 38 | 'Design by Shawn Allen at Stamen.', 39 | 'Data courtesy of FuF,', 40 | 'Yellow Cab', 41 | '& SFPD.' 42 | ].join(" ") 43 | } 44 | }; 45 | 46 | // set up toner and terrain flavors 47 | setupFlavors("toner", ["hybrid", "labels", "lines", "background", "lite"]); 48 | setupFlavors("terrain", ["background"]); 49 | setupFlavors("terrain", ["labels", "lines"], "png"); 50 | 51 | // toner 2010 52 | deprecate("toner", ["2010"]); 53 | 54 | // toner 2011 flavors 55 | deprecate("toner", ["2011", "2011-lines", "2011-labels", "2011-lite"]); 56 | 57 | var odbl = [ 58 | "toner", 59 | "toner-hybrid", 60 | "toner-labels", 61 | "toner-lines", 62 | "toner-background", 63 | "toner-lite" 64 | ]; 65 | 66 | for (var i = 0; i < odbl.length; i++) { 67 | var key = odbl[i]; 68 | 69 | PROVIDERS[key].retina = true; 70 | PROVIDERS[key].attribution = [ 71 | 'Map tiles by Stamen Design, ', 72 | 'under CC BY 3.0. ', 73 | 'Data by OpenStreetMap, ', 74 | 'under ODbL.' 75 | ].join(""); 76 | } 77 | 78 | /* 79 | * Export stamen.tile to the provided namespace. 80 | */ 81 | exports.stamen = exports.stamen || {}; 82 | exports.stamen.tile = exports.stamen.tile || {}; 83 | exports.stamen.tile.providers = PROVIDERS; 84 | exports.stamen.tile.getProvider = getProvider; 85 | 86 | function deprecate(base, flavors) { 87 | var provider = getProvider(base); 88 | 89 | for (var i = 0; i < flavors.length; i++) { 90 | var flavor = [base, flavors[i]].join("-"); 91 | PROVIDERS[flavor] = MAKE_PROVIDER(flavor, provider.type, provider.minZoom, provider.maxZoom); 92 | PROVIDERS[flavor].deprecated = true; 93 | } 94 | }; 95 | 96 | /* 97 | * A shortcut for specifying "flavors" of a style, which are assumed to have the 98 | * same type and zoom range. 99 | */ 100 | function setupFlavors(base, flavors, type) { 101 | var provider = getProvider(base); 102 | for (var i = 0; i < flavors.length; i++) { 103 | var flavor = [base, flavors[i]].join("-"); 104 | PROVIDERS[flavor] = MAKE_PROVIDER(flavor, type || provider.type, provider.minZoom, provider.maxZoom); 105 | } 106 | } 107 | 108 | /* 109 | * Get the named provider, or throw an exception if it doesn't exist. 110 | */ 111 | function getProvider(name) { 112 | if (name in PROVIDERS) { 113 | var provider = PROVIDERS[name]; 114 | 115 | if (provider.deprecated && console && console.warn) { 116 | console.warn(name + " is a deprecated style; it will be redirected to its replacement. For performance improvements, please change your reference."); 117 | } 118 | 119 | return provider; 120 | } else { 121 | throw 'No such provider (' + name + ')'; 122 | } 123 | } 124 | 125 | /* 126 | * StamenTileLayer for modestmaps-js 127 | * 128 | * 129 | * Works with both 1.x and 2.x by checking for the existence of MM.Template. 130 | */ 131 | if (typeof MM === "object") { 132 | var ModestTemplate = (typeof MM.Template === "function") 133 | ? MM.Template 134 | : MM.TemplatedMapProvider; 135 | MM.StamenTileLayer = function(name) { 136 | var provider = getProvider(name); 137 | this._provider = provider; 138 | MM.Layer.call(this, new ModestTemplate(provider.url, provider.subdomains)); 139 | this.provider.setZoomRange(provider.minZoom, provider.maxZoom); 140 | this.attribution = provider.attribution; 141 | }; 142 | 143 | MM.StamenTileLayer.prototype = { 144 | setCoordLimits: function(map) { 145 | var provider = this._provider; 146 | if (provider.extent) { 147 | map.coordLimits = [ 148 | map.locationCoordinate(provider.extent[0]).zoomTo(provider.minZoom), 149 | map.locationCoordinate(provider.extent[1]).zoomTo(provider.maxZoom) 150 | ]; 151 | return true; 152 | } else { 153 | return false; 154 | } 155 | } 156 | }; 157 | 158 | MM.extend(MM.StamenTileLayer, MM.Layer); 159 | } 160 | 161 | /* 162 | * StamenTileLayer for Leaflet 163 | * 164 | * 165 | * Tested with version 0.3 and 0.4, but should work on all 0.x releases. 166 | */ 167 | if (typeof L === "object") { 168 | L.StamenTileLayer = L.TileLayer.extend({ 169 | initialize: function(name, options) { 170 | var provider = getProvider(name), 171 | url = provider.url.replace(/({[A-Z]})/g, function(s) { 172 | return s.toLowerCase(); 173 | }), 174 | opts = L.Util.extend({}, options, { 175 | "minZoom": provider.minZoom, 176 | "maxZoom": provider.maxZoom, 177 | "subdomains": provider.subdomains, 178 | "scheme": "xyz", 179 | "attribution": provider.attribution, 180 | sa_id: name 181 | }); 182 | L.TileLayer.prototype.initialize.call(this, url, opts); 183 | } 184 | }); 185 | 186 | /* 187 | * Factory function for consistency with Leaflet conventions 188 | */ 189 | L.stamenTileLayer = function (options, source) { 190 | return new L.StamenTileLayer(options, source); 191 | }; 192 | } 193 | 194 | /* 195 | * StamenTileLayer for OpenLayers 196 | * 197 | * 198 | * Tested with v2.1x. 199 | */ 200 | if (typeof OpenLayers === "object") { 201 | // make a tile URL template OpenLayers-compatible 202 | function openlayerize(url) { 203 | return url.replace(/({.})/g, function(v) { 204 | return "$" + v.toLowerCase(); 205 | }); 206 | } 207 | 208 | // based on http://www.bostongis.com/PrinterFriendly.aspx?content_name=using_custom_osm_tiles 209 | OpenLayers.Layer.Stamen = OpenLayers.Class(OpenLayers.Layer.OSM, { 210 | initialize: function(name, options) { 211 | var provider = getProvider(name), 212 | url = provider.url, 213 | subdomains = provider.subdomains, 214 | hosts = []; 215 | if (url.indexOf("{S}") > -1) { 216 | for (var i = 0; i < subdomains.length; i++) { 217 | hosts.push(openlayerize(url.replace("{S}", subdomains[i]))); 218 | } 219 | } else { 220 | hosts.push(openlayerize(url)); 221 | } 222 | options = OpenLayers.Util.extend({ 223 | "numZoomLevels": provider.maxZoom, 224 | "buffer": 0, 225 | "transitionEffect": "resize", 226 | // see: 227 | // and: 228 | "tileOptions": { 229 | "crossOriginKeyword": null 230 | }, 231 | "attribution": provider.attribution 232 | }, options); 233 | return OpenLayers.Layer.OSM.prototype.initialize.call(this, name, hosts, options); 234 | } 235 | }); 236 | } 237 | 238 | /* 239 | * StamenMapType for Google Maps API V3 240 | * 241 | */ 242 | if (typeof google === "object" && typeof google.maps === "object") { 243 | 244 | // Extending Google class based on a post by Bogart Salzberg of Portland Webworks, 245 | // http://www.portlandwebworks.com/blog/extending-googlemapsmap-object 246 | google.maps.ImageMapType = (function(_constructor){ 247 | var f = function() { 248 | if (!arguments.length) { 249 | return; 250 | } 251 | _constructor.apply(this, arguments); 252 | } 253 | f.prototype = _constructor.prototype; 254 | return f; 255 | })(google.maps.ImageMapType); 256 | 257 | 258 | google.maps.StamenMapType = function(name) { 259 | var provider = getProvider(name), 260 | subdomains = provider.subdomains; 261 | return google.maps.ImageMapType.call(this, { 262 | "getTileUrl": function(coord, zoom) { 263 | var numTiles = 1 << zoom, 264 | wx = coord.x % numTiles, 265 | x = (wx < 0) ? wx + numTiles : wx, 266 | y = coord.y, 267 | index = (zoom + x + y) % subdomains.length; 268 | return provider.url 269 | .replace("{S}", subdomains[index]) 270 | .replace("{Z}", zoom) 271 | .replace("{X}", x) 272 | .replace("{Y}", y); 273 | }, 274 | "tileSize": new google.maps.Size(256, 256), 275 | "name": name, 276 | "minZoom": provider.minZoom, 277 | "maxZoom": provider.maxZoom 278 | }); 279 | }; 280 | 281 | // FIXME: is there a better way to extend classes in Google land? 282 | // Possibly fixed, see above ^^^ | SC 283 | google.maps.StamenMapType.prototype = new google.maps.ImageMapType; 284 | } 285 | 286 | })(typeof exports === "undefined" ? this : exports); 287 | -------------------------------------------------------------------------------- /02-final/js/lib/tile.stamen-1.3.0.js: -------------------------------------------------------------------------------- 1 | (function(exports) { 2 | 3 | /* 4 | * tile.stamen.js v1.3.0 5 | */ 6 | 7 | var SUBDOMAINS = "a. b. c. d.".split(" "), 8 | MAKE_PROVIDER = function(layer, type, minZoom, maxZoom) { 9 | return { 10 | "url": ["http://{S}tile.stamen.com/", layer, "/{Z}/{X}/{Y}.", type].join(""), 11 | "type": type, 12 | "subdomains": SUBDOMAINS.slice(), 13 | "minZoom": minZoom, 14 | "maxZoom": maxZoom, 15 | "attribution": [ 16 | 'Map tiles by Stamen Design, ', 17 | 'under CC BY 3.0. ', 18 | 'Data by OpenStreetMap, ', 19 | 'under CC BY SA.' 20 | ].join("") 21 | }; 22 | }, 23 | PROVIDERS = { 24 | "toner": MAKE_PROVIDER("toner", "png", 0, 20), 25 | "terrain": MAKE_PROVIDER("terrain", "jpg", 4, 18), 26 | "watercolor": MAKE_PROVIDER("watercolor", "jpg", 1, 18), 27 | "trees-cabs-crime": { 28 | "url": "http://{S}.tiles.mapbox.com/v3/stamen.trees-cabs-crime/{Z}/{X}/{Y}.png", 29 | "type": "png", 30 | "subdomains": "a b c d".split(" "), 31 | "minZoom": 11, 32 | "maxZoom": 18, 33 | "extent": [ 34 | {"lat": 37.853, "lon": -122.577}, 35 | {"lat": 37.684, "lon": -122.313} 36 | ], 37 | "attribution": [ 38 | 'Design by Shawn Allen at Stamen.', 39 | 'Data courtesy of FuF,', 40 | 'Yellow Cab', 41 | '& SFPD.' 42 | ].join(" ") 43 | } 44 | }; 45 | 46 | // set up toner and terrain flavors 47 | setupFlavors("toner", ["hybrid", "labels", "lines", "background", "lite"]); 48 | setupFlavors("terrain", ["background"]); 49 | setupFlavors("terrain", ["labels", "lines"], "png"); 50 | 51 | // toner 2010 52 | deprecate("toner", ["2010"]); 53 | 54 | // toner 2011 flavors 55 | deprecate("toner", ["2011", "2011-lines", "2011-labels", "2011-lite"]); 56 | 57 | var odbl = [ 58 | "toner", 59 | "toner-hybrid", 60 | "toner-labels", 61 | "toner-lines", 62 | "toner-background", 63 | "toner-lite" 64 | ]; 65 | 66 | for (var i = 0; i < odbl.length; i++) { 67 | var key = odbl[i]; 68 | 69 | PROVIDERS[key].retina = true; 70 | PROVIDERS[key].attribution = [ 71 | 'Map tiles by Stamen Design, ', 72 | 'under CC BY 3.0. ', 73 | 'Data by OpenStreetMap, ', 74 | 'under ODbL.' 75 | ].join(""); 76 | } 77 | 78 | /* 79 | * Export stamen.tile to the provided namespace. 80 | */ 81 | exports.stamen = exports.stamen || {}; 82 | exports.stamen.tile = exports.stamen.tile || {}; 83 | exports.stamen.tile.providers = PROVIDERS; 84 | exports.stamen.tile.getProvider = getProvider; 85 | 86 | function deprecate(base, flavors) { 87 | var provider = getProvider(base); 88 | 89 | for (var i = 0; i < flavors.length; i++) { 90 | var flavor = [base, flavors[i]].join("-"); 91 | PROVIDERS[flavor] = MAKE_PROVIDER(flavor, provider.type, provider.minZoom, provider.maxZoom); 92 | PROVIDERS[flavor].deprecated = true; 93 | } 94 | }; 95 | 96 | /* 97 | * A shortcut for specifying "flavors" of a style, which are assumed to have the 98 | * same type and zoom range. 99 | */ 100 | function setupFlavors(base, flavors, type) { 101 | var provider = getProvider(base); 102 | for (var i = 0; i < flavors.length; i++) { 103 | var flavor = [base, flavors[i]].join("-"); 104 | PROVIDERS[flavor] = MAKE_PROVIDER(flavor, type || provider.type, provider.minZoom, provider.maxZoom); 105 | } 106 | } 107 | 108 | /* 109 | * Get the named provider, or throw an exception if it doesn't exist. 110 | */ 111 | function getProvider(name) { 112 | if (name in PROVIDERS) { 113 | var provider = PROVIDERS[name]; 114 | 115 | if (provider.deprecated && console && console.warn) { 116 | console.warn(name + " is a deprecated style; it will be redirected to its replacement. For performance improvements, please change your reference."); 117 | } 118 | 119 | return provider; 120 | } else { 121 | throw 'No such provider (' + name + ')'; 122 | } 123 | } 124 | 125 | /* 126 | * StamenTileLayer for modestmaps-js 127 | * 128 | * 129 | * Works with both 1.x and 2.x by checking for the existence of MM.Template. 130 | */ 131 | if (typeof MM === "object") { 132 | var ModestTemplate = (typeof MM.Template === "function") 133 | ? MM.Template 134 | : MM.TemplatedMapProvider; 135 | MM.StamenTileLayer = function(name) { 136 | var provider = getProvider(name); 137 | this._provider = provider; 138 | MM.Layer.call(this, new ModestTemplate(provider.url, provider.subdomains)); 139 | this.provider.setZoomRange(provider.minZoom, provider.maxZoom); 140 | this.attribution = provider.attribution; 141 | }; 142 | 143 | MM.StamenTileLayer.prototype = { 144 | setCoordLimits: function(map) { 145 | var provider = this._provider; 146 | if (provider.extent) { 147 | map.coordLimits = [ 148 | map.locationCoordinate(provider.extent[0]).zoomTo(provider.minZoom), 149 | map.locationCoordinate(provider.extent[1]).zoomTo(provider.maxZoom) 150 | ]; 151 | return true; 152 | } else { 153 | return false; 154 | } 155 | } 156 | }; 157 | 158 | MM.extend(MM.StamenTileLayer, MM.Layer); 159 | } 160 | 161 | /* 162 | * StamenTileLayer for Leaflet 163 | * 164 | * 165 | * Tested with version 0.3 and 0.4, but should work on all 0.x releases. 166 | */ 167 | if (typeof L === "object") { 168 | L.StamenTileLayer = L.TileLayer.extend({ 169 | initialize: function(name, options) { 170 | var provider = getProvider(name), 171 | url = provider.url.replace(/({[A-Z]})/g, function(s) { 172 | return s.toLowerCase(); 173 | }), 174 | opts = L.Util.extend({}, options, { 175 | "minZoom": provider.minZoom, 176 | "maxZoom": provider.maxZoom, 177 | "subdomains": provider.subdomains, 178 | "scheme": "xyz", 179 | "attribution": provider.attribution, 180 | sa_id: name 181 | }); 182 | L.TileLayer.prototype.initialize.call(this, url, opts); 183 | } 184 | }); 185 | 186 | /* 187 | * Factory function for consistency with Leaflet conventions 188 | */ 189 | L.stamenTileLayer = function (options, source) { 190 | return new L.StamenTileLayer(options, source); 191 | }; 192 | } 193 | 194 | /* 195 | * StamenTileLayer for OpenLayers 196 | * 197 | * 198 | * Tested with v2.1x. 199 | */ 200 | if (typeof OpenLayers === "object") { 201 | // make a tile URL template OpenLayers-compatible 202 | function openlayerize(url) { 203 | return url.replace(/({.})/g, function(v) { 204 | return "$" + v.toLowerCase(); 205 | }); 206 | } 207 | 208 | // based on http://www.bostongis.com/PrinterFriendly.aspx?content_name=using_custom_osm_tiles 209 | OpenLayers.Layer.Stamen = OpenLayers.Class(OpenLayers.Layer.OSM, { 210 | initialize: function(name, options) { 211 | var provider = getProvider(name), 212 | url = provider.url, 213 | subdomains = provider.subdomains, 214 | hosts = []; 215 | if (url.indexOf("{S}") > -1) { 216 | for (var i = 0; i < subdomains.length; i++) { 217 | hosts.push(openlayerize(url.replace("{S}", subdomains[i]))); 218 | } 219 | } else { 220 | hosts.push(openlayerize(url)); 221 | } 222 | options = OpenLayers.Util.extend({ 223 | "numZoomLevels": provider.maxZoom, 224 | "buffer": 0, 225 | "transitionEffect": "resize", 226 | // see: 227 | // and: 228 | "tileOptions": { 229 | "crossOriginKeyword": null 230 | }, 231 | "attribution": provider.attribution 232 | }, options); 233 | return OpenLayers.Layer.OSM.prototype.initialize.call(this, name, hosts, options); 234 | } 235 | }); 236 | } 237 | 238 | /* 239 | * StamenMapType for Google Maps API V3 240 | * 241 | */ 242 | if (typeof google === "object" && typeof google.maps === "object") { 243 | 244 | // Extending Google class based on a post by Bogart Salzberg of Portland Webworks, 245 | // http://www.portlandwebworks.com/blog/extending-googlemapsmap-object 246 | google.maps.ImageMapType = (function(_constructor){ 247 | var f = function() { 248 | if (!arguments.length) { 249 | return; 250 | } 251 | _constructor.apply(this, arguments); 252 | } 253 | f.prototype = _constructor.prototype; 254 | return f; 255 | })(google.maps.ImageMapType); 256 | 257 | 258 | google.maps.StamenMapType = function(name) { 259 | var provider = getProvider(name), 260 | subdomains = provider.subdomains; 261 | return google.maps.ImageMapType.call(this, { 262 | "getTileUrl": function(coord, zoom) { 263 | var numTiles = 1 << zoom, 264 | wx = coord.x % numTiles, 265 | x = (wx < 0) ? wx + numTiles : wx, 266 | y = coord.y, 267 | index = (zoom + x + y) % subdomains.length; 268 | return provider.url 269 | .replace("{S}", subdomains[index]) 270 | .replace("{Z}", zoom) 271 | .replace("{X}", x) 272 | .replace("{Y}", y); 273 | }, 274 | "tileSize": new google.maps.Size(256, 256), 275 | "name": name, 276 | "minZoom": provider.minZoom, 277 | "maxZoom": provider.maxZoom 278 | }); 279 | }; 280 | 281 | // FIXME: is there a better way to extend classes in Google land? 282 | // Possibly fixed, see above ^^^ | SC 283 | google.maps.StamenMapType.prototype = new google.maps.ImageMapType; 284 | } 285 | 286 | })(typeof exports === "undefined" ? this : exports); 287 | -------------------------------------------------------------------------------- /01-base/css/lib/leaflet-0.75.css: -------------------------------------------------------------------------------- 1 | /* required styles */ 2 | 3 | .leaflet-map-pane, 4 | .leaflet-tile, 5 | .leaflet-marker-icon, 6 | .leaflet-marker-shadow, 7 | .leaflet-tile-pane, 8 | .leaflet-tile-container, 9 | .leaflet-overlay-pane, 10 | .leaflet-shadow-pane, 11 | .leaflet-marker-pane, 12 | .leaflet-popup-pane, 13 | .leaflet-overlay-pane svg, 14 | .leaflet-zoom-box, 15 | .leaflet-image-layer, 16 | .leaflet-layer { 17 | position: absolute; 18 | left: 0; 19 | top: 0; 20 | } 21 | .leaflet-container { 22 | overflow: hidden; 23 | -ms-touch-action: none; 24 | } 25 | .leaflet-tile, 26 | .leaflet-marker-icon, 27 | .leaflet-marker-shadow { 28 | -webkit-user-select: none; 29 | -moz-user-select: none; 30 | user-select: none; 31 | -webkit-user-drag: none; 32 | } 33 | .leaflet-marker-icon, 34 | .leaflet-marker-shadow { 35 | display: block; 36 | } 37 | /* map is broken in FF if you have max-width: 100% on tiles */ 38 | .leaflet-container img { 39 | max-width: none !important; 40 | } 41 | /* stupid Android 2 doesn't understand "max-width: none" properly */ 42 | .leaflet-container img.leaflet-image-layer { 43 | max-width: 15000px !important; 44 | } 45 | .leaflet-tile { 46 | filter: inherit; 47 | visibility: hidden; 48 | } 49 | .leaflet-tile-loaded { 50 | visibility: inherit; 51 | } 52 | .leaflet-zoom-box { 53 | width: 0; 54 | height: 0; 55 | } 56 | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ 57 | .leaflet-overlay-pane svg { 58 | -moz-user-select: none; 59 | } 60 | 61 | .leaflet-tile-pane { z-index: 2; } 62 | .leaflet-objects-pane { z-index: 3; } 63 | .leaflet-overlay-pane { z-index: 4; } 64 | .leaflet-shadow-pane { z-index: 5; } 65 | .leaflet-marker-pane { z-index: 6; } 66 | .leaflet-popup-pane { z-index: 7; } 67 | 68 | .leaflet-vml-shape { 69 | width: 1px; 70 | height: 1px; 71 | } 72 | .lvml { 73 | behavior: url(#default#VML); 74 | display: inline-block; 75 | position: absolute; 76 | } 77 | 78 | 79 | /* control positioning */ 80 | 81 | .leaflet-control { 82 | position: relative; 83 | z-index: 7; 84 | pointer-events: auto; 85 | } 86 | .leaflet-top, 87 | .leaflet-bottom { 88 | position: absolute; 89 | z-index: 1000; 90 | pointer-events: none; 91 | } 92 | .leaflet-top { 93 | top: 0; 94 | } 95 | .leaflet-right { 96 | right: 0; 97 | } 98 | .leaflet-bottom { 99 | bottom: 0; 100 | } 101 | .leaflet-left { 102 | left: 0; 103 | } 104 | .leaflet-control { 105 | float: left; 106 | clear: both; 107 | } 108 | .leaflet-right .leaflet-control { 109 | float: right; 110 | } 111 | .leaflet-top .leaflet-control { 112 | margin-top: 10px; 113 | } 114 | .leaflet-bottom .leaflet-control { 115 | margin-bottom: 10px; 116 | } 117 | .leaflet-left .leaflet-control { 118 | margin-left: 10px; 119 | } 120 | .leaflet-right .leaflet-control { 121 | margin-right: 10px; 122 | } 123 | 124 | 125 | /* zoom and fade animations */ 126 | 127 | .leaflet-fade-anim .leaflet-tile, 128 | .leaflet-fade-anim .leaflet-popup { 129 | opacity: 0; 130 | -webkit-transition: opacity 0.2s linear; 131 | -moz-transition: opacity 0.2s linear; 132 | -o-transition: opacity 0.2s linear; 133 | transition: opacity 0.2s linear; 134 | } 135 | .leaflet-fade-anim .leaflet-tile-loaded, 136 | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { 137 | opacity: 1; 138 | } 139 | 140 | .leaflet-zoom-anim .leaflet-zoom-animated { 141 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); 142 | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); 143 | -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); 144 | transition: transform 0.25s cubic-bezier(0,0,0.25,1); 145 | } 146 | .leaflet-zoom-anim .leaflet-tile, 147 | .leaflet-pan-anim .leaflet-tile, 148 | .leaflet-touching .leaflet-zoom-animated { 149 | -webkit-transition: none; 150 | -moz-transition: none; 151 | -o-transition: none; 152 | transition: none; 153 | } 154 | 155 | .leaflet-zoom-anim .leaflet-zoom-hide { 156 | visibility: hidden; 157 | } 158 | 159 | 160 | /* cursors */ 161 | 162 | .leaflet-clickable { 163 | cursor: pointer; 164 | } 165 | .leaflet-container { 166 | cursor: -webkit-grab; 167 | cursor: -moz-grab; 168 | } 169 | .leaflet-popup-pane, 170 | .leaflet-control { 171 | cursor: auto; 172 | } 173 | .leaflet-dragging .leaflet-container, 174 | .leaflet-dragging .leaflet-clickable { 175 | cursor: move; 176 | cursor: -webkit-grabbing; 177 | cursor: -moz-grabbing; 178 | } 179 | 180 | 181 | /* visual tweaks */ 182 | 183 | .leaflet-container { 184 | background: #ddd; 185 | outline: 0; 186 | } 187 | .leaflet-container a { 188 | color: #0078A8; 189 | } 190 | .leaflet-container a.leaflet-active { 191 | outline: 2px solid orange; 192 | } 193 | .leaflet-zoom-box { 194 | border: 2px dotted #38f; 195 | background: rgba(255,255,255,0.5); 196 | } 197 | 198 | 199 | /* general typography */ 200 | .leaflet-container { 201 | font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; 202 | } 203 | 204 | 205 | /* general toolbar styles */ 206 | 207 | .leaflet-bar { 208 | box-shadow: 0 1px 5px rgba(0,0,0,0.65); 209 | border-radius: 4px; 210 | } 211 | .leaflet-bar a, 212 | .leaflet-bar a:hover { 213 | background-color: #fff; 214 | border-bottom: 1px solid #ccc; 215 | width: 26px; 216 | height: 26px; 217 | line-height: 26px; 218 | display: block; 219 | text-align: center; 220 | text-decoration: none; 221 | color: black; 222 | } 223 | .leaflet-bar a, 224 | .leaflet-control-layers-toggle { 225 | background-position: 50% 50%; 226 | background-repeat: no-repeat; 227 | display: block; 228 | } 229 | .leaflet-bar a:hover { 230 | background-color: #f4f4f4; 231 | } 232 | .leaflet-bar a:first-child { 233 | border-top-left-radius: 4px; 234 | border-top-right-radius: 4px; 235 | } 236 | .leaflet-bar a:last-child { 237 | border-bottom-left-radius: 4px; 238 | border-bottom-right-radius: 4px; 239 | border-bottom: none; 240 | } 241 | .leaflet-bar a.leaflet-disabled { 242 | cursor: default; 243 | background-color: #f4f4f4; 244 | color: #bbb; 245 | } 246 | 247 | .leaflet-touch .leaflet-bar a { 248 | width: 30px; 249 | height: 30px; 250 | line-height: 30px; 251 | } 252 | 253 | 254 | /* zoom control */ 255 | 256 | .leaflet-control-zoom-in, 257 | .leaflet-control-zoom-out { 258 | font: bold 18px 'Lucida Console', Monaco, monospace; 259 | text-indent: 1px; 260 | } 261 | .leaflet-control-zoom-out { 262 | font-size: 20px; 263 | } 264 | 265 | .leaflet-touch .leaflet-control-zoom-in { 266 | font-size: 22px; 267 | } 268 | .leaflet-touch .leaflet-control-zoom-out { 269 | font-size: 24px; 270 | } 271 | 272 | 273 | /* layers control */ 274 | 275 | .leaflet-control-layers { 276 | box-shadow: 0 1px 5px rgba(0,0,0,0.4); 277 | background: #fff; 278 | border-radius: 5px; 279 | } 280 | .leaflet-control-layers-toggle { 281 | background-image: url(images/layers.png); 282 | width: 36px; 283 | height: 36px; 284 | } 285 | .leaflet-retina .leaflet-control-layers-toggle { 286 | background-image: url(images/layers-2x.png); 287 | background-size: 26px 26px; 288 | } 289 | .leaflet-touch .leaflet-control-layers-toggle { 290 | width: 44px; 291 | height: 44px; 292 | } 293 | .leaflet-control-layers .leaflet-control-layers-list, 294 | .leaflet-control-layers-expanded .leaflet-control-layers-toggle { 295 | display: none; 296 | } 297 | .leaflet-control-layers-expanded .leaflet-control-layers-list { 298 | display: block; 299 | position: relative; 300 | } 301 | .leaflet-control-layers-expanded { 302 | padding: 6px 10px 6px 6px; 303 | color: #333; 304 | background: #fff; 305 | } 306 | .leaflet-control-layers-selector { 307 | margin-top: 2px; 308 | position: relative; 309 | top: 1px; 310 | } 311 | .leaflet-control-layers label { 312 | display: block; 313 | } 314 | .leaflet-control-layers-separator { 315 | height: 0; 316 | border-top: 1px solid #ddd; 317 | margin: 5px -10px 5px -6px; 318 | } 319 | 320 | 321 | /* attribution and scale controls */ 322 | 323 | .leaflet-container .leaflet-control-attribution { 324 | background: #fff; 325 | background: rgba(255, 255, 255, 0.7); 326 | margin: 0; 327 | } 328 | .leaflet-control-attribution, 329 | .leaflet-control-scale-line { 330 | padding: 0 5px; 331 | color: #333; 332 | } 333 | .leaflet-control-attribution a { 334 | text-decoration: none; 335 | } 336 | .leaflet-control-attribution a:hover { 337 | text-decoration: underline; 338 | } 339 | .leaflet-container .leaflet-control-attribution, 340 | .leaflet-container .leaflet-control-scale { 341 | font-size: 11px; 342 | } 343 | .leaflet-left .leaflet-control-scale { 344 | margin-left: 5px; 345 | } 346 | .leaflet-bottom .leaflet-control-scale { 347 | margin-bottom: 5px; 348 | } 349 | .leaflet-control-scale-line { 350 | border: 2px solid #777; 351 | border-top: none; 352 | line-height: 1.1; 353 | padding: 2px 5px 1px; 354 | font-size: 11px; 355 | white-space: nowrap; 356 | overflow: hidden; 357 | -moz-box-sizing: content-box; 358 | box-sizing: content-box; 359 | 360 | background: #fff; 361 | background: rgba(255, 255, 255, 0.5); 362 | } 363 | .leaflet-control-scale-line:not(:first-child) { 364 | border-top: 2px solid #777; 365 | border-bottom: none; 366 | margin-top: -2px; 367 | } 368 | .leaflet-control-scale-line:not(:first-child):not(:last-child) { 369 | border-bottom: 2px solid #777; 370 | } 371 | 372 | .leaflet-touch .leaflet-control-attribution, 373 | .leaflet-touch .leaflet-control-layers, 374 | .leaflet-touch .leaflet-bar { 375 | box-shadow: none; 376 | } 377 | .leaflet-touch .leaflet-control-layers, 378 | .leaflet-touch .leaflet-bar { 379 | border: 2px solid rgba(0,0,0,0.2); 380 | background-clip: padding-box; 381 | } 382 | 383 | 384 | /* popup */ 385 | 386 | .leaflet-popup { 387 | position: absolute; 388 | text-align: center; 389 | } 390 | .leaflet-popup-content-wrapper { 391 | padding: 1px; 392 | text-align: left; 393 | border-radius: 12px; 394 | } 395 | .leaflet-popup-content { 396 | margin: 13px 19px; 397 | line-height: 1.4; 398 | } 399 | .leaflet-popup-content p { 400 | margin: 18px 0; 401 | } 402 | .leaflet-popup-tip-container { 403 | margin: 0 auto; 404 | width: 40px; 405 | height: 20px; 406 | position: relative; 407 | overflow: hidden; 408 | } 409 | .leaflet-popup-tip { 410 | width: 17px; 411 | height: 17px; 412 | padding: 1px; 413 | 414 | margin: -10px auto 0; 415 | 416 | -webkit-transform: rotate(45deg); 417 | -moz-transform: rotate(45deg); 418 | -ms-transform: rotate(45deg); 419 | -o-transform: rotate(45deg); 420 | transform: rotate(45deg); 421 | } 422 | .leaflet-popup-content-wrapper, 423 | .leaflet-popup-tip { 424 | background: white; 425 | 426 | box-shadow: 0 3px 14px rgba(0,0,0,0.4); 427 | } 428 | .leaflet-container a.leaflet-popup-close-button { 429 | position: absolute; 430 | top: 0; 431 | right: 0; 432 | padding: 4px 4px 0 0; 433 | text-align: center; 434 | width: 18px; 435 | height: 14px; 436 | font: 16px/14px Tahoma, Verdana, sans-serif; 437 | color: #c3c3c3; 438 | text-decoration: none; 439 | font-weight: bold; 440 | background: transparent; 441 | } 442 | .leaflet-container a.leaflet-popup-close-button:hover { 443 | color: #999; 444 | } 445 | .leaflet-popup-scrolled { 446 | overflow: auto; 447 | border-bottom: 1px solid #ddd; 448 | border-top: 1px solid #ddd; 449 | } 450 | 451 | .leaflet-oldie .leaflet-popup-content-wrapper { 452 | zoom: 1; 453 | } 454 | .leaflet-oldie .leaflet-popup-tip { 455 | width: 24px; 456 | margin: 0 auto; 457 | 458 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; 459 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); 460 | } 461 | .leaflet-oldie .leaflet-popup-tip-container { 462 | margin-top: -1px; 463 | } 464 | 465 | .leaflet-oldie .leaflet-control-zoom, 466 | .leaflet-oldie .leaflet-control-layers, 467 | .leaflet-oldie .leaflet-popup-content-wrapper, 468 | .leaflet-oldie .leaflet-popup-tip { 469 | border: 1px solid #999; 470 | } 471 | 472 | 473 | /* div icon */ 474 | 475 | .leaflet-div-icon { 476 | background: #fff; 477 | border: 1px solid #666; 478 | } 479 | -------------------------------------------------------------------------------- /02-final/css/lib/leaflet-0.75.css: -------------------------------------------------------------------------------- 1 | /* required styles */ 2 | 3 | .leaflet-map-pane, 4 | .leaflet-tile, 5 | .leaflet-marker-icon, 6 | .leaflet-marker-shadow, 7 | .leaflet-tile-pane, 8 | .leaflet-tile-container, 9 | .leaflet-overlay-pane, 10 | .leaflet-shadow-pane, 11 | .leaflet-marker-pane, 12 | .leaflet-popup-pane, 13 | .leaflet-overlay-pane svg, 14 | .leaflet-zoom-box, 15 | .leaflet-image-layer, 16 | .leaflet-layer { 17 | position: absolute; 18 | left: 0; 19 | top: 0; 20 | } 21 | .leaflet-container { 22 | overflow: hidden; 23 | -ms-touch-action: none; 24 | } 25 | .leaflet-tile, 26 | .leaflet-marker-icon, 27 | .leaflet-marker-shadow { 28 | -webkit-user-select: none; 29 | -moz-user-select: none; 30 | user-select: none; 31 | -webkit-user-drag: none; 32 | } 33 | .leaflet-marker-icon, 34 | .leaflet-marker-shadow { 35 | display: block; 36 | } 37 | /* map is broken in FF if you have max-width: 100% on tiles */ 38 | .leaflet-container img { 39 | max-width: none !important; 40 | } 41 | /* stupid Android 2 doesn't understand "max-width: none" properly */ 42 | .leaflet-container img.leaflet-image-layer { 43 | max-width: 15000px !important; 44 | } 45 | .leaflet-tile { 46 | filter: inherit; 47 | visibility: hidden; 48 | } 49 | .leaflet-tile-loaded { 50 | visibility: inherit; 51 | } 52 | .leaflet-zoom-box { 53 | width: 0; 54 | height: 0; 55 | } 56 | /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ 57 | .leaflet-overlay-pane svg { 58 | -moz-user-select: none; 59 | } 60 | 61 | .leaflet-tile-pane { z-index: 2; } 62 | .leaflet-objects-pane { z-index: 3; } 63 | .leaflet-overlay-pane { z-index: 4; } 64 | .leaflet-shadow-pane { z-index: 5; } 65 | .leaflet-marker-pane { z-index: 6; } 66 | .leaflet-popup-pane { z-index: 7; } 67 | 68 | .leaflet-vml-shape { 69 | width: 1px; 70 | height: 1px; 71 | } 72 | .lvml { 73 | behavior: url(#default#VML); 74 | display: inline-block; 75 | position: absolute; 76 | } 77 | 78 | 79 | /* control positioning */ 80 | 81 | .leaflet-control { 82 | position: relative; 83 | z-index: 7; 84 | pointer-events: auto; 85 | } 86 | .leaflet-top, 87 | .leaflet-bottom { 88 | position: absolute; 89 | z-index: 1000; 90 | pointer-events: none; 91 | } 92 | .leaflet-top { 93 | top: 0; 94 | } 95 | .leaflet-right { 96 | right: 0; 97 | } 98 | .leaflet-bottom { 99 | bottom: 0; 100 | } 101 | .leaflet-left { 102 | left: 0; 103 | } 104 | .leaflet-control { 105 | float: left; 106 | clear: both; 107 | } 108 | .leaflet-right .leaflet-control { 109 | float: right; 110 | } 111 | .leaflet-top .leaflet-control { 112 | margin-top: 10px; 113 | } 114 | .leaflet-bottom .leaflet-control { 115 | margin-bottom: 10px; 116 | } 117 | .leaflet-left .leaflet-control { 118 | margin-left: 10px; 119 | } 120 | .leaflet-right .leaflet-control { 121 | margin-right: 10px; 122 | } 123 | 124 | 125 | /* zoom and fade animations */ 126 | 127 | .leaflet-fade-anim .leaflet-tile, 128 | .leaflet-fade-anim .leaflet-popup { 129 | opacity: 0; 130 | -webkit-transition: opacity 0.2s linear; 131 | -moz-transition: opacity 0.2s linear; 132 | -o-transition: opacity 0.2s linear; 133 | transition: opacity 0.2s linear; 134 | } 135 | .leaflet-fade-anim .leaflet-tile-loaded, 136 | .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { 137 | opacity: 1; 138 | } 139 | 140 | .leaflet-zoom-anim .leaflet-zoom-animated { 141 | -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); 142 | -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); 143 | -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); 144 | transition: transform 0.25s cubic-bezier(0,0,0.25,1); 145 | } 146 | .leaflet-zoom-anim .leaflet-tile, 147 | .leaflet-pan-anim .leaflet-tile, 148 | .leaflet-touching .leaflet-zoom-animated { 149 | -webkit-transition: none; 150 | -moz-transition: none; 151 | -o-transition: none; 152 | transition: none; 153 | } 154 | 155 | .leaflet-zoom-anim .leaflet-zoom-hide { 156 | visibility: hidden; 157 | } 158 | 159 | 160 | /* cursors */ 161 | 162 | .leaflet-clickable { 163 | cursor: pointer; 164 | } 165 | .leaflet-container { 166 | cursor: -webkit-grab; 167 | cursor: -moz-grab; 168 | } 169 | .leaflet-popup-pane, 170 | .leaflet-control { 171 | cursor: auto; 172 | } 173 | .leaflet-dragging .leaflet-container, 174 | .leaflet-dragging .leaflet-clickable { 175 | cursor: move; 176 | cursor: -webkit-grabbing; 177 | cursor: -moz-grabbing; 178 | } 179 | 180 | 181 | /* visual tweaks */ 182 | 183 | .leaflet-container { 184 | background: #ddd; 185 | outline: 0; 186 | } 187 | .leaflet-container a { 188 | color: #0078A8; 189 | } 190 | .leaflet-container a.leaflet-active { 191 | outline: 2px solid orange; 192 | } 193 | .leaflet-zoom-box { 194 | border: 2px dotted #38f; 195 | background: rgba(255,255,255,0.5); 196 | } 197 | 198 | 199 | /* general typography */ 200 | .leaflet-container { 201 | font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; 202 | } 203 | 204 | 205 | /* general toolbar styles */ 206 | 207 | .leaflet-bar { 208 | box-shadow: 0 1px 5px rgba(0,0,0,0.65); 209 | border-radius: 4px; 210 | } 211 | .leaflet-bar a, 212 | .leaflet-bar a:hover { 213 | background-color: #fff; 214 | border-bottom: 1px solid #ccc; 215 | width: 26px; 216 | height: 26px; 217 | line-height: 26px; 218 | display: block; 219 | text-align: center; 220 | text-decoration: none; 221 | color: black; 222 | } 223 | .leaflet-bar a, 224 | .leaflet-control-layers-toggle { 225 | background-position: 50% 50%; 226 | background-repeat: no-repeat; 227 | display: block; 228 | } 229 | .leaflet-bar a:hover { 230 | background-color: #f4f4f4; 231 | } 232 | .leaflet-bar a:first-child { 233 | border-top-left-radius: 4px; 234 | border-top-right-radius: 4px; 235 | } 236 | .leaflet-bar a:last-child { 237 | border-bottom-left-radius: 4px; 238 | border-bottom-right-radius: 4px; 239 | border-bottom: none; 240 | } 241 | .leaflet-bar a.leaflet-disabled { 242 | cursor: default; 243 | background-color: #f4f4f4; 244 | color: #bbb; 245 | } 246 | 247 | .leaflet-touch .leaflet-bar a { 248 | width: 30px; 249 | height: 30px; 250 | line-height: 30px; 251 | } 252 | 253 | 254 | /* zoom control */ 255 | 256 | .leaflet-control-zoom-in, 257 | .leaflet-control-zoom-out { 258 | font: bold 18px 'Lucida Console', Monaco, monospace; 259 | text-indent: 1px; 260 | } 261 | .leaflet-control-zoom-out { 262 | font-size: 20px; 263 | } 264 | 265 | .leaflet-touch .leaflet-control-zoom-in { 266 | font-size: 22px; 267 | } 268 | .leaflet-touch .leaflet-control-zoom-out { 269 | font-size: 24px; 270 | } 271 | 272 | 273 | /* layers control */ 274 | 275 | .leaflet-control-layers { 276 | box-shadow: 0 1px 5px rgba(0,0,0,0.4); 277 | background: #fff; 278 | border-radius: 5px; 279 | } 280 | .leaflet-control-layers-toggle { 281 | background-image: url(images/layers.png); 282 | width: 36px; 283 | height: 36px; 284 | } 285 | .leaflet-retina .leaflet-control-layers-toggle { 286 | background-image: url(images/layers-2x.png); 287 | background-size: 26px 26px; 288 | } 289 | .leaflet-touch .leaflet-control-layers-toggle { 290 | width: 44px; 291 | height: 44px; 292 | } 293 | .leaflet-control-layers .leaflet-control-layers-list, 294 | .leaflet-control-layers-expanded .leaflet-control-layers-toggle { 295 | display: none; 296 | } 297 | .leaflet-control-layers-expanded .leaflet-control-layers-list { 298 | display: block; 299 | position: relative; 300 | } 301 | .leaflet-control-layers-expanded { 302 | padding: 6px 10px 6px 6px; 303 | color: #333; 304 | background: #fff; 305 | } 306 | .leaflet-control-layers-selector { 307 | margin-top: 2px; 308 | position: relative; 309 | top: 1px; 310 | } 311 | .leaflet-control-layers label { 312 | display: block; 313 | } 314 | .leaflet-control-layers-separator { 315 | height: 0; 316 | border-top: 1px solid #ddd; 317 | margin: 5px -10px 5px -6px; 318 | } 319 | 320 | 321 | /* attribution and scale controls */ 322 | 323 | .leaflet-container .leaflet-control-attribution { 324 | background: #fff; 325 | background: rgba(255, 255, 255, 0.7); 326 | margin: 0; 327 | } 328 | .leaflet-control-attribution, 329 | .leaflet-control-scale-line { 330 | padding: 0 5px; 331 | color: #333; 332 | } 333 | .leaflet-control-attribution a { 334 | text-decoration: none; 335 | } 336 | .leaflet-control-attribution a:hover { 337 | text-decoration: underline; 338 | } 339 | .leaflet-container .leaflet-control-attribution, 340 | .leaflet-container .leaflet-control-scale { 341 | font-size: 11px; 342 | } 343 | .leaflet-left .leaflet-control-scale { 344 | margin-left: 5px; 345 | } 346 | .leaflet-bottom .leaflet-control-scale { 347 | margin-bottom: 5px; 348 | } 349 | .leaflet-control-scale-line { 350 | border: 2px solid #777; 351 | border-top: none; 352 | line-height: 1.1; 353 | padding: 2px 5px 1px; 354 | font-size: 11px; 355 | white-space: nowrap; 356 | overflow: hidden; 357 | -moz-box-sizing: content-box; 358 | box-sizing: content-box; 359 | 360 | background: #fff; 361 | background: rgba(255, 255, 255, 0.5); 362 | } 363 | .leaflet-control-scale-line:not(:first-child) { 364 | border-top: 2px solid #777; 365 | border-bottom: none; 366 | margin-top: -2px; 367 | } 368 | .leaflet-control-scale-line:not(:first-child):not(:last-child) { 369 | border-bottom: 2px solid #777; 370 | } 371 | 372 | .leaflet-touch .leaflet-control-attribution, 373 | .leaflet-touch .leaflet-control-layers, 374 | .leaflet-touch .leaflet-bar { 375 | box-shadow: none; 376 | } 377 | .leaflet-touch .leaflet-control-layers, 378 | .leaflet-touch .leaflet-bar { 379 | border: 2px solid rgba(0,0,0,0.2); 380 | background-clip: padding-box; 381 | } 382 | 383 | 384 | /* popup */ 385 | 386 | .leaflet-popup { 387 | position: absolute; 388 | text-align: center; 389 | } 390 | .leaflet-popup-content-wrapper { 391 | padding: 1px; 392 | text-align: left; 393 | border-radius: 12px; 394 | } 395 | .leaflet-popup-content { 396 | margin: 13px 19px; 397 | line-height: 1.4; 398 | } 399 | .leaflet-popup-content p { 400 | margin: 18px 0; 401 | } 402 | .leaflet-popup-tip-container { 403 | margin: 0 auto; 404 | width: 40px; 405 | height: 20px; 406 | position: relative; 407 | overflow: hidden; 408 | } 409 | .leaflet-popup-tip { 410 | width: 17px; 411 | height: 17px; 412 | padding: 1px; 413 | 414 | margin: -10px auto 0; 415 | 416 | -webkit-transform: rotate(45deg); 417 | -moz-transform: rotate(45deg); 418 | -ms-transform: rotate(45deg); 419 | -o-transform: rotate(45deg); 420 | transform: rotate(45deg); 421 | } 422 | .leaflet-popup-content-wrapper, 423 | .leaflet-popup-tip { 424 | background: white; 425 | 426 | box-shadow: 0 3px 14px rgba(0,0,0,0.4); 427 | } 428 | .leaflet-container a.leaflet-popup-close-button { 429 | position: absolute; 430 | top: 0; 431 | right: 0; 432 | padding: 4px 4px 0 0; 433 | text-align: center; 434 | width: 18px; 435 | height: 14px; 436 | font: 16px/14px Tahoma, Verdana, sans-serif; 437 | color: #c3c3c3; 438 | text-decoration: none; 439 | font-weight: bold; 440 | background: transparent; 441 | } 442 | .leaflet-container a.leaflet-popup-close-button:hover { 443 | color: #999; 444 | } 445 | .leaflet-popup-scrolled { 446 | overflow: auto; 447 | border-bottom: 1px solid #ddd; 448 | border-top: 1px solid #ddd; 449 | } 450 | 451 | .leaflet-oldie .leaflet-popup-content-wrapper { 452 | zoom: 1; 453 | } 454 | .leaflet-oldie .leaflet-popup-tip { 455 | width: 24px; 456 | margin: 0 auto; 457 | 458 | -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; 459 | filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); 460 | } 461 | .leaflet-oldie .leaflet-popup-tip-container { 462 | margin-top: -1px; 463 | } 464 | 465 | .leaflet-oldie .leaflet-control-zoom, 466 | .leaflet-oldie .leaflet-control-layers, 467 | .leaflet-oldie .leaflet-popup-content-wrapper, 468 | .leaflet-oldie .leaflet-popup-tip { 469 | border: 1px solid #999; 470 | } 471 | 472 | 473 | /* div icon */ 474 | 475 | .leaflet-div-icon { 476 | background: #fff; 477 | border: 1px solid #666; 478 | } 479 | -------------------------------------------------------------------------------- /01-base/json/ia-counties.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 4 | 5 | "features": [ 6 | { "type": "Feature", "properties": { "geoid": "05000US19081", "name": "Hancock County, IA", "population": "11175" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.970448, 43.082609 ], [ -93.970415, 43.255358 ], [ -93.497635, 43.255468 ], [ -93.498617, 42.908512 ], [ -93.734256, 42.908008 ], [ -93.813564, 42.908758 ], [ -93.971238, 42.907762 ], [ -93.970448, 43.082609 ] ] ] ] } }, 7 | { "type": "Feature", "properties": { "geoid": "05000US19045", "name": "Clinton County, IA", "population": "48663" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -90.670051, 41.76363 ], [ -90.676526, 41.760932 ], [ -90.676955, 41.755375 ], [ -90.681749, 41.754552 ], [ -90.684772, 41.757022 ], [ -90.687215, 41.756633 ], [ -90.68688, 41.752471 ], [ -90.69314, 41.750642 ], [ -90.694342, 41.748928 ], [ -90.691533, 41.746122 ], [ -90.691642, 41.743128 ], [ -90.697542, 41.743028 ], [ -90.703572, 41.737226 ], [ -90.707242, 41.740328 ], [ -90.711736, 41.739576 ], [ -90.713902, 41.734578 ], [ -90.722341, 41.736996 ], [ -90.726187, 41.742314 ], [ -90.732275, 41.737385 ], [ -90.736152, 41.740574 ], [ -90.743643, 41.741527 ], [ -90.746143, 41.743827 ], [ -90.748926, 41.74415 ], [ -90.753156, 41.749204 ], [ -90.752669, 41.752269 ], [ -90.755017, 41.756615 ], [ -90.759626, 41.758813 ], [ -90.761303, 41.762403 ], [ -90.771136, 41.76554 ], [ -90.773089, 41.767782 ], [ -90.784727, 41.768585 ], [ -90.786212, 41.771369 ], [ -90.898373, 41.771392 ], [ -90.898373, 42.033548 ], [ -90.154221, 42.033073 ], [ -90.150916, 42.02944 ], [ -90.148096, 42.020014 ], [ -90.143776, 42.014881 ], [ -90.141167, 42.008931 ], [ -90.140613, 41.995999 ], [ -90.146033, 41.988139 ], [ -90.146225, 41.981329 ], [ -90.153828, 41.974121 ], [ -90.164135, 41.956178 ], [ -90.164939, 41.948861 ], [ -90.163847, 41.944934 ], [ -90.1516, 41.931002 ], [ -90.153584, 41.906614 ], [ -90.157019, 41.898019 ], [ -90.170041, 41.876439 ], [ -90.173237, 41.86461 ], [ -90.173009, 41.857393 ], [ -90.181901, 41.843216 ], [ -90.183973, 41.83307 ], [ -90.181889, 41.827755 ], [ -90.180643, 41.811979 ], [ -90.181973, 41.80707 ], [ -90.187969, 41.803163 ], [ -90.222161, 41.793175 ], [ -90.263286, 41.772112 ], [ -90.278633, 41.767358 ], [ -90.309973, 41.74342 ], [ -90.315549, 41.734426 ], [ -90.316562, 41.728928 ], [ -90.323646, 41.733483 ], [ -90.328896, 41.73442 ], [ -90.333874, 41.739404 ], [ -90.339948, 41.740523 ], [ -90.342573, 41.739356 ], [ -90.344677, 41.733663 ], [ -90.347393, 41.732953 ], [ -90.347728, 41.730049 ], [ -90.356673, 41.731876 ], [ -90.358046, 41.730961 ], [ -90.35661, 41.729269 ], [ -90.357525, 41.727783 ], [ -90.365003, 41.72794 ], [ -90.372789, 41.732075 ], [ -90.374703, 41.734429 ], [ -90.388329, 41.737131 ], [ -90.390254, 41.735966 ], [ -90.388242, 41.732306 ], [ -90.389586, 41.730569 ], [ -90.394134, 41.731326 ], [ -90.395994, 41.733819 ], [ -90.403353, 41.729706 ], [ -90.407931, 41.729296 ], [ -90.410585, 41.732429 ], [ -90.40628, 41.734211 ], [ -90.406249, 41.735675 ], [ -90.411041, 41.737711 ], [ -90.412504, 41.741118 ], [ -90.425113, 41.735999 ], [ -90.428015, 41.736617 ], [ -90.427526, 41.73824 ], [ -90.423099, 41.740572 ], [ -90.427463, 41.74446 ], [ -90.424201, 41.750559 ], [ -90.433939, 41.756594 ], [ -90.435956, 41.760323 ], [ -90.440811, 41.758722 ], [ -90.446583, 41.763844 ], [ -90.450402, 41.764826 ], [ -90.458462, 41.758263 ], [ -90.463959, 41.758536 ], [ -90.468144, 41.762422 ], [ -90.468879, 41.766172 ], [ -90.467262, 41.768871 ], [ -90.471723, 41.773603 ], [ -90.480213, 41.771222 ], [ -90.483541, 41.769163 ], [ -90.485006, 41.766395 ], [ -90.488946, 41.767468 ], [ -90.495786, 41.765887 ], [ -90.49927, 41.767669 ], [ -90.503721, 41.767347 ], [ -90.507537, 41.769476 ], [ -90.512794, 41.765339 ], [ -90.514351, 41.765957 ], [ -90.515661, 41.769685 ], [ -90.521802, 41.771081 ], [ -90.523175, 41.772796 ], [ -90.527055, 41.772567 ], [ -90.52797, 41.77531 ], [ -90.537345, 41.776435 ], [ -90.542816, 41.765919 ], [ -90.549475, 41.769236 ], [ -90.549537, 41.763565 ], [ -90.554549, 41.764641 ], [ -90.559637, 41.763633 ], [ -90.564763, 41.765831 ], [ -90.565906, 41.765117 ], [ -90.565416, 41.762468 ], [ -90.570579, 41.763573 ], [ -90.579131, 41.759129 ], [ -90.584141, 41.763267 ], [ -90.58863, 41.763815 ], [ -90.589187, 41.769945 ], [ -90.59242, 41.770639 ], [ -90.597092, 41.767608 ], [ -90.600083, 41.762988 ], [ -90.611263, 41.763966 ], [ -90.612844, 41.758205 ], [ -90.616353, 41.756465 ], [ -90.622012, 41.762727 ], [ -90.629579, 41.765308 ], [ -90.632267, 41.764784 ], [ -90.63557, 41.761081 ], [ -90.64238, 41.761541 ], [ -90.646201, 41.756649 ], [ -90.651454, 41.755416 ], [ -90.656095, 41.757635 ], [ -90.655727, 41.760356 ], [ -90.658718, 41.764816 ], [ -90.670051, 41.76363 ] ] ] ] } }, 8 | { "type": "Feature", "properties": { "geoid": "05000US19077", "name": "Guthrie County, IA", "population": "10794" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.744109, 41.778286 ], [ -94.744876, 41.862394 ], [ -94.28034, 41.862999 ], [ -94.280057, 41.601312 ], [ -94.241356, 41.600971 ], [ -94.241593, 41.503679 ], [ -94.700629, 41.504148 ], [ -94.700745, 41.602184 ], [ -94.744204, 41.602185 ], [ -94.744109, 41.778286 ] ] ] ] } }, 9 | { "type": "Feature", "properties": { "geoid": "05000US19059", "name": "Dickinson County, IA", "population": "16877" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.269263, 43.255373 ], [ -95.388078, 43.255221 ], [ -95.387787, 43.500226 ], [ -95.25086, 43.50052 ], [ -95.244844, 43.501196 ], [ -95.154936, 43.500448 ], [ -94.914582, 43.500853 ], [ -94.913723, 43.255054 ], [ -95.269263, 43.255373 ] ] ] ] } }, 10 | { "type": "Feature", "properties": { "geoid": "05000US19005", "name": "Allamakee County, IA", "population": "14152" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.604819, 43.254799 ], [ -91.603992, 43.342047 ], [ -91.610885, 43.342137 ], [ -91.610835, 43.500657 ], [ -91.261184, 43.501015 ], [ -91.217706, 43.50055 ], [ -91.217615, 43.491008 ], [ -91.215282, 43.484798 ], [ -91.216035, 43.481142 ], [ -91.220399, 43.471306 ], [ -91.224586, 43.465525 ], [ -91.232241, 43.460018 ], [ -91.233367, 43.455168 ], [ -91.232276, 43.450952 ], [ -91.22875, 43.445537 ], [ -91.207145, 43.425031 ], [ -91.203144, 43.419805 ], [ -91.200359, 43.412701 ], [ -91.200527, 43.408486 ], [ -91.19767, 43.395334 ], [ -91.198953, 43.389835 ], [ -91.206072, 43.374976 ], [ -91.21499, 43.368006 ], [ -91.21477, 43.365874 ], [ -91.20662, 43.352524 ], [ -91.201847, 43.349103 ], [ -91.181115, 43.345926 ], [ -91.154806, 43.334826 ], [ -91.132813, 43.32803 ], [ -91.107237, 43.313645 ], [ -91.085652, 43.29187 ], [ -91.07371, 43.274746 ], [ -91.071724, 43.271392 ], [ -91.072649, 43.262129 ], [ -91.069937, 43.260272 ], [ -91.05975, 43.259074 ], [ -91.05791, 43.253968 ], [ -91.062562, 43.243165 ], [ -91.066398, 43.239293 ], [ -91.087456, 43.221891 ], [ -91.107931, 43.206578 ], [ -91.119115, 43.200366 ], [ -91.12217, 43.197255 ], [ -91.123896, 43.193536 ], [ -91.124428, 43.187886 ], [ -91.134173, 43.174405 ], [ -91.138649, 43.169993 ], [ -91.143283, 43.156413 ], [ -91.1462, 43.152405 ], [ -91.1562, 43.142945 ], [ -91.175253, 43.134665 ], [ -91.177932, 43.128875 ], [ -91.178251, 43.124982 ], [ -91.175193, 43.103771 ], [ -91.177222, 43.080247 ], [ -91.605307, 43.081653 ], [ -91.604819, 43.254799 ] ] ] ] } }, 11 | { "type": "Feature", "properties": { "geoid": "05000US19015", "name": "Boone County, IA", "population": "26326" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.164619, 42.0346 ], [ -94.164704, 42.20992 ], [ -93.69839, 42.209339 ], [ -93.698032, 41.86337 ], [ -94.164138, 41.863244 ], [ -94.164619, 42.0346 ] ] ] ] } }, 12 | { "type": "Feature", "properties": { "geoid": "05000US19083", "name": "Hardin County, IA", "population": "17406" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.346614, 42.209229 ], [ -93.463043, 42.209302 ], [ -93.462635, 42.470802 ], [ -93.499098, 42.470975 ], [ -93.499485, 42.5577 ], [ -93.027, 42.55681 ], [ -93.027115, 42.470776 ], [ -93.002902, 42.470638 ], [ -93.001674, 42.209267 ], [ -93.346614, 42.209229 ] ] ] ] } }, 13 | { "type": "Feature", "properties": { "geoid": "05000US19185", "name": "Wayne County, IA", "population": "6385" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.556774, 40.638485 ], [ -93.55654, 40.898295 ], [ -93.442126, 40.897581 ], [ -93.097595, 40.898451 ], [ -93.097296, 40.584014 ], [ -93.260429, 40.580814 ], [ -93.556899, 40.580235 ], [ -93.556774, 40.638485 ] ] ] ] } }, 14 | { "type": "Feature", "properties": { "geoid": "05000US19125", "name": "Marion County, IA", "population": "33308" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.10102, 41.508326 ], [ -92.871421, 41.508522 ], [ -92.869771, 41.161066 ], [ -93.327886, 41.160659 ], [ -93.328614, 41.507824 ], [ -93.10102, 41.508326 ] ] ] ] } }, 15 | { "type": "Feature", "properties": { "geoid": "05000US19155", "name": "Pottawattamie County, IA", "population": "93153" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.49898, 41.160116 ], [ -95.880521, 41.159874 ], [ -95.875798, 41.165268 ], [ -95.870574, 41.167784 ], [ -95.853451, 41.165518 ], [ -95.846957, 41.166604 ], [ -95.842039, 41.171367 ], [ -95.842188, 41.177421 ], [ -95.848798, 41.184296 ], [ -95.861659, 41.187965 ], [ -95.876582, 41.188067 ], [ -95.910236, 41.184403 ], [ -95.91891, 41.18654 ], [ -95.924152, 41.191474 ], [ -95.927975, 41.200069 ], [ -95.927183, 41.208971 ], [ -95.923045, 41.215824 ], [ -95.912977, 41.225895 ], [ -95.910703, 41.23623 ], [ -95.912472, 41.242295 ], [ -95.920445, 41.255722 ], [ -95.922304, 41.26302 ], [ -95.921497, 41.267604 ], [ -95.914091, 41.272428 ], [ -95.928646, 41.281332 ], [ -95.929651, 41.292262 ], [ -95.927642, 41.29844 ], [ -95.924691, 41.299597 ], [ -95.920247, 41.301191 ], [ -95.905899, 41.301038 ], [ -95.904222, 41.297591 ], [ -95.906144, 41.287488 ], [ -95.912581, 41.279527 ], [ -95.901985, 41.274496 ], [ -95.884495, 41.280689 ], [ -95.874324, 41.287394 ], [ -95.871141, 41.29669 ], [ -95.874184, 41.307924 ], [ -95.882916, 41.316647 ], [ -95.892035, 41.320374 ], [ -95.901736, 41.321474 ], [ -95.918651, 41.320079 ], [ -95.929383, 41.32313 ], [ -95.946532, 41.333139 ], [ -95.953418, 41.33947 ], [ -95.957137, 41.345902 ], [ -95.95713, 41.349593 ], [ -95.953953, 41.353776 ], [ -95.936923, 41.359247 ], [ -95.929681, 41.367058 ], [ -95.929486, 41.375326 ], [ -95.936411, 41.385876 ], [ -95.937694, 41.39477 ], [ -95.929677, 41.411071 ], [ -95.932778, 41.430815 ], [ -95.920857, 41.443428 ], [ -95.919989, 41.452604 ], [ -95.92451, 41.458914 ], [ -95.93634, 41.465304 ], [ -95.945007, 41.466485 ], [ -95.965042, 41.463212 ], [ -95.984279, 41.470939 ], [ -96.006609, 41.473038 ], [ -96.017836, 41.483584 ], [ -96.019543, 41.491592 ], [ -96.000649, 41.50254 ], [ -95.996194, 41.50696 ], [ -95.154722, 41.505211 ], [ -95.155851, 41.159236 ], [ -95.49898, 41.160116 ] ] ] ] } }, 16 | { "type": "Feature", "properties": { "geoid": "05000US19171", "name": "Tama County, IA", "population": "17568" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.298845, 42.210769 ], [ -92.299279, 42.088581 ], [ -92.297268, 41.979052 ], [ -92.298164, 41.862779 ], [ -92.765999, 41.862373 ], [ -92.765772, 41.972904 ], [ -92.76809, 42.29668 ], [ -92.298792, 42.297527 ], [ -92.298845, 42.210769 ] ] ] ] } }, 17 | { "type": "Feature", "properties": { "geoid": "05000US19107", "name": "Keokuk County, IA", "population": "10361" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.411159, 41.336741 ], [ -92.411995, 41.509548 ], [ -91.946043, 41.510749 ], [ -91.946939, 41.337164 ], [ -91.944734, 41.238023 ], [ -91.945571, 41.163578 ], [ -92.410233, 41.161942 ], [ -92.411159, 41.336741 ] ] ] ] } }, 18 | { "type": "Feature", "properties": { "geoid": "05000US19177", "name": "Van Buren County, IA", "name": "Van Buren County, IA", "population": "7487" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.83325, 40.609759 ], [ -91.947709, 40.605471 ], [ -92.17978, 40.600529 ], [ -92.178107, 40.696853 ], [ -92.179072, 40.89972 ], [ -91.867845, 40.901362 ], [ -91.718268, 40.900805 ], [ -91.718656, 40.693365 ], [ -91.718045, 40.614047 ], [ -91.716432, 40.614075 ], [ -91.716769, 40.59853 ], [ -91.720058, 40.601527 ], [ -91.729115, 40.61364 ], [ -91.83325, 40.609759 ] ] ] ] } }, 19 | { "type": "Feature", "properties": { "geoid": "05000US19183", "name": "Washington County, IA", "population": "21906" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.94474, 41.236808 ], [ -91.946939, 41.337164 ], [ -91.946043, 41.510749 ], [ -91.790053, 41.511739 ], [ -91.519828, 41.51101 ], [ -91.526116, 41.509974 ], [ -91.528094, 41.508609 ], [ -91.527121, 41.50689 ], [ -91.518988, 41.502584 ], [ -91.519936, 41.499455 ], [ -91.519135, 41.49764 ], [ -91.516764, 41.496829 ], [ -91.514018, 41.497443 ], [ -91.510072, 41.502671 ], [ -91.508094, 41.502831 ], [ -91.506799, 41.501653 ], [ -91.50741, 41.49918 ], [ -91.510788, 41.497374 ], [ -91.510979, 41.495645 ], [ -91.508583, 41.492984 ], [ -91.503745, 41.493362 ], [ -91.501316, 41.48734 ], [ -91.502712, 41.484708 ], [ -91.501777, 41.4822 ], [ -91.502103, 41.47745 ], [ -91.505003, 41.476063 ], [ -91.509669, 41.477162 ], [ -91.512948, 41.476315 ], [ -91.516117, 41.468482 ], [ -91.505209, 41.461495 ], [ -91.498773, 41.459213 ], [ -91.499671, 41.45528 ], [ -91.498646, 41.453442 ], [ -91.502475, 41.450902 ], [ -91.502401, 41.448391 ], [ -91.490711, 41.440427 ], [ -91.485399, 41.42907 ], [ -91.483863, 41.428194 ], [ -91.486004, 41.22382 ], [ -91.485717, 41.162405 ], [ -91.615758, 41.163529 ], [ -91.838931, 41.161514 ], [ -91.945571, 41.163578 ], [ -91.94474, 41.236808 ] ] ] ] } }, 20 | { "type": "Feature", "properties": { "geoid": "05000US19127", "name": "Marshall County, IA", "population": "40922" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.766793, 42.12346 ], [ -92.765999, 41.862373 ], [ -93.231858, 41.862711 ], [ -93.231722, 42.208886 ], [ -92.767463, 42.21014 ], [ -92.766793, 42.12346 ] ] ] ] } }, 21 | { "type": "Feature", "properties": { "geoid": "05000US19165", "name": "Shelby County, IA", "population": "12034" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.209023, 41.863709 ], [ -95.092861, 41.863374 ], [ -95.09252, 41.602055 ], [ -95.040748, 41.602152 ], [ -95.04077, 41.50469 ], [ -95.497997, 41.506074 ], [ -95.497793, 41.602333 ], [ -95.558143, 41.602383 ], [ -95.557277, 41.863449 ], [ -95.209023, 41.863709 ] ] ] ] } }, 22 | { "type": "Feature", "properties": { "geoid": "05000US19085", "name": "Harrison County, IA", "population": "14600" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -96.11466, 41.603703 ], [ -96.118233, 41.613291 ], [ -96.116755, 41.620901 ], [ -96.111339, 41.627137 ], [ -96.100709, 41.635451 ], [ -96.097777, 41.639625 ], [ -96.095221, 41.650114 ], [ -96.096116, 41.654472 ], [ -96.100055, 41.661077 ], [ -96.112454, 41.668486 ], [ -96.121048, 41.677002 ], [ -96.122604, 41.68304 ], [ -96.121853, 41.689205 ], [ -96.116161, 41.695886 ], [ -96.108559, 41.699279 ], [ -96.085358, 41.697596 ], [ -96.077712, 41.700022 ], [ -96.073225, 41.704062 ], [ -96.073361, 41.710199 ], [ -96.076642, 41.715657 ], [ -96.085272, 41.721313 ], [ -96.102212, 41.727641 ], [ -96.105329, 41.731505 ], [ -96.106354, 41.738046 ], [ -96.104805, 41.743016 ], [ -96.100981, 41.747572 ], [ -96.087361, 41.752176 ], [ -96.081211, 41.757081 ], [ -96.078497, 41.762632 ], [ -96.079021, 41.77235 ], [ -96.077546, 41.777822 ], [ -96.066377, 41.788981 ], [ -96.06479, 41.794406 ], [ -96.06756, 41.800993 ], [ -96.075353, 41.807716 ], [ -96.080161, 41.810023 ], [ -96.09748, 41.813917 ], [ -96.106565, 41.819613 ], [ -96.109384, 41.823135 ], [ -96.110831, 41.827914 ], [ -96.110967, 41.831596 ], [ -96.107617, 41.8404 ], [ -96.111252, 41.850229 ], [ -96.120152, 41.857188 ], [ -96.132615, 41.862053 ], [ -96.139012, 41.866301 ], [ -95.99134, 41.863499 ], [ -95.557277, 41.863449 ], [ -95.558143, 41.602383 ], [ -95.497793, 41.602333 ], [ -95.497997, 41.506074 ], [ -95.996194, 41.50696 ], [ -95.992777, 41.514596 ], [ -95.994308, 41.523743 ], [ -95.999966, 41.53948 ], [ -96.005112, 41.54325 ], [ -96.013876, 41.545315 ], [ -96.01915, 41.54514 ], [ -96.02349, 41.543438 ], [ -96.026657, 41.540366 ], [ -96.031127, 41.523004 ], [ -96.034441, 41.521051 ], [ -96.03429, 41.513036 ], [ -96.036603, 41.509047 ], [ -96.040613, 41.506893 ], [ -96.048311, 41.507262 ], [ -96.055048, 41.509508 ], [ -96.073665, 41.52368 ], [ -96.082654, 41.525974 ], [ -96.091908, 41.534049 ], [ -96.096586, 41.545397 ], [ -96.096313, 41.550987 ], [ -96.092222, 41.560886 ], [ -96.082486, 41.571145 ], [ -96.081188, 41.574296 ], [ -96.082285, 41.580683 ], [ -96.087186, 41.58655 ], [ -96.105829, 41.593574 ], [ -96.11466, 41.603703 ] ] ] ] } }, 23 | { "type": "Feature", "properties": { "geoid": "05000US19065", "name": "Fayette County, IA", "population": "20693" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.081656, 42.729755 ], [ -92.081146, 43.082794 ], [ -91.605307, 43.081653 ], [ -91.60734, 42.820666 ], [ -91.606538, 42.818924 ], [ -91.608423, 42.81278 ], [ -91.607471, 42.802663 ], [ -91.606354, 42.71725 ], [ -91.607059, 42.643973 ], [ -91.844289, 42.643638 ], [ -91.924169, 42.641827 ], [ -92.081661, 42.642056 ], [ -92.081656, 42.729755 ] ] ] ] } }, 24 | { "type": "Feature", "properties": { "geoid": "05000US19039", "name": "Clarke County, IA", "population": "9284" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.787031, 40.89935 ], [ -93.904967, 40.89667 ], [ -94.014803, 40.897031 ], [ -94.014189, 41.156762 ], [ -93.898813, 41.15661 ], [ -93.778696, 41.162142 ], [ -93.557556, 41.161271 ], [ -93.556288, 40.985905 ], [ -93.55654, 40.898295 ], [ -93.787031, 40.89935 ] ] ] ] } }, 25 | { "type": "Feature", "properties": { "geoid": "05000US19105", "name": "Jones County, IA", "population": "20607" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.130079, 42.295761 ], [ -90.89802, 42.295236 ], [ -90.898484, 41.946245 ], [ -91.365789, 41.94741 ], [ -91.363263, 42.296445 ], [ -91.130079, 42.295761 ] ] ] ] } }, 26 | { "type": "Feature", "properties": { "geoid": "05000US19141", "name": "O'Brien County, IA", "name": "O'Brien County, IA", "population": "14173" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.62459, 43.258422 ], [ -95.50577, 43.255748 ], [ -95.388078, 43.255221 ], [ -95.388182, 42.909897 ], [ -95.62304, 42.910311 ], [ -95.859377, 42.909097 ], [ -95.860295, 43.084627 ], [ -95.862143, 43.185882 ], [ -95.861914, 43.257566 ], [ -95.62459, 43.258422 ] ] ] ] } }, 27 | { "type": "Feature", "properties": { "geoid": "05000US19091", "name": "Humboldt County, IA", "population": "9731" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.324927, 42.908009 ], [ -93.971238, 42.907762 ], [ -93.971714, 42.644707 ], [ -94.19351, 42.644327 ], [ -94.443083, 42.645164 ], [ -94.442954, 42.908073 ], [ -94.324927, 42.908009 ] ] ] ] } }, 28 | { "type": "Feature", "properties": { "geoid": "05000US19009", "name": "Audubon County, IA", "population": "5935" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.093161, 41.688352 ], [ -95.092861, 41.863374 ], [ -94.744876, 41.862394 ], [ -94.743965, 41.760561 ], [ -94.744204, 41.602185 ], [ -94.700745, 41.602184 ], [ -94.700629, 41.504148 ], [ -95.04077, 41.50469 ], [ -95.040748, 41.602152 ], [ -95.09252, 41.602055 ], [ -95.093161, 41.688352 ] ] ] ] } }, 29 | { "type": "Feature", "properties": { "geoid": "05000US19025", "name": "Calhoun County, IA", "population": "9980" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.858413, 42.209981 ], [ -94.856702, 42.473967 ], [ -94.914487, 42.47419 ], [ -94.914485, 42.560309 ], [ -94.443024, 42.558843 ], [ -94.443033, 42.473378 ], [ -94.397671, 42.4733 ], [ -94.397526, 42.209161 ], [ -94.858413, 42.209981 ] ] ] ] } }, 30 | { "type": "Feature", "properties": { "geoid": "05000US19035", "name": "Cherokee County, IA", "population": "11982" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.741036, 42.909713 ], [ -95.388182, 42.909897 ], [ -95.38801, 42.561742 ], [ -95.859949, 42.56062 ], [ -95.859303, 42.604065 ], [ -95.86081, 42.720784 ], [ -95.85857, 42.822509 ], [ -95.859377, 42.909097 ], [ -95.741036, 42.909713 ] ] ] ] } }, 31 | { "type": "Feature", "properties": { "geoid": "05000US19037", "name": "Chickasaw County, IA", "population": "12329" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.554058, 43.086666 ], [ -92.554381, 43.212813 ], [ -92.299012, 43.212813 ], [ -92.278055, 43.213707 ], [ -92.080976, 43.212947 ], [ -92.081568, 42.907013 ], [ -92.554211, 42.907112 ], [ -92.554058, 43.086666 ] ] ] ] } }, 32 | { "type": "Feature", "properties": { "geoid": "05000US19169", "name": "Story County, IA", "population": "91939" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.580878, 41.863218 ], [ -93.698032, 41.86337 ], [ -93.69839, 42.209339 ], [ -93.23171, 42.208876 ], [ -93.231858, 41.862711 ], [ -93.580878, 41.863218 ] ] ] ] } }, 33 | { "type": "Feature", "properties": { "geoid": "05000US19147", "name": "Palo Alto County, IA", "name": "Palo Alto County, IA", "population": "9263" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.913889, 42.996932 ], [ -94.913723, 43.255054 ], [ -94.443137, 43.255014 ], [ -94.442954, 42.908073 ], [ -94.91389, 42.9097 ], [ -94.913889, 42.996932 ] ] ] ] } }, 34 | { "type": "Feature", "properties": { "geoid": "05000US19049", "name": "Dallas County, IA", "population": "72124" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.241582, 41.505862 ], [ -94.241356, 41.600971 ], [ -94.280057, 41.601312 ], [ -94.28034, 41.862999 ], [ -93.815527, 41.863419 ], [ -93.814282, 41.600456 ], [ -93.790632, 41.600425 ], [ -93.790612, 41.511916 ], [ -93.896807, 41.503098 ], [ -94.231258, 41.50359 ], [ -94.241593, 41.503679 ], [ -94.241582, 41.505862 ] ] ] ] } }, 35 | { "type": "Feature", "properties": { "geoid": "05000US19033", "name": "Cerro Gordo County, IA", "name": "Cerro Gordo County, IA", "population": "43707" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.261912, 42.907727 ], [ -93.498617, 42.908512 ], [ -93.497635, 43.255468 ], [ -93.024143, 43.255538 ], [ -93.023964, 43.09566 ], [ -93.022968, 43.033786 ], [ -93.023482, 42.994712 ], [ -93.024628, 42.980218 ], [ -93.025144, 42.907549 ], [ -93.261912, 42.907727 ] ] ] ] } }, 36 | { "type": "Feature", "properties": { "geoid": "05000US19191", "name": "Winneshiek County, IA", "population": "20957" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.850941, 43.500719 ], [ -91.610835, 43.500657 ], [ -91.610885, 43.342137 ], [ -91.603992, 43.342047 ], [ -91.605307, 43.081653 ], [ -92.081146, 43.082794 ], [ -92.079859, 43.500587 ], [ -91.850941, 43.500719 ] ] ] ] } }, 37 | { "type": "Feature", "properties": { "geoid": "05000US19173", "name": "Taylor County, IA", "population": "6225" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.914807, 40.584542 ], [ -94.91471, 40.666024 ], [ -94.913124, 40.727285 ], [ -94.928529, 40.727399 ], [ -94.928459, 40.900653 ], [ -94.470779, 40.899502 ], [ -94.471667, 40.84675 ], [ -94.471213, 40.570825 ], [ -94.594196, 40.57096 ], [ -94.914896, 40.575068 ], [ -94.914807, 40.584542 ] ] ] ] } }, 38 | { "type": "Feature", "properties": { "geoid": "05000US19071", "name": "Fremont County, IA", "population": "7200" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.844922, 40.814646 ], [ -95.838601, 40.826175 ], [ -95.837122, 40.834257 ], [ -95.841309, 40.845604 ], [ -95.847084, 40.854174 ], [ -95.848565, 40.859665 ], [ -95.847785, 40.864328 ], [ -95.844073, 40.869248 ], [ -95.840788, 40.871236 ], [ -95.824588, 40.875158 ], [ -95.817897, 40.878448 ], [ -95.81402, 40.881808 ], [ -95.810709, 40.886681 ], [ -95.809379, 40.893279 ], [ -95.810886, 40.897907 ], [ -95.813465, 40.901693 ], [ -95.384964, 40.90155 ], [ -95.385254, 40.728378 ], [ -95.370618, 40.728241 ], [ -95.373883, 40.655527 ], [ -95.373923, 40.580503 ], [ -95.765645, 40.585208 ], [ -95.753148, 40.59284 ], [ -95.750274, 40.596317 ], [ -95.748626, 40.603355 ], [ -95.751271, 40.609057 ], [ -95.764412, 40.61709 ], [ -95.768926, 40.621264 ], [ -95.770083, 40.624425 ], [ -95.771325, 40.639393 ], [ -95.776251, 40.647463 ], [ -95.786568, 40.657253 ], [ -95.795489, 40.662384 ], [ -95.804307, 40.664886 ], [ -95.822913, 40.66724 ], [ -95.832397, 40.671309 ], [ -95.842801, 40.677496 ], [ -95.846034, 40.682605 ], [ -95.84868, 40.695973 ], [ -95.854456, 40.704164 ], [ -95.861798, 40.709242 ], [ -95.877015, 40.714287 ], [ -95.883178, 40.717579 ], [ -95.885349, 40.721093 ], [ -95.888907, 40.731855 ], [ -95.888697, 40.736292 ], [ -95.88669, 40.742101 ], [ -95.881529, 40.750611 ], [ -95.869982, 40.759645 ], [ -95.84662, 40.768619 ], [ -95.838879, 40.774545 ], [ -95.835232, 40.779151 ], [ -95.834214, 40.786665 ], [ -95.843745, 40.803783 ], [ -95.84522, 40.809831 ], [ -95.844922, 40.814646 ] ] ] ] } }, 39 | { "type": "Feature", "properties": { "geoid": "05000US19063", "name": "Emmet County, IA", "population": "10068" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.913985, 43.341458 ], [ -94.914574, 43.500872 ], [ -94.44285, 43.500422 ], [ -94.442292, 43.414143 ], [ -94.443137, 43.255014 ], [ -94.913723, 43.255054 ], [ -94.913985, 43.341458 ] ] ] ] } }, 40 | { "type": "Feature", "properties": { "geoid": "05000US19089", "name": "Howard County, IA", "population": "9529" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.55441, 43.215426 ], [ -92.553128, 43.500231 ], [ -92.079802, 43.500621 ], [ -92.080976, 43.212947 ], [ -92.278055, 43.213707 ], [ -92.299012, 43.212813 ], [ -92.554381, 43.212813 ], [ -92.55441, 43.215426 ] ] ] ] } }, 41 | { "type": "Feature", "properties": { "geoid": "05000US19193", "name": "Woodbury County, IA", "population": "102372" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -96.368514, 42.293044 ], [ -96.369212, 42.308344 ], [ -96.37179, 42.314172 ], [ -96.384169, 42.325874 ], [ -96.407998, 42.337408 ], [ -96.413895, 42.343393 ], [ -96.418168, 42.354678 ], [ -96.417093, 42.361443 ], [ -96.408436, 42.376092 ], [ -96.409153, 42.381491 ], [ -96.41498, 42.393442 ], [ -96.415186, 42.404203 ], [ -96.410307, 42.412965 ], [ -96.387608, 42.432494 ], [ -96.380705, 42.446393 ], [ -96.381305, 42.461695 ], [ -96.386003, 42.474496 ], [ -96.396124, 42.484361 ], [ -96.401962, 42.48644 ], [ -96.447988, 42.490439 ], [ -96.455941, 42.492577 ], [ -96.463512, 42.490464 ], [ -96.469573, 42.491406 ], [ -96.471505, 42.489268 ], [ -96.476369, 42.490043 ], [ -96.477908, 42.494668 ], [ -96.473334, 42.503536 ], [ -96.476048, 42.507783 ], [ -96.479023, 42.510843 ], [ -96.488163, 42.511284 ], [ -96.493722, 42.516742 ], [ -96.492085, 42.519625 ], [ -96.479949, 42.524246 ], [ -96.479007, 42.526394 ], [ -96.479813, 42.529601 ], [ -96.476581, 42.546467 ], [ -96.47696, 42.555972 ], [ -96.49554, 42.55644 ], [ -96.498544, 42.558116 ], [ -96.498997, 42.560832 ], [ -96.429504, 42.562096 ], [ -95.741611, 42.561285 ], [ -95.741821, 42.474865 ], [ -95.669265, 42.474645 ], [ -95.671104, 42.211278 ], [ -96.019961, 42.211687 ], [ -96.35656, 42.215002 ], [ -96.345033, 42.217495 ], [ -96.336998, 42.217466 ], [ -96.323723, 42.229887 ], [ -96.322868, 42.233637 ], [ -96.32987, 42.239748 ], [ -96.327706, 42.249992 ], [ -96.331312, 42.259408 ], [ -96.341387, 42.269087 ], [ -96.360732, 42.279786 ], [ -96.365751, 42.285814 ], [ -96.368514, 42.293044 ] ] ] ] } }, 42 | { "type": "Feature", "properties": { "geoid": "05000US19027", "name": "Carroll County, IA", "population": "20702" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.976252, 41.86293 ], [ -95.092861, 41.863374 ], [ -95.090851, 42.210405 ], [ -94.628806, 42.209396 ], [ -94.629636, 41.908227 ], [ -94.628724, 41.862763 ], [ -94.976252, 41.86293 ] ] ] ] } }, 43 | { "type": "Feature", "properties": { "geoid": "05000US19079", "name": "Hamilton County, IA", "population": "15363" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.69839, 42.209339 ], [ -93.931581, 42.210095 ], [ -93.931684, 42.472011 ], [ -93.971599, 42.472082 ], [ -93.971583, 42.558139 ], [ -93.499485, 42.5577 ], [ -93.499098, 42.470975 ], [ -93.462635, 42.470802 ], [ -93.463043, 42.209302 ], [ -93.69839, 42.209339 ] ] ] ] } }, 44 | { "type": "Feature", "properties": { "geoid": "05000US19131", "name": "Mitchell County, IA", "population": "10744" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.024092, 43.342336 ], [ -93.024345, 43.499733 ], [ -92.553128, 43.500218 ], [ -92.554381, 43.212813 ], [ -93.024092, 43.212812 ], [ -93.024092, 43.342336 ] ] ] ] } }, 45 | { "type": "Feature", "properties": { "geoid": "05000US19157", "name": "Poweshiek County, IA", "population": "18765" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.766437, 41.689453 ], [ -92.765999, 41.862373 ], [ -92.298164, 41.862779 ], [ -92.300125, 41.66259 ], [ -92.299495, 41.601536 ], [ -92.297814, 41.601535 ], [ -92.297494, 41.50979 ], [ -92.756508, 41.508794 ], [ -92.757068, 41.601411 ], [ -92.766759, 41.601355 ], [ -92.766437, 41.689453 ] ] ] ] } }, 46 | { "type": "Feature", "properties": { "geoid": "05000US19197", "name": "Wright County, IA", "population": "13007" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.971465, 42.819704 ], [ -93.971238, 42.907762 ], [ -93.813564, 42.908758 ], [ -93.734256, 42.908008 ], [ -93.498617, 42.908512 ], [ -93.499485, 42.5577 ], [ -93.971583, 42.558139 ], [ -93.971465, 42.819704 ] ] ] ] } }, 47 | { "type": "Feature", "properties": { "geoid": "05000US19041", "name": "Clay County, IA", "population": "16555" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.388083, 43.084557 ], [ -95.388078, 43.255221 ], [ -94.913723, 43.255054 ], [ -94.91389, 42.9097 ], [ -95.388182, 42.909897 ], [ -95.388083, 43.084557 ] ] ] ] } }, 48 | { "type": "Feature", "properties": { "geoid": "05000US19175", "name": "Union County, IA", "population": "12554" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.470773, 40.900236 ], [ -94.470603, 41.157566 ], [ -94.014189, 41.156762 ], [ -94.014803, 40.897031 ], [ -94.466676, 40.899469 ], [ -94.470779, 40.899502 ], [ -94.470773, 40.900236 ] ] ] ] } }, 49 | { "type": "Feature", "properties": { "geoid": "05000US19087", "name": "Henry County, IA", "population": "20197" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.602941, 40.813956 ], [ -91.718787, 40.813544 ], [ -91.717878, 40.930139 ], [ -91.718366, 40.999667 ], [ -91.715893, 41.162822 ], [ -91.600847, 41.163564 ], [ -91.370298, 41.161247 ], [ -91.372095, 40.812631 ], [ -91.602941, 40.813956 ] ] ] ] } }, 50 | { "type": "Feature", "properties": { "geoid": "05000US19117", "name": "Lucas County, IA", "population": "8785" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.327886, 41.160659 ], [ -93.099217, 41.160867 ], [ -93.097595, 40.898451 ], [ -93.442126, 40.897581 ], [ -93.55654, 40.898295 ], [ -93.556288, 40.985905 ], [ -93.557556, 41.161271 ], [ -93.327886, 41.160659 ] ] ] ] } }, 51 | { "type": "Feature", "properties": { "geoid": "05000US19189", "name": "Winnebago County, IA", "population": "10645" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.970533, 43.43055 ], [ -93.970762, 43.499886 ], [ -93.497353, 43.499622 ], [ -93.497635, 43.255468 ], [ -93.970415, 43.255358 ], [ -93.970533, 43.43055 ] ] ] ] } }, 52 | { "type": "Feature", "properties": { "geoid": "05000US19061", "name": "Dubuque County, IA", "population": "95166" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -90.779373, 42.652995 ], [ -90.720209, 42.640758 ], [ -90.709204, 42.636078 ], [ -90.702671, 42.630756 ], [ -90.700095, 42.622461 ], [ -90.692031, 42.610366 ], [ -90.687999, 42.599198 ], [ -90.686975, 42.591774 ], [ -90.677935, 42.580031 ], [ -90.661527, 42.567999 ], [ -90.659127, 42.5579 ], [ -90.654127, 42.5499 ], [ -90.645627, 42.5441 ], [ -90.643927, 42.540401 ], [ -90.640627, 42.527701 ], [ -90.636727, 42.518702 ], [ -90.636927, 42.513202 ], [ -90.648635, 42.498084 ], [ -90.655924, 42.491708 ], [ -90.656527, 42.489203 ], [ -90.656327, 42.483603 ], [ -90.654027, 42.478503 ], [ -90.646727, 42.471904 ], [ -90.624328, 42.458904 ], [ -90.606328, 42.451505 ], [ -90.567968, 42.440389 ], [ -90.560439, 42.432897 ], [ -90.558801, 42.428517 ], [ -90.558168, 42.420984 ], [ -90.555018, 42.416138 ], [ -90.506829, 42.398792 ], [ -90.500128, 42.395539 ], [ -90.487154, 42.385141 ], [ -90.477941, 42.384151 ], [ -90.473798, 42.381458 ], [ -90.665029, 42.382155 ], [ -90.665551, 42.294699 ], [ -91.130079, 42.295761 ], [ -91.13089, 42.471262 ], [ -91.134195, 42.471269 ], [ -91.134375, 42.481184 ], [ -91.134439, 42.558658 ], [ -91.132766, 42.645844 ], [ -91.026643, 42.646572 ], [ -90.897415, 42.645714 ], [ -90.896951, 42.675082 ], [ -90.84391, 42.663071 ], [ -90.779373, 42.652995 ] ] ] ] } }, 53 | { "type": "Feature", "properties": { "geoid": "05000US19101", "name": "Jefferson County, IA", "population": "17102" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.179249, 40.988267 ], [ -92.179974, 41.162662 ], [ -91.969051, 41.163789 ], [ -91.838931, 41.161514 ], [ -91.715893, 41.162822 ], [ -91.71814, 41.02525 ], [ -91.718268, 40.900805 ], [ -91.867845, 40.901362 ], [ -92.179072, 40.89972 ], [ -92.179249, 40.988267 ] ] ] ] } }, 54 | { "type": "Feature", "properties": { "geoid": "05000US19031", "name": "Cedar County, IA", "population": "18434" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.365989, 41.772922 ], [ -91.365789, 41.94741 ], [ -90.898484, 41.946245 ], [ -90.898167, 41.792957 ], [ -90.899853, 41.597133 ], [ -91.366448, 41.598373 ], [ -91.365989, 41.772922 ] ] ] ] } }, 55 | { "type": "Feature", "properties": { "geoid": "05000US19017", "name": "Bremer County, IA", "population": "24481" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.554484, 42.652988 ], [ -92.554211, 42.907112 ], [ -92.081568, 42.907013 ], [ -92.081661, 42.642056 ], [ -92.554492, 42.642314 ], [ -92.554484, 42.652988 ] ] ] ] } }, 56 | { "type": "Feature", "properties": { "geoid": "05000US19051", "name": "Davis County, IA", "population": "8765" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.638891, 40.813003 ], [ -92.639091, 40.898886 ], [ -92.179072, 40.89972 ], [ -92.178107, 40.696853 ], [ -92.17978, 40.600529 ], [ -92.485216, 40.595085 ], [ -92.637898, 40.590853 ], [ -92.638891, 40.813003 ] ] ] ] } }, 57 | { "type": "Feature", "properties": { "geoid": "05000US19093", "name": "Ida County, IA", "population": "7085" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.555382, 42.21093 ], [ -95.670822, 42.211408 ], [ -95.66989, 42.27418 ], [ -95.670917, 42.325078 ], [ -95.669597, 42.374996 ], [ -95.669265, 42.474645 ], [ -95.741821, 42.474865 ], [ -95.741611, 42.561285 ], [ -95.38801, 42.561742 ], [ -95.387445, 42.474796 ], [ -95.322357, 42.474737 ], [ -95.323497, 42.210932 ], [ -95.555382, 42.21093 ] ] ] ] } }, 58 | { "type": "Feature", "properties": { "geoid": "05000US19075", "name": "Grundy County, IA", "population": "12403" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.002382, 42.384496 ], [ -93.002902, 42.470638 ], [ -93.027115, 42.470776 ], [ -93.027, 42.55681 ], [ -92.5543, 42.555854 ], [ -92.55433, 42.469601 ], [ -92.534015, 42.469592 ], [ -92.53351, 42.297001 ], [ -92.76809, 42.29668 ], [ -92.767463, 42.21014 ], [ -93.001674, 42.209267 ], [ -93.002382, 42.384496 ] ] ] ] } }, 59 | { "type": "Feature", "properties": { "geoid": "05000US19195", "name": "Worth County, IA", "population": "7567" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.497485, 43.343006 ], [ -93.497353, 43.499622 ], [ -93.024345, 43.499733 ], [ -93.024143, 43.255538 ], [ -93.497635, 43.255468 ], [ -93.497485, 43.343006 ] ] ] ] } }, 60 | { "type": "Feature", "properties": { "geoid": "05000US19123", "name": "Mahaska County, IA", "population": "22420" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.869784, 41.164766 ], [ -92.871421, 41.508522 ], [ -92.411995, 41.509548 ], [ -92.410233, 41.161942 ], [ -92.869771, 41.161066 ], [ -92.869784, 41.164766 ] ] ] ] } }, 61 | { "type": "Feature", "properties": { "geoid": "05000US19151", "name": "Pocahontas County, IA", "population": "7191" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.678125, 42.559208 ], [ -94.914636, 42.560397 ], [ -94.915569, 42.655077 ], [ -94.913895, 42.738011 ], [ -94.91389, 42.9097 ], [ -94.442954, 42.908073 ], [ -94.443024, 42.558843 ], [ -94.539619, 42.558786 ], [ -94.618853, 42.56 ], [ -94.678125, 42.559208 ] ] ] ] } }, 62 | { "type": "Feature", "properties": { "geoid": "05000US19135", "name": "Monroe County, IA", "population": "8019" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.09836, 40.98636 ], [ -93.099217, 41.160867 ], [ -92.640361, 41.161298 ], [ -92.639091, 40.898886 ], [ -93.097595, 40.898451 ], [ -93.09836, 40.98636 ] ] ] ] } }, 63 | { "type": "Feature", "properties": { "geoid": "05000US19057", "name": "Des Moines County, IA", "name": "Des Moines County, IA", "population": "40265" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.143474, 40.704895 ], [ -91.145661, 40.706263 ], [ -91.150636, 40.706203 ], [ -91.151634, 40.706995 ], [ -91.153544, 40.710319 ], [ -91.161136, 40.717046 ], [ -91.161119, 40.72156 ], [ -91.162563, 40.722721 ], [ -91.16539, 40.721864 ], [ -91.166168, 40.720282 ], [ -91.167734, 40.719763 ], [ -91.172933, 40.721697 ], [ -91.176521, 40.721092 ], [ -91.180986, 40.713111 ], [ -91.178379, 40.709911 ], [ -91.180038, 40.708303 ], [ -91.182551, 40.7081 ], [ -91.188731, 40.712997 ], [ -91.192094, 40.713651 ], [ -91.194414, 40.71805 ], [ -91.19682, 40.719222 ], [ -91.200853, 40.718697 ], [ -91.206486, 40.713942 ], [ -91.20955, 40.713993 ], [ -91.209814, 40.715617 ], [ -91.207509, 40.71866 ], [ -91.207102, 40.721116 ], [ -91.209003, 40.724325 ], [ -91.212353, 40.726161 ], [ -91.217118, 40.732286 ], [ -91.227087, 40.734348 ], [ -91.233449, 40.737545 ], [ -91.241231, 40.745625 ], [ -91.24772, 40.750234 ], [ -91.255895, 40.751081 ], [ -91.263921, 40.754198 ], [ -91.272872, 40.754369 ], [ -91.277158, 40.752875 ], [ -91.281828, 40.753685 ], [ -91.285397, 40.759558 ], [ -91.286752, 40.766571 ], [ -91.292245, 40.772035 ], [ -91.297574, 40.773082 ], [ -91.308214, 40.771709 ], [ -91.311674, 40.772147 ], [ -91.313681, 40.773266 ], [ -91.318847, 40.779921 ], [ -91.325901, 40.780782 ], [ -91.334764, 40.784655 ], [ -91.346832, 40.786473 ], [ -91.350746, 40.793642 ], [ -91.352684, 40.793729 ], [ -91.360517, 40.790763 ], [ -91.363872, 40.790665 ], [ -91.374002, 40.797979 ], [ -91.385755, 40.802313 ], [ -91.393531, 40.808618 ], [ -91.405162, 40.808452 ], [ -91.408558, 40.811359 ], [ -91.409324, 40.812682 ], [ -91.372095, 40.812631 ], [ -91.37071, 41.074112 ], [ -90.949381, 41.07271 ], [ -90.945549, 41.06173 ], [ -90.945999, 41.056336 ], [ -90.943652, 41.048637 ], [ -90.94395, 41.045154 ], [ -90.942253, 41.034702 ], [ -90.945324, 41.019279 ], [ -90.945054, 41.011917 ], [ -90.945949, 41.006495 ], [ -90.949634, 40.995248 ], [ -90.955201, 40.986805 ], [ -90.958142, 40.979767 ], [ -90.958089, 40.976643 ], [ -90.952715, 40.962087 ], [ -90.952233, 40.954047 ], [ -90.960462, 40.936356 ], [ -90.962916, 40.924957 ], [ -90.965344, 40.921633 ], [ -90.968995, 40.919127 ], [ -90.97919, 40.915522 ], [ -90.985462, 40.912141 ], [ -90.9985, 40.90812 ], [ -91.009536, 40.900565 ], [ -91.01324, 40.896622 ], [ -91.021562, 40.884021 ], [ -91.027489, 40.879173 ], [ -91.039097, 40.873565 ], [ -91.044653, 40.868356 ], [ -91.05643, 40.848387 ], [ -91.067159, 40.841997 ], [ -91.090072, 40.824638 ], [ -91.092993, 40.821079 ], [ -91.096946, 40.811403 ], [ -91.097649, 40.805575 ], [ -91.097031, 40.802471 ], [ -91.092256, 40.792909 ], [ -91.091246, 40.786724 ], [ -91.091703, 40.779708 ], [ -91.098105, 40.763233 ], [ -91.108765, 40.75004 ], [ -91.115735, 40.725168 ], [ -91.111095, 40.708282 ], [ -91.11194, 40.697018 ], [ -91.112467, 40.696301 ], [ -91.119437, 40.700008 ], [ -91.126985, 40.698224 ], [ -91.131654, 40.698295 ], [ -91.138818, 40.700706 ], [ -91.143474, 40.704895 ] ] ] ] } }, 64 | { "type": "Feature", "properties": { "geoid": "05000US19029", "name": "Cass County, IA", "population": "13694" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.81495, 41.158392 ], [ -95.155851, 41.159236 ], [ -95.154722, 41.505211 ], [ -94.700629, 41.504148 ], [ -94.700434, 41.158246 ], [ -94.81495, 41.158392 ] ] ] ] } }, 65 | { "type": "Feature", "properties": { "geoid": "05000US19055", "name": "Delaware County, IA", "population": "17578" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.596985, 42.29883 ], [ -91.597397, 42.469242 ], [ -91.608508, 42.469275 ], [ -91.609051, 42.557343 ], [ -91.607059, 42.643973 ], [ -91.132766, 42.645844 ], [ -91.134439, 42.558658 ], [ -91.134375, 42.481184 ], [ -91.134195, 42.471269 ], [ -91.13089, 42.471262 ], [ -91.130079, 42.295761 ], [ -91.596981, 42.296408 ], [ -91.596985, 42.29883 ] ] ] ] } }, 66 | { "type": "Feature", "properties": { "geoid": "05000US19115", "name": "Louisa County, IA", "population": "11305" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.485766, 41.164224 ], [ -91.483995, 41.423848 ], [ -91.368521, 41.423178 ], [ -91.369332, 41.336063 ], [ -91.072045, 41.333599 ], [ -91.073232, 41.31344 ], [ -91.074841, 41.305578 ], [ -91.077505, 41.301828 ], [ -91.086379, 41.294854 ], [ -91.089212, 41.291209 ], [ -91.101142, 41.267169 ], [ -91.112783, 41.252531 ], [ -91.114186, 41.250029 ], [ -91.113062, 41.239968 ], [ -91.098937, 41.228964 ], [ -91.09303, 41.222634 ], [ -91.072984, 41.207151 ], [ -91.055068, 41.185789 ], [ -91.041557, 41.166162 ], [ -91.027231, 41.163383 ], [ -91.007594, 41.166187 ], [ -90.997905, 41.162562 ], [ -90.989662, 41.155707 ], [ -90.981327, 41.142675 ], [ -90.970856, 41.130109 ], [ -90.965908, 41.119559 ], [ -90.957265, 41.111067 ], [ -90.946625, 41.096628 ], [ -90.949381, 41.07271 ], [ -91.37071, 41.074112 ], [ -91.370298, 41.161247 ], [ -91.485717, 41.162405 ], [ -91.485766, 41.164224 ] ] ] ] } }, 67 | { "type": "Feature", "properties": { "geoid": "05000US19073", "name": "Greene County, IA", "population": "9232" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.628726, 41.862875 ], [ -94.629636, 41.908227 ], [ -94.628731, 42.209542 ], [ -94.386512, 42.209048 ], [ -94.164704, 42.20992 ], [ -94.164138, 41.863244 ], [ -94.628726, 41.862875 ] ] ] ] } }, 68 | { "type": "Feature", "properties": { "geoid": "05000US19181", "name": "Warren County, IA", "population": "47058" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.789489, 41.249452 ], [ -93.790797, 41.384741 ], [ -93.790612, 41.511916 ], [ -93.548242, 41.511309 ], [ -93.441286, 41.507589 ], [ -93.442061, 41.504573 ], [ -93.440319, 41.502607 ], [ -93.438102, 41.502082 ], [ -93.426108, 41.505837 ], [ -93.423929, 41.510579 ], [ -93.419917, 41.511837 ], [ -93.415092, 41.509774 ], [ -93.41226, 41.505549 ], [ -93.414095, 41.500488 ], [ -93.421936, 41.495485 ], [ -93.421857, 41.493893 ], [ -93.420638, 41.493097 ], [ -93.417255, 41.492213 ], [ -93.411512, 41.49351 ], [ -93.404596, 41.502291 ], [ -93.39948, 41.502436 ], [ -93.396529, 41.500139 ], [ -93.395776, 41.496396 ], [ -93.397113, 41.493272 ], [ -93.405295, 41.489322 ], [ -93.405059, 41.487053 ], [ -93.396759, 41.48664 ], [ -93.39019, 41.490236 ], [ -93.388735, 41.493803 ], [ -93.385942, 41.495365 ], [ -93.382048, 41.49566 ], [ -93.373198, 41.492565 ], [ -93.371385, 41.486346 ], [ -93.361268, 41.487169 ], [ -93.358358, 41.48976 ], [ -93.359037, 41.496439 ], [ -93.356242, 41.498159 ], [ -93.352531, 41.496889 ], [ -93.347624, 41.483616 ], [ -93.345375, 41.482185 ], [ -93.339917, 41.482315 ], [ -93.333716, 41.488855 ], [ -93.328407, 41.490921 ], [ -93.327886, 41.160659 ], [ -93.789196, 41.162035 ], [ -93.789489, 41.249452 ] ] ] ] } }, 69 | { "type": "Feature", "properties": { "geoid": "05000US19153", "name": "Polk County, IA", "population": "445136" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.580878, 41.863218 ], [ -93.347933, 41.863104 ], [ -93.348681, 41.600999 ], [ -93.328681, 41.601148 ], [ -93.328407, 41.490921 ], [ -93.333716, 41.488855 ], [ -93.339917, 41.482315 ], [ -93.343814, 41.481838 ], [ -93.347431, 41.483355 ], [ -93.352531, 41.496889 ], [ -93.35599, 41.498156 ], [ -93.358997, 41.496526 ], [ -93.358358, 41.48976 ], [ -93.361268, 41.487169 ], [ -93.371385, 41.486346 ], [ -93.373198, 41.492565 ], [ -93.382048, 41.49566 ], [ -93.385942, 41.495365 ], [ -93.388735, 41.493803 ], [ -93.39019, 41.490236 ], [ -93.396759, 41.48664 ], [ -93.405059, 41.487053 ], [ -93.405295, 41.489322 ], [ -93.397113, 41.493272 ], [ -93.395776, 41.496396 ], [ -93.396529, 41.500139 ], [ -93.39948, 41.502436 ], [ -93.404596, 41.502291 ], [ -93.411512, 41.49351 ], [ -93.417255, 41.492213 ], [ -93.420638, 41.493097 ], [ -93.421936, 41.495485 ], [ -93.414095, 41.500488 ], [ -93.41226, 41.505549 ], [ -93.415092, 41.509774 ], [ -93.419917, 41.511837 ], [ -93.423929, 41.510579 ], [ -93.426108, 41.505837 ], [ -93.438102, 41.502082 ], [ -93.440319, 41.502607 ], [ -93.442061, 41.504573 ], [ -93.441286, 41.507589 ], [ -93.548242, 41.511309 ], [ -93.790612, 41.511916 ], [ -93.790632, 41.600425 ], [ -93.814282, 41.600456 ], [ -93.81574, 41.863308 ], [ -93.580878, 41.863218 ] ] ] ] } }, 70 | { "type": "Feature", "properties": { "geoid": "05000US19103", "name": "Johnson County, IA", "population": "136802" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.365989, 41.772922 ], [ -91.366399, 41.598983 ], [ -91.368521, 41.423178 ], [ -91.483995, 41.423848 ], [ -91.483863, 41.428194 ], [ -91.485399, 41.42907 ], [ -91.490711, 41.440427 ], [ -91.500698, 41.446675 ], [ -91.50282, 41.449359 ], [ -91.502475, 41.450902 ], [ -91.498646, 41.453442 ], [ -91.499671, 41.45528 ], [ -91.498773, 41.459213 ], [ -91.505209, 41.461495 ], [ -91.516031, 41.468223 ], [ -91.512948, 41.476315 ], [ -91.510299, 41.477162 ], [ -91.505669, 41.476009 ], [ -91.502499, 41.476675 ], [ -91.501777, 41.4822 ], [ -91.502712, 41.484708 ], [ -91.501316, 41.48734 ], [ -91.503745, 41.493362 ], [ -91.508103, 41.492841 ], [ -91.510674, 41.494689 ], [ -91.510788, 41.497374 ], [ -91.508167, 41.498366 ], [ -91.506494, 41.500751 ], [ -91.507352, 41.502308 ], [ -91.510072, 41.502671 ], [ -91.514018, 41.497443 ], [ -91.5175, 41.496987 ], [ -91.519901, 41.498932 ], [ -91.518988, 41.502584 ], [ -91.527935, 41.507763 ], [ -91.527056, 41.509678 ], [ -91.519828, 41.51101 ], [ -91.829231, 41.511457 ], [ -91.82706, 41.600452 ], [ -91.833078, 41.600414 ], [ -91.834185, 41.686702 ], [ -91.830786, 41.803869 ], [ -91.831379, 41.861851 ], [ -91.689986, 41.862091 ], [ -91.493335, 41.859851 ], [ -91.366079, 41.860068 ], [ -91.365989, 41.772922 ] ] ] ] } }, 71 | { "type": "Feature", "properties": { "geoid": "05000US19163", "name": "Scott County, IA", "population": "168714" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -90.782174, 41.768008 ], [ -90.773089, 41.767782 ], [ -90.771136, 41.76554 ], [ -90.761883, 41.762815 ], [ -90.759626, 41.758813 ], [ -90.755017, 41.756615 ], [ -90.752669, 41.752269 ], [ -90.753156, 41.749204 ], [ -90.74933, 41.744436 ], [ -90.746143, 41.743827 ], [ -90.743643, 41.741527 ], [ -90.736152, 41.740574 ], [ -90.734426, 41.738209 ], [ -90.731588, 41.737408 ], [ -90.728643, 41.739559 ], [ -90.728323, 41.741581 ], [ -90.726187, 41.742314 ], [ -90.722341, 41.736996 ], [ -90.713902, 41.734578 ], [ -90.712682, 41.735387 ], [ -90.711736, 41.739576 ], [ -90.707242, 41.740328 ], [ -90.703572, 41.737226 ], [ -90.697542, 41.743028 ], [ -90.691642, 41.743128 ], [ -90.691533, 41.746122 ], [ -90.694342, 41.748928 ], [ -90.69314, 41.750642 ], [ -90.68688, 41.752471 ], [ -90.686971, 41.756862 ], [ -90.684772, 41.757022 ], [ -90.681749, 41.754552 ], [ -90.676955, 41.755375 ], [ -90.676099, 41.75629 ], [ -90.677565, 41.758028 ], [ -90.676526, 41.760932 ], [ -90.667851, 41.764475 ], [ -90.658718, 41.764816 ], [ -90.655727, 41.760356 ], [ -90.656095, 41.757635 ], [ -90.651454, 41.755416 ], [ -90.646201, 41.756649 ], [ -90.64238, 41.761541 ], [ -90.63557, 41.761081 ], [ -90.632267, 41.764784 ], [ -90.629579, 41.765308 ], [ -90.622012, 41.762727 ], [ -90.616353, 41.756465 ], [ -90.612844, 41.758205 ], [ -90.611263, 41.763966 ], [ -90.600083, 41.762988 ], [ -90.597092, 41.767608 ], [ -90.591786, 41.770689 ], [ -90.589187, 41.769945 ], [ -90.58863, 41.763815 ], [ -90.584141, 41.763267 ], [ -90.579131, 41.759129 ], [ -90.570579, 41.763573 ], [ -90.565416, 41.762468 ], [ -90.565906, 41.765117 ], [ -90.564763, 41.765831 ], [ -90.559637, 41.763633 ], [ -90.554549, 41.764641 ], [ -90.549537, 41.763565 ], [ -90.5503, 41.768299 ], [ -90.549475, 41.769236 ], [ -90.542816, 41.765919 ], [ -90.541014, 41.767588 ], [ -90.537345, 41.776435 ], [ -90.531727, 41.774922 ], [ -90.52797, 41.77531 ], [ -90.528245, 41.773436 ], [ -90.527055, 41.772567 ], [ -90.523175, 41.772796 ], [ -90.521802, 41.771081 ], [ -90.515661, 41.769685 ], [ -90.514351, 41.765957 ], [ -90.512794, 41.765339 ], [ -90.507537, 41.769476 ], [ -90.503721, 41.767347 ], [ -90.49927, 41.767669 ], [ -90.495786, 41.765887 ], [ -90.491816, 41.765958 ], [ -90.488946, 41.767468 ], [ -90.485006, 41.766395 ], [ -90.483937, 41.766785 ], [ -90.483541, 41.769163 ], [ -90.480213, 41.771222 ], [ -90.471723, 41.773603 ], [ -90.467262, 41.768871 ], [ -90.468879, 41.766172 ], [ -90.468144, 41.762422 ], [ -90.463959, 41.758536 ], [ -90.458462, 41.758263 ], [ -90.456539, 41.760847 ], [ -90.450402, 41.764826 ], [ -90.446583, 41.763844 ], [ -90.440811, 41.758722 ], [ -90.435956, 41.760323 ], [ -90.433939, 41.756594 ], [ -90.426032, 41.752662 ], [ -90.424201, 41.750559 ], [ -90.42444, 41.748438 ], [ -90.427463, 41.74446 ], [ -90.423099, 41.740572 ], [ -90.424015, 41.739223 ], [ -90.427526, 41.73824 ], [ -90.428015, 41.736617 ], [ -90.425113, 41.735999 ], [ -90.412504, 41.741118 ], [ -90.411041, 41.737711 ], [ -90.406249, 41.735675 ], [ -90.40628, 41.734211 ], [ -90.410585, 41.732429 ], [ -90.40961, 41.729982 ], [ -90.407931, 41.729296 ], [ -90.403353, 41.729706 ], [ -90.395994, 41.733819 ], [ -90.394134, 41.731326 ], [ -90.389586, 41.730569 ], [ -90.388242, 41.732306 ], [ -90.390346, 41.734342 ], [ -90.390254, 41.735966 ], [ -90.388329, 41.737131 ], [ -90.374703, 41.734429 ], [ -90.372789, 41.732075 ], [ -90.365003, 41.72794 ], [ -90.357525, 41.727783 ], [ -90.35661, 41.729269 ], [ -90.358046, 41.730961 ], [ -90.356673, 41.731876 ], [ -90.352369, 41.7319 ], [ -90.347728, 41.730049 ], [ -90.347393, 41.732953 ], [ -90.344677, 41.733663 ], [ -90.341597, 41.740317 ], [ -90.333874, 41.739404 ], [ -90.328896, 41.73442 ], [ -90.323646, 41.733483 ], [ -90.319953, 41.730122 ], [ -90.31613, 41.728769 ], [ -90.317668, 41.722689 ], [ -90.317421, 41.718333 ], [ -90.31332, 41.709494 ], [ -90.31277, 41.702426 ], [ -90.313435, 41.698082 ], [ -90.315981, 41.692989 ], [ -90.330222, 41.683954 ], [ -90.334525, 41.679559 ], [ -90.336729, 41.664532 ], [ -90.343162, 41.648141 ], [ -90.339528, 41.598633 ], [ -90.341528, 41.590633 ], [ -90.343228, 41.587833 ], [ -90.364128, 41.579633 ], [ -90.39793, 41.572233 ], [ -90.412825, 41.565329 ], [ -90.42223, 41.554233 ], [ -90.432731, 41.549533 ], [ -90.445231, 41.536133 ], [ -90.461432, 41.523533 ], [ -90.474332, 41.519733 ], [ -90.500633, 41.518033 ], [ -90.513134, 41.519533 ], [ -90.540935, 41.526133 ], [ -90.556235, 41.524232 ], [ -90.567236, 41.517532 ], [ -90.591037, 41.512832 ], [ -90.602137, 41.506032 ], [ -90.604237, 41.497032 ], [ -90.605936, 41.494232 ], [ -90.618537, 41.485032 ], [ -90.632538, 41.478732 ], [ -90.650238, 41.465032 ], [ -90.655839, 41.462132 ], [ -90.666239, 41.460632 ], [ -90.676439, 41.460832 ], [ -90.701159, 41.454743 ], [ -90.737537, 41.450127 ], [ -90.771672, 41.450761 ], [ -90.786282, 41.452888 ], [ -90.783812, 41.596531 ], [ -90.899853, 41.597133 ], [ -90.898831, 41.742428 ], [ -90.898373, 41.771392 ], [ -90.786212, 41.771369 ], [ -90.78546, 41.769066 ], [ -90.782174, 41.768008 ] ] ] ] } }, 72 | { "type": "Feature", "properties": { "geoid": "05000US19095", "name": "Iowa County, IA", "population": "16316" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.299952, 41.689045 ], [ -92.298164, 41.862779 ], [ -92.067104, 41.863019 ], [ -91.831379, 41.861851 ], [ -91.830786, 41.803869 ], [ -91.834185, 41.686702 ], [ -91.833078, 41.600414 ], [ -91.82706, 41.600452 ], [ -91.829231, 41.511457 ], [ -92.297494, 41.50979 ], [ -92.297814, 41.601535 ], [ -92.299495, 41.601536 ], [ -92.299952, 41.689045 ] ] ] ] } }, 73 | { "type": "Feature", "properties": { "geoid": "05000US19113", "name": "Linn County, IA", "population": "214927" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.832378, 42.212028 ], [ -91.831089, 42.299063 ], [ -91.705197, 42.29628 ], [ -91.363263, 42.296445 ], [ -91.366079, 41.860068 ], [ -91.493335, 41.859851 ], [ -91.689986, 41.862091 ], [ -91.831379, 41.861851 ], [ -91.835262, 42.036954 ], [ -91.834019, 42.095165 ], [ -91.834583, 42.124057 ], [ -91.832378, 42.212028 ] ] ] ] } }, 74 | { "type": "Feature", "properties": { "geoid": "05000US19161", "name": "Sac County, IA", "population": "10162" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.207045, 42.210885 ], [ -95.323497, 42.210932 ], [ -95.322357, 42.474737 ], [ -95.387445, 42.474796 ], [ -95.38801, 42.561742 ], [ -95.310718, 42.560791 ], [ -94.914485, 42.560309 ], [ -94.914487, 42.47419 ], [ -94.856702, 42.473967 ], [ -94.858412, 42.209692 ], [ -95.207045, 42.210885 ] ] ] ] } }, 75 | { "type": "Feature", "properties": { "geoid": "05000US19099", "name": "Jasper County, IA", "population": "36715" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.328657, 41.513499 ], [ -93.328681, 41.601148 ], [ -93.348681, 41.600999 ], [ -93.347933, 41.863104 ], [ -92.765999, 41.862373 ], [ -92.766759, 41.601355 ], [ -92.757068, 41.601411 ], [ -92.756508, 41.508794 ], [ -93.328614, 41.507824 ], [ -93.328657, 41.513499 ] ] ] ] } }, 76 | { "type": "Feature", "properties": { "geoid": "05000US19013", "name": "Black Hawk County, IA", "name": "Black Hawk County, IA", "population": "131947" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.19895, 42.642189 ], [ -92.081661, 42.642056 ], [ -92.08243, 42.526454 ], [ -92.081446, 42.468192 ], [ -92.064187, 42.468221 ], [ -92.064766, 42.297259 ], [ -92.53351, 42.297001 ], [ -92.534015, 42.469592 ], [ -92.55433, 42.469601 ], [ -92.554492, 42.642314 ], [ -92.19895, 42.642189 ] ] ] ] } }, 77 | { "type": "Feature", "properties": { "geoid": "05000US19187", "name": "Webster County, IA", "population": "37399" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.971599, 42.472082 ], [ -93.931684, 42.472011 ], [ -93.931581, 42.210095 ], [ -94.397561, 42.209125 ], [ -94.397671, 42.4733 ], [ -94.443033, 42.473378 ], [ -94.443083, 42.645164 ], [ -93.971714, 42.644707 ], [ -93.971599, 42.472082 ] ] ] ] } }, 78 | { "type": "Feature", "properties": { "geoid": "05000US19067", "name": "Floyd County, IA", "population": "16153" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.023611, 43.111771 ], [ -93.024092, 43.212812 ], [ -92.554381, 43.212813 ], [ -92.554211, 42.907112 ], [ -93.025144, 42.907549 ], [ -93.024628, 42.980218 ], [ -93.023482, 42.994712 ], [ -93.022968, 43.033786 ], [ -93.023611, 43.111771 ] ] ] ] } }, 79 | { "type": "Feature", "properties": { "geoid": "05000US19069", "name": "Franklin County, IA", "population": "10572" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.144583, 42.556742 ], [ -93.499485, 42.5577 ], [ -93.498617, 42.908512 ], [ -93.025144, 42.907549 ], [ -93.027, 42.55681 ], [ -93.144583, 42.556742 ] ] ] ] } }, 80 | { "type": "Feature", "properties": { "geoid": "05000US19159", "name": "Ringgold County, IA", "population": "5082" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.471201, 40.571131 ], [ -94.471667, 40.84675 ], [ -94.470779, 40.899502 ], [ -94.014803, 40.897031 ], [ -94.015492, 40.573914 ], [ -94.270456, 40.571531 ], [ -94.471201, 40.571131 ] ] ] ] } }, 81 | { "type": "Feature", "properties": { "geoid": "05000US19137", "name": "Montgomery County, IA", "population": "10549" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.384692, 40.996258 ], [ -95.384349, 41.160011 ], [ -94.927587, 41.158508 ], [ -94.928459, 40.900653 ], [ -95.384964, 40.90155 ], [ -95.384692, 40.996258 ] ] ] ] } }, 82 | { "type": "Feature", "properties": { "geoid": "05000US19047", "name": "Crawford County, IA", "population": "17259" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.209023, 41.863709 ], [ -95.672771, 41.863147 ], [ -95.670822, 42.211408 ], [ -95.090851, 42.210405 ], [ -95.092861, 41.863374 ], [ -95.209023, 41.863709 ] ] ] ] } }, 83 | { "type": "Feature", "properties": { "geoid": "05000US19003", "name": "Adams County, IA", "population": "3937" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.81495, 41.158392 ], [ -94.470603, 41.157566 ], [ -94.470779, 40.899502 ], [ -94.928459, 40.900653 ], [ -94.927587, 41.158508 ], [ -94.81495, 41.158392 ] ] ] ] } }, 84 | { "type": "Feature", "properties": { "geoid": "05000US19133", "name": "Monona County, IA", "population": "9149" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.789442, 41.863296 ], [ -95.99134, 41.863499 ], [ -96.139008, 41.866277 ], [ -96.145974, 41.875093 ], [ -96.148757, 41.888161 ], [ -96.161101, 41.900551 ], [ -96.161988, 41.905553 ], [ -96.15784, 41.910896 ], [ -96.142265, 41.915379 ], [ -96.136743, 41.920826 ], [ -96.136613, 41.927167 ], [ -96.143493, 41.937387 ], [ -96.144583, 41.941544 ], [ -96.142597, 41.945908 ], [ -96.135393, 41.952223 ], [ -96.133318, 41.955732 ], [ -96.129186, 41.965136 ], [ -96.129505, 41.971673 ], [ -96.132537, 41.974625 ], [ -96.141229, 41.978063 ], [ -96.15209, 41.979661 ], [ -96.163338, 41.979839 ], [ -96.177204, 41.976308 ], [ -96.187219, 41.977946 ], [ -96.190608, 41.980729 ], [ -96.192141, 41.984461 ], [ -96.184255, 41.996634 ], [ -96.184002, 42.003063 ], [ -96.185919, 42.005914 ], [ -96.194556, 42.008662 ], [ -96.206083, 42.009267 ], [ -96.215225, 42.006701 ], [ -96.222641, 41.996451 ], [ -96.227172, 41.994332 ], [ -96.234952, 41.995736 ], [ -96.241372, 41.999987 ], [ -96.242351, 42.004106 ], [ -96.240832, 42.009315 ], [ -96.23886, 42.012315 ], [ -96.227867, 42.018651 ], [ -96.223611, 42.022652 ], [ -96.22173, 42.026205 ], [ -96.222436, 42.030946 ], [ -96.225656, 42.035217 ], [ -96.235034, 42.040137 ], [ -96.226977, 42.037353 ], [ -96.234356, 42.040712 ], [ -96.246832, 42.041616 ], [ -96.258067, 42.038274 ], [ -96.267195, 42.04119 ], [ -96.271969, 42.04539 ], [ -96.278043, 42.058412 ], [ -96.279479, 42.07088 ], [ -96.276753, 42.081696 ], [ -96.267739, 42.097055 ], [ -96.266988, 42.106172 ], [ -96.268921, 42.113291 ], [ -96.273411, 42.11928 ], [ -96.2802, 42.123783 ], [ -96.285952, 42.125926 ], [ -96.300154, 42.127696 ], [ -96.309758, 42.132101 ], [ -96.314046, 42.136449 ], [ -96.317282, 42.143702 ], [ -96.32074, 42.147928 ], [ -96.326855, 42.152324 ], [ -96.338755, 42.157101 ], [ -96.344905, 42.162376 ], [ -96.349168, 42.169317 ], [ -96.350422, 42.175227 ], [ -96.347278, 42.185774 ], [ -96.347374, 42.193075 ], [ -96.351203, 42.200401 ], [ -96.359551, 42.209579 ], [ -96.358146, 42.214086 ], [ -96.35656, 42.215002 ], [ -96.24122, 42.214626 ], [ -96.019961, 42.211687 ], [ -95.670822, 42.211408 ], [ -95.672771, 41.863147 ], [ -95.789442, 41.863296 ] ] ] ] } }, 85 | { "type": "Feature", "properties": { "geoid": "05000US19001", "name": "Adair County, IA", "population": "7543" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -94.585358, 41.157886 ], [ -94.700589, 41.158085 ], [ -94.700629, 41.504148 ], [ -94.241593, 41.503679 ], [ -94.241637, 41.157134 ], [ -94.585358, 41.157886 ] ] ] ] } }, 86 | { "type": "Feature", "properties": { "geoid": "05000US19129", "name": "Mills County, IA", "population": "14946" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.883172, 41.148806 ], [ -95.882944, 41.154572 ], [ -95.880521, 41.159874 ], [ -95.873829, 41.160303 ], [ -95.384349, 41.160011 ], [ -95.384799, 40.901649 ], [ -95.704299, 40.901045 ], [ -95.813465, 40.901693 ], [ -95.818709, 40.906818 ], [ -95.833041, 40.917243 ], [ -95.837774, 40.924712 ], [ -95.839743, 40.93278 ], [ -95.840275, 40.939942 ], [ -95.837951, 40.950618 ], [ -95.829829, 40.963857 ], [ -95.828329, 40.972378 ], [ -95.830297, 40.978332 ], [ -95.833537, 40.98266 ], [ -95.842754, 40.988812 ], [ -95.854453, 40.992479 ], [ -95.86248, 40.996607 ], [ -95.866951, 41.001085 ], [ -95.869216, 41.005988 ], [ -95.869502, 41.009429 ], [ -95.868002, 41.013566 ], [ -95.859918, 41.025403 ], [ -95.859102, 41.031599 ], [ -95.859654, 41.035695 ], [ -95.861782, 41.039427 ], [ -95.871783, 41.046383 ], [ -95.875287, 41.050599 ], [ -95.881588, 41.054378 ], [ -95.881173, 41.055938 ], [ -95.882476, 41.06136 ], [ -95.881478, 41.065359 ], [ -95.879367, 41.068532 ], [ -95.866912, 41.078855 ], [ -95.864782, 41.081611 ], [ -95.862937, 41.086178 ], [ -95.862587, 41.091876 ], [ -95.866661, 41.104975 ], [ -95.866304, 41.115116 ], [ -95.867228, 41.121493 ], [ -95.871168, 41.128795 ], [ -95.880865, 41.140883 ], [ -95.883172, 41.148806 ] ] ] ] } }, 87 | { "type": "Feature", "properties": { "geoid": "05000US19019", "name": "Buchanan County, IA", "population": "20947" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.714435, 42.296441 ], [ -91.831089, 42.299063 ], [ -91.965073, 42.297282 ], [ -92.064766, 42.297259 ], [ -92.064187, 42.468221 ], [ -92.081446, 42.468192 ], [ -92.08243, 42.526454 ], [ -92.081661, 42.642056 ], [ -91.924169, 42.641827 ], [ -91.844289, 42.643638 ], [ -91.726357, 42.643081 ], [ -91.607059, 42.643973 ], [ -91.609051, 42.557343 ], [ -91.608508, 42.469275 ], [ -91.597397, 42.469242 ], [ -91.596981, 42.296408 ], [ -91.714435, 42.296441 ] ] ] ] } }, 88 | { "type": "Feature", "properties": { "geoid": "05000US19007", "name": "Appanoose County, IA", "population": "12754" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.097616, 40.811969 ], [ -93.097595, 40.898451 ], [ -92.639091, 40.898886 ], [ -92.637898, 40.590853 ], [ -92.781269, 40.58859 ], [ -92.943472, 40.587762 ], [ -93.097296, 40.584014 ], [ -93.097616, 40.811969 ] ] ] ] } }, 89 | { "type": "Feature", "properties": { "geoid": "05000US19053", "name": "Decatur County, IA", "population": "8286" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.900528, 40.896761 ], [ -93.785983, 40.899363 ], [ -93.55654, 40.898295 ], [ -93.556899, 40.580235 ], [ -94.015492, 40.573914 ], [ -94.014803, 40.897031 ], [ -93.900528, 40.896761 ] ] ] ] } }, 90 | { "type": "Feature", "properties": { "geoid": "05000US19119", "name": "Lyon County, IA", "population": "11680" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -96.096197, 43.500191 ], [ -95.860947, 43.500036 ], [ -95.860457, 43.347329 ], [ -95.861914, 43.257566 ], [ -96.039157, 43.258891 ], [ -96.09844, 43.257391 ], [ -96.276367, 43.257424 ], [ -96.554967, 43.260151 ], [ -96.558556, 43.258944 ], [ -96.564955, 43.260277 ], [ -96.576991, 43.268259 ], [ -96.582945, 43.267568 ], [ -96.58566, 43.269352 ], [ -96.586149, 43.27448 ], [ -96.583765, 43.27666 ], [ -96.583111, 43.274549 ], [ -96.581196, 43.274669 ], [ -96.57756, 43.279212 ], [ -96.578685, 43.284044 ], [ -96.581416, 43.287958 ], [ -96.579176, 43.292473 ], [ -96.579473, 43.295689 ], [ -96.588033, 43.292379 ], [ -96.588492, 43.296175 ], [ -96.573706, 43.299026 ], [ -96.569319, 43.295539 ], [ -96.566475, 43.296048 ], [ -96.56438, 43.294639 ], [ -96.554712, 43.296509 ], [ -96.554938, 43.294025 ], [ -96.552056, 43.29285 ], [ -96.540815, 43.295533 ], [ -96.538764, 43.298544 ], [ -96.530381, 43.299823 ], [ -96.531905, 43.304233 ], [ -96.526962, 43.305229 ], [ -96.529154, 43.309078 ], [ -96.524059, 43.311381 ], [ -96.528114, 43.313631 ], [ -96.529011, 43.316395 ], [ -96.526519, 43.315863 ], [ -96.525639, 43.318633 ], [ -96.529104, 43.318947 ], [ -96.530962, 43.320669 ], [ -96.528848, 43.324337 ], [ -96.533189, 43.328714 ], [ -96.531458, 43.331883 ], [ -96.535087, 43.336502 ], [ -96.531665, 43.339335 ], [ -96.532759, 43.342744 ], [ -96.528444, 43.342246 ], [ -96.524279, 43.347422 ], [ -96.527716, 43.348295 ], [ -96.525114, 43.353579 ], [ -96.527748, 43.356325 ], [ -96.527261, 43.361559 ], [ -96.52946, 43.362636 ], [ -96.530961, 43.368433 ], [ -96.528911, 43.369317 ], [ -96.526718, 43.368147 ], [ -96.524762, 43.369859 ], [ -96.524982, 43.37258 ], [ -96.522059, 43.37219 ], [ -96.521358, 43.375874 ], [ -96.524517, 43.379776 ], [ -96.521983, 43.38138 ], [ -96.524606, 43.382271 ], [ -96.521662, 43.385905 ], [ -96.525242, 43.396072 ], [ -96.529583, 43.397624 ], [ -96.53064, 43.395544 ], [ -96.535519, 43.394836 ], [ -96.54091, 43.397426 ], [ -96.544429, 43.396189 ], [ -96.5456, 43.397222 ], [ -96.544881, 43.400007 ], [ -96.548408, 43.403662 ], [ -96.55298, 43.403971 ], [ -96.55452, 43.406161 ], [ -96.557234, 43.406166 ], [ -96.560439, 43.412462 ], [ -96.564637, 43.413094 ], [ -96.568258, 43.416903 ], [ -96.573555, 43.418969 ], [ -96.57, 43.425633 ], [ -96.570289, 43.428547 ], [ -96.576103, 43.431874 ], [ -96.588047, 43.431465 ], [ -96.594141, 43.433824 ], [ -96.593661, 43.436967 ], [ -96.597499, 43.44004 ], [ -96.596502, 43.442275 ], [ -96.599443, 43.442527 ], [ -96.599072, 43.445273 ], [ -96.603051, 43.450828 ], [ -96.600017, 43.450577 ], [ -96.600949, 43.455943 ], [ -96.597015, 43.458604 ], [ -96.593853, 43.458852 ], [ -96.594653, 43.46223 ], [ -96.590551, 43.462903 ], [ -96.589436, 43.466456 ], [ -96.587008, 43.464502 ], [ -96.582419, 43.466706 ], [ -96.585292, 43.470974 ], [ -96.583741, 43.475106 ], [ -96.586892, 43.477873 ], [ -96.581082, 43.481498 ], [ -96.582422, 43.483418 ], [ -96.586787, 43.483833 ], [ -96.587002, 43.487579 ], [ -96.584551, 43.489099 ], [ -96.586915, 43.491514 ], [ -96.590156, 43.491975 ], [ -96.590211, 43.494123 ], [ -96.594797, 43.493114 ], [ -96.599013, 43.495348 ], [ -96.599191, 43.500456 ], [ -96.096197, 43.500191 ] ] ] ] } }, 91 | { "type": "Feature", "properties": { "geoid": "05000US19043", "name": "Clayton County, IA", "population": "17900" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.607125, 42.756996 ], [ -91.608423, 42.81278 ], [ -91.606538, 42.818924 ], [ -91.605307, 43.081653 ], [ -91.177222, 43.080247 ], [ -91.177264, 43.072983 ], [ -91.179457, 43.067427 ], [ -91.177894, 43.064206 ], [ -91.174692, 43.038713 ], [ -91.15749, 42.991475 ], [ -91.156562, 42.978226 ], [ -91.148001, 42.966155 ], [ -91.14543, 42.958211 ], [ -91.14988, 42.941955 ], [ -91.1438, 42.922877 ], [ -91.145868, 42.914967 ], [ -91.145615, 42.908006 ], [ -91.143491, 42.904698 ], [ -91.138011, 42.903777 ], [ -91.117411, 42.895837 ], [ -91.100565, 42.883078 ], [ -91.098238, 42.875798 ], [ -91.09882, 42.864421 ], [ -91.097656, 42.859871 ], [ -91.091402, 42.84986 ], [ -91.095114, 42.834966 ], [ -91.09406, 42.830813 ], [ -91.090136, 42.829237 ], [ -91.08277, 42.829977 ], [ -91.078665, 42.827678 ], [ -91.078097, 42.806526 ], [ -91.07083, 42.782225 ], [ -91.069549, 42.769628 ], [ -91.060261, 42.761847 ], [ -91.061432, 42.757974 ], [ -91.065492, 42.757081 ], [ -91.065059, 42.751338 ], [ -91.060172, 42.750481 ], [ -91.056297, 42.747341 ], [ -91.053733, 42.738238 ], [ -91.049972, 42.736905 ], [ -91.044139, 42.738605 ], [ -91.035418, 42.73734 ], [ -91.032013, 42.734484 ], [ -91.029692, 42.726774 ], [ -91.026786, 42.724228 ], [ -91.017239, 42.719566 ], [ -91.009577, 42.720123 ], [ -90.995536, 42.713704 ], [ -90.988776, 42.708724 ], [ -90.980578, 42.698932 ], [ -90.976314, 42.695996 ], [ -90.965048, 42.693233 ], [ -90.952415, 42.686778 ], [ -90.941567, 42.683844 ], [ -90.921155, 42.685406 ], [ -90.896951, 42.675082 ], [ -90.897415, 42.645714 ], [ -91.035086, 42.646575 ], [ -91.607059, 42.643973 ], [ -91.606185, 42.687008 ], [ -91.607125, 42.756996 ] ] ] ] } }, 92 | { "type": "Feature", "properties": { "geoid": "05000US19109", "name": "Kossuth County, IA", "population": "15347" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.970693, 43.342245 ], [ -93.971238, 42.907762 ], [ -94.442954, 42.908073 ], [ -94.44285, 43.500422 ], [ -93.970762, 43.499886 ], [ -93.970693, 43.342245 ] ] ] ] } }, 93 | { "type": "Feature", "properties": { "geoid": "05000US19021", "name": "Buena Vista County, IA", "name": "Buena Vista County, IA", "population": "20460" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.269662, 42.560902 ], [ -95.38801, 42.561742 ], [ -95.388182, 42.909897 ], [ -94.91389, 42.9097 ], [ -94.913895, 42.738011 ], [ -94.915569, 42.655077 ], [ -94.914485, 42.560309 ], [ -95.269662, 42.560902 ] ] ] ] } }, 94 | { "type": "Feature", "properties": { "geoid": "05000US19139", "name": "Muscatine County, IA", "population": "42857" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.368521, 41.423178 ], [ -91.366448, 41.598373 ], [ -90.783812, 41.596531 ], [ -90.786282, 41.452888 ], [ -90.837414, 41.455623 ], [ -90.853604, 41.453909 ], [ -90.867282, 41.448215 ], [ -90.900471, 41.431154 ], [ -90.930016, 41.421404 ], [ -90.949791, 41.424163 ], [ -90.962095, 41.429327 ], [ -90.970173, 41.431238 ], [ -90.974185, 41.433712 ], [ -90.979815, 41.434321 ], [ -90.985886, 41.433689 ], [ -91.005846, 41.426135 ], [ -91.027787, 41.423603 ], [ -91.037131, 41.420017 ], [ -91.043988, 41.415897 ], [ -91.047642, 41.41131 ], [ -91.050328, 41.400049 ], [ -91.05158, 41.385283 ], [ -91.065656, 41.367996 ], [ -91.069763, 41.350302 ], [ -91.072045, 41.333599 ], [ -91.369332, 41.336063 ], [ -91.368521, 41.423178 ] ] ] ] } }, 95 | { "type": "Feature", "properties": { "geoid": "05000US19149", "name": "Plymouth County, IA", "population": "24899" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -96.095842, 42.910004 ], [ -95.859377, 42.909097 ], [ -95.85857, 42.822509 ], [ -95.86081, 42.720784 ], [ -95.859949, 42.56062 ], [ -96.429504, 42.562096 ], [ -96.498997, 42.560832 ], [ -96.485797, 42.57502 ], [ -96.495654, 42.579541 ], [ -96.495499, 42.582792 ], [ -96.491271, 42.586806 ], [ -96.501082, 42.589311 ], [ -96.500183, 42.594104 ], [ -96.510015, 42.613211 ], [ -96.517663, 42.616647 ], [ -96.525718, 42.609276 ], [ -96.529937, 42.610471 ], [ -96.531312, 42.616647 ], [ -96.528131, 42.61844 ], [ -96.522581, 42.617576 ], [ -96.519039, 42.618986 ], [ -96.515158, 42.62837 ], [ -96.521601, 42.634883 ], [ -96.525143, 42.634746 ], [ -96.52663, 42.64145 ], [ -96.537472, 42.645951 ], [ -96.537767, 42.655425 ], [ -96.541219, 42.659916 ], [ -96.546302, 42.661534 ], [ -96.559388, 42.657829 ], [ -96.559808, 42.662868 ], [ -96.55577, 42.664207 ], [ -96.564389, 42.671328 ], [ -96.566964, 42.676417 ], [ -96.569707, 42.67497 ], [ -96.571567, 42.670896 ], [ -96.578474, 42.671932 ], [ -96.574354, 42.673677 ], [ -96.572053, 42.676704 ], [ -96.572623, 42.678926 ], [ -96.578757, 42.678123 ], [ -96.574972, 42.68073 ], [ -96.57518, 42.682757 ], [ -96.586186, 42.683177 ], [ -96.586342, 42.689794 ], [ -96.589842, 42.691041 ], [ -96.591852, 42.690546 ], [ -96.592295, 42.68716 ], [ -96.599639, 42.686893 ], [ -96.599381, 42.688904 ], [ -96.596559, 42.688288 ], [ -96.593613, 42.689794 ], [ -96.596539, 42.691932 ], [ -96.593928, 42.694327 ], [ -96.597624, 42.695637 ], [ -96.599637, 42.698854 ], [ -96.601381, 42.699003 ], [ -96.605643, 42.694683 ], [ -96.612086, 42.69558 ], [ -96.609624, 42.698425 ], [ -96.604603, 42.698473 ], [ -96.605596, 42.70202 ], [ -96.609801, 42.702324 ], [ -96.615148, 42.698433 ], [ -96.616078, 42.700437 ], [ -96.619194, 42.699812 ], [ -96.623957, 42.7076 ], [ -96.62598, 42.704042 ], [ -96.630353, 42.705684 ], [ -96.629333, 42.709015 ], [ -96.626855, 42.709926 ], [ -96.624406, 42.714011 ], [ -96.624799, 42.715955 ], [ -96.628011, 42.717798 ], [ -96.624545, 42.720944 ], [ -96.624414, 42.725212 ], [ -96.634189, 42.724306 ], [ -96.634704, 42.726122 ], [ -96.630522, 42.730234 ], [ -96.63672, 42.733231 ], [ -96.639484, 42.736963 ], [ -96.630586, 42.735286 ], [ -96.635612, 42.741894 ], [ -96.629429, 42.743641 ], [ -96.632155, 42.74521 ], [ -96.630003, 42.747142 ], [ -96.630019, 42.750696 ], [ -96.619269, 42.754752 ], [ -96.620267, 42.757585 ], [ -96.622833, 42.758398 ], [ -96.625566, 42.754457 ], [ -96.627243, 42.754413 ], [ -96.628129, 42.757185 ], [ -96.6361, 42.763986 ], [ -96.636, 42.765421 ], [ -96.631522, 42.766095 ], [ -96.632715, 42.76862 ], [ -96.635508, 42.768034 ], [ -96.636382, 42.76974 ], [ -96.633054, 42.771332 ], [ -96.631309, 42.76965 ], [ -96.629245, 42.771994 ], [ -96.626361, 42.771403 ], [ -96.626985, 42.775302 ], [ -96.621985, 42.77683 ], [ -96.619503, 42.784043 ], [ -96.615569, 42.785016 ], [ -96.61471, 42.782247 ], [ -96.612563, 42.78462 ], [ -96.610489, 42.782578 ], [ -96.607993, 42.784434 ], [ -96.60444, 42.78311 ], [ -96.602345, 42.788113 ], [ -96.605007, 42.791696 ], [ -96.595214, 42.792896 ], [ -96.599683, 42.798435 ], [ -96.598172, 42.799966 ], [ -96.59645, 42.79759 ], [ -96.594076, 42.798235 ], [ -96.590465, 42.808297 ], [ -96.595626, 42.810343 ], [ -96.595945, 42.814954 ], [ -96.590724, 42.815383 ], [ -96.588943, 42.818487 ], [ -96.584109, 42.819005 ], [ -96.585808, 42.823776 ], [ -96.580554, 42.82488 ], [ -96.577654, 42.827791 ], [ -96.582305, 42.83375 ], [ -96.581378, 42.83781 ], [ -96.57833, 42.837799 ], [ -96.579717, 42.835626 ], [ -96.578164, 42.834727 ], [ -96.574424, 42.837978 ], [ -96.568382, 42.837781 ], [ -96.569683, 42.8345 ], [ -96.563604, 42.828174 ], [ -96.561518, 42.829467 ], [ -96.563012, 42.831356 ], [ -96.562862, 42.835887 ], [ -96.560944, 42.839134 ], [ -96.558459, 42.839475 ], [ -96.554944, 42.836267 ], [ -96.550562, 42.837178 ], [ -96.548598, 42.840891 ], [ -96.553805, 42.843182 ], [ -96.556083, 42.849231 ], [ -96.550195, 42.847584 ], [ -96.549454, 42.851208 ], [ -96.545262, 42.849854 ], [ -96.541455, 42.856868 ], [ -96.54262, 42.859688 ], [ -96.545212, 42.857081 ], [ -96.546819, 42.857436 ], [ -96.5461, 42.861161 ], [ -96.550451, 42.863548 ], [ -96.546573, 42.863914 ], [ -96.546174, 42.867552 ], [ -96.549701, 42.86988 ], [ -96.547146, 42.873955 ], [ -96.53767, 42.878462 ], [ -96.543485, 42.883765 ], [ -96.537695, 42.886748 ], [ -96.539838, 42.889803 ], [ -96.525328, 42.891661 ], [ -96.529692, 42.894218 ], [ -96.528873, 42.897926 ], [ -96.536124, 42.900879 ], [ -96.539531, 42.899939 ], [ -96.54293, 42.903756 ], [ -96.542325, 42.905079 ], [ -96.536601, 42.905414 ], [ -96.538458, 42.908771 ], [ -96.095842, 42.910004 ] ] ] ] } }, 96 | { "type": "Feature", "properties": { "geoid": "05000US19111", "name": "Lee County, IA", "population": "35552" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -91.718054, 40.616957 ], [ -91.718787, 40.813544 ], [ -91.409324, 40.812682 ], [ -91.406371, 40.808709 ], [ -91.393531, 40.808618 ], [ -91.385755, 40.802313 ], [ -91.374002, 40.797979 ], [ -91.363872, 40.790665 ], [ -91.350746, 40.793642 ], [ -91.346832, 40.786473 ], [ -91.334764, 40.784655 ], [ -91.325901, 40.780782 ], [ -91.318847, 40.779921 ], [ -91.311674, 40.772147 ], [ -91.293391, 40.772577 ], [ -91.286752, 40.766571 ], [ -91.285397, 40.759558 ], [ -91.281828, 40.753685 ], [ -91.277158, 40.752875 ], [ -91.272872, 40.754369 ], [ -91.263921, 40.754198 ], [ -91.255895, 40.751081 ], [ -91.24772, 40.750234 ], [ -91.241231, 40.745625 ], [ -91.233449, 40.737545 ], [ -91.227087, 40.734348 ], [ -91.219586, 40.733176 ], [ -91.215757, 40.731094 ], [ -91.207102, 40.721116 ], [ -91.20955, 40.713993 ], [ -91.206486, 40.713942 ], [ -91.200853, 40.718697 ], [ -91.19682, 40.719222 ], [ -91.194414, 40.71805 ], [ -91.192094, 40.713651 ], [ -91.188731, 40.712997 ], [ -91.182551, 40.7081 ], [ -91.180038, 40.708303 ], [ -91.178379, 40.709911 ], [ -91.180986, 40.713111 ], [ -91.176521, 40.721092 ], [ -91.172933, 40.721697 ], [ -91.167734, 40.719763 ], [ -91.162563, 40.722721 ], [ -91.161119, 40.72156 ], [ -91.161136, 40.717046 ], [ -91.150636, 40.706203 ], [ -91.145661, 40.706263 ], [ -91.141391, 40.703849 ], [ -91.138818, 40.700706 ], [ -91.131654, 40.698295 ], [ -91.119437, 40.700008 ], [ -91.112467, 40.696301 ], [ -91.115407, 40.691825 ], [ -91.12082, 40.672777 ], [ -91.123928, 40.669152 ], [ -91.138055, 40.660893 ], [ -91.185295, 40.637803 ], [ -91.197906, 40.636107 ], [ -91.218437, 40.638437 ], [ -91.253074, 40.637962 ], [ -91.264953, 40.633893 ], [ -91.306568, 40.626219 ], [ -91.348733, 40.609695 ], [ -91.359873, 40.601805 ], [ -91.379752, 40.57445 ], [ -91.401482, 40.559458 ], [ -91.406373, 40.551831 ], [ -91.406202, 40.542698 ], [ -91.404125, 40.539127 ], [ -91.400725, 40.536789 ], [ -91.384531, 40.530948 ], [ -91.369059, 40.512532 ], [ -91.364211, 40.500043 ], [ -91.36391, 40.490122 ], [ -91.366463, 40.478869 ], [ -91.378144, 40.456394 ], [ -91.381045, 40.44849 ], [ -91.381769, 40.442555 ], [ -91.380177, 40.432904 ], [ -91.37328, 40.416496 ], [ -91.372554, 40.4012 ], [ -91.375712, 40.391925 ], [ -91.384201, 40.38643 ], [ -91.396996, 40.383127 ], [ -91.413011, 40.382277 ], [ -91.419422, 40.378264 ], [ -91.425662, 40.382491 ], [ -91.441243, 40.386255 ], [ -91.445168, 40.382461 ], [ -91.445371, 40.379388 ], [ -91.448742, 40.376804 ], [ -91.454535, 40.37544 ], [ -91.463895, 40.375659 ], [ -91.465891, 40.378365 ], [ -91.463008, 40.384041 ], [ -91.463554, 40.385547 ], [ -91.480251, 40.381783 ], [ -91.483153, 40.382492 ], [ -91.485255, 40.384657 ], [ -91.490912, 40.39298 ], [ -91.487955, 40.402465 ], [ -91.488481, 40.404317 ], [ -91.498093, 40.401926 ], [ -91.505272, 40.403512 ], [ -91.509063, 40.406775 ], [ -91.513993, 40.408537 ], [ -91.524612, 40.410765 ], [ -91.526425, 40.413404 ], [ -91.527043, 40.418214 ], [ -91.519492, 40.429951 ], [ -91.519134, 40.432822 ], [ -91.529132, 40.434272 ], [ -91.533623, 40.43832 ], [ -91.533548, 40.440804 ], [ -91.531912, 40.44273 ], [ -91.523271, 40.450061 ], [ -91.523517, 40.454847 ], [ -91.52509, 40.457845 ], [ -91.5286, 40.459002 ], [ -91.552691, 40.458769 ], [ -91.567743, 40.46229 ], [ -91.575806, 40.466586 ], [ -91.581528, 40.472876 ], [ -91.586884, 40.487233 ], [ -91.590817, 40.492292 ], [ -91.594644, 40.494997 ], [ -91.612821, 40.502377 ], [ -91.616948, 40.504794 ], [ -91.621353, 40.510072 ], [ -91.622192, 40.517039 ], [ -91.618793, 40.526286 ], [ -91.618028, 40.53403 ], [ -91.618999, 40.539084 ], [ -91.621902, 40.542292 ], [ -91.654345, 40.549189 ], [ -91.681714, 40.553035 ], [ -91.6887, 40.55739 ], [ -91.690804, 40.559893 ], [ -91.691561, 40.564867 ], [ -91.685723, 40.576785 ], [ -91.686357, 40.580875 ], [ -91.696359, 40.588148 ], [ -91.712025, 40.595046 ], [ -91.716769, 40.59853 ], [ -91.716432, 40.614075 ], [ -91.718045, 40.614047 ], [ -91.718054, 40.616957 ] ] ] ] } }, 97 | { "type": "Feature", "properties": { "geoid": "05000US19121", "name": "Madison County, IA", "population": "15629" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -93.790129, 41.337234 ], [ -93.789196, 41.162035 ], [ -93.899659, 41.156597 ], [ -94.241637, 41.157134 ], [ -94.241593, 41.503679 ], [ -93.896807, 41.503098 ], [ -93.790612, 41.511916 ], [ -93.790129, 41.337234 ] ] ] ] } }, 98 | { "type": "Feature", "properties": { "geoid": "05000US19011", "name": "Benton County, IA", "population": "25895" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.181143, 41.862601 ], [ -92.298164, 41.862779 ], [ -92.297268, 41.979052 ], [ -92.299279, 42.088581 ], [ -92.298792, 42.297527 ], [ -91.965073, 42.297282 ], [ -91.831089, 42.299063 ], [ -91.835262, 42.036954 ], [ -91.831379, 41.861851 ], [ -92.181143, 41.862601 ] ] ] ] } }, 99 | { "type": "Feature", "properties": { "geoid": "05000US19145", "name": "Page County, IA", "population": "15737" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.25901, 40.57915 ], [ -95.373941, 40.580522 ], [ -95.373883, 40.655527 ], [ -95.370618, 40.728241 ], [ -95.385254, 40.728378 ], [ -95.384964, 40.90155 ], [ -94.928459, 40.900653 ], [ -94.928529, 40.727399 ], [ -94.913124, 40.727285 ], [ -94.91471, 40.666024 ], [ -94.914896, 40.575068 ], [ -95.25901, 40.57915 ] ] ] ] } }, 100 | { "type": "Feature", "properties": { "geoid": "05000US19179", "name": "Wapello County, IA", "population": "35406" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.179647, 41.076178 ], [ -92.179072, 40.89972 ], [ -92.639091, 40.898886 ], [ -92.640361, 41.161298 ], [ -92.179974, 41.162662 ], [ -92.179647, 41.076178 ] ] ] ] } }, 101 | { "type": "Feature", "properties": { "geoid": "05000US19097", "name": "Jackson County, IA", "population": "19656" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -90.898226, 42.120593 ], [ -90.89802, 42.295236 ], [ -90.665551, 42.294699 ], [ -90.665029, 42.382155 ], [ -90.473798, 42.381458 ], [ -90.470273, 42.378355 ], [ -90.464053, 42.36859 ], [ -90.452724, 42.359303 ], [ -90.445167, 42.356441 ], [ -90.430546, 42.33686 ], [ -90.42135, 42.330472 ], [ -90.416535, 42.325109 ], [ -90.4162, 42.321314 ], [ -90.421182, 42.315255 ], [ -90.418915, 42.308328 ], [ -90.424326, 42.293326 ], [ -90.430735, 42.284211 ], [ -90.430884, 42.27823 ], [ -90.424098, 42.266364 ], [ -90.419326, 42.254467 ], [ -90.400653, 42.239293 ], [ -90.393151, 42.227186 ], [ -90.375129, 42.214811 ], [ -90.356964, 42.205445 ], [ -90.328273, 42.201047 ], [ -90.317774, 42.193789 ], [ -90.298442, 42.187576 ], [ -90.282173, 42.178846 ], [ -90.26908, 42.1745 ], [ -90.250129, 42.171469 ], [ -90.216107, 42.15673 ], [ -90.20826, 42.15099 ], [ -90.20536, 42.139079 ], [ -90.201404, 42.130937 ], [ -90.190452, 42.125779 ], [ -90.17097, 42.125198 ], [ -90.167533, 42.122475 ], [ -90.162225, 42.11488 ], [ -90.16112, 42.104404 ], [ -90.163405, 42.087613 ], [ -90.168358, 42.075779 ], [ -90.165555, 42.062638 ], [ -90.166853, 42.05491 ], [ -90.164337, 42.041515 ], [ -90.154221, 42.033073 ], [ -90.898373, 42.033548 ], [ -90.898226, 42.120593 ] ] ] ] } }, 102 | { "type": "Feature", "properties": { "geoid": "05000US19143", "name": "Osceola County, IA", "population": "6279" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.861889, 43.260045 ], [ -95.860457, 43.347329 ], [ -95.860947, 43.500036 ], [ -95.387787, 43.500226 ], [ -95.388078, 43.255221 ], [ -95.50577, 43.255748 ], [ -95.626713, 43.25845 ], [ -95.861914, 43.257566 ], [ -95.861889, 43.260045 ] ] ] ] } }, 103 | { "type": "Feature", "properties": { "geoid": "05000US19167", "name": "Sioux County, IA", "population": "34261" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -95.859951, 42.996661 ], [ -95.859377, 42.909097 ], [ -96.016781, 42.910146 ], [ -96.538458, 42.908771 ], [ -96.537743, 42.91082 ], [ -96.5401, 42.912318 ], [ -96.53777, 42.917425 ], [ -96.541269, 42.919606 ], [ -96.54088, 42.924792 ], [ -96.534106, 42.92371 ], [ -96.532952, 42.924754 ], [ -96.534061, 42.928166 ], [ -96.525312, 42.935627 ], [ -96.521704, 42.935145 ], [ -96.519799, 42.931976 ], [ -96.516868, 42.932321 ], [ -96.51645, 42.9352 ], [ -96.519858, 42.937989 ], [ -96.51987, 42.939969 ], [ -96.514198, 42.944851 ], [ -96.509288, 42.945153 ], [ -96.507907, 42.948391 ], [ -96.508919, 42.953715 ], [ -96.498963, 42.957802 ], [ -96.501839, 42.960777 ], [ -96.502682, 42.967605 ], [ -96.50516, 42.971095 ], [ -96.515773, 42.972844 ], [ -96.520838, 42.980314 ], [ -96.516831, 42.98102 ], [ -96.518364, 42.985187 ], [ -96.515342, 42.984141 ], [ -96.512382, 42.985658 ], [ -96.511163, 42.99031 ], [ -96.512834, 42.991912 ], [ -96.50986, 42.995228 ], [ -96.496823, 42.998609 ], [ -96.492029, 43.00895 ], [ -96.495639, 43.015841 ], [ -96.499532, 43.016548 ], [ -96.49904, 43.019073 ], [ -96.503937, 43.020366 ], [ -96.512435, 43.026865 ], [ -96.513927, 43.030536 ], [ -96.510623, 43.032101 ], [ -96.509333, 43.037962 ], [ -96.512222, 43.040486 ], [ -96.520086, 43.037762 ], [ -96.521302, 43.03966 ], [ -96.512521, 43.04108 ], [ -96.514812, 43.045174 ], [ -96.510523, 43.049913 ], [ -96.501804, 43.048658 ], [ -96.49093, 43.050812 ], [ -96.486967, 43.055779 ], [ -96.47674, 43.062697 ], [ -96.472753, 43.063711 ], [ -96.467442, 43.061947 ], [ -96.460742, 43.064337 ], [ -96.46055, 43.066324 ], [ -96.458233, 43.067561 ], [ -96.459387, 43.069843 ], [ -96.455555, 43.074319 ], [ -96.455798, 43.080845 ], [ -96.45408, 43.083845 ], [ -96.455467, 43.088283 ], [ -96.463083, 43.089967 ], [ -96.46232, 43.092885 ], [ -96.460242, 43.095284 ], [ -96.456846, 43.095915 ], [ -96.457023, 43.097647 ], [ -96.45238, 43.098193 ], [ -96.452673, 43.100575 ], [ -96.450403, 43.10085 ], [ -96.450536, 43.103775 ], [ -96.446992, 43.105514 ], [ -96.446268, 43.109703 ], [ -96.439832, 43.113423 ], [ -96.436473, 43.120202 ], [ -96.441581, 43.124496 ], [ -96.440191, 43.128317 ], [ -96.44276, 43.128615 ], [ -96.443134, 43.133636 ], [ -96.445599, 43.136513 ], [ -96.448587, 43.136228 ], [ -96.44708, 43.138338 ], [ -96.45043, 43.14239 ], [ -96.455754, 43.144235 ], [ -96.46043, 43.14363 ], [ -96.459248, 43.147488 ], [ -96.462172, 43.14918 ], [ -96.465144, 43.147475 ], [ -96.468499, 43.151887 ], [ -96.464981, 43.152726 ], [ -96.463981, 43.155489 ], [ -96.469556, 43.158353 ], [ -96.465955, 43.161422 ], [ -96.467544, 43.163734 ], [ -96.466987, 43.168354 ], [ -96.46913, 43.169421 ], [ -96.46557, 43.171315 ], [ -96.466871, 43.174219 ], [ -96.464856, 43.18196 ], [ -96.467307, 43.18478 ], [ -96.472525, 43.185601 ], [ -96.474009, 43.189639 ], [ -96.472106, 43.196342 ], [ -96.475007, 43.202569 ], [ -96.470772, 43.205112 ], [ -96.47066, 43.207326 ], [ -96.476469, 43.212969 ], [ -96.47496, 43.217396 ], [ -96.476654, 43.221941 ], [ -96.485653, 43.224222 ], [ -96.496639, 43.223716 ], [ -96.501198, 43.220574 ], [ -96.508551, 43.221117 ], [ -96.50906, 43.21716 ], [ -96.513309, 43.218773 ], [ -96.520692, 43.217983 ], [ -96.521656, 43.220561 ], [ -96.526524, 43.224052 ], [ -96.535915, 43.227634 ], [ -96.540246, 43.225632 ], [ -96.555281, 43.226666 ], [ -96.559186, 43.222901 ], [ -96.56529, 43.23037 ], [ -96.568289, 43.231344 ], [ -96.569023, 43.237189 ], [ -96.571438, 43.239022 ], [ -96.565191, 43.244454 ], [ -96.561146, 43.243779 ], [ -96.553103, 43.247508 ], [ -96.549187, 43.246814 ], [ -96.552689, 43.252012 ], [ -96.55266, 43.258148 ], [ -96.554967, 43.260151 ], [ -96.276367, 43.257424 ], [ -96.09844, 43.257391 ], [ -96.039157, 43.258891 ], [ -95.861914, 43.257566 ], [ -95.859951, 42.996661 ] ] ] ] } }, 104 | { "type": "Feature", "properties": { "geoid": "05000US19023", "name": "Butler County, IA", "population": "14966" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -92.90795, 42.556199 ], [ -93.027, 42.55681 ], [ -93.025144, 42.907549 ], [ -92.554211, 42.907112 ], [ -92.5543, 42.555854 ], [ -92.90795, 42.556199 ] ] ] ] } } 105 | ] 106 | } --------------------------------------------------------------------------------