├── README.md ├── assets ├── css │ ├── bootstrap.css │ ├── bootstrap.min.css │ └── the-big-picture.css ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 └── js │ ├── bootstrap.js │ ├── bootstrap.min.js │ └── jquery.js ├── d3-map01-starter ├── index.html └── ky-counties.js ├── d3-map02-interaction ├── index.html └── ky-counties.js ├── d3-map03-queue ├── index.html └── ky-counties.json ├── d3-map04-topojson ├── index.html └── ky-counties.json ├── d3-map05-data-point ├── index.html ├── ky-counties.json └── wells.csv ├── d3-map06-data-area ├── index.html ├── ky-counties.json └── simple_statistics.js ├── d3-map07-data-area-toggle ├── index.html ├── ky-counties.json └── simple_statistics.js ├── graphics ├── array-of-objects.png ├── oil-gas-wells.png └── wells.png └── index.html /README.md: -------------------------------------------------------------------------------- 1 | # Introduction to D3 Web Mapping Through 7 Simple Maps 2 | 3 | **[@maptimeLEX](https://twitter.com/maptimelex) 06/24/15** 4 | 5 | **Presentation by [@rgdonohue](https://twitter.com/rgdonohue)** 6 | 7 | In this @maptimeLex, we (re-)introduce ourselves to the D3 visualization library and explore its integration within a larger web mapping workflow. Drawing upon Andy Woodruff's (@awoodruff) excellent [@maptimeBoston presentation](http://maptimeboston.github.io/d3-maptime/), we'll explore the library's implementation when used to create seven simple web maps. 8 | 9 | * All the files and data for the examples discussed within this maptime event are hosted at: [maptimelex/d3-mapping](https://github.com/maptimelex/d3-mapping) 10 | * I've also posted working examples as Gists, which can be viewed here: [rgdonohue’s blocks](http://bl.ocks.org/rgdonohue), or you can see the [working examples](http://maptimelex.github.io/d3-mapping/) within @maptimeLex's GitHub repo. 11 | 12 | Rather than starting from the ground up and slowly building a working web map with D3 – like many great resources do – in this maptime we're going to look at simple, complete maps and deconstruct them to better understand how they're working. You're encouraged to clone the repository and run the examples on your own machine, editing the code and tweaking the parameters to see the results. 13 | 14 | ### Index 15 | - [What is D3 and why is it cool for web cartographers?](#what-is-d3js-and-why-is-it-cool-for-web-cartographers) 16 | - [How do I learn to use D3?](#how-do-i-learn-to-use-d3js) 17 | - [1. A very simple D3 map](#1-a-very-simple-d3-map) 18 | - [2. A D3 map with basic interaction](#2-a-d3-map-with-basic-interaction) 19 | - [3. A D3 map using queue.js](#3-a-d3-map-using-queuejs) 20 | - [4. A D3 map using topojson](#4-a-d3-map-using-topojson) 21 | - [5. A D3 map plotting oil and gas well points](#5-a-d3-map-plotting-oil-and-gas-well-points) 22 | - [6. A D3 county choropleth map of Kentucky oil or gas wells](#6-a-d3-county-choropleth-map-of-kentucky-oil-or-gas-wells) 23 | - [7. A toggle D3 county map of Kentucky oil and gas wells](#7-a-toggle-d3-county-map-of-kentucky-oil-and-gas-wells) 24 | 25 | 26 | ##What is D3 and why is it cool for web cartographers? 27 | 28 | D3 stands for Data Driven Documents. It's a JavaScript library written by [@mbostock](https://twitter.com/mbostock), with the help of [many other contributors](https://github.com/mbostock/d3/graphs/contributors). As Mike says: 29 | 30 |
31 | D3 is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG, and CSS. D3’s emphasis on web standards gives you the full capabilities of modern browsers without tying yourself to a proprietary framework, combining powerful visualization components and a data-driven approach to DOM manipulation. 32 |
33 | 34 | In short, this means that you can take data and represent it within a web browser in [all sorts of fun and effective ways](https://github.com/mbostock/d3/wiki/Gallery). 35 | 36 | D3 is good for web cartographers because, well ... [once we loved Flash](http://freedom.indiemaps.com/). But then we couldn't as much anymore. We needed to learn JavaScript and embrace open web standards as our way forward for making maps on the web. D3 offers us the promise of complete control over the design and interaction of our maps, from dynamically updating data in thematic maps to achieving subtle nuance within its visual hierarchy. And ... cartographers love to use [different map projections](http://axismaps.github.io/thematic-cartography/articles/projections.html). D3 is [really good at map projections](https://github.com/mbostock/d3/wiki/Geo-Projections). 37 | 38 | D3 is open source, meaning you can [see, copy, and modify the raw code](https://github.com/mbostock/d3/blob/master/D3) to your liking. You can even help make the code better and issue a [pull request](https://github.com/mbostock/d3/pulls) for your code to be incorporated into the build. Collaboratively, we're now participating in a thriving community of web mappers and developers who are quickly changing how we build and use geospatial information. 39 | 40 | ##How do we learn to use D3? 41 | 42 | **Warning:** It's probably a good idea to spend some time [learning JavaScript](http://eloquentjavascript.net/) – as well as other [modern web technologies](https://developer.mozilla.org/en-US/docs/Web) – before tackling D3. D3 may not be the best point-of-entry for a newbie web programmer. Playing with a selection library such as [JQuery](https://jquery.com/) wouldn't hurt either. 43 | 44 | That being said, there is a growing body of excellent tutorials and talks aimed at getting newbies to D3 over the initially steep learning curve. Among these I recommend: 45 | 46 | * [Mapping with D3: A Friendly Introduction](http://maptimeboston.github.io/d3-maptime) (presentation by [@awoodruff](https://twitter.com/awoodruff)) 47 | * [A fun, difficult introduction to d3](http://www.macwright.org/presentations/dcjq/) (presentation by [@tmcw](https://twitter.com/tmcw)) 48 | * [Interactive Data Visualization for the Web](http://alignedleft.com/work/d3-book) (book by Scott Murray) 49 | * [Interactive and Multivariate Choropleth Maps with D3](http://www.cartographicperspectives.org/index.php/journal/article/view/cp78-sack-et-al/) (an article pushlished in *Cartographic Perspectives*, written by [@northlandiguana](https://twitter.com/northlandiguana) and a couple other fellas) 50 | 51 | It's also helpful to look at examples: 52 | 53 | * [http://bl.ocks.org/mbostock](http://bl.ocks.org/mbostock) (Mike Bostock's examples) 54 | * [bl.ocksplorer.org](http://bl.ocksplorer.org/) (A web tool to help you search for more examples) 55 | * [@mapsam](https://twitter.com/vancematthews) also has good examples in his [D3.geo Cookbook](https://github.com/mapsam/d3-geo) 56 | 57 | You may also wish to consider [learning all the fundamentals skills and concepts needed to build awesome web maps](http://newmapsplus.uky.edu/) within two new online mapping Graduate Certificate and Masters degree programs I'm helping to build. [Shoot me a message](https://twitter.com/rgdonohue) if you want to know more? 58 | 59 | Let's get started already! 60 | 61 | ##1. A very simple D3 map 62 | 63 | * View the code and data for this map: [d3-map01-starter](https://github.com/maptimelex/d3-mapping/tree/master/d3-map01-starter) 64 | * See a working example here: A very simple D3 map 65 | 66 | This is a very basic map, really just a basemap consisting of county polygons. But also it is projected, in this case using an Albers Equal Area projection, which is highly suitable for making choropleth maps. Let's run through what this code is doing to produce the map? 67 | 68 | First, at the top of the web document we're loading two external resources. The first is the magical d3 JavaScript code, which here in minified and served from a content delivery network (CDN). The second is an external JavaScript file named _ky-counties.js_, being hosted locally (i.e., in the same directory as our _index.html_ file). 69 | 70 | ```html 71 | 72 | 73 | ``` 74 | 75 | When we peer inside that _ky-counties.js_ file, we'd see it's really information encoded as [GeoJSON](http://geojson.org/) (our county geometries, stored as a GeoJSON FeatureCollection) that's been assigned to a variable named counties. Also note that the GeoJSON properties include nominal data values such as NAME (the name of each county) and numerical data such a ALAND (the area of each county, which will be useful later for normalizing data for a choropleth map): 76 | 77 | ```javascript 78 | var counties = { 79 | "type": "FeatureCollection", 80 | "features": [ 81 | { "type": "Feature", "properties": { "COUNTYFP": "007", "NAME": "Ballard", "ALAND": 638843907 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -89.1719, 37.0682 ], [ -89.03, 37.2111 ], [ -88.9334, 37.2252 ], [ -88.816, 36.9541 ], [ -88.9888, 36.9195 ], [ -89.1008, 36.944 ], [ -89.1327, 36.9822 ], [ -89.1719, 37.0682 ] ] ] ] } }, 82 | { "type": "Feature", "properties": { "COUNTYFP": "011", "NAME": "Bath", "ALAND": 722081626 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -83.9779, 38.1921 ], [ -83.8484, 38.2969 ], [ -83.7323, 38.2835 ], [ -83.6352, 38.1875 ], [ -83.5072, 38.0863 ], [ -83.4988, 38.0506 ], [ -83.5774, 38.0132 ], [ -83.6593, 38.0283 ], [ -83.7594, 37.9987 ], [ -83.8814, 38.1365 ], [ -83.9779, 38.1921 ] ] ] ] } }, .... 83 | 84 | ``` 85 | 86 | These two files load before the rest of the JavaScript at the bottom of the page executes. Before we turn to that code, we'll note that there is a CSS rule assigning stroke and fill properties to a class named .county 87 | 88 | ```css 89 | .county { 90 | stroke: #fff; 91 | fill:#005DAA; 92 | } 93 | 94 | ``` 95 | 96 | Turning now to the JavaScript code at the bottom of the page, we've first declared a couple variables for width and height, using the width and height of the browser window. We could have just as well hard code these as values such as 960px wide and 640px tall (it really depends on the layout you're going for within your window). 97 | 98 | ```javascript 99 | var width = window.innerWidth, 100 | height = window.innerHeight; 101 | ``` 102 | 103 | What follows are four very compact JavaScript statements that draw an SVG map to our browser window using the GeoJSON information. Comments are provided here for clarification. 104 | 105 | Using method chaining to call a series of D3 methods, these four statements: 106 | 107 | 1) create a new SVG element and append it to the document's body 108 | 109 | 110 | ```javascript 111 | var svg = d3.select( "body" ) // select the document's body 112 | .append( "svg" ) // create and append a new svg element to it 113 | .attr( "width", width ); // give the svg width 114 | .attr( "height", height ); // give the svg height 115 | ``` 116 | 117 | 2) construct a new projection using the Conic Albers Equal Area projection, centered on Kentucky and scaled somewhat arbitrarily to fit with the window 118 | 119 | ```javascript 120 | var projection = d3.geo.albers() // create a new d3 projection function, albers equal area 121 | .center([0, 37.8]) // center the project within Kentucky's mid-latitude 122 | .rotate([85.8,0]) // rotate the globe to center with Kentucky's mid-longitude 123 | .scale(8000) // play with the scale until it's 'zoomed' about right 124 | .translate([width / 2, height / 2]); // center the svg (0,0 is top, left) 125 | ``` 126 | 127 | 3) construct a "path generator" using the projection information, to be used to draw SVG paths from the GeoJSON information 128 | 129 | ```javascript 130 | var geoPath = d3.geo.path() // create a new geo path generator 131 | .projection(projection); // assign the project we just created to it 132 | ``` 133 | 134 | 4) create and append a new SVG 'g' element (an SVG container element used for grouping other objects) 135 | 136 | ```javascript 137 | svg.append('g') // create and append a new SVG 'g' element to the svg 138 | .selectAll('path') // selectAll the path features that haven't been created yet 139 | .data(counties.features) // bind the GeoJSON features data to them 140 | .enter() // prepare to 141 | .append('path') // append the newly create path elements to the 'g' 142 | .attr( "d", geoPath ) // define the screen coordinates of the new path(s) 143 | .attr('class','county'); // give each a class name of 'county' 144 | ``` 145 | 146 | Wow, okay. There's a lot to understand there, and it's alright if you're a little confused by what's going on with all those chained method calls. People say learning D3 is difficult, and part of the reason is that it's written very concisely. 147 | 148 | Many of us begin making maps by looking at examples, copying the code, and hacking around with it a bit until it fits our use-case. These basic code examples, however, are pretty standard across D3 maps. So keep playing with them and it'll come around to make more sense. 149 | 150 | Let's push onward for now? 151 | 152 | ##2. A D3 map with basic interaction 153 | 154 | * View the code and data for this map: [d3-map02-interaction](https://github.com/maptimelex/d3-mapping/tree/master/d3-map02-interaction) 155 | * See a working example here: A D3 map with basic interaction 156 | 157 | Simply drawing a static map isn't super exciting. Much of the awesomeness of web mapping comes from giving the user the power to interact with the map, such as deriving specific information when mousing over or touching map elements. While this maptime lesson won't dive too deep into interaction, let's run through another simple example 158 | 159 | Let's say we wish to accomplish two things. We want the user to be able to retrieve the name of a specific county when hovering, and we want the map to provide a visual affordance of which county is being selected. 160 | 161 | This map is nearly identical to the previous one. We've added another CSS rule, .hover which will color the unit yellow when applied: 162 | 163 | ```css 164 | .county { 165 | stroke: #fff; 166 | fill:#005DAA; 167 | } 168 | .hover { 169 | fill: yellow; 170 | } 171 | ``` 172 | 173 | Within the JavaScript, we've appended two new methods to our selected group of SVG paths, an [_.on()_ method](https://github.com/mbostock/d3/wiki/Selections#on) which adds a listener to the objects. In this case, we're listening for a 'mouseover' and and 'mouseout' event. 174 | 175 | ```javascript 176 | svg.append('g') 177 | .selectAll('path') 178 | .data(counties.features) 179 | .enter() 180 | .append('path') 181 | .attr( "d", geoPath ) 182 | .attr('class','county') 183 | .on('mouseover', function(d){ 184 | d3.select('h2').text(d.properties.NAME); 185 | d3.select(this).attr('class','county hover'); 186 | }) 187 | .on('mouseout', function(d){ 188 | d3.select('h2').text(''); 189 | d3.select(this).attr('class','county'); 190 | }); 191 | ``` 192 | 193 | When triggered, the callback function for the 'mousover' event does two things: 194 | 195 | 1. selects the h2 element we've included within the document's HTML and inserts the name of the selected county within it 196 | 2. selects 'this' – that magic keyword allowing access to the context of the event, in this case the SVG path we're hovering over – and applies two CSS class rules to it, our county class and the new hover class we created. 197 | 198 | If you're puzzlingly over how the value of NAME is accessed through this code, it'd be useful for you to console.log() that d variable within the callback, and inspect the output in your browser's console: 199 | 200 | ```javascript 201 | .on('mouseover', function(d){ 202 | console.log(d); 203 | }) 204 | ``` 205 | 206 | We're not cooking with gas yet. Let's keep trucking! 207 | 208 | ##3. A D3 map using queue.js 209 | 210 | * View the code and data for this map: [d3-map03-queue](https://github.com/maptimelex/d3-mapping/tree/master/d3-map03-queue) 211 | * See a working example here: A D3 map using queue.js 212 | 213 | Our interaction fun is over for now. Instead we're going to cover some other ground that will make our map more flexible (and slightly more technically savvy). 214 | 215 | In the previous two maps we simply loaded our GeoJSON information as an external JavaScript file when the page loaded. An alternative approach is to use an asynchronous JavaScript and XML (AJAX) request to load the GeoJSON. 216 | 217 | While there are various ways to make an AJAX request, a convenient approach is to use [Queue.js](https://github.com/mbostock/queue), a helper library written by Mike Bostock. 218 | 219 | We can include a call to load the very small queue.js minified file within in the head of our HTML document, along with the D3 code: 220 | 221 | ```html 222 | 223 | 224 | A D3 map using queue.js 225 | 226 | 227 | ``` 228 | 229 | We also note that the file included with this map is named _ky-counties.json_ (rather than using a _.js_ file extension). A peek at the contents of this file reveals that it is not JavaScript, but rather our delicious GeoJSON FeatureCollection: 230 | 231 | ```js 232 | { 233 | "type": "FeatureCollection", 234 | "features": [ 235 | { "type": "Feature", "properties": { "COUNTYFP": "007", "NAME": "Ballard", "ALAND": 638843907 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -89.1719, 37.0682 ], [ -89.03, 37.2111 ], [ -88.9334, 37.2252 ], [ -88.816, 36.9541 ], [ -88.9888, 36.9195 ], [ -89.1008, 36.944 ], [ -89.1327, 36.9822 ], [ -89.1719, 37.0682 ] ] ] ] } }, 236 | { "type": "Feature", "properties": { "COUNTYFP": "011", "NAME": "Bath", "ALAND": 722081626 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -83.9779, 38.1921 ], [ -83.8484, 38.2969 ], [ -83.7323, 38.2835 ], [ -83.6352, 38.1875 ], [ -83.5072, 38.0863 ], [ -83.4988, 38.0506 ], [ -83.5774, 38.0132 ], [ -83.6593, 38.0283 ], [ -83.7594, 37.9987 ], [ -83.8814, 38.1365 ], [ -83.9779, 38.1921 ] ] ] ] } }, 237 | ``` 238 | 239 | Now let's use the queue methods to load our GeoJSON data. 240 | 241 | After we've declared and defined such variables as width, height, sag, projection, and geoPath, let's issue the call to load our GeoJSON: 242 | 243 | ```javascript 244 | queue() 245 | .defer(D3on, 'ky-counties.json') 246 | .await(ready); 247 | ``` 248 | 249 | We use the .defer() method to invoke D3's [native capabilities for requesting JSON files](https://github.com/mbostock/d3/wiki/Requests#d3_json), which loads our file into the document. The .await() method waits until the file is finished loading before calling a custom function named ready(), which passes any generated error messages as the first argument and the GeoJSON object as the second. 250 | 251 | As we'll see later on, the power of the Queue.js helper library is that we can include as many .defer() methods as we wish, loaded many files into our document. 252 | 253 | We declare a function ready(), and define it to accept two parameters: the error message(s) and the GeoJSON object. 254 | ```javascript 255 | function ready(error, counties){ 256 | 257 | svg.append('g') 258 | .selectAll('path') 259 | .data(counties.features) 260 | .enter() 261 | .append('path') 262 | .attr( "d", geoPath ) 263 | .attr('class','county'); 264 | } 265 | ``` 266 | 267 | Remember, the statements contained within this function's body are not executed until the external GeoJSON file has finished loading. Once that happens, our map is drawn exactly as before. 268 | 269 | ##4. A D3 map using topojson 270 | 271 | * View the code and data for this map: [map04-topojson](https://github.com/maptimelex/d3-mapping/tree/master/d3-map04-topojson) 272 | * See a working example here: A D3 map using topojson 273 | 274 | Before we start working with real data to make some thematic maps, let's cover one more important component of mapping with D3: the [TopoJSON format](https://github.com/mbostock/topojson). 275 | 276 | GeoJSON is a super cool format. However, one drawback, like its ShapeFile counterpart, is that shared borders between polygons are encoded twice. This leads to file bloat (booo). To this end, Mike Bostock figured out a way to encode topology (i.e., the relation between entities) and thereby eliminate the redundancy encoded with a GeoJSON. 277 | 278 | If we examine the file included with this map, we see that is is encoded not according to the GeoJSON specification, but rather as TopoJSON. 279 | 280 | **The _ky-counties.json data used in previous maps, encoded as GeoJSON (52KB):** 281 | 282 | ```javascript 283 | { 284 | "type": "FeatureCollection", 285 | "features": [ 286 | { "type": "Feature", "properties": { "COUNTYFP": "007", "NAME": "Ballard", "ALAND": 638843907 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -89.1719, 37.0682 ], [ -89.03, 37.2111 ], [ -88.9334, 37.2252 ], [ -88.816, 36.9541 ], [ -88.9888, 36.9195 ], [ -89.1008, 36.944 ], [ -89.1327, 36.9822 ], [ -89.1719, 37.0682 ] ] ] ] } }, 287 | { "type": "Feature", "properties": { "COUNTYFP": "011", "NAME": "Bath", "ALAND": 722081626 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -83.9779, 38.1921 ], [ -83.8484, 38.2969 ], [ -83.7323, 38.2835 ], [ -83.6352, 38.1875 ], [ -83.5072, 38.0863 ], [ -83.4988, 38.0506 ], [ -83.5774, 38.0132 ], [ -83.6593, 38.0283 ], [ -83.7594, 37.9987 ], [ -83.8814, 38.1365 ], [ -83.9779, 38.1921 ] ] ] ] } }, 288 | ``` 289 | 290 | **The same _ky-counties.json data used in this maps, encoded as GeoJSON (30KB):** 291 | 292 | ```javascript 293 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","properties":{"COUNTYFP":"007","NAME":"Ballard","ALAND":638843907,"oil_wells":0,"gas_wells":0},"arcs":[[0,1,2]]},{"type":"Polygon","properties":{"COUNTYFP":"011","NAME":"Bath","ALAND":722081626,"oil_wells":45,"gas_wells":18},"arcs":[[3,4,5,6,7]]},{"type":"Polygon","properties":{"COUNTYFP":"013","NAME":"Bell","ALAND":929806591,"oil_wells":23,"gas_wells":593},"arcs":[[8,9,10,11,12,13]]}, 294 | ``` 295 | 296 | While the difference between 50KB and 32KB in this example is quite trivial, the TopoJSON starts to pay off when loading more more complex, less abstracted geometries (consider all of US counties). 297 | 298 | To use topojson, we need to first make sure its functionality is accessible within our JavaScript by including a request to load it. Our document is now loading three separate JavaScript libraries: 299 | 300 | ```html 301 | 302 | 303 | 304 | ``` 305 | 306 | To access our TopoJSON data and draw our same simple map with D3, we only need to change one line within our JavaScript. Whereas previously we were simply passing counties.features within the .data() method (i.e., .data(counties.features)), this time we need to invoke a topojson method named .feature: 307 | 308 | ```javascript 309 | svg.append('g') 310 | .selectAll('path') 311 | .data( topojson.feature(counties, counties.objects.counties).features) 312 | .enter() 313 | .append('path') 314 | .attr( "d", geoPath ) 315 | .attr('class','county'); 316 | ``` 317 | 318 | Note that the first argument passed when calling topojson.feature is a reference to our TopoJSON object. The second argument digs into this object to access the specific objects contained within it. Note the object keys objects and counties encoded within the _ky-counties.json_ TopoJSON itself (pasted above). 319 | 320 | The topojson.feature() method converts our TopoJSON back into GeoJSON (whew! GeoJSON I thought you were gone forever!). The final .features is a property that allows us to use the returned GeoJSON's features as our data. Our script then continues as it has and we, once again, have a pretty boring (but highly efficient!) static basemap of Kentucky's counties. 321 | 322 | ##5. A D3 map plotting oil and gas well points 323 | 324 | * View the code and data for this map: [map05-data-point](https://github.com/maptimelex/d3-mapping/tree/master/d3-map05-data-point) 325 | * See a working example here: A D3 map plotting oil and gas well points 326 | 327 | Alright, enough of this basemap nonsense already. Let's work with some real data to do some thematic web mapping! 328 | 329 | In my ongoing efforts to better understand our changing energy landscapes, I've dug up some [fun data on oil and gas wells in Kentucky](http://kgs.uky.edu/kgsweb/DataSearching/oilsearch.asp), maintained by the [Kentucky Geological Survey](http://www.uky.edu/KGS/). The data are stored within a CSV and have a data attribute of either "OIL" or "GAS". For this map we're going to try to plot these wells using D3. 330 | 331 | **Disclaimer:** This is really kinda a silly exercise, as normally you wouldn't want to create such a large number of SVG elements. We'd likely run into problems if we applied panning and zooming, for instance. Better solutions exist using the HTML5 Canvas API or baking the data into tiles using something like [Mapbox Studio](https://www.mapbox.com/mapbox-studio). But ... let's just experiment for now, shall we? 332 | 333 | Within [@awoodruff]()'s wonderful examples of D3 for[@maptimeBOSTON] he plotted some point data encoded as GeoJSON. While this is fine for a limited number of points, the well data I've dug up has 65,551 records. Translating this 1.8MB CSV file into GeoJSON leaves us with an 11MB file, a bit too large for loading into a web map. Therefore, it's desirable to load the data as CSV and covert either to GeoJSON within the script (something Mapbox's [leaflet-omnivore](https://github.com/mapbox/leaflet-omnivore) is good at) or use to directly create the desired SVG elements (the approach we'll explore here). Remember, flat-file CSVs are about as efficient data format as you'll ever get! 334 | 335 | For this map we're first going to load in our CSV data, in addition to our beloved KY county polygons, again using Queue.js's awesome asynchronous power. We'll pass the resultant CSV data into our .ready() function along with the county data, modifying the functions signature to accept the third parameter referencing our wells data: 336 | 337 | ```javascript 338 | queue() 339 | .defer(D3on, 'ky-counties.json') 340 | .defer(d3.csv, 'wells.csv') 341 | .await(ready); 342 | 343 | function ready(error, counties, wells){ 344 | 345 | // sweet JS code here 346 | } 347 | 348 | ``` 349 | 350 | Note that the d3.csv() method has converted the CSV data to an Array of JavaScript Objects. We could console.log(wells) and inspect the result in the JavaScript console: 351 | 352 | ![Array of Objects](graphics/array-of-objects.png) 353 | 354 | Instead of drawing SVG 'path' elements, we're going to create [SVG 'circle' elements](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle) to represent each of the wells. 355 | 356 | Let's look at the code to see how this is done: 357 | 358 | ```javascript 359 | svg.append('g') 360 | .selectAll("circle") 361 | .data(wells) 362 | .enter() 363 | .append("circle") 364 | .attr("cx", function(d){ 365 | return projection([d["X"], d["Y"] ])[0]; 366 | }) 367 | .attr("cy", function(d){ 368 | return projection([d["X"], d["Y"] ])[1]; 369 | }) 370 | .attr("r", 1); 371 | ``` 372 | 373 | Similar to drawing SVG 'path' elements with D3, we apply a sequence of chained methods to select all the 'circle' elements (that don't exist yet), bind the data, and enter and append the new elements. 374 | 375 | SVG 'circle' elements require 'cx' and 'cy' attributes to be placed within screen coordinates. However, we need to translate our longitude ('X') and latitude ('Y') values into screen coordinates. How do we do this? We've already been doing it to draw our 'path' elements, using the powerful _d3.projection_ functionality. So, we simply need to pass that function an array of our two coordinates and assign the translated values as the 'circle' element's 'cx' and 'cy' attributes, respectively. We'll also give the circle a radius ('r' attribute) of 1. 376 | 377 | ![Wells plotted across Kentucky counties](graphics/wells.png) 378 | 379 | Cool, now we've plotted way too many SVG circles on our D3 map. There's a definite spatial pattern we can recognize (i.e., where wells exist). Let's make one final adjustment to make it a more useful thematic map. How can we see the spatial pattern between oil and gas wells? Rather than encode these circles with size, as we would with a [proportional symbol map](http://www.cartographicperspectives.org/index.php/journal/article/view/cp76-donohue-et-al/1307), let's encode these nominal categories using color ([or hue, more accurately](http://axismaps.github.io/thematic-cartography/articles/color_schemes.html)). 380 | 381 | To achieve this with D3 JavaScript code, I'm going to append a few more methods to the group of circles: two to style the stroke and fill of the circles and another to set the opacity of the circles at .6 to improve the readability of the map. The modified code uses simple conditional statements to determine if a given circle is oil or gas, and applies either a red fill color (for oil) or an orange fill color (for gas) to each of the selected circles. 382 | 383 | ```javascript 384 | svg.append("g") 385 | .selectAll("circle") 386 | .data(wells) 387 | .enter() 388 | .append("circle") 389 | .attr("cx", function(d){ 390 | return projection([d["X"], d["Y"] ])[0]; 391 | }) 392 | .attr("cy", function(d){ 393 | return projection([d["X"], d["Y"] ])[1]; 394 | }) 395 | .attr("r", 1) 396 | .style("fill", function(d){ 397 | if(d.Org_Result == "OIL"){ 398 | return "#e41a1c"; 399 | }else if(d.Org_Result == "GAS"){ 400 | return "#fd8d3c"; 401 | } 402 | }) 403 | .attr("opacity", ".6"); 404 | ``` 405 | 406 | Result shows us the spatial distribute of these two well types: 407 | 408 | ![Oil and gas wells plotted across Kentucky counties](graphics/oil-gas-wells.png) 409 | 410 | Whew! Okay. Two more maps and it's nearly time for #geoBeers? 411 | 412 | ##6. A D3 county choropleth map of Kentucky oil or gas wells 413 | 414 | * View the code and data for this map: [map06-data-area](https://github.com/maptimelex/d3-mapping/tree/master/d3-map06-data-area) 415 | * See a working example here: A D3 county choropleth map of Kentucky oil or gas wells 416 | 417 | While plotting the specific points was both fun and informative, let's say we wish to aggregate these points to the county level to both simplify the map and avoid the mess of drawing 65,551 circles atop one another. Also, we want to take advantage of our amazing ability to project our map into an equal area projection, so let's make a choropleth map (Yaaahhh! The world doesn't have enough of these yet). 418 | 419 | We can see that the TopoJSON supplied with this map also contains the number of oil and gas wells, already aggregated to each county: 420 | 421 | ```javascript 422 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","properties":{"COUNTYFP":"007","NAME":"Ballard","ALAND":638843907,"oil_wells":0,"gas_wells":0},"arcs":[[0,1,2]]},{"type":"Polygon","properties":{"COUNTYFP":"011","NAME":"Bath","ALAND":722081626,"oil_wells":45,"gas_wells":18},"arcs":[[3,4,5,6,7]]},{"type":"Polygon","properties":{"COUNTYFP":"013","NAME":"Bell","ALAND":929806591,"oil_wells":23,"gas_wells":593},"arcs":[[8,9,10,11,12,13]]} 423 | ``` 424 | 425 | On one hand, editing the D3 code to change the fill color of our county 'path' elements isn't very hard (we just did it for the circles). We know we can access the data values for each element (e.g., (d.properties.oil_wells) and simply need to modify our d3-map04 code like so: 426 | 427 | ```javascript 428 | svg.append("g") 429 | .selectAll("path") 430 | .data( topojson.feature(counties, counties.objects.counties).features) 431 | .enter() 432 | .append("path") 433 | .attr( "d", geoPath ) 434 | .attr("class","county") 435 | .attr( "fill", function(d){ 436 | // return some color here return based upon the # of wells 437 | }); 438 | ``` 439 | 440 | However, choropleth maps are trickier to make than we might think at first. You can read more about this in a [handy guide to thematic cartography recently published by Axis Maps](http://axismaps.github.io/thematic-cartography/articles/choropleth.html). 441 | 442 | For one, we need to standardize these raw counts. Fortunately our county polygons also have property values for area, which makes sense to use in this case (we want to know the density of wells within each county for proper comparison). That's pretty easy then, we can simply use the calculated value of d.properties.oil_wells/d.properties.ALAND. 443 | 444 | How do we then assign a color based upon that value to each polygon? We need to classify the data in some way. That is, we need to group the observations in some meaningful way (e.g., counties with few, moderate, or high number of wells). 445 | 446 | [D3's Quantitate Scales](https://github.com/mbostock/d3/wiki/Quantitative-Scales) make this pretty easy, and you can play with a variety of options including logarithmic, quantile-based, and even linear (i.e., continuous) scales with which to determine what color is applied to what unit. There are numerous examples from which to draw upon: 447 | 448 | * [Population Choropleth](http://bl.ocks.org/mbostock/6320825) 449 | * [Projected Choropleth](http://bl.ocks.org/mbostock/5925375) 450 | * [Kentucky Population Density](http://bl.ocks.org/mbostock/5737662) 451 | * [Area Choropleth](http://bl.ocks.org/mbostock/4206573) 452 | * [Choropleth](http://bl.ocks.org/mbostock/4060606) 453 | * [Threshold Choropleth](http://bl.ocks.org/mbostock/3306362) 454 | 455 | We're gunna make things a little trickier though, and use [Jenks natural breaks optimization](https://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization), a classification method that minimizing within-group variance and maximizes between-group differences (huh? [read more ...](http://axismaps.github.io/thematic-cartography/articles/classification.html)). 456 | 457 | Calculating the breaks using code [can be a little tricky](http://www.macwright.org/2013/02/18/literate-jenks.html). Fortunately, the bright programmer working for [Mapbox](https://www.mapbox.com/), Tom MacWright, wrote a useful little JavaScript library called [Simple Statistics](http://www.macwright.org/simple-statistics/) which includes a method ss.jenks() that can do the heavy thinking for us. 458 | 459 | Tom even provides an example of using it with D3: [Jenks Natural Breaks with simple-statistics and d3](http://bl.ocks.org/tmcw/4969184) 460 | 461 | So then, once we include the Simple Statistics library in our document (we're linking to a local copy because it doesn't appear to be hosting on a CDN), we're ready to rock in roll: 462 | 463 | ```html 464 | 465 | ``` 466 | 467 | First, before we draw our map, we want to determine the class breaks using the Simple Statistics method. To achieve this, we'll use the [native JavaScript method .map()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) to derive an array of all our values, and then use ss.jenks() to return a given number of 'natural' class breaks (in this case 5). 468 | 469 | Note that the ss.jenks() method returns the min and max values of the range as well, which [we don't need for the d3.scale.threshold().domain()](http://bl.ocks.org/rgdonohue/823a0c67087e0a66d171). So we'll use JavaScript methods of .shift() and .pop() to remove the first and last elements from this Array. 470 | 471 | For the d3.scale.threshold().range() values we'll simply hard-code 5 color values into an Array. We then use these two Arrays to construct a function for returning a specific color based upon a value falling within the derived class breaks. 472 | 473 | ```javascript 474 | var attribute = "gas_wells"; // alternative is "oil_wells" 475 | 476 | var breaks = ss.jenks(counties.objects.counties.geometries.map(function(d) { 477 | return d.properties[attribute]/d.properties.ALAND; 478 | }), 5); 479 | 480 | breaks.shift(); // remove min value from breaks Array before applying to domain 481 | breaks.pop(); // same for max 482 | 483 | var colors = ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"]; 484 | 485 | var jenks = d3.scale.threshold() 486 | .domain(breaks) 487 | .range(colors); 488 | ``` 489 | 490 | We can then send our calculated wells density value to this function and assign the return value to the 'fill' attribute of each polygon. Wha-la ... in a few terse lines of code we have a choropleth map classified according to Jenks optimal classification breaks. 491 | 492 | ##7. A toggle D3 county map of Kentucky oil and gas wells 493 | 494 | * View the code and data for this map: [map07-data-area-toggle](https://github.com/maptimelex/d3-mapping/tree/master/d3-map07-data-area-toggle) 495 | * See a working example here: A toggle D3 county map of Kentucky oil and gas wells 496 | 497 | In the previous example, we could change the data represented by editing the code (i.e., the value of the variable attribute) and re-rendering the map. But what if we wanted to give our user the ability re-draw the map with a simple toggle button? 498 | 499 | First we add some HTML elements to the document's body: 500 | 501 | ```html 502 |
503 | 504 | 505 |
506 | ``` 507 | 508 | We then need to move the code that applies a fill color to each county from the original construction of these elements into it's own function which can be called repeatedly (we'll name it color() here). We use D3 to select our form element and detect a change, upon which the value of the variable attribute is reassigned and the color() function is called again. 509 | 510 | 511 | ```javascript 512 | var countiesSVG = svg.append("g") 513 | .selectAll("path") 514 | .data( topojson.feature(counties, counties.objects.counties).features) 515 | .enter() 516 | .append("path") 517 | .attr( "d", geoPath ) 518 | .attr("class","county"); 519 | 520 | color(); 521 | 522 | d3.selectAll("input").on("change", function() { 523 | attribute = this.id; 524 | color(); 525 | }); 526 | 527 | function color(){ 528 | 529 | d3.selectAll('.county') 530 | .transition() 531 | .attr( "fill", function(d){ 532 | return jenks(d.properties[attribute]/d.properties.ALAND); 533 | }); 534 | } 535 | ``` 536 | 537 | The color function simply selects all elements with a class of '.county' (i.e., all of our county polygons) and assigns a color value to the fill attribute as before. This example includes the use of a [d3.transtion()](https://github.com/mbostock/d3/wiki/Transitions) to make the transition between maps more pleasant on the eye. 538 | 539 | 540 | **Additional tools and resources used in this web mapping process:** 541 | 542 | * [TopoJSON](https://github.com/mbostock/topojson) 543 | * [Mapshaper](https://github.com/mbloch/mapshaper) 544 | * [Simple Statistics](http://www.macwright.org/simple-statistics/) 545 | * [Turf.js](http://turfjs.org/) 546 | * [Open Office Calc](https://www.openoffice.org/product/calc.html) 547 | * [geojson-precision](https://github.com/jczaplew/geojson-precision) 548 | * [QGIS](http://www.qgis.org/) 549 | * [Stack Overflow](http://stackoverflow.com/) 550 | 551 | 552 | -------------------------------------------------------------------------------- /assets/css/the-big-picture.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Start Bootstrap - The Big Picture HTML Template (http://startbootstrap.com) 3 | * Code licensed under the Apache License v2.0. 4 | * For details, see http://www.apache.org/licenses/LICENSE-2.0. 5 | */ 6 | @import url(http://fonts.googleapis.com/css?family=Montserrat); 7 | body { 8 | margin-top: 50px; 9 | margin-bottom: 50px; 10 | background: none; 11 | font-family: 'Montserrat', Arial, sans-serif; 12 | color: #ffffff; 13 | } 14 | 15 | .full { 16 | /*background: url(http://placehold.it/1920x1080) no-repeat center center fixed; */ 17 | background-color: #005daa; 18 | -webkit-background-size: cover; 19 | -moz-background-size: cover; 20 | -o-background-size: cover; 21 | background-size: cover; 22 | 23 | } 24 | 25 | p>a, p>a:hover { 26 | color: #cdcdcd; 27 | } 28 | 29 | a.list-group-item { 30 | background-color: transparent; 31 | border-color: transparent; 32 | border-radius: 4px; 33 | } 34 | a.list-group-item:hover { 35 | background-color: white; 36 | } 37 | 38 | a.list-group-item .list-group-item-heading { 39 | color: #ffffff; 40 | } 41 | a.list-group-item:hover .list-group-item-heading { 42 | color: #005daa; 43 | } 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/assets/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /assets/js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.4 (http://getbootstrap.com) 3 | * Copyright 2011-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-mp.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); -------------------------------------------------------------------------------- /d3-map01-starter/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A very simple D3 map 5 | 6 | 7 | 8 | 9 | 29 | 30 | 31 |

Kentucky Counties

32 | 60 | 61 | -------------------------------------------------------------------------------- /d3-map02-interaction/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A D3 map with basic interaction 5 | 6 | 7 | 8 | 9 | 36 | 37 | 38 |

Kentucky Counties

39 |

40 | 76 | 77 | -------------------------------------------------------------------------------- /d3-map03-queue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A D3 map using queue.js 5 | 6 | 7 | 8 | 9 | 29 | 30 | 31 |

Kentucky Counties

32 | 67 | 68 | -------------------------------------------------------------------------------- /d3-map04-topojson/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A D3 map using topojson 5 | 6 | 7 | 8 | 9 | 10 | 30 | 31 | 32 |

Kentucky Counties

33 | 69 | 70 | -------------------------------------------------------------------------------- /d3-map04-topojson/ky-counties.json: -------------------------------------------------------------------------------- 1 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","properties":{"COUNTYFP":"007","NAME":"Ballard","ALAND":638843907,"oil_wells":0,"gas_wells":0},"arcs":[[0,1,2]]},{"type":"Polygon","properties":{"COUNTYFP":"011","NAME":"Bath","ALAND":722081626,"oil_wells":45,"gas_wells":18},"arcs":[[3,4,5,6,7]]},{"type":"Polygon","properties":{"COUNTYFP":"013","NAME":"Bell","ALAND":929806591,"oil_wells":23,"gas_wells":593},"arcs":[[8,9,10,11,12,13]]},{"type":"Polygon","properties":{"COUNTYFP":"031","NAME":"Butler","ALAND":1103562551,"oil_wells":546,"gas_wells":57},"arcs":[[14,15,16,17,18,19]]},{"type":"Polygon","properties":{"COUNTYFP":"051","NAME":"Clay","ALAND":1215349017,"oil_wells":81,"gas_wells":1340},"arcs":[[20,21,22,23,-10,24,25]]},{"type":"Polygon","properties":{"COUNTYFP":"061","NAME":"Edmonson","ALAND":784464286,"oil_wells":270,"gas_wells":115},"arcs":[[26,27,28,-17,29]]},{"type":"Polygon","properties":{"COUNTYFP":"097","NAME":"Harrison","ALAND":793479801,"oil_wells":0,"gas_wells":0},"arcs":[[30,31,32,33,34,35,36]]},{"type":"Polygon","properties":{"COUNTYFP":"121","NAME":"Knox","ALAND":1000508842,"oil_wells":41,"gas_wells":1014},"arcs":[[37,-25,-9,38]]},{"type":"Polygon","properties":{"COUNTYFP":"131","NAME":"Leslie","ALAND":1038212361,"oil_wells":41,"gas_wells":619},"arcs":[[39,40,-11,-24]]},{"type":"Polygon","properties":{"COUNTYFP":"133","NAME":"Letcher","ALAND":875193012,"oil_wells":19,"gas_wells":1444},"arcs":[[41,42,43,44,45]]},{"type":"Polygon","properties":{"COUNTYFP":"147","NAME":"McCreary","ALAND":1105417092,"oil_wells":65,"gas_wells":106},"arcs":[[46,47,48,49,50]]},{"type":"Polygon","properties":{"COUNTYFP":"151","NAME":"Madison","ALAND":1132604797,"oil_wells":4,"gas_wells":0},"arcs":[[51,52,53,54,55,56,57]]},{"type":"Polygon","properties":{"COUNTYFP":"187","NAME":"Owen","ALAND":909364873,"oil_wells":0,"gas_wells":0},"arcs":[[58,59,60,61,62,63]]},{"type":"Polygon","properties":{"COUNTYFP":"217","NAME":"Taylor","ALAND":689791762,"oil_wells":79,"gas_wells":8},"arcs":[[64,65,66,67,68]]},{"type":"Polygon","properties":{"COUNTYFP":"231","NAME":"Wayne","ALAND":1186685586,"oil_wells":288,"gas_wells":20},"arcs":[[69,70,-51,71,72]]},{"type":"Polygon","properties":{"COUNTYFP":"237","NAME":"Wolfe","ALAND":575419314,"oil_wells":398,"gas_wells":98},"arcs":[[73,74,75,76,77,78]]},{"type":"Polygon","properties":{"COUNTYFP":"003","NAME":"Allen","ALAND":891830500,"oil_wells":606,"gas_wells":9},"arcs":[[79,80,81,82,83]]},{"type":"Polygon","properties":{"COUNTYFP":"025","NAME":"Breathitt","ALAND":1275350659,"oil_wells":308,"gas_wells":448},"arcs":[[84,-78,85,86,87,88]]},{"type":"Polygon","properties":{"COUNTYFP":"029","NAME":"Bullitt","ALAND":769295444,"oil_wells":0,"gas_wells":1},"arcs":[[89,90,91,92]]},{"type":"Polygon","properties":{"COUNTYFP":"033","NAME":"Caldwell","ALAND":893006791,"oil_wells":11,"gas_wells":35},"arcs":[[93,94,95,96,97,98]]},{"type":"Polygon","properties":{"COUNTYFP":"055","NAME":"Crittenden","ALAND":932275449,"oil_wells":3,"gas_wells":2},"arcs":[[99,100,-99,101,102,103]]},{"type":"Polygon","properties":{"COUNTYFP":"059","NAME":"Daviess","ALAND":1187163652,"oil_wells":2407,"gas_wells":89},"arcs":[[104,105,106,107,108]]},{"type":"Polygon","properties":{"COUNTYFP":"065","NAME":"Estill","ALAND":655468653,"oil_wells":450,"gas_wells":13},"arcs":[[109,110,111,112,-55]]},{"type":"Polygon","properties":{"COUNTYFP":"069","NAME":"Fleming","ALAND":902720729,"oil_wells":0,"gas_wells":0},"arcs":[[113,114,115,-5,116,117]]},{"type":"Polygon","properties":{"COUNTYFP":"079","NAME":"Garrard","ALAND":595898816,"oil_wells":4,"gas_wells":6},"arcs":[[118,-58,119,120,121,122]]},{"type":"Polygon","properties":{"COUNTYFP":"089","NAME":"Greenup","ALAND":892115289,"oil_wells":97,"gas_wells":58},"arcs":[[123,124,125,126]]},{"type":"Polygon","properties":{"COUNTYFP":"095","NAME":"Harlan","ALAND":1206487467,"oil_wells":11,"gas_wells":484},"arcs":[[-41,127,-46,128,-12]]},{"type":"Polygon","properties":{"COUNTYFP":"109","NAME":"Jackson","ALAND":894055721,"oil_wells":28,"gas_wells":63},"arcs":[[-56,-113,129,130,-21,131,132]]},{"type":"Polygon","properties":{"COUNTYFP":"119","NAME":"Knott","ALAND":910435521,"oil_wells":20,"gas_wells":2263},"arcs":[[133,134,135,-43,136,-87]]},{"type":"Polygon","properties":{"COUNTYFP":"123","NAME":"Larue","ALAND":677353871,"oil_wells":1,"gas_wells":37},"arcs":[[137,138,-65,139,140,141]]},{"type":"Polygon","properties":{"COUNTYFP":"139","NAME":"Livingston","ALAND":810982681,"oil_wells":0,"gas_wells":0},"arcs":[[142,-103,143,144,145]]},{"type":"Polygon","properties":{"COUNTYFP":"153","NAME":"Magoffin","ALAND":798866504,"oil_wells":1705,"gas_wells":929},"arcs":[[146,147,-134,-86,-77,148]]},{"type":"Polygon","properties":{"COUNTYFP":"165","NAME":"Menifee","ALAND":527282429,"oil_wells":28,"gas_wells":112},"arcs":[[-7,149,150,-75,151,152]]},{"type":"Polygon","properties":{"COUNTYFP":"183","NAME":"Ohio","ALAND":1521032830,"oil_wells":1412,"gas_wells":85},"arcs":[[153,-107,154,155,156,-15,157]]},{"type":"Polygon","properties":{"COUNTYFP":"193","NAME":"Perry","ALAND":879750116,"oil_wells":44,"gas_wells":1151},"arcs":[[-88,-137,-42,-128,-40,-23,158]]},{"type":"Polygon","properties":{"COUNTYFP":"195","NAME":"Pike","ALAND":2037851002,"oil_wells":25,"gas_wells":5563},"arcs":[[-136,159,160,161,-44]]},{"type":"Polygon","properties":{"COUNTYFP":"203","NAME":"Rockcastle","ALAND":819848743,"oil_wells":7,"gas_wells":5},"arcs":[[162,-120,-57,-133,163,164]]},{"type":"Polygon","properties":{"COUNTYFP":"205","NAME":"Rowan","ALAND":724672131,"oil_wells":11,"gas_wells":73},"arcs":[[165,166,167,168,-150,-6,-116]]},{"type":"Polygon","properties":{"COUNTYFP":"209","NAME":"Scott","ALAND":729770749,"oil_wells":0,"gas_wells":3},"arcs":[[-62,169,-37,170,171,172,173]]},{"type":"Polygon","properties":{"COUNTYFP":"229","NAME":"Washington","ALAND":769917017,"oil_wells":0,"gas_wells":0},"arcs":[[174,175,176,177,178]]},{"type":"Polygon","properties":{"COUNTYFP":"027","NAME":"Breckinridge","ALAND":1469042402,"oil_wells":132,"gas_wells":83},"arcs":[[179,180,181,182,-156,183]]},{"type":"Polygon","properties":{"COUNTYFP":"063","NAME":"Elliott","ALAND":606875335,"oil_wells":426,"gas_wells":115},"arcs":[[-168,184,185,186]]},{"type":"Polygon","properties":{"COUNTYFP":"071","NAME":"Floyd","ALAND":1018762993,"oil_wells":87,"gas_wells":2862},"arcs":[[187,188,-160,-135,-148]]},{"type":"Polygon","properties":{"COUNTYFP":"083","NAME":"Graves","ALAND":1429026325,"oil_wells":0,"gas_wells":0},"arcs":[[189,190,191,192,193,194]]},{"type":"Polygon","properties":{"COUNTYFP":"093","NAME":"Hardin","ALAND":1614337414,"oil_wells":2,"gas_wells":25},"arcs":[[-182,195,196,197,-92,198,-142,199,200]]},{"type":"Polygon","properties":{"COUNTYFP":"101","NAME":"Henderson","ALAND":1130968912,"oil_wells":2928,"gas_wells":39},"arcs":[[-109,201,202,203,204]]},{"type":"Polygon","properties":{"COUNTYFP":"115","NAME":"Johnson","ALAND":678468220,"oil_wells":1118,"gas_wells":855},"arcs":[[205,206,-188,-147,207]]},{"type":"Polygon","properties":{"COUNTYFP":"125","NAME":"Laurel","ALAND":1123945911,"oil_wells":21,"gas_wells":115},"arcs":[[208,-164,-132,-26,-38,209,-48]]},{"type":"Polygon","properties":{"COUNTYFP":"127","NAME":"Lawrence","ALAND":1076386415,"oil_wells":1635,"gas_wells":793},"arcs":[[-186,210,211,212,213,-206,214]]},{"type":"Polygon","properties":{"COUNTYFP":"135","NAME":"Lewis","ALAND":1250589444,"oil_wells":7,"gas_wells":9},"arcs":[[215,-127,216,-166,-115,217]]},{"type":"Polygon","properties":{"COUNTYFP":"159","NAME":"Martin","ALAND":594682183,"oil_wells":73,"gas_wells":1552},"arcs":[[-214,218,-161,-189,-207]]},{"type":"Polygon","properties":{"COUNTYFP":"179","NAME":"Nelson","ALAND":1081354534,"oil_wells":1,"gas_wells":0},"arcs":[[-91,219,220,-175,221,-138,-199]]},{"type":"Polygon","properties":{"COUNTYFP":"181","NAME":"Nicholas","ALAND":505491181,"oil_wells":0,"gas_wells":0},"arcs":[[222,-117,-4,223,-35]]},{"type":"Polygon","properties":{"COUNTYFP":"189","NAME":"Owsley","ALAND":511283093,"oil_wells":17,"gas_wells":39},"arcs":[[224,-89,-159,-22,-131]]},{"type":"Polygon","properties":{"COUNTYFP":"197","NAME":"Powell","ALAND":463555629,"oil_wells":394,"gas_wells":46},"arcs":[[225,-152,-74,226,-111,227]]},{"type":"Polygon","properties":{"COUNTYFP":"107","NAME":"Hopkins","ALAND":1403763233,"oil_wells":808,"gas_wells":306},"arcs":[[228,229,230,231,-95]]},{"type":"Polygon","properties":{"COUNTYFP":"177","NAME":"Muhlenberg","ALAND":1209734580,"oil_wells":1166,"gas_wells":296},"arcs":[[232,-158,-20,233,234,235,-231]]},{"type":"Polygon","properties":{"COUNTYFP":"167","NAME":"Mercer","ALAND":644472907,"oil_wells":0,"gas_wells":0},"arcs":[[236,237,238,-123,239,-177]]},{"type":"Polygon","properties":{"COUNTYFP":"235","NAME":"Whitley","ALAND":1133976305,"oil_wells":91,"gas_wells":1248},"arcs":[[-210,-39,-14,240,-49]]},{"type":"Polygon","properties":{"COUNTYFP":"005","NAME":"Anderson","ALAND":522745724,"oil_wells":0,"gas_wells":0},"arcs":[[241,242,243,-237,-176,-221,244]]},{"type":"Polygon","properties":{"COUNTYFP":"049","NAME":"Clark","ALAND":653878141,"oil_wells":0,"gas_wells":14},"arcs":[[245,246,-228,-110,-54,247]]},{"type":"Polygon","properties":{"COUNTYFP":"099","NAME":"Hart","ALAND":1067328904,"oil_wells":289,"gas_wells":55},"arcs":[[-200,-141,248,249,250,-27,251]]},{"type":"Polygon","properties":{"COUNTYFP":"155","NAME":"Marion","ALAND":888389556,"oil_wells":50,"gas_wells":0},"arcs":[[-222,-179,252,253,-66,-139]]},{"type":"Polygon","properties":{"COUNTYFP":"043","NAME":"Carter","ALAND":1060590174,"oil_wells":21,"gas_wells":54},"arcs":[[-217,-126,254,-211,-185,-167]]},{"type":"Polygon","properties":{"COUNTYFP":"085","NAME":"Grayson","ALAND":1288701716,"oil_wells":13,"gas_wells":268},"arcs":[[-183,-201,-252,-30,-16,-157]]},{"type":"Polygon","properties":{"COUNTYFP":"175","NAME":"Morgan","ALAND":987115528,"oil_wells":65,"gas_wells":180},"arcs":[[-169,-187,-215,-208,-149,-76,-151]]},{"type":"Polygon","properties":{"COUNTYFP":"017","NAME":"Bourbon","ALAND":750369719,"oil_wells":0,"gas_wells":0},"arcs":[[-36,-224,255,-246,256,-171]]},{"type":"Polygon","properties":{"COUNTYFP":"239","NAME":"Woodford","ALAND":489062308,"oil_wells":0,"gas_wells":0},"arcs":[[-173,257,258,-238,-244,259]]},{"type":"Polygon","properties":{"COUNTYFP":"021","NAME":"Boyle","ALAND":467270953,"oil_wells":0,"gas_wells":0},"arcs":[[-178,-240,-122,260,261,-253]]},{"type":"Polygon","properties":{"COUNTYFP":"067","NAME":"Fayette","ALAND":734648557,"oil_wells":0,"gas_wells":0},"arcs":[[-172,-257,-248,-53,262,-258]]},{"type":"Polygon","properties":{"COUNTYFP":"047","NAME":"Christian","ALAND":1858332131,"oil_wells":782,"gas_wells":154},"arcs":[[-96,-232,-236,263,264,265]]},{"type":"Polygon","properties":{"COUNTYFP":"077","NAME":"Gallatin","ALAND":254698298,"oil_wells":0,"gas_wells":7},"arcs":[[266,267,-60,268,269]]},{"type":"Polygon","properties":{"COUNTYFP":"117","NAME":"Kenton","ALAND":415046493,"oil_wells":0,"gas_wells":0},"arcs":[[270,271,272,273,274]]},{"type":"Polygon","properties":{"COUNTYFP":"137","NAME":"Lincoln","ALAND":861773590,"oil_wells":75,"gas_wells":1},"arcs":[[-261,-121,-163,275,276]]},{"type":"Polygon","properties":{"COUNTYFP":"161","NAME":"Mason","ALAND":621929398,"oil_wells":0,"gas_wells":0},"arcs":[[277,278,-218,-114,279]]},{"type":"Polygon","properties":{"COUNTYFP":"191","NAME":"Pendleton","ALAND":717838676,"oil_wells":0,"gas_wells":0},"arcs":[[-273,280,281,282,-32,283]]},{"type":"Polygon","properties":{"COUNTYFP":"201","NAME":"Robertson","ALAND":258768335,"oil_wells":0,"gas_wells":0},"arcs":[[284,-280,-118,-223,-34]]},{"type":"Polygon","properties":{"COUNTYFP":"207","NAME":"Russell","ALAND":656969317,"oil_wells":378,"gas_wells":2},"arcs":[[285,286,287,-70,288,289]]},{"type":"Polygon","properties":{"COUNTYFP":"221","NAME":"Trigg","ALAND":1143307644,"oil_wells":1,"gas_wells":8},"arcs":[[290,-97,-266,291,292,293]]},{"type":"Polygon","properties":{"COUNTYFP":"009","NAME":"Barren","ALAND":1262728237,"oil_wells":849,"gas_wells":170},"arcs":[[294,-28,-251,295,296,-81]]},{"type":"Polygon","properties":{"COUNTYFP":"015","NAME":"Boone","ALAND":637462163,"oil_wells":0,"gas_wells":1},"arcs":[[-275,297,-267,298]]},{"type":"Polygon","properties":{"COUNTYFP":"091","NAME":"Hancock","ALAND":486020451,"oil_wells":337,"gas_wells":36},"arcs":[[299,-184,-155,-106]]},{"type":"Polygon","properties":{"COUNTYFP":"023","NAME":"Bracken","ALAND":532533652,"oil_wells":0,"gas_wells":0},"arcs":[[300,-278,-285,-33,-283]]},{"type":"Polygon","properties":{"COUNTYFP":"035","NAME":"Calloway","ALAND":997205960,"oil_wells":0,"gas_wells":1},"arcs":[[301,-293,302,-193]]},{"type":"Polygon","properties":{"COUNTYFP":"039","NAME":"Carlisle","ALAND":490632795,"oil_wells":0,"gas_wells":0},"arcs":[[-2,303,-190,304,305]]},{"type":"Polygon","properties":{"COUNTYFP":"045","NAME":"Casey","ALAND":1150557971,"oil_wells":104,"gas_wells":30},"arcs":[[-254,-262,-277,306,-287,307,-67]]},{"type":"Polygon","properties":{"COUNTYFP":"053","NAME":"Clinton","ALAND":510864239,"oil_wells":2085,"gas_wells":136},"arcs":[[308,-289,-73,309]]},{"type":"MultiPolygon","properties":{"COUNTYFP":"075","NAME":"Fulton","ALAND":533214585,"oil_wells":0,"gas_wells":0},"arcs":[[[310,311]],[[312]]]},{"type":"Polygon","properties":{"COUNTYFP":"103","NAME":"Henry","ALAND":741450365,"oil_wells":0,"gas_wells":0},"arcs":[[313,314,-64,315,316,317]]},{"type":"Polygon","properties":{"COUNTYFP":"113","NAME":"Jessamine","ALAND":445779168,"oil_wells":0,"gas_wells":0},"arcs":[[-259,-263,-52,-119,-239]]},{"type":"Polygon","properties":{"COUNTYFP":"129","NAME":"Lee","ALAND":540937708,"oil_wells":2868,"gas_wells":19},"arcs":[[-112,-227,-79,-85,-225,-130]]},{"type":"Polygon","properties":{"COUNTYFP":"143","NAME":"Lyon","ALAND":553844805,"oil_wells":0,"gas_wells":1},"arcs":[[-144,-102,-98,-291,318]]},{"type":"Polygon","properties":{"COUNTYFP":"149","NAME":"McLean","ALAND":653906347,"oil_wells":1376,"gas_wells":57},"arcs":[[-202,-108,-154,-233,-230,319]]},{"type":"Polygon","properties":{"COUNTYFP":"163","NAME":"Meade","ALAND":791043370,"oil_wells":16,"gas_wells":201},"arcs":[[-196,-181,320]]},{"type":"Polygon","properties":{"COUNTYFP":"173","NAME":"Montgomery","ALAND":511177493,"oil_wells":10,"gas_wells":5},"arcs":[[-8,-153,-226,-247,-256]]},{"type":"Polygon","properties":{"COUNTYFP":"185","NAME":"Oldham","ALAND":484912266,"oil_wells":0,"gas_wells":0},"arcs":[[321,-318,322,323,324]]},{"type":"Polygon","properties":{"COUNTYFP":"213","NAME":"Simpson","ALAND":606584287,"oil_wells":95,"gas_wells":8},"arcs":[[325,326,-84,327]]},{"type":"Polygon","properties":{"COUNTYFP":"215","NAME":"Spencer","ALAND":483493839,"oil_wells":0,"gas_wells":0},"arcs":[[328,329,-245,-220,-90]]},{"type":"Polygon","properties":{"COUNTYFP":"223","NAME":"Trimble","ALAND":392766407,"oil_wells":0,"gas_wells":0},"arcs":[[330,-314,-322,331]]},{"type":"Polygon","properties":{"COUNTYFP":"019","NAME":"Boyd","ALAND":414053933,"oil_wells":4,"gas_wells":278},"arcs":[[332,-212,-255,-125]]},{"type":"Polygon","properties":{"COUNTYFP":"087","NAME":"Green","ALAND":740837686,"oil_wells":975,"gas_wells":39},"arcs":[[-140,-69,333,334,-249]]},{"type":"Polygon","properties":{"COUNTYFP":"001","NAME":"Adair","ALAND":1049678317,"oil_wells":1115,"gas_wells":15},"arcs":[[-334,-68,-308,-286,335,336]]},{"type":"Polygon","properties":{"COUNTYFP":"041","NAME":"Carroll","ALAND":332993713,"oil_wells":0,"gas_wells":10},"arcs":[[-269,-59,-315,-331,337]]},{"type":"Polygon","properties":{"COUNTYFP":"057","NAME":"Cumberland","ALAND":790416941,"oil_wells":2092,"gas_wells":55},"arcs":[[-336,-290,-309,338,339,340]]},{"type":"Polygon","properties":{"COUNTYFP":"073","NAME":"Franklin","ALAND":538073041,"oil_wells":0,"gas_wells":0},"arcs":[[-316,-63,-174,-260,-243,341]]},{"type":"Polygon","properties":{"COUNTYFP":"105","NAME":"Hickman","ALAND":627487985,"oil_wells":0,"gas_wells":0},"arcs":[[-305,-195,342,-311,343]]},{"type":"Polygon","properties":{"COUNTYFP":"111","NAME":"Jefferson","ALAND":985312154,"oil_wells":0,"gas_wells":0},"arcs":[[344,-324,345,-329,-93,-198]]},{"type":"Polygon","properties":{"COUNTYFP":"141","NAME":"Logan","ALAND":1430014712,"oil_wells":89,"gas_wells":8},"arcs":[[-234,-19,346,-326,347,348]]},{"type":"Polygon","properties":{"COUNTYFP":"145","NAME":"McCracken","ALAND":644251034,"oil_wells":1,"gas_wells":0},"arcs":[[-146,349,-191,-304,-1,350]]},{"type":"Polygon","properties":{"COUNTYFP":"157","NAME":"Marshall","ALAND":780273148,"oil_wells":0,"gas_wells":0},"arcs":[[-350,-145,-319,-294,-302,-192]]},{"type":"Polygon","properties":{"COUNTYFP":"169","NAME":"Metcalfe","ALAND":750178426,"oil_wells":768,"gas_wells":194},"arcs":[[-250,-335,-337,-341,351,-296]]},{"type":"Polygon","properties":{"COUNTYFP":"171","NAME":"Monroe","ALAND":853073327,"oil_wells":469,"gas_wells":23},"arcs":[[-297,-352,-340,352,-82]]},{"type":"Polygon","properties":{"COUNTYFP":"199","NAME":"Pulaski","ALAND":1705273851,"oil_wells":78,"gas_wells":131},"arcs":[[-307,-276,-165,-209,-47,-71,-288]]},{"type":"Polygon","properties":{"COUNTYFP":"211","NAME":"Shelby","ALAND":983257095,"oil_wells":0,"gas_wells":3},"arcs":[[-317,-342,-242,-330,-346,-323]]},{"type":"Polygon","properties":{"COUNTYFP":"227","NAME":"Warren","ALAND":1402743723,"oil_wells":2057,"gas_wells":168},"arcs":[[-29,-295,-80,-327,-347,-18]]},{"type":"Polygon","properties":{"COUNTYFP":"233","NAME":"Webster","ALAND":859730052,"oil_wells":1028,"gas_wells":66},"arcs":[[353,-203,-320,-229,-94,-101]]},{"type":"Polygon","properties":{"COUNTYFP":"037","NAME":"Campbell","ALAND":391910592,"oil_wells":0,"gas_wells":0},"arcs":[[354,-281,-272]]},{"type":"Polygon","properties":{"COUNTYFP":"081","NAME":"Grant","ALAND":668126188,"oil_wells":0,"gas_wells":34},"arcs":[[-298,-274,-284,-31,-170,-61,-268]]},{"type":"Polygon","properties":{"COUNTYFP":"219","NAME":"Todd","ALAND":969942107,"oil_wells":86,"gas_wells":62},"arcs":[[-235,-349,355,-264]]},{"type":"Polygon","properties":{"COUNTYFP":"225","NAME":"Union","ALAND":887974711,"oil_wells":1388,"gas_wells":13},"arcs":[[-204,-354,-100,356]]}]}},"arcs":[[[816,2748],[155,-1023]],[[971,1725],[-228,-131],[-147,93]],[[596,1687],[-42,144],[-52,324],[187,539],[127,54]],[[7349,6397],[171,395]],[[7520,6792],[153,-51],[128,-362]],[[7801,6379],[169,-382],[11,-134]],[[7981,5863],[-104,-142],[-108,57],[-132,-111]],[[7637,5667],[-160,520],[-128,210]],[[7482,718],[127,435],[263,385],[-11,193]],[[7861,1731],[106,-65]],[[7967,1666],[26,-163]],[[7993,1503],[-15,-612],[53,-258]],[[8031,633],[-94,1],[-189,-243],[-20,-68],[-317,19]],[[7411,342],[-33,218],[104,158]],[[3498,2699],[129,461],[55,-115],[195,344]],[[3877,3389],[164,-123],[24,-156]],[[4065,3110],[92,-571]],[[4157,2539],[-90,-62],[-198,115],[-75,-695]],[[3794,1897],[-225,214],[-127,47]],[[3442,2158],[59,86],[-39,259],[36,196]],[[7394,2844],[210,370]],[[7604,3214],[193,-17],[147,-324]],[[7944,2873],[25,-85]],[[7969,2788],[-57,-258],[7,-449],[48,-415]],[[7861,1731],[-307,265],[-64,109]],[[7490,2105],[-129,452],[33,287]],[[4476,3164],[143,-454],[-10,-181]],[[4609,2529],[-23,-430],[-52,29]],[[4534,2128],[-139,162],[-83,-88],[-155,337]],[[4065,3110],[411,54]],[[6585,7532],[107,188]],[[6692,7720],[358,148]],[[7050,7868],[57,-105]],[[7107,7763],[0,-198],[79,-160]],[[7186,7405],[-122,-331]],[[7064,7074],[-235,-348],[-92,14]],[[6737,6740],[-42,442],[-110,350]],[[7199,1732],[175,80],[116,293]],[[7482,718],[-107,150],[-33,278],[-108,199],[-35,387]],[[7969,2788],[48,209],[97,96],[225,-612],[81,-314],[-22,-190]],[[8398,1977],[-102,-196],[-303,-278]],[[8478,1902],[107,298],[-27,133],[80,303]],[[8638,2636],[120,40],[118,236],[115,10]],[[8991,2922],[137,-89],[83,-195]],[[9211,2638],[-206,-287],[0,-235],[-194,-316]],[[8811,1800],[-92,155],[-241,-53]],[[6558,1396],[213,301],[77,48]],[[6848,1745],[80,-51]],[[6928,1694],[-69,-624],[56,-392],[106,-319]],[[7021,359],[-45,-1],[-682,42]],[[6294,400],[137,514],[125,283],[2,199]],[[6627,4802],[119,293]],[[6746,5095],[129,169]],[[6875,5264],[86,96],[67,-171],[186,-72]],[[7214,5117],[-21,-722],[8,-360]],[[7201,4035],[-144,-164]],[[7057,3871],[-195,61]],[[6862,3932],[-140,574],[-95,296]],[[5903,7924],[185,246]],[[6088,8170],[196,221]],[[6284,8391],[15,-385],[256,-549]],[[6555,7457],[-211,-456]],[[6344,7001],[-171,17]],[[6173,7018],[-13,224],[-196,342],[26,205],[-87,135]],[[5233,3671],[154,-16]],[[5387,3655],[146,20],[144,-191],[101,165],[127,-190]],[[5905,3459],[-76,-111],[-45,-279]],[[5784,3069],[-36,-142],[-161,-121],[-50,-182]],[[5537,2624],[-165,646],[-141,258],[2,143]],[[5917,1365],[301,524]],[[6218,1889],[87,-150],[120,87],[133,-430]],[[6294,400],[-9,1],[-250,46]],[[6035,447],[-60,298],[21,233],[-79,387]],[[7705,4602],[101,411]],[[7806,5013],[106,-15],[74,152]],[[7986,5150],[221,-310],[86,-253]],[[8293,4587],[18,-162]],[[8311,4425],[-224,79],[-53,-227],[-84,30]],[[7950,4307],[-245,295]],[[4149,1053],[315,596]],[[4464,1649],[146,-392],[104,-406]],[[4714,851],[5,-355]],[[4719,496],[-306,43],[-272,40]],[[4141,579],[8,474]],[[7875,3808],[75,499]],[[8311,4425],[176,-220],[41,70],[114,-383],[64,-95]],[[8706,3797],[-134,83],[-111,-257],[14,-197]],[[8475,3426],[-100,37],[-174,-132],[-97,-154],[-53,119],[-134,-136]],[[7917,3160],[-9,500],[-33,148]],[[5437,6118],[-54,-83],[-26,-398]],[[5357,5637],[-203,-592],[-125,-84]],[[5029,4961],[-105,176],[-49,329],[-110,201]],[[4765,5667],[81,162],[216,172],[205,-51],[170,168]],[[2309,3330],[-16,-109]],[[2293,3221],[51,-576],[124,-184]],[[2468,2461],[-70,-555]],[[2398,1906],[-189,-159]],[[2209,1747],[-129,405],[-89,405],[-70,19]],[[1921,2576],[57,219],[331,535]],[[1966,3805],[169,-95]],[[2135,3710],[6,-270],[108,46],[60,-156]],[[1921,2576],[-129,-122]],[[1792,2454],[-34,474],[-184,497]],[[1574,3425],[101,181],[264,77],[27,122]],[[2966,5289],[45,-76],[261,-289],[49,395],[72,89]],[[3393,5408],[112,-182],[101,-341],[-8,-203]],[[3598,4682],[8,-241],[-173,-164],[-118,-263]],[[3315,4014],[-295,231],[-193,233]],[[2827,4478],[19,152],[137,138],[-44,221],[27,300]],[[7214,5117],[104,-58]],[[7318,5059],[164,-323],[129,32],[76,-167]],[[7687,4601],[-135,-201],[-107,-453]],[[7445,3947],[-79,145],[-165,-57]],[[7412,7529],[94,-135],[286,260]],[[7792,7654],[83,-359],[167,-183]],[[8042,7112],[-62,-122],[-11,-287],[-168,-324]],[[7520,6792],[17,76],[-190,461]],[[7347,7329],[65,200]],[[6375,4975],[213,-250],[39,77]],[[6862,3932],[-35,-250],[-96,50]],[[6731,3732],[-279,560]],[[6452,4292],[-114,297]],[[6338,4589],[56,46],[-19,340]],[[8598,8410],[180,117],[62,-609],[41,-93],[120,-49],[78,-196]],[[9079,7580],[-136,-272],[-64,-225]],[[8879,7083],[-198,76],[-111,268],[-151,147]],[[8419,7574],[126,343],[53,493]],[[8398,1977],[80,-75]],[[8811,1800],[-12,-305],[-121,-134],[-135,-12],[-161,-434],[-351,-282]],[[7445,3947],[26,-95]],[[7471,3852],[133,-638]],[[7394,2844],[-148,72],[-108,189]],[[7138,3105],[12,142],[-98,486],[5,138]],[[8706,3797],[31,-63]],[[8737,3734],[124,-74],[90,-156],[19,-411],[50,-119]],[[9020,2974],[-29,-52]],[[8638,2636],[-167,275],[4,515]],[[5105,4661],[142,-355],[-68,-346],[136,30]],[[5315,3990],[72,-335]],[[5233,3671],[-98,-181]],[[5135,3490],[-310,69]],[[4825,3559],[22,389],[96,296],[88,123],[74,294]],[[1301,2182],[99,-28],[87,319],[-120,497],[52,388],[81,139],[74,-72]],[[1792,2454],[-50,-248],[-12,-376]],[[1730,1830],[-161,309],[-159,-156]],[[1410,1983],[-109,199]],[[8632,5140],[72,-243],[13,-296]],[[8717,4601],[47,-290],[10,-471],[-37,-106]],[[8293,4587],[-11,205],[239,466],[111,-118]],[[7981,5863],[85,-63]],[[8066,5800],[-13,-345],[-67,-305]],[[7806,5013],[-181,351]],[[7625,5364],[12,303]],[[3234,3468],[-5,245],[86,301]],[[3598,4682],[243,-286]],[[3841,4396],[61,-368]],[[3902,4028],[-91,-85],[66,-554]],[[3498,2699],[-110,216],[-4,178],[-150,375]],[[7944,2873],[-27,287]],[[9020,2974],[50,82],[111,526],[-46,218],[33,521],[46,161]],[[9214,4482],[142,-61],[162,273]],[[9518,4694],[48,-207],[145,-214],[85,-289],[203,-56],[-457,-914],[-48,-108],[-267,-243],[-16,-25]],[[6657,3139],[74,593]],[[7138,3105],[-153,-305],[-46,-330]],[[6939,2470],[-282,669]],[[8042,7112],[47,55],[100,-290]],[[8189,6877],[54,-416],[73,-63]],[[8316,6398],[-25,-291]],[[8291,6107],[-225,-307]],[[6555,7457],[30,75]],[[6737,6740],[53,-284]],[[6790,6456],[-294,-345]],[[6496,6111],[-40,238],[-92,60]],[[6364,6409],[-20,592]],[[5472,4655],[124,335],[204,296]],[[5800,5286],[162,-24]],[[5962,5262],[39,-138],[-32,-664]],[[5969,4460],[-7,-180]],[[5962,4280],[-299,-1],[-154,161],[-37,215]],[[3820,5077],[159,281],[12,419],[45,67]],[[4036,5844],[327,-637],[121,-294]],[[4484,4913],[-163,-775]],[[4321,4138],[-227,-66],[-74,174],[-118,-218]],[[3841,4396],[-51,494],[30,187]],[[8316,6398],[107,276],[153,-272],[162,-70]],[[8738,6332],[47,-238],[-176,-396]],[[8609,5698],[-164,-26],[-159,222],[5,213]],[[8717,4601],[64,-29],[170,180],[161,-136]],[[9112,4616],[102,-134]],[[975,1042],[0,655]],[[975,1697],[434,-18]],[[1409,1679],[-2,-723]],[[1407,956],[-5,-941]],[[1402,15],[-36,1],[-396,6]],[[970,22],[5,1020]],[[4484,4913],[190,74],[41,216],[-30,468]],[[4685,5671],[67,27]],[[4752,5698],[13,-31]],[[5029,4961],[76,-300]],[[4825,3559],[-204,37]],[[4621,3596],[-88,442],[-212,100]],[[2827,4478],[-115,-137]],[[2712,4341],[-315,-34]],[[2397,4307],[-57,479],[-56,11],[-141,504]],[[2143,5301],[127,-95],[171,78],[38,-257],[75,11],[84,352],[132,59],[196,-160]],[[8653,5536],[65,132],[142,-118],[126,-194],[163,-140]],[[9149,5216],[-77,-103],[40,-497]],[[8632,5140],[57,203],[-36,193]],[[6848,1745],[91,725]],[[7199,1732],[-271,-38]],[[8738,6332],[93,57],[79,203]],[[8910,6592],[210,87],[40,-74]],[[9160,6605],[-43,-409],[113,-257],[71,-473]],[[9301,5466],[-110,32],[-42,-282]],[[8653,5536],[-44,162]],[[7787,8076],[25,160],[140,89],[334,-320],[164,26],[148,379]],[[8419,7574],[-93,-292],[8,-329],[-145,-76]],[[7792,7654],[-5,422]],[[9301,5466],[109,-339],[108,-433]],[[5357,5637],[118,-192],[306,120]],[[5781,5565],[19,-279]],[[5472,4655],[-64,-169],[-93,-496]],[[7186,7405],[161,-76]],[[7349,6397],[-154,252],[-131,425]],[[7471,3852],[73,-116],[115,27],[113,161],[103,-116]],[[7365,5410],[115,-97],[145,51]],[[7705,4602],[-18,-1]],[[7318,5059],[47,351]],[[2293,3221],[290,420],[125,95],[163,313]],[[2871,4049],[31,-548],[73,-125]],[[2975,3376],[-120,-514],[99,-221],[-29,-150]],[[2925,2491],[-247,-196],[-210,166]],[[2975,3376],[114,-36],[145,128]],[[3442,2158],[-147,-30]],[[3295,2128],[-260,-77],[-12,120]],[[3023,2171],[-98,320]],[[5962,5262],[128,237],[180,60]],[[6270,5559],[-6,-262],[120,-146]],[[6384,5151],[-9,-176]],[[6338,4589],[-369,-129]],[[7411,342],[-74,7],[-316,10]],[[5868,5812],[103,347]],[[5971,6159],[152,-134],[57,88]],[[6180,6113],[90,-554]],[[5781,5565],[87,247]],[[6942,5924],[272,182]],[[7214,6106],[151,-696]],[[6875,5264],[20,411],[47,249]],[[5135,3490],[-52,-453],[14,-451]],[[5097,2586],[-76,-47]],[[5021,2539],[-214,-81],[-198,71]],[[4476,3164],[110,47],[35,385]],[[5962,4280],[-13,-325]],[[5949,3955],[-6,-476],[-38,-20]],[[8879,7083],[60,-43],[-29,-448]],[[7349,6397],[-135,-291]],[[6942,5924],[-122,167],[32,252],[-62,113]],[[6496,6111],[-46,-425]],[[6450,5686],[-66,-535]],[[6180,6113],[0,92],[184,204]],[[6452,4292],[-249,-327]],[[6203,3965],[-67,-59],[-187,49]],[[6746,5095],[-58,351],[-238,240]],[[3023,2171],[-101,-1626]],[[2922,545],[-402,-13],[-70,-4]],[[2450,528],[27,449],[18,794],[-97,135]],[[6273,8906],[177,-301]],[[6450,8605],[-159,-46],[-7,-168]],[[6088,8170],[-117,377]],[[5971,8547],[171,120],[108,-4],[23,243]],[[6498,9726],[155,78]],[[6653,9804],[43,-342],[61,-89],[-48,-486],[60,-171]],[[6769,8716],[-151,-56]],[[6618,8660],[-110,39]],[[6508,8699],[24,292],[-34,735]],[[6657,3139],[-70,101],[-217,-443]],[[6370,2797],[-3,459],[-168,254],[4,455]],[[7331,7912],[116,659]],[[7447,8571],[262,-485],[78,-10]],[[7412,7529],[-81,383]],[[6769,8716],[245,257]],[[7014,8973],[2,-179]],[[7016,8794],[34,-926]],[[6692,7720],[-74,940]],[[7107,7763],[93,156],[131,-7]],[[5696,1615],[35,271],[214,714]],[[5945,2600],[117,-316],[70,53]],[[6132,2337],[-6,-261],[92,-187]],[[5917,1365],[-71,-119],[-128,103]],[[5718,1349],[-22,266]],[[1839,1397],[370,350]],[[2450,528],[-210,-14],[5,115],[-291,54]],[[1954,683],[-53,260]],[[1901,943],[-62,454]],[[4464,1649],[70,479]],[[5021,2539],[-16,-227],[22,-1012]],[[5027,1300],[-89,-75],[-224,-374]],[[6508,8699],[-58,-94]],[[6273,8906],[-101,166],[47,215],[-56,275],[76,282],[87,155],[172,-273]],[[3393,5408],[79,25],[137,234],[84,-324],[140,-68],[-13,-198]],[[7016,8794],[23,-82],[212,-129],[196,-12]],[[1407,956],[494,-13]],[[1954,683],[50,-518],[-27,-165],[-575,15]],[[971,1725],[4,-28]],[[975,1042],[-335,-2],[-74,48]],[[566,1088],[-19,234],[49,365]],[[6370,2797],[-238,-460]],[[5945,2600],[-18,268],[-143,201]],[[5612,486],[106,863]],[[6035,447],[-397,41],[-26,-2]],[[498,579],[195,-220],[162,-57],[91,-280]],[[946,22],[-674,1],[-94,-16],[69,476],[50,27],[132,-237],[69,306]],[[89,2],[-71,1],[-18,299],[89,-20],[0,-280]],[[5588,7531],[192,350]],[[5780,7881],[123,43]],[[6173,7018],[-168,-80]],[[6005,6938],[-376,85]],[[5629,7023],[-83,383],[42,125]],[[1839,1397],[-109,433]],[[2871,4049],[-118,90],[-41,202]],[[4036,5844],[40,285],[166,30],[6,196],[77,-163],[7,-305],[116,-173],[237,-43]],[[5431,7649],[157,-118]],[[5629,7023],[-55,-181],[-189,-94]],[[5385,6748],[-224,359]],[[5161,7107],[66,265],[117,66],[87,211]],[[3677,573],[16,295],[80,442],[104,147]],[[3877,1457],[38,-200],[241,-87],[-7,-117]],[[4141,579],[-201,-64],[-34,71],[-229,-13]],[[5437,6118],[6,110]],[[5443,6228],[425,-416]],[[5563,8449],[217,-568]],[[5431,7649],[6,235],[-31,464],[157,101]],[[9079,7580],[95,-317],[29,-400],[-43,-258]],[[5537,2624],[-230,-313]],[[5307,2311],[-139,59],[-71,216]],[[5696,1615],[-290,49]],[[5406,1664],[-68,263],[-31,384]],[[5563,8449],[114,-16],[59,-154],[90,43],[145,225]],[[5612,486],[-185,-28]],[[5427,458],[-84,434],[-127,319]],[[5216,1211],[161,286],[29,167]],[[5971,6159],[34,779]],[[970,22],[-14,0],[-10,0]],[[498,579],[-32,247],[100,262]],[[4752,5698],[55,299],[9,355],[142,409],[70,-73],[112,218],[21,201]],[[5385,6748],[83,-81],[-25,-439]],[[3794,1897],[83,-440]],[[3677,573],[-392,-22]],[[3285,551],[10,1577]],[[1410,1983],[-1,-304]],[[816,2748],[7,5],[162,-143],[97,-169],[159,-118],[60,-141]],[[5216,1211],[-189,89]],[[5427,458],[-465,13],[-243,25]],[[2135,3710],[262,597]],[[6653,9804],[245,-275],[116,-556]],[[3285,551],[-71,-3],[-292,-3]],[[1966,3805],[-95,260],[-33,341],[125,279],[47,229],[110,-90],[50,122],[-27,355]]],"transform":{"scale":[0.000758535853585358,0.000264986498649865],"translate":[-89.5526,36.4971]}} -------------------------------------------------------------------------------- /d3-map05-data-point/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A D3 map plotting oil and gas well points 5 | 6 | 7 | 8 | 9 | 10 | 30 | 31 | 32 |

Kentucky Oil and Gas wells

33 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /d3-map05-data-point/ky-counties.json: -------------------------------------------------------------------------------- 1 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","arcs":[[0,1,2]]},{"type":"Polygon","arcs":[[3,4,5,6,7]]},{"type":"Polygon","arcs":[[8,9,10,11,12,13]]},{"type":"Polygon","arcs":[[14,15,16,17,18,19]]},{"type":"Polygon","arcs":[[20,21,22,23,-10,24,25]]},{"type":"Polygon","arcs":[[26,27,28,-17,29]]},{"type":"Polygon","arcs":[[30,31,32,33,34,35,36]]},{"type":"Polygon","arcs":[[37,-25,-9,38]]},{"type":"Polygon","arcs":[[39,40,-11,-24]]},{"type":"Polygon","arcs":[[41,42,43,44,45]]},{"type":"Polygon","arcs":[[46,47,48,49,50]]},{"type":"Polygon","arcs":[[51,52,53,54,55,56,57]]},{"type":"Polygon","arcs":[[58,59,60,61,62,63]]},{"type":"Polygon","arcs":[[64,65,66,67,68]]},{"type":"Polygon","arcs":[[69,70,-51,71,72]]},{"type":"Polygon","arcs":[[73,74,75,76,77,78]]},{"type":"Polygon","arcs":[[79,80,81,82,83]]},{"type":"Polygon","arcs":[[84,-78,85,86,87,88]]},{"type":"Polygon","arcs":[[89,90,91,92]]},{"type":"Polygon","arcs":[[93,94,95,96,97,98]]},{"type":"Polygon","arcs":[[99,100,-99,101,102,103]]},{"type":"Polygon","arcs":[[104,105,106,107,108]]},{"type":"Polygon","arcs":[[109,110,111,112,-55]]},{"type":"Polygon","arcs":[[113,114,115,-5,116,117]]},{"type":"Polygon","arcs":[[118,-58,119,120,121,122]]},{"type":"Polygon","arcs":[[123,124,125,126]]},{"type":"Polygon","arcs":[[-41,127,-46,128,-12]]},{"type":"Polygon","arcs":[[-56,-113,129,130,-21,131,132]]},{"type":"Polygon","arcs":[[133,134,135,-43,136,-87]]},{"type":"Polygon","arcs":[[137,138,-65,139,140,141]]},{"type":"Polygon","arcs":[[142,-103,143,144,145]]},{"type":"Polygon","arcs":[[146,147,-134,-86,-77,148]]},{"type":"Polygon","arcs":[[-7,149,150,-75,151,152]]},{"type":"Polygon","arcs":[[153,-107,154,155,156,-15,157]]},{"type":"Polygon","arcs":[[-88,-137,-42,-128,-40,-23,158]]},{"type":"Polygon","arcs":[[-136,159,160,161,-44]]},{"type":"Polygon","arcs":[[162,-120,-57,-133,163,164]]},{"type":"Polygon","arcs":[[165,166,167,168,-150,-6,-116]]},{"type":"Polygon","arcs":[[-62,169,-37,170,171,172,173]]},{"type":"Polygon","arcs":[[174,175,176,177,178]]},{"type":"Polygon","arcs":[[179,180,181,182,-156,183]]},{"type":"Polygon","arcs":[[-168,184,185,186]]},{"type":"Polygon","arcs":[[187,188,-160,-135,-148]]},{"type":"Polygon","arcs":[[189,190,191,192,193,194]]},{"type":"Polygon","arcs":[[-182,195,196,197,-92,198,-142,199,200]]},{"type":"Polygon","arcs":[[-109,201,202,203,204]]},{"type":"Polygon","arcs":[[205,206,-188,-147,207]]},{"type":"Polygon","arcs":[[208,-164,-132,-26,-38,209,-48]]},{"type":"Polygon","arcs":[[-186,210,211,212,213,-206,214]]},{"type":"Polygon","arcs":[[215,-127,216,-166,-115,217]]},{"type":"Polygon","arcs":[[-214,218,-161,-189,-207]]},{"type":"Polygon","arcs":[[-91,219,220,-175,221,-138,-199]]},{"type":"Polygon","arcs":[[222,-117,-4,223,-35]]},{"type":"Polygon","arcs":[[224,-89,-159,-22,-131]]},{"type":"Polygon","arcs":[[225,-152,-74,226,-111,227]]},{"type":"Polygon","arcs":[[228,229,230,231,-95]]},{"type":"Polygon","arcs":[[232,-158,-20,233,234,235,-231]]},{"type":"Polygon","arcs":[[236,237,238,-123,239,-177]]},{"type":"Polygon","arcs":[[-210,-39,-14,240,-49]]},{"type":"Polygon","arcs":[[241,242,243,-237,-176,-221,244]]},{"type":"Polygon","arcs":[[245,246,-228,-110,-54,247]]},{"type":"Polygon","arcs":[[-200,-141,248,249,250,-27,251]]},{"type":"Polygon","arcs":[[-222,-179,252,253,-66,-139]]},{"type":"Polygon","arcs":[[-217,-126,254,-211,-185,-167]]},{"type":"Polygon","arcs":[[-183,-201,-252,-30,-16,-157]]},{"type":"Polygon","arcs":[[-169,-187,-215,-208,-149,-76,-151]]},{"type":"Polygon","arcs":[[-36,-224,255,-246,256,-171]]},{"type":"Polygon","arcs":[[-173,257,258,-238,-244,259]]},{"type":"Polygon","arcs":[[-178,-240,-122,260,261,-253]]},{"type":"Polygon","arcs":[[-172,-257,-248,-53,262,-258]]},{"type":"Polygon","arcs":[[-96,-232,-236,263,264,265]]},{"type":"Polygon","arcs":[[266,267,-60,268,269]]},{"type":"Polygon","arcs":[[270,271,272,273,274]]},{"type":"Polygon","arcs":[[-261,-121,-163,275,276]]},{"type":"Polygon","arcs":[[277,278,-218,-114,279]]},{"type":"Polygon","arcs":[[-273,280,281,282,-32,283]]},{"type":"Polygon","arcs":[[284,-280,-118,-223,-34]]},{"type":"Polygon","arcs":[[285,286,287,-70,288,289]]},{"type":"Polygon","arcs":[[290,-97,-266,291,292,293]]},{"type":"Polygon","arcs":[[294,-28,-251,295,296,-81]]},{"type":"Polygon","arcs":[[-275,297,-267,298]]},{"type":"Polygon","arcs":[[299,-184,-155,-106]]},{"type":"Polygon","arcs":[[300,-278,-285,-33,-283]]},{"type":"Polygon","arcs":[[301,-293,302,-193]]},{"type":"Polygon","arcs":[[-2,303,-190,304,305]]},{"type":"Polygon","arcs":[[-254,-262,-277,306,-287,307,-67]]},{"type":"Polygon","arcs":[[308,-289,-73,309]]},{"type":"MultiPolygon","arcs":[[[310,311]],[[312]]]},{"type":"Polygon","arcs":[[313,314,-64,315,316,317]]},{"type":"Polygon","arcs":[[-259,-263,-52,-119,-239]]},{"type":"Polygon","arcs":[[-112,-227,-79,-85,-225,-130]]},{"type":"Polygon","arcs":[[-144,-102,-98,-291,318]]},{"type":"Polygon","arcs":[[-202,-108,-154,-233,-230,319]]},{"type":"Polygon","arcs":[[-196,-181,320]]},{"type":"Polygon","arcs":[[-8,-153,-226,-247,-256]]},{"type":"Polygon","arcs":[[321,-318,322,323,324]]},{"type":"Polygon","arcs":[[325,326,-84,327]]},{"type":"Polygon","arcs":[[328,329,-245,-220,-90]]},{"type":"Polygon","arcs":[[330,-314,-322,331]]},{"type":"Polygon","arcs":[[332,-212,-255,-125]]},{"type":"Polygon","arcs":[[-140,-69,333,334,-249]]},{"type":"Polygon","arcs":[[-334,-68,-308,-286,335,336]]},{"type":"Polygon","arcs":[[-269,-59,-315,-331,337]]},{"type":"Polygon","arcs":[[-336,-290,-309,338,339,340]]},{"type":"Polygon","arcs":[[-316,-63,-174,-260,-243,341]]},{"type":"Polygon","arcs":[[-305,-195,342,-311,343]]},{"type":"Polygon","arcs":[[344,-324,345,-329,-93,-198]]},{"type":"Polygon","arcs":[[-234,-19,346,-326,347,348]]},{"type":"Polygon","arcs":[[-146,349,-191,-304,-1,350]]},{"type":"Polygon","arcs":[[-350,-145,-319,-294,-302,-192]]},{"type":"Polygon","arcs":[[-250,-335,-337,-341,351,-296]]},{"type":"Polygon","arcs":[[-297,-352,-340,352,-82]]},{"type":"Polygon","arcs":[[-307,-276,-165,-209,-47,-71,-288]]},{"type":"Polygon","arcs":[[-317,-342,-242,-330,-346,-323]]},{"type":"Polygon","arcs":[[-29,-295,-80,-327,-347,-18]]},{"type":"Polygon","arcs":[[353,-203,-320,-229,-94,-101]]},{"type":"Polygon","arcs":[[354,-281,-272]]},{"type":"Polygon","arcs":[[-298,-274,-284,-31,-170,-61,-268]]},{"type":"Polygon","arcs":[[-235,-349,355,-264]]},{"type":"Polygon","arcs":[[-204,-354,-100,356]]}]}},"arcs":[[[816,2748],[155,-1023]],[[971,1725],[-228,-131],[-147,93]],[[596,1687],[-42,144],[-52,324],[187,539],[127,54]],[[7349,6397],[171,395]],[[7520,6792],[153,-51],[128,-362]],[[7801,6379],[169,-382],[11,-134]],[[7981,5863],[-104,-142],[-108,57],[-132,-111]],[[7637,5667],[-160,520],[-128,210]],[[7482,718],[127,435],[263,385],[-11,193]],[[7861,1731],[106,-65]],[[7967,1666],[26,-163]],[[7993,1503],[-15,-612],[53,-258]],[[8031,633],[-94,1],[-189,-243],[-20,-68],[-317,19]],[[7411,342],[-33,218],[104,158]],[[3498,2699],[129,461],[55,-115],[195,344]],[[3877,3389],[164,-123],[24,-156]],[[4065,3110],[92,-571]],[[4157,2539],[-90,-62],[-198,115],[-75,-695]],[[3794,1897],[-225,214],[-127,47]],[[3442,2158],[59,86],[-39,259],[36,196]],[[7394,2844],[210,370]],[[7604,3214],[193,-17],[147,-324]],[[7944,2873],[25,-85]],[[7969,2788],[-57,-258],[7,-449],[48,-415]],[[7861,1731],[-307,265],[-64,109]],[[7490,2105],[-129,452],[33,287]],[[4476,3164],[143,-454],[-10,-181]],[[4609,2529],[-23,-430],[-52,29]],[[4534,2128],[-139,162],[-83,-88],[-155,337]],[[4065,3110],[411,54]],[[6585,7532],[107,188]],[[6692,7720],[358,148]],[[7050,7868],[57,-105]],[[7107,7763],[0,-198],[79,-160]],[[7186,7405],[-122,-331]],[[7064,7074],[-235,-348],[-92,14]],[[6737,6740],[-42,442],[-110,350]],[[7199,1732],[175,80],[116,293]],[[7482,718],[-107,150],[-33,278],[-108,199],[-35,387]],[[7969,2788],[48,209],[97,96],[225,-612],[81,-314],[-22,-190]],[[8398,1977],[-102,-196],[-303,-278]],[[8478,1902],[107,298],[-27,133],[80,303]],[[8638,2636],[120,40],[118,236],[115,10]],[[8991,2922],[137,-89],[83,-195]],[[9211,2638],[-206,-287],[0,-235],[-194,-316]],[[8811,1800],[-92,155],[-241,-53]],[[6558,1396],[213,301],[77,48]],[[6848,1745],[80,-51]],[[6928,1694],[-69,-624],[56,-392],[106,-319]],[[7021,359],[-45,-1],[-682,42]],[[6294,400],[137,514],[125,283],[2,199]],[[6627,4802],[119,293]],[[6746,5095],[129,169]],[[6875,5264],[86,96],[67,-171],[186,-72]],[[7214,5117],[-21,-722],[8,-360]],[[7201,4035],[-144,-164]],[[7057,3871],[-195,61]],[[6862,3932],[-140,574],[-95,296]],[[5903,7924],[185,246]],[[6088,8170],[196,221]],[[6284,8391],[15,-385],[256,-549]],[[6555,7457],[-211,-456]],[[6344,7001],[-171,17]],[[6173,7018],[-13,224],[-196,342],[26,205],[-87,135]],[[5233,3671],[154,-16]],[[5387,3655],[146,20],[144,-191],[101,165],[127,-190]],[[5905,3459],[-76,-111],[-45,-279]],[[5784,3069],[-36,-142],[-161,-121],[-50,-182]],[[5537,2624],[-165,646],[-141,258],[2,143]],[[5917,1365],[301,524]],[[6218,1889],[87,-150],[120,87],[133,-430]],[[6294,400],[-9,1],[-250,46]],[[6035,447],[-60,298],[21,233],[-79,387]],[[7705,4602],[101,411]],[[7806,5013],[106,-15],[74,152]],[[7986,5150],[221,-310],[86,-253]],[[8293,4587],[18,-162]],[[8311,4425],[-224,79],[-53,-227],[-84,30]],[[7950,4307],[-245,295]],[[4149,1053],[315,596]],[[4464,1649],[146,-392],[104,-406]],[[4714,851],[5,-355]],[[4719,496],[-306,43],[-272,40]],[[4141,579],[8,474]],[[7875,3808],[75,499]],[[8311,4425],[176,-220],[41,70],[114,-383],[64,-95]],[[8706,3797],[-134,83],[-111,-257],[14,-197]],[[8475,3426],[-100,37],[-174,-132],[-97,-154],[-53,119],[-134,-136]],[[7917,3160],[-9,500],[-33,148]],[[5437,6118],[-54,-83],[-26,-398]],[[5357,5637],[-203,-592],[-125,-84]],[[5029,4961],[-105,176],[-49,329],[-110,201]],[[4765,5667],[81,162],[216,172],[205,-51],[170,168]],[[2309,3330],[-16,-109]],[[2293,3221],[51,-576],[124,-184]],[[2468,2461],[-70,-555]],[[2398,1906],[-189,-159]],[[2209,1747],[-129,405],[-89,405],[-70,19]],[[1921,2576],[57,219],[331,535]],[[1966,3805],[169,-95]],[[2135,3710],[6,-270],[108,46],[60,-156]],[[1921,2576],[-129,-122]],[[1792,2454],[-34,474],[-184,497]],[[1574,3425],[101,181],[264,77],[27,122]],[[2966,5289],[45,-76],[261,-289],[49,395],[72,89]],[[3393,5408],[112,-182],[101,-341],[-8,-203]],[[3598,4682],[8,-241],[-173,-164],[-118,-263]],[[3315,4014],[-295,231],[-193,233]],[[2827,4478],[19,152],[137,138],[-44,221],[27,300]],[[7214,5117],[104,-58]],[[7318,5059],[164,-323],[129,32],[76,-167]],[[7687,4601],[-135,-201],[-107,-453]],[[7445,3947],[-79,145],[-165,-57]],[[7412,7529],[94,-135],[286,260]],[[7792,7654],[83,-359],[167,-183]],[[8042,7112],[-62,-122],[-11,-287],[-168,-324]],[[7520,6792],[17,76],[-190,461]],[[7347,7329],[65,200]],[[6375,4975],[213,-250],[39,77]],[[6862,3932],[-35,-250],[-96,50]],[[6731,3732],[-279,560]],[[6452,4292],[-114,297]],[[6338,4589],[56,46],[-19,340]],[[8598,8410],[180,117],[62,-609],[41,-93],[120,-49],[78,-196]],[[9079,7580],[-136,-272],[-64,-225]],[[8879,7083],[-198,76],[-111,268],[-151,147]],[[8419,7574],[126,343],[53,493]],[[8398,1977],[80,-75]],[[8811,1800],[-12,-305],[-121,-134],[-135,-12],[-161,-434],[-351,-282]],[[7445,3947],[26,-95]],[[7471,3852],[133,-638]],[[7394,2844],[-148,72],[-108,189]],[[7138,3105],[12,142],[-98,486],[5,138]],[[8706,3797],[31,-63]],[[8737,3734],[124,-74],[90,-156],[19,-411],[50,-119]],[[9020,2974],[-29,-52]],[[8638,2636],[-167,275],[4,515]],[[5105,4661],[142,-355],[-68,-346],[136,30]],[[5315,3990],[72,-335]],[[5233,3671],[-98,-181]],[[5135,3490],[-310,69]],[[4825,3559],[22,389],[96,296],[88,123],[74,294]],[[1301,2182],[99,-28],[87,319],[-120,497],[52,388],[81,139],[74,-72]],[[1792,2454],[-50,-248],[-12,-376]],[[1730,1830],[-161,309],[-159,-156]],[[1410,1983],[-109,199]],[[8632,5140],[72,-243],[13,-296]],[[8717,4601],[47,-290],[10,-471],[-37,-106]],[[8293,4587],[-11,205],[239,466],[111,-118]],[[7981,5863],[85,-63]],[[8066,5800],[-13,-345],[-67,-305]],[[7806,5013],[-181,351]],[[7625,5364],[12,303]],[[3234,3468],[-5,245],[86,301]],[[3598,4682],[243,-286]],[[3841,4396],[61,-368]],[[3902,4028],[-91,-85],[66,-554]],[[3498,2699],[-110,216],[-4,178],[-150,375]],[[7944,2873],[-27,287]],[[9020,2974],[50,82],[111,526],[-46,218],[33,521],[46,161]],[[9214,4482],[142,-61],[162,273]],[[9518,4694],[48,-207],[145,-214],[85,-289],[203,-56],[-457,-914],[-48,-108],[-267,-243],[-16,-25]],[[6657,3139],[74,593]],[[7138,3105],[-153,-305],[-46,-330]],[[6939,2470],[-282,669]],[[8042,7112],[47,55],[100,-290]],[[8189,6877],[54,-416],[73,-63]],[[8316,6398],[-25,-291]],[[8291,6107],[-225,-307]],[[6555,7457],[30,75]],[[6737,6740],[53,-284]],[[6790,6456],[-294,-345]],[[6496,6111],[-40,238],[-92,60]],[[6364,6409],[-20,592]],[[5472,4655],[124,335],[204,296]],[[5800,5286],[162,-24]],[[5962,5262],[39,-138],[-32,-664]],[[5969,4460],[-7,-180]],[[5962,4280],[-299,-1],[-154,161],[-37,215]],[[3820,5077],[159,281],[12,419],[45,67]],[[4036,5844],[327,-637],[121,-294]],[[4484,4913],[-163,-775]],[[4321,4138],[-227,-66],[-74,174],[-118,-218]],[[3841,4396],[-51,494],[30,187]],[[8316,6398],[107,276],[153,-272],[162,-70]],[[8738,6332],[47,-238],[-176,-396]],[[8609,5698],[-164,-26],[-159,222],[5,213]],[[8717,4601],[64,-29],[170,180],[161,-136]],[[9112,4616],[102,-134]],[[975,1042],[0,655]],[[975,1697],[434,-18]],[[1409,1679],[-2,-723]],[[1407,956],[-5,-941]],[[1402,15],[-36,1],[-396,6]],[[970,22],[5,1020]],[[4484,4913],[190,74],[41,216],[-30,468]],[[4685,5671],[67,27]],[[4752,5698],[13,-31]],[[5029,4961],[76,-300]],[[4825,3559],[-204,37]],[[4621,3596],[-88,442],[-212,100]],[[2827,4478],[-115,-137]],[[2712,4341],[-315,-34]],[[2397,4307],[-57,479],[-56,11],[-141,504]],[[2143,5301],[127,-95],[171,78],[38,-257],[75,11],[84,352],[132,59],[196,-160]],[[8653,5536],[65,132],[142,-118],[126,-194],[163,-140]],[[9149,5216],[-77,-103],[40,-497]],[[8632,5140],[57,203],[-36,193]],[[6848,1745],[91,725]],[[7199,1732],[-271,-38]],[[8738,6332],[93,57],[79,203]],[[8910,6592],[210,87],[40,-74]],[[9160,6605],[-43,-409],[113,-257],[71,-473]],[[9301,5466],[-110,32],[-42,-282]],[[8653,5536],[-44,162]],[[7787,8076],[25,160],[140,89],[334,-320],[164,26],[148,379]],[[8419,7574],[-93,-292],[8,-329],[-145,-76]],[[7792,7654],[-5,422]],[[9301,5466],[109,-339],[108,-433]],[[5357,5637],[118,-192],[306,120]],[[5781,5565],[19,-279]],[[5472,4655],[-64,-169],[-93,-496]],[[7186,7405],[161,-76]],[[7349,6397],[-154,252],[-131,425]],[[7471,3852],[73,-116],[115,27],[113,161],[103,-116]],[[7365,5410],[115,-97],[145,51]],[[7705,4602],[-18,-1]],[[7318,5059],[47,351]],[[2293,3221],[290,420],[125,95],[163,313]],[[2871,4049],[31,-548],[73,-125]],[[2975,3376],[-120,-514],[99,-221],[-29,-150]],[[2925,2491],[-247,-196],[-210,166]],[[2975,3376],[114,-36],[145,128]],[[3442,2158],[-147,-30]],[[3295,2128],[-260,-77],[-12,120]],[[3023,2171],[-98,320]],[[5962,5262],[128,237],[180,60]],[[6270,5559],[-6,-262],[120,-146]],[[6384,5151],[-9,-176]],[[6338,4589],[-369,-129]],[[7411,342],[-74,7],[-316,10]],[[5868,5812],[103,347]],[[5971,6159],[152,-134],[57,88]],[[6180,6113],[90,-554]],[[5781,5565],[87,247]],[[6942,5924],[272,182]],[[7214,6106],[151,-696]],[[6875,5264],[20,411],[47,249]],[[5135,3490],[-52,-453],[14,-451]],[[5097,2586],[-76,-47]],[[5021,2539],[-214,-81],[-198,71]],[[4476,3164],[110,47],[35,385]],[[5962,4280],[-13,-325]],[[5949,3955],[-6,-476],[-38,-20]],[[8879,7083],[60,-43],[-29,-448]],[[7349,6397],[-135,-291]],[[6942,5924],[-122,167],[32,252],[-62,113]],[[6496,6111],[-46,-425]],[[6450,5686],[-66,-535]],[[6180,6113],[0,92],[184,204]],[[6452,4292],[-249,-327]],[[6203,3965],[-67,-59],[-187,49]],[[6746,5095],[-58,351],[-238,240]],[[3023,2171],[-101,-1626]],[[2922,545],[-402,-13],[-70,-4]],[[2450,528],[27,449],[18,794],[-97,135]],[[6273,8906],[177,-301]],[[6450,8605],[-159,-46],[-7,-168]],[[6088,8170],[-117,377]],[[5971,8547],[171,120],[108,-4],[23,243]],[[6498,9726],[155,78]],[[6653,9804],[43,-342],[61,-89],[-48,-486],[60,-171]],[[6769,8716],[-151,-56]],[[6618,8660],[-110,39]],[[6508,8699],[24,292],[-34,735]],[[6657,3139],[-70,101],[-217,-443]],[[6370,2797],[-3,459],[-168,254],[4,455]],[[7331,7912],[116,659]],[[7447,8571],[262,-485],[78,-10]],[[7412,7529],[-81,383]],[[6769,8716],[245,257]],[[7014,8973],[2,-179]],[[7016,8794],[34,-926]],[[6692,7720],[-74,940]],[[7107,7763],[93,156],[131,-7]],[[5696,1615],[35,271],[214,714]],[[5945,2600],[117,-316],[70,53]],[[6132,2337],[-6,-261],[92,-187]],[[5917,1365],[-71,-119],[-128,103]],[[5718,1349],[-22,266]],[[1839,1397],[370,350]],[[2450,528],[-210,-14],[5,115],[-291,54]],[[1954,683],[-53,260]],[[1901,943],[-62,454]],[[4464,1649],[70,479]],[[5021,2539],[-16,-227],[22,-1012]],[[5027,1300],[-89,-75],[-224,-374]],[[6508,8699],[-58,-94]],[[6273,8906],[-101,166],[47,215],[-56,275],[76,282],[87,155],[172,-273]],[[3393,5408],[79,25],[137,234],[84,-324],[140,-68],[-13,-198]],[[7016,8794],[23,-82],[212,-129],[196,-12]],[[1407,956],[494,-13]],[[1954,683],[50,-518],[-27,-165],[-575,15]],[[971,1725],[4,-28]],[[975,1042],[-335,-2],[-74,48]],[[566,1088],[-19,234],[49,365]],[[6370,2797],[-238,-460]],[[5945,2600],[-18,268],[-143,201]],[[5612,486],[106,863]],[[6035,447],[-397,41],[-26,-2]],[[498,579],[195,-220],[162,-57],[91,-280]],[[946,22],[-674,1],[-94,-16],[69,476],[50,27],[132,-237],[69,306]],[[89,2],[-71,1],[-18,299],[89,-20],[0,-280]],[[5588,7531],[192,350]],[[5780,7881],[123,43]],[[6173,7018],[-168,-80]],[[6005,6938],[-376,85]],[[5629,7023],[-83,383],[42,125]],[[1839,1397],[-109,433]],[[2871,4049],[-118,90],[-41,202]],[[4036,5844],[40,285],[166,30],[6,196],[77,-163],[7,-305],[116,-173],[237,-43]],[[5431,7649],[157,-118]],[[5629,7023],[-55,-181],[-189,-94]],[[5385,6748],[-224,359]],[[5161,7107],[66,265],[117,66],[87,211]],[[3677,573],[16,295],[80,442],[104,147]],[[3877,1457],[38,-200],[241,-87],[-7,-117]],[[4141,579],[-201,-64],[-34,71],[-229,-13]],[[5437,6118],[6,110]],[[5443,6228],[425,-416]],[[5563,8449],[217,-568]],[[5431,7649],[6,235],[-31,464],[157,101]],[[9079,7580],[95,-317],[29,-400],[-43,-258]],[[5537,2624],[-230,-313]],[[5307,2311],[-139,59],[-71,216]],[[5696,1615],[-290,49]],[[5406,1664],[-68,263],[-31,384]],[[5563,8449],[114,-16],[59,-154],[90,43],[145,225]],[[5612,486],[-185,-28]],[[5427,458],[-84,434],[-127,319]],[[5216,1211],[161,286],[29,167]],[[5971,6159],[34,779]],[[970,22],[-14,0],[-10,0]],[[498,579],[-32,247],[100,262]],[[4752,5698],[55,299],[9,355],[142,409],[70,-73],[112,218],[21,201]],[[5385,6748],[83,-81],[-25,-439]],[[3794,1897],[83,-440]],[[3677,573],[-392,-22]],[[3285,551],[10,1577]],[[1410,1983],[-1,-304]],[[816,2748],[7,5],[162,-143],[97,-169],[159,-118],[60,-141]],[[5216,1211],[-189,89]],[[5427,458],[-465,13],[-243,25]],[[2135,3710],[262,597]],[[6653,9804],[245,-275],[116,-556]],[[3285,551],[-71,-3],[-292,-3]],[[1966,3805],[-95,260],[-33,341],[125,279],[47,229],[110,-90],[50,122],[-27,355]]],"transform":{"scale":[0.000758535853585358,0.000264986498649865],"translate":[-89.5526,36.4971]}} -------------------------------------------------------------------------------- /d3-map06-data-area/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A D3 county choropleth map of Kentucky oil or gas wells 5 | 6 | 7 | 8 | 9 | 10 | 11 | 30 | 31 | 32 |

Kentucky Counties Oil (or Gas) Wells by County

33 | 86 | 87 | -------------------------------------------------------------------------------- /d3-map06-data-area/ky-counties.json: -------------------------------------------------------------------------------- 1 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","properties":{"COUNTYFP":"007","NAME":"Ballard","ALAND":638843907,"oil_wells":0,"gas_wells":0},"arcs":[[0,1,2]]},{"type":"Polygon","properties":{"COUNTYFP":"011","NAME":"Bath","ALAND":722081626,"oil_wells":45,"gas_wells":18},"arcs":[[3,4,5,6,7]]},{"type":"Polygon","properties":{"COUNTYFP":"013","NAME":"Bell","ALAND":929806591,"oil_wells":23,"gas_wells":593},"arcs":[[8,9,10,11,12,13]]},{"type":"Polygon","properties":{"COUNTYFP":"031","NAME":"Butler","ALAND":1103562551,"oil_wells":546,"gas_wells":57},"arcs":[[14,15,16,17,18,19]]},{"type":"Polygon","properties":{"COUNTYFP":"051","NAME":"Clay","ALAND":1215349017,"oil_wells":81,"gas_wells":1340},"arcs":[[20,21,22,23,-10,24,25]]},{"type":"Polygon","properties":{"COUNTYFP":"061","NAME":"Edmonson","ALAND":784464286,"oil_wells":270,"gas_wells":115},"arcs":[[26,27,28,-17,29]]},{"type":"Polygon","properties":{"COUNTYFP":"097","NAME":"Harrison","ALAND":793479801,"oil_wells":0,"gas_wells":0},"arcs":[[30,31,32,33,34,35,36]]},{"type":"Polygon","properties":{"COUNTYFP":"121","NAME":"Knox","ALAND":1000508842,"oil_wells":41,"gas_wells":1014},"arcs":[[37,-25,-9,38]]},{"type":"Polygon","properties":{"COUNTYFP":"131","NAME":"Leslie","ALAND":1038212361,"oil_wells":41,"gas_wells":619},"arcs":[[39,40,-11,-24]]},{"type":"Polygon","properties":{"COUNTYFP":"133","NAME":"Letcher","ALAND":875193012,"oil_wells":19,"gas_wells":1444},"arcs":[[41,42,43,44,45]]},{"type":"Polygon","properties":{"COUNTYFP":"147","NAME":"McCreary","ALAND":1105417092,"oil_wells":65,"gas_wells":106},"arcs":[[46,47,48,49,50]]},{"type":"Polygon","properties":{"COUNTYFP":"151","NAME":"Madison","ALAND":1132604797,"oil_wells":4,"gas_wells":0},"arcs":[[51,52,53,54,55,56,57]]},{"type":"Polygon","properties":{"COUNTYFP":"187","NAME":"Owen","ALAND":909364873,"oil_wells":0,"gas_wells":0},"arcs":[[58,59,60,61,62,63]]},{"type":"Polygon","properties":{"COUNTYFP":"217","NAME":"Taylor","ALAND":689791762,"oil_wells":79,"gas_wells":8},"arcs":[[64,65,66,67,68]]},{"type":"Polygon","properties":{"COUNTYFP":"231","NAME":"Wayne","ALAND":1186685586,"oil_wells":288,"gas_wells":20},"arcs":[[69,70,-51,71,72]]},{"type":"Polygon","properties":{"COUNTYFP":"237","NAME":"Wolfe","ALAND":575419314,"oil_wells":398,"gas_wells":98},"arcs":[[73,74,75,76,77,78]]},{"type":"Polygon","properties":{"COUNTYFP":"003","NAME":"Allen","ALAND":891830500,"oil_wells":606,"gas_wells":9},"arcs":[[79,80,81,82,83]]},{"type":"Polygon","properties":{"COUNTYFP":"025","NAME":"Breathitt","ALAND":1275350659,"oil_wells":308,"gas_wells":448},"arcs":[[84,-78,85,86,87,88]]},{"type":"Polygon","properties":{"COUNTYFP":"029","NAME":"Bullitt","ALAND":769295444,"oil_wells":0,"gas_wells":1},"arcs":[[89,90,91,92]]},{"type":"Polygon","properties":{"COUNTYFP":"033","NAME":"Caldwell","ALAND":893006791,"oil_wells":11,"gas_wells":35},"arcs":[[93,94,95,96,97,98]]},{"type":"Polygon","properties":{"COUNTYFP":"055","NAME":"Crittenden","ALAND":932275449,"oil_wells":3,"gas_wells":2},"arcs":[[99,100,-99,101,102,103]]},{"type":"Polygon","properties":{"COUNTYFP":"059","NAME":"Daviess","ALAND":1187163652,"oil_wells":2407,"gas_wells":89},"arcs":[[104,105,106,107,108]]},{"type":"Polygon","properties":{"COUNTYFP":"065","NAME":"Estill","ALAND":655468653,"oil_wells":450,"gas_wells":13},"arcs":[[109,110,111,112,-55]]},{"type":"Polygon","properties":{"COUNTYFP":"069","NAME":"Fleming","ALAND":902720729,"oil_wells":0,"gas_wells":0},"arcs":[[113,114,115,-5,116,117]]},{"type":"Polygon","properties":{"COUNTYFP":"079","NAME":"Garrard","ALAND":595898816,"oil_wells":4,"gas_wells":6},"arcs":[[118,-58,119,120,121,122]]},{"type":"Polygon","properties":{"COUNTYFP":"089","NAME":"Greenup","ALAND":892115289,"oil_wells":97,"gas_wells":58},"arcs":[[123,124,125,126]]},{"type":"Polygon","properties":{"COUNTYFP":"095","NAME":"Harlan","ALAND":1206487467,"oil_wells":11,"gas_wells":484},"arcs":[[-41,127,-46,128,-12]]},{"type":"Polygon","properties":{"COUNTYFP":"109","NAME":"Jackson","ALAND":894055721,"oil_wells":28,"gas_wells":63},"arcs":[[-56,-113,129,130,-21,131,132]]},{"type":"Polygon","properties":{"COUNTYFP":"119","NAME":"Knott","ALAND":910435521,"oil_wells":20,"gas_wells":2263},"arcs":[[133,134,135,-43,136,-87]]},{"type":"Polygon","properties":{"COUNTYFP":"123","NAME":"Larue","ALAND":677353871,"oil_wells":1,"gas_wells":37},"arcs":[[137,138,-65,139,140,141]]},{"type":"Polygon","properties":{"COUNTYFP":"139","NAME":"Livingston","ALAND":810982681,"oil_wells":0,"gas_wells":0},"arcs":[[142,-103,143,144,145]]},{"type":"Polygon","properties":{"COUNTYFP":"153","NAME":"Magoffin","ALAND":798866504,"oil_wells":1705,"gas_wells":929},"arcs":[[146,147,-134,-86,-77,148]]},{"type":"Polygon","properties":{"COUNTYFP":"165","NAME":"Menifee","ALAND":527282429,"oil_wells":28,"gas_wells":112},"arcs":[[-7,149,150,-75,151,152]]},{"type":"Polygon","properties":{"COUNTYFP":"183","NAME":"Ohio","ALAND":1521032830,"oil_wells":1412,"gas_wells":85},"arcs":[[153,-107,154,155,156,-15,157]]},{"type":"Polygon","properties":{"COUNTYFP":"193","NAME":"Perry","ALAND":879750116,"oil_wells":44,"gas_wells":1151},"arcs":[[-88,-137,-42,-128,-40,-23,158]]},{"type":"Polygon","properties":{"COUNTYFP":"195","NAME":"Pike","ALAND":2037851002,"oil_wells":25,"gas_wells":5563},"arcs":[[-136,159,160,161,-44]]},{"type":"Polygon","properties":{"COUNTYFP":"203","NAME":"Rockcastle","ALAND":819848743,"oil_wells":7,"gas_wells":5},"arcs":[[162,-120,-57,-133,163,164]]},{"type":"Polygon","properties":{"COUNTYFP":"205","NAME":"Rowan","ALAND":724672131,"oil_wells":11,"gas_wells":73},"arcs":[[165,166,167,168,-150,-6,-116]]},{"type":"Polygon","properties":{"COUNTYFP":"209","NAME":"Scott","ALAND":729770749,"oil_wells":0,"gas_wells":3},"arcs":[[-62,169,-37,170,171,172,173]]},{"type":"Polygon","properties":{"COUNTYFP":"229","NAME":"Washington","ALAND":769917017,"oil_wells":0,"gas_wells":0},"arcs":[[174,175,176,177,178]]},{"type":"Polygon","properties":{"COUNTYFP":"027","NAME":"Breckinridge","ALAND":1469042402,"oil_wells":132,"gas_wells":83},"arcs":[[179,180,181,182,-156,183]]},{"type":"Polygon","properties":{"COUNTYFP":"063","NAME":"Elliott","ALAND":606875335,"oil_wells":426,"gas_wells":115},"arcs":[[-168,184,185,186]]},{"type":"Polygon","properties":{"COUNTYFP":"071","NAME":"Floyd","ALAND":1018762993,"oil_wells":87,"gas_wells":2862},"arcs":[[187,188,-160,-135,-148]]},{"type":"Polygon","properties":{"COUNTYFP":"083","NAME":"Graves","ALAND":1429026325,"oil_wells":0,"gas_wells":0},"arcs":[[189,190,191,192,193,194]]},{"type":"Polygon","properties":{"COUNTYFP":"093","NAME":"Hardin","ALAND":1614337414,"oil_wells":2,"gas_wells":25},"arcs":[[-182,195,196,197,-92,198,-142,199,200]]},{"type":"Polygon","properties":{"COUNTYFP":"101","NAME":"Henderson","ALAND":1130968912,"oil_wells":2928,"gas_wells":39},"arcs":[[-109,201,202,203,204]]},{"type":"Polygon","properties":{"COUNTYFP":"115","NAME":"Johnson","ALAND":678468220,"oil_wells":1118,"gas_wells":855},"arcs":[[205,206,-188,-147,207]]},{"type":"Polygon","properties":{"COUNTYFP":"125","NAME":"Laurel","ALAND":1123945911,"oil_wells":21,"gas_wells":115},"arcs":[[208,-164,-132,-26,-38,209,-48]]},{"type":"Polygon","properties":{"COUNTYFP":"127","NAME":"Lawrence","ALAND":1076386415,"oil_wells":1635,"gas_wells":793},"arcs":[[-186,210,211,212,213,-206,214]]},{"type":"Polygon","properties":{"COUNTYFP":"135","NAME":"Lewis","ALAND":1250589444,"oil_wells":7,"gas_wells":9},"arcs":[[215,-127,216,-166,-115,217]]},{"type":"Polygon","properties":{"COUNTYFP":"159","NAME":"Martin","ALAND":594682183,"oil_wells":73,"gas_wells":1552},"arcs":[[-214,218,-161,-189,-207]]},{"type":"Polygon","properties":{"COUNTYFP":"179","NAME":"Nelson","ALAND":1081354534,"oil_wells":1,"gas_wells":0},"arcs":[[-91,219,220,-175,221,-138,-199]]},{"type":"Polygon","properties":{"COUNTYFP":"181","NAME":"Nicholas","ALAND":505491181,"oil_wells":0,"gas_wells":0},"arcs":[[222,-117,-4,223,-35]]},{"type":"Polygon","properties":{"COUNTYFP":"189","NAME":"Owsley","ALAND":511283093,"oil_wells":17,"gas_wells":39},"arcs":[[224,-89,-159,-22,-131]]},{"type":"Polygon","properties":{"COUNTYFP":"197","NAME":"Powell","ALAND":463555629,"oil_wells":394,"gas_wells":46},"arcs":[[225,-152,-74,226,-111,227]]},{"type":"Polygon","properties":{"COUNTYFP":"107","NAME":"Hopkins","ALAND":1403763233,"oil_wells":808,"gas_wells":306},"arcs":[[228,229,230,231,-95]]},{"type":"Polygon","properties":{"COUNTYFP":"177","NAME":"Muhlenberg","ALAND":1209734580,"oil_wells":1166,"gas_wells":296},"arcs":[[232,-158,-20,233,234,235,-231]]},{"type":"Polygon","properties":{"COUNTYFP":"167","NAME":"Mercer","ALAND":644472907,"oil_wells":0,"gas_wells":0},"arcs":[[236,237,238,-123,239,-177]]},{"type":"Polygon","properties":{"COUNTYFP":"235","NAME":"Whitley","ALAND":1133976305,"oil_wells":91,"gas_wells":1248},"arcs":[[-210,-39,-14,240,-49]]},{"type":"Polygon","properties":{"COUNTYFP":"005","NAME":"Anderson","ALAND":522745724,"oil_wells":0,"gas_wells":0},"arcs":[[241,242,243,-237,-176,-221,244]]},{"type":"Polygon","properties":{"COUNTYFP":"049","NAME":"Clark","ALAND":653878141,"oil_wells":0,"gas_wells":14},"arcs":[[245,246,-228,-110,-54,247]]},{"type":"Polygon","properties":{"COUNTYFP":"099","NAME":"Hart","ALAND":1067328904,"oil_wells":289,"gas_wells":55},"arcs":[[-200,-141,248,249,250,-27,251]]},{"type":"Polygon","properties":{"COUNTYFP":"155","NAME":"Marion","ALAND":888389556,"oil_wells":50,"gas_wells":0},"arcs":[[-222,-179,252,253,-66,-139]]},{"type":"Polygon","properties":{"COUNTYFP":"043","NAME":"Carter","ALAND":1060590174,"oil_wells":21,"gas_wells":54},"arcs":[[-217,-126,254,-211,-185,-167]]},{"type":"Polygon","properties":{"COUNTYFP":"085","NAME":"Grayson","ALAND":1288701716,"oil_wells":13,"gas_wells":268},"arcs":[[-183,-201,-252,-30,-16,-157]]},{"type":"Polygon","properties":{"COUNTYFP":"175","NAME":"Morgan","ALAND":987115528,"oil_wells":65,"gas_wells":180},"arcs":[[-169,-187,-215,-208,-149,-76,-151]]},{"type":"Polygon","properties":{"COUNTYFP":"017","NAME":"Bourbon","ALAND":750369719,"oil_wells":0,"gas_wells":0},"arcs":[[-36,-224,255,-246,256,-171]]},{"type":"Polygon","properties":{"COUNTYFP":"239","NAME":"Woodford","ALAND":489062308,"oil_wells":0,"gas_wells":0},"arcs":[[-173,257,258,-238,-244,259]]},{"type":"Polygon","properties":{"COUNTYFP":"021","NAME":"Boyle","ALAND":467270953,"oil_wells":0,"gas_wells":0},"arcs":[[-178,-240,-122,260,261,-253]]},{"type":"Polygon","properties":{"COUNTYFP":"067","NAME":"Fayette","ALAND":734648557,"oil_wells":0,"gas_wells":0},"arcs":[[-172,-257,-248,-53,262,-258]]},{"type":"Polygon","properties":{"COUNTYFP":"047","NAME":"Christian","ALAND":1858332131,"oil_wells":782,"gas_wells":154},"arcs":[[-96,-232,-236,263,264,265]]},{"type":"Polygon","properties":{"COUNTYFP":"077","NAME":"Gallatin","ALAND":254698298,"oil_wells":0,"gas_wells":7},"arcs":[[266,267,-60,268,269]]},{"type":"Polygon","properties":{"COUNTYFP":"117","NAME":"Kenton","ALAND":415046493,"oil_wells":0,"gas_wells":0},"arcs":[[270,271,272,273,274]]},{"type":"Polygon","properties":{"COUNTYFP":"137","NAME":"Lincoln","ALAND":861773590,"oil_wells":75,"gas_wells":1},"arcs":[[-261,-121,-163,275,276]]},{"type":"Polygon","properties":{"COUNTYFP":"161","NAME":"Mason","ALAND":621929398,"oil_wells":0,"gas_wells":0},"arcs":[[277,278,-218,-114,279]]},{"type":"Polygon","properties":{"COUNTYFP":"191","NAME":"Pendleton","ALAND":717838676,"oil_wells":0,"gas_wells":0},"arcs":[[-273,280,281,282,-32,283]]},{"type":"Polygon","properties":{"COUNTYFP":"201","NAME":"Robertson","ALAND":258768335,"oil_wells":0,"gas_wells":0},"arcs":[[284,-280,-118,-223,-34]]},{"type":"Polygon","properties":{"COUNTYFP":"207","NAME":"Russell","ALAND":656969317,"oil_wells":378,"gas_wells":2},"arcs":[[285,286,287,-70,288,289]]},{"type":"Polygon","properties":{"COUNTYFP":"221","NAME":"Trigg","ALAND":1143307644,"oil_wells":1,"gas_wells":8},"arcs":[[290,-97,-266,291,292,293]]},{"type":"Polygon","properties":{"COUNTYFP":"009","NAME":"Barren","ALAND":1262728237,"oil_wells":849,"gas_wells":170},"arcs":[[294,-28,-251,295,296,-81]]},{"type":"Polygon","properties":{"COUNTYFP":"015","NAME":"Boone","ALAND":637462163,"oil_wells":0,"gas_wells":1},"arcs":[[-275,297,-267,298]]},{"type":"Polygon","properties":{"COUNTYFP":"091","NAME":"Hancock","ALAND":486020451,"oil_wells":337,"gas_wells":36},"arcs":[[299,-184,-155,-106]]},{"type":"Polygon","properties":{"COUNTYFP":"023","NAME":"Bracken","ALAND":532533652,"oil_wells":0,"gas_wells":0},"arcs":[[300,-278,-285,-33,-283]]},{"type":"Polygon","properties":{"COUNTYFP":"035","NAME":"Calloway","ALAND":997205960,"oil_wells":0,"gas_wells":1},"arcs":[[301,-293,302,-193]]},{"type":"Polygon","properties":{"COUNTYFP":"039","NAME":"Carlisle","ALAND":490632795,"oil_wells":0,"gas_wells":0},"arcs":[[-2,303,-190,304,305]]},{"type":"Polygon","properties":{"COUNTYFP":"045","NAME":"Casey","ALAND":1150557971,"oil_wells":104,"gas_wells":30},"arcs":[[-254,-262,-277,306,-287,307,-67]]},{"type":"Polygon","properties":{"COUNTYFP":"053","NAME":"Clinton","ALAND":510864239,"oil_wells":2085,"gas_wells":136},"arcs":[[308,-289,-73,309]]},{"type":"MultiPolygon","properties":{"COUNTYFP":"075","NAME":"Fulton","ALAND":533214585,"oil_wells":0,"gas_wells":0},"arcs":[[[310,311]],[[312]]]},{"type":"Polygon","properties":{"COUNTYFP":"103","NAME":"Henry","ALAND":741450365,"oil_wells":0,"gas_wells":0},"arcs":[[313,314,-64,315,316,317]]},{"type":"Polygon","properties":{"COUNTYFP":"113","NAME":"Jessamine","ALAND":445779168,"oil_wells":0,"gas_wells":0},"arcs":[[-259,-263,-52,-119,-239]]},{"type":"Polygon","properties":{"COUNTYFP":"129","NAME":"Lee","ALAND":540937708,"oil_wells":2868,"gas_wells":19},"arcs":[[-112,-227,-79,-85,-225,-130]]},{"type":"Polygon","properties":{"COUNTYFP":"143","NAME":"Lyon","ALAND":553844805,"oil_wells":0,"gas_wells":1},"arcs":[[-144,-102,-98,-291,318]]},{"type":"Polygon","properties":{"COUNTYFP":"149","NAME":"McLean","ALAND":653906347,"oil_wells":1376,"gas_wells":57},"arcs":[[-202,-108,-154,-233,-230,319]]},{"type":"Polygon","properties":{"COUNTYFP":"163","NAME":"Meade","ALAND":791043370,"oil_wells":16,"gas_wells":201},"arcs":[[-196,-181,320]]},{"type":"Polygon","properties":{"COUNTYFP":"173","NAME":"Montgomery","ALAND":511177493,"oil_wells":10,"gas_wells":5},"arcs":[[-8,-153,-226,-247,-256]]},{"type":"Polygon","properties":{"COUNTYFP":"185","NAME":"Oldham","ALAND":484912266,"oil_wells":0,"gas_wells":0},"arcs":[[321,-318,322,323,324]]},{"type":"Polygon","properties":{"COUNTYFP":"213","NAME":"Simpson","ALAND":606584287,"oil_wells":95,"gas_wells":8},"arcs":[[325,326,-84,327]]},{"type":"Polygon","properties":{"COUNTYFP":"215","NAME":"Spencer","ALAND":483493839,"oil_wells":0,"gas_wells":0},"arcs":[[328,329,-245,-220,-90]]},{"type":"Polygon","properties":{"COUNTYFP":"223","NAME":"Trimble","ALAND":392766407,"oil_wells":0,"gas_wells":0},"arcs":[[330,-314,-322,331]]},{"type":"Polygon","properties":{"COUNTYFP":"019","NAME":"Boyd","ALAND":414053933,"oil_wells":4,"gas_wells":278},"arcs":[[332,-212,-255,-125]]},{"type":"Polygon","properties":{"COUNTYFP":"087","NAME":"Green","ALAND":740837686,"oil_wells":975,"gas_wells":39},"arcs":[[-140,-69,333,334,-249]]},{"type":"Polygon","properties":{"COUNTYFP":"001","NAME":"Adair","ALAND":1049678317,"oil_wells":1115,"gas_wells":15},"arcs":[[-334,-68,-308,-286,335,336]]},{"type":"Polygon","properties":{"COUNTYFP":"041","NAME":"Carroll","ALAND":332993713,"oil_wells":0,"gas_wells":10},"arcs":[[-269,-59,-315,-331,337]]},{"type":"Polygon","properties":{"COUNTYFP":"057","NAME":"Cumberland","ALAND":790416941,"oil_wells":2092,"gas_wells":55},"arcs":[[-336,-290,-309,338,339,340]]},{"type":"Polygon","properties":{"COUNTYFP":"073","NAME":"Franklin","ALAND":538073041,"oil_wells":0,"gas_wells":0},"arcs":[[-316,-63,-174,-260,-243,341]]},{"type":"Polygon","properties":{"COUNTYFP":"105","NAME":"Hickman","ALAND":627487985,"oil_wells":0,"gas_wells":0},"arcs":[[-305,-195,342,-311,343]]},{"type":"Polygon","properties":{"COUNTYFP":"111","NAME":"Jefferson","ALAND":985312154,"oil_wells":0,"gas_wells":0},"arcs":[[344,-324,345,-329,-93,-198]]},{"type":"Polygon","properties":{"COUNTYFP":"141","NAME":"Logan","ALAND":1430014712,"oil_wells":89,"gas_wells":8},"arcs":[[-234,-19,346,-326,347,348]]},{"type":"Polygon","properties":{"COUNTYFP":"145","NAME":"McCracken","ALAND":644251034,"oil_wells":1,"gas_wells":0},"arcs":[[-146,349,-191,-304,-1,350]]},{"type":"Polygon","properties":{"COUNTYFP":"157","NAME":"Marshall","ALAND":780273148,"oil_wells":0,"gas_wells":0},"arcs":[[-350,-145,-319,-294,-302,-192]]},{"type":"Polygon","properties":{"COUNTYFP":"169","NAME":"Metcalfe","ALAND":750178426,"oil_wells":768,"gas_wells":194},"arcs":[[-250,-335,-337,-341,351,-296]]},{"type":"Polygon","properties":{"COUNTYFP":"171","NAME":"Monroe","ALAND":853073327,"oil_wells":469,"gas_wells":23},"arcs":[[-297,-352,-340,352,-82]]},{"type":"Polygon","properties":{"COUNTYFP":"199","NAME":"Pulaski","ALAND":1705273851,"oil_wells":78,"gas_wells":131},"arcs":[[-307,-276,-165,-209,-47,-71,-288]]},{"type":"Polygon","properties":{"COUNTYFP":"211","NAME":"Shelby","ALAND":983257095,"oil_wells":0,"gas_wells":3},"arcs":[[-317,-342,-242,-330,-346,-323]]},{"type":"Polygon","properties":{"COUNTYFP":"227","NAME":"Warren","ALAND":1402743723,"oil_wells":2057,"gas_wells":168},"arcs":[[-29,-295,-80,-327,-347,-18]]},{"type":"Polygon","properties":{"COUNTYFP":"233","NAME":"Webster","ALAND":859730052,"oil_wells":1028,"gas_wells":66},"arcs":[[353,-203,-320,-229,-94,-101]]},{"type":"Polygon","properties":{"COUNTYFP":"037","NAME":"Campbell","ALAND":391910592,"oil_wells":0,"gas_wells":0},"arcs":[[354,-281,-272]]},{"type":"Polygon","properties":{"COUNTYFP":"081","NAME":"Grant","ALAND":668126188,"oil_wells":0,"gas_wells":34},"arcs":[[-298,-274,-284,-31,-170,-61,-268]]},{"type":"Polygon","properties":{"COUNTYFP":"219","NAME":"Todd","ALAND":969942107,"oil_wells":86,"gas_wells":62},"arcs":[[-235,-349,355,-264]]},{"type":"Polygon","properties":{"COUNTYFP":"225","NAME":"Union","ALAND":887974711,"oil_wells":1388,"gas_wells":13},"arcs":[[-204,-354,-100,356]]}]}},"arcs":[[[816,2748],[155,-1023]],[[971,1725],[-228,-131],[-147,93]],[[596,1687],[-42,144],[-52,324],[187,539],[127,54]],[[7349,6397],[171,395]],[[7520,6792],[153,-51],[128,-362]],[[7801,6379],[169,-382],[11,-134]],[[7981,5863],[-104,-142],[-108,57],[-132,-111]],[[7637,5667],[-160,520],[-128,210]],[[7482,718],[127,435],[263,385],[-11,193]],[[7861,1731],[106,-65]],[[7967,1666],[26,-163]],[[7993,1503],[-15,-612],[53,-258]],[[8031,633],[-94,1],[-189,-243],[-20,-68],[-317,19]],[[7411,342],[-33,218],[104,158]],[[3498,2699],[129,461],[55,-115],[195,344]],[[3877,3389],[164,-123],[24,-156]],[[4065,3110],[92,-571]],[[4157,2539],[-90,-62],[-198,115],[-75,-695]],[[3794,1897],[-225,214],[-127,47]],[[3442,2158],[59,86],[-39,259],[36,196]],[[7394,2844],[210,370]],[[7604,3214],[193,-17],[147,-324]],[[7944,2873],[25,-85]],[[7969,2788],[-57,-258],[7,-449],[48,-415]],[[7861,1731],[-307,265],[-64,109]],[[7490,2105],[-129,452],[33,287]],[[4476,3164],[143,-454],[-10,-181]],[[4609,2529],[-23,-430],[-52,29]],[[4534,2128],[-139,162],[-83,-88],[-155,337]],[[4065,3110],[411,54]],[[6585,7532],[107,188]],[[6692,7720],[358,148]],[[7050,7868],[57,-105]],[[7107,7763],[0,-198],[79,-160]],[[7186,7405],[-122,-331]],[[7064,7074],[-235,-348],[-92,14]],[[6737,6740],[-42,442],[-110,350]],[[7199,1732],[175,80],[116,293]],[[7482,718],[-107,150],[-33,278],[-108,199],[-35,387]],[[7969,2788],[48,209],[97,96],[225,-612],[81,-314],[-22,-190]],[[8398,1977],[-102,-196],[-303,-278]],[[8478,1902],[107,298],[-27,133],[80,303]],[[8638,2636],[120,40],[118,236],[115,10]],[[8991,2922],[137,-89],[83,-195]],[[9211,2638],[-206,-287],[0,-235],[-194,-316]],[[8811,1800],[-92,155],[-241,-53]],[[6558,1396],[213,301],[77,48]],[[6848,1745],[80,-51]],[[6928,1694],[-69,-624],[56,-392],[106,-319]],[[7021,359],[-45,-1],[-682,42]],[[6294,400],[137,514],[125,283],[2,199]],[[6627,4802],[119,293]],[[6746,5095],[129,169]],[[6875,5264],[86,96],[67,-171],[186,-72]],[[7214,5117],[-21,-722],[8,-360]],[[7201,4035],[-144,-164]],[[7057,3871],[-195,61]],[[6862,3932],[-140,574],[-95,296]],[[5903,7924],[185,246]],[[6088,8170],[196,221]],[[6284,8391],[15,-385],[256,-549]],[[6555,7457],[-211,-456]],[[6344,7001],[-171,17]],[[6173,7018],[-13,224],[-196,342],[26,205],[-87,135]],[[5233,3671],[154,-16]],[[5387,3655],[146,20],[144,-191],[101,165],[127,-190]],[[5905,3459],[-76,-111],[-45,-279]],[[5784,3069],[-36,-142],[-161,-121],[-50,-182]],[[5537,2624],[-165,646],[-141,258],[2,143]],[[5917,1365],[301,524]],[[6218,1889],[87,-150],[120,87],[133,-430]],[[6294,400],[-9,1],[-250,46]],[[6035,447],[-60,298],[21,233],[-79,387]],[[7705,4602],[101,411]],[[7806,5013],[106,-15],[74,152]],[[7986,5150],[221,-310],[86,-253]],[[8293,4587],[18,-162]],[[8311,4425],[-224,79],[-53,-227],[-84,30]],[[7950,4307],[-245,295]],[[4149,1053],[315,596]],[[4464,1649],[146,-392],[104,-406]],[[4714,851],[5,-355]],[[4719,496],[-306,43],[-272,40]],[[4141,579],[8,474]],[[7875,3808],[75,499]],[[8311,4425],[176,-220],[41,70],[114,-383],[64,-95]],[[8706,3797],[-134,83],[-111,-257],[14,-197]],[[8475,3426],[-100,37],[-174,-132],[-97,-154],[-53,119],[-134,-136]],[[7917,3160],[-9,500],[-33,148]],[[5437,6118],[-54,-83],[-26,-398]],[[5357,5637],[-203,-592],[-125,-84]],[[5029,4961],[-105,176],[-49,329],[-110,201]],[[4765,5667],[81,162],[216,172],[205,-51],[170,168]],[[2309,3330],[-16,-109]],[[2293,3221],[51,-576],[124,-184]],[[2468,2461],[-70,-555]],[[2398,1906],[-189,-159]],[[2209,1747],[-129,405],[-89,405],[-70,19]],[[1921,2576],[57,219],[331,535]],[[1966,3805],[169,-95]],[[2135,3710],[6,-270],[108,46],[60,-156]],[[1921,2576],[-129,-122]],[[1792,2454],[-34,474],[-184,497]],[[1574,3425],[101,181],[264,77],[27,122]],[[2966,5289],[45,-76],[261,-289],[49,395],[72,89]],[[3393,5408],[112,-182],[101,-341],[-8,-203]],[[3598,4682],[8,-241],[-173,-164],[-118,-263]],[[3315,4014],[-295,231],[-193,233]],[[2827,4478],[19,152],[137,138],[-44,221],[27,300]],[[7214,5117],[104,-58]],[[7318,5059],[164,-323],[129,32],[76,-167]],[[7687,4601],[-135,-201],[-107,-453]],[[7445,3947],[-79,145],[-165,-57]],[[7412,7529],[94,-135],[286,260]],[[7792,7654],[83,-359],[167,-183]],[[8042,7112],[-62,-122],[-11,-287],[-168,-324]],[[7520,6792],[17,76],[-190,461]],[[7347,7329],[65,200]],[[6375,4975],[213,-250],[39,77]],[[6862,3932],[-35,-250],[-96,50]],[[6731,3732],[-279,560]],[[6452,4292],[-114,297]],[[6338,4589],[56,46],[-19,340]],[[8598,8410],[180,117],[62,-609],[41,-93],[120,-49],[78,-196]],[[9079,7580],[-136,-272],[-64,-225]],[[8879,7083],[-198,76],[-111,268],[-151,147]],[[8419,7574],[126,343],[53,493]],[[8398,1977],[80,-75]],[[8811,1800],[-12,-305],[-121,-134],[-135,-12],[-161,-434],[-351,-282]],[[7445,3947],[26,-95]],[[7471,3852],[133,-638]],[[7394,2844],[-148,72],[-108,189]],[[7138,3105],[12,142],[-98,486],[5,138]],[[8706,3797],[31,-63]],[[8737,3734],[124,-74],[90,-156],[19,-411],[50,-119]],[[9020,2974],[-29,-52]],[[8638,2636],[-167,275],[4,515]],[[5105,4661],[142,-355],[-68,-346],[136,30]],[[5315,3990],[72,-335]],[[5233,3671],[-98,-181]],[[5135,3490],[-310,69]],[[4825,3559],[22,389],[96,296],[88,123],[74,294]],[[1301,2182],[99,-28],[87,319],[-120,497],[52,388],[81,139],[74,-72]],[[1792,2454],[-50,-248],[-12,-376]],[[1730,1830],[-161,309],[-159,-156]],[[1410,1983],[-109,199]],[[8632,5140],[72,-243],[13,-296]],[[8717,4601],[47,-290],[10,-471],[-37,-106]],[[8293,4587],[-11,205],[239,466],[111,-118]],[[7981,5863],[85,-63]],[[8066,5800],[-13,-345],[-67,-305]],[[7806,5013],[-181,351]],[[7625,5364],[12,303]],[[3234,3468],[-5,245],[86,301]],[[3598,4682],[243,-286]],[[3841,4396],[61,-368]],[[3902,4028],[-91,-85],[66,-554]],[[3498,2699],[-110,216],[-4,178],[-150,375]],[[7944,2873],[-27,287]],[[9020,2974],[50,82],[111,526],[-46,218],[33,521],[46,161]],[[9214,4482],[142,-61],[162,273]],[[9518,4694],[48,-207],[145,-214],[85,-289],[203,-56],[-457,-914],[-48,-108],[-267,-243],[-16,-25]],[[6657,3139],[74,593]],[[7138,3105],[-153,-305],[-46,-330]],[[6939,2470],[-282,669]],[[8042,7112],[47,55],[100,-290]],[[8189,6877],[54,-416],[73,-63]],[[8316,6398],[-25,-291]],[[8291,6107],[-225,-307]],[[6555,7457],[30,75]],[[6737,6740],[53,-284]],[[6790,6456],[-294,-345]],[[6496,6111],[-40,238],[-92,60]],[[6364,6409],[-20,592]],[[5472,4655],[124,335],[204,296]],[[5800,5286],[162,-24]],[[5962,5262],[39,-138],[-32,-664]],[[5969,4460],[-7,-180]],[[5962,4280],[-299,-1],[-154,161],[-37,215]],[[3820,5077],[159,281],[12,419],[45,67]],[[4036,5844],[327,-637],[121,-294]],[[4484,4913],[-163,-775]],[[4321,4138],[-227,-66],[-74,174],[-118,-218]],[[3841,4396],[-51,494],[30,187]],[[8316,6398],[107,276],[153,-272],[162,-70]],[[8738,6332],[47,-238],[-176,-396]],[[8609,5698],[-164,-26],[-159,222],[5,213]],[[8717,4601],[64,-29],[170,180],[161,-136]],[[9112,4616],[102,-134]],[[975,1042],[0,655]],[[975,1697],[434,-18]],[[1409,1679],[-2,-723]],[[1407,956],[-5,-941]],[[1402,15],[-36,1],[-396,6]],[[970,22],[5,1020]],[[4484,4913],[190,74],[41,216],[-30,468]],[[4685,5671],[67,27]],[[4752,5698],[13,-31]],[[5029,4961],[76,-300]],[[4825,3559],[-204,37]],[[4621,3596],[-88,442],[-212,100]],[[2827,4478],[-115,-137]],[[2712,4341],[-315,-34]],[[2397,4307],[-57,479],[-56,11],[-141,504]],[[2143,5301],[127,-95],[171,78],[38,-257],[75,11],[84,352],[132,59],[196,-160]],[[8653,5536],[65,132],[142,-118],[126,-194],[163,-140]],[[9149,5216],[-77,-103],[40,-497]],[[8632,5140],[57,203],[-36,193]],[[6848,1745],[91,725]],[[7199,1732],[-271,-38]],[[8738,6332],[93,57],[79,203]],[[8910,6592],[210,87],[40,-74]],[[9160,6605],[-43,-409],[113,-257],[71,-473]],[[9301,5466],[-110,32],[-42,-282]],[[8653,5536],[-44,162]],[[7787,8076],[25,160],[140,89],[334,-320],[164,26],[148,379]],[[8419,7574],[-93,-292],[8,-329],[-145,-76]],[[7792,7654],[-5,422]],[[9301,5466],[109,-339],[108,-433]],[[5357,5637],[118,-192],[306,120]],[[5781,5565],[19,-279]],[[5472,4655],[-64,-169],[-93,-496]],[[7186,7405],[161,-76]],[[7349,6397],[-154,252],[-131,425]],[[7471,3852],[73,-116],[115,27],[113,161],[103,-116]],[[7365,5410],[115,-97],[145,51]],[[7705,4602],[-18,-1]],[[7318,5059],[47,351]],[[2293,3221],[290,420],[125,95],[163,313]],[[2871,4049],[31,-548],[73,-125]],[[2975,3376],[-120,-514],[99,-221],[-29,-150]],[[2925,2491],[-247,-196],[-210,166]],[[2975,3376],[114,-36],[145,128]],[[3442,2158],[-147,-30]],[[3295,2128],[-260,-77],[-12,120]],[[3023,2171],[-98,320]],[[5962,5262],[128,237],[180,60]],[[6270,5559],[-6,-262],[120,-146]],[[6384,5151],[-9,-176]],[[6338,4589],[-369,-129]],[[7411,342],[-74,7],[-316,10]],[[5868,5812],[103,347]],[[5971,6159],[152,-134],[57,88]],[[6180,6113],[90,-554]],[[5781,5565],[87,247]],[[6942,5924],[272,182]],[[7214,6106],[151,-696]],[[6875,5264],[20,411],[47,249]],[[5135,3490],[-52,-453],[14,-451]],[[5097,2586],[-76,-47]],[[5021,2539],[-214,-81],[-198,71]],[[4476,3164],[110,47],[35,385]],[[5962,4280],[-13,-325]],[[5949,3955],[-6,-476],[-38,-20]],[[8879,7083],[60,-43],[-29,-448]],[[7349,6397],[-135,-291]],[[6942,5924],[-122,167],[32,252],[-62,113]],[[6496,6111],[-46,-425]],[[6450,5686],[-66,-535]],[[6180,6113],[0,92],[184,204]],[[6452,4292],[-249,-327]],[[6203,3965],[-67,-59],[-187,49]],[[6746,5095],[-58,351],[-238,240]],[[3023,2171],[-101,-1626]],[[2922,545],[-402,-13],[-70,-4]],[[2450,528],[27,449],[18,794],[-97,135]],[[6273,8906],[177,-301]],[[6450,8605],[-159,-46],[-7,-168]],[[6088,8170],[-117,377]],[[5971,8547],[171,120],[108,-4],[23,243]],[[6498,9726],[155,78]],[[6653,9804],[43,-342],[61,-89],[-48,-486],[60,-171]],[[6769,8716],[-151,-56]],[[6618,8660],[-110,39]],[[6508,8699],[24,292],[-34,735]],[[6657,3139],[-70,101],[-217,-443]],[[6370,2797],[-3,459],[-168,254],[4,455]],[[7331,7912],[116,659]],[[7447,8571],[262,-485],[78,-10]],[[7412,7529],[-81,383]],[[6769,8716],[245,257]],[[7014,8973],[2,-179]],[[7016,8794],[34,-926]],[[6692,7720],[-74,940]],[[7107,7763],[93,156],[131,-7]],[[5696,1615],[35,271],[214,714]],[[5945,2600],[117,-316],[70,53]],[[6132,2337],[-6,-261],[92,-187]],[[5917,1365],[-71,-119],[-128,103]],[[5718,1349],[-22,266]],[[1839,1397],[370,350]],[[2450,528],[-210,-14],[5,115],[-291,54]],[[1954,683],[-53,260]],[[1901,943],[-62,454]],[[4464,1649],[70,479]],[[5021,2539],[-16,-227],[22,-1012]],[[5027,1300],[-89,-75],[-224,-374]],[[6508,8699],[-58,-94]],[[6273,8906],[-101,166],[47,215],[-56,275],[76,282],[87,155],[172,-273]],[[3393,5408],[79,25],[137,234],[84,-324],[140,-68],[-13,-198]],[[7016,8794],[23,-82],[212,-129],[196,-12]],[[1407,956],[494,-13]],[[1954,683],[50,-518],[-27,-165],[-575,15]],[[971,1725],[4,-28]],[[975,1042],[-335,-2],[-74,48]],[[566,1088],[-19,234],[49,365]],[[6370,2797],[-238,-460]],[[5945,2600],[-18,268],[-143,201]],[[5612,486],[106,863]],[[6035,447],[-397,41],[-26,-2]],[[498,579],[195,-220],[162,-57],[91,-280]],[[946,22],[-674,1],[-94,-16],[69,476],[50,27],[132,-237],[69,306]],[[89,2],[-71,1],[-18,299],[89,-20],[0,-280]],[[5588,7531],[192,350]],[[5780,7881],[123,43]],[[6173,7018],[-168,-80]],[[6005,6938],[-376,85]],[[5629,7023],[-83,383],[42,125]],[[1839,1397],[-109,433]],[[2871,4049],[-118,90],[-41,202]],[[4036,5844],[40,285],[166,30],[6,196],[77,-163],[7,-305],[116,-173],[237,-43]],[[5431,7649],[157,-118]],[[5629,7023],[-55,-181],[-189,-94]],[[5385,6748],[-224,359]],[[5161,7107],[66,265],[117,66],[87,211]],[[3677,573],[16,295],[80,442],[104,147]],[[3877,1457],[38,-200],[241,-87],[-7,-117]],[[4141,579],[-201,-64],[-34,71],[-229,-13]],[[5437,6118],[6,110]],[[5443,6228],[425,-416]],[[5563,8449],[217,-568]],[[5431,7649],[6,235],[-31,464],[157,101]],[[9079,7580],[95,-317],[29,-400],[-43,-258]],[[5537,2624],[-230,-313]],[[5307,2311],[-139,59],[-71,216]],[[5696,1615],[-290,49]],[[5406,1664],[-68,263],[-31,384]],[[5563,8449],[114,-16],[59,-154],[90,43],[145,225]],[[5612,486],[-185,-28]],[[5427,458],[-84,434],[-127,319]],[[5216,1211],[161,286],[29,167]],[[5971,6159],[34,779]],[[970,22],[-14,0],[-10,0]],[[498,579],[-32,247],[100,262]],[[4752,5698],[55,299],[9,355],[142,409],[70,-73],[112,218],[21,201]],[[5385,6748],[83,-81],[-25,-439]],[[3794,1897],[83,-440]],[[3677,573],[-392,-22]],[[3285,551],[10,1577]],[[1410,1983],[-1,-304]],[[816,2748],[7,5],[162,-143],[97,-169],[159,-118],[60,-141]],[[5216,1211],[-189,89]],[[5427,458],[-465,13],[-243,25]],[[2135,3710],[262,597]],[[6653,9804],[245,-275],[116,-556]],[[3285,551],[-71,-3],[-292,-3]],[[1966,3805],[-95,260],[-33,341],[125,279],[47,229],[110,-90],[50,122],[-27,355]]],"transform":{"scale":[0.000758535853585358,0.000264986498649865],"translate":[-89.5526,36.4971]}} -------------------------------------------------------------------------------- /d3-map07-data-area-toggle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A toggle D3 county map of Kentucky oil and gas wells 5 | 6 | 7 | 8 | 9 | 10 | 11 | 41 | 42 | 43 |

Kentucky Counties Oil and Gas Wells by County

44 |
45 | 46 | 47 |
48 | 49 | 116 | 117 | -------------------------------------------------------------------------------- /d3-map07-data-area-toggle/ky-counties.json: -------------------------------------------------------------------------------- 1 | {"type":"Topology","objects":{"counties":{"type":"GeometryCollection","geometries":[{"type":"Polygon","properties":{"COUNTYFP":"007","NAME":"Ballard","ALAND":638843907,"oil_wells":0,"gas_wells":0},"arcs":[[0,1,2]]},{"type":"Polygon","properties":{"COUNTYFP":"011","NAME":"Bath","ALAND":722081626,"oil_wells":45,"gas_wells":18},"arcs":[[3,4,5,6,7]]},{"type":"Polygon","properties":{"COUNTYFP":"013","NAME":"Bell","ALAND":929806591,"oil_wells":23,"gas_wells":593},"arcs":[[8,9,10,11,12,13]]},{"type":"Polygon","properties":{"COUNTYFP":"031","NAME":"Butler","ALAND":1103562551,"oil_wells":546,"gas_wells":57},"arcs":[[14,15,16,17,18,19]]},{"type":"Polygon","properties":{"COUNTYFP":"051","NAME":"Clay","ALAND":1215349017,"oil_wells":81,"gas_wells":1340},"arcs":[[20,21,22,23,-10,24,25]]},{"type":"Polygon","properties":{"COUNTYFP":"061","NAME":"Edmonson","ALAND":784464286,"oil_wells":270,"gas_wells":115},"arcs":[[26,27,28,-17,29]]},{"type":"Polygon","properties":{"COUNTYFP":"097","NAME":"Harrison","ALAND":793479801,"oil_wells":0,"gas_wells":0},"arcs":[[30,31,32,33,34,35,36]]},{"type":"Polygon","properties":{"COUNTYFP":"121","NAME":"Knox","ALAND":1000508842,"oil_wells":41,"gas_wells":1014},"arcs":[[37,-25,-9,38]]},{"type":"Polygon","properties":{"COUNTYFP":"131","NAME":"Leslie","ALAND":1038212361,"oil_wells":41,"gas_wells":619},"arcs":[[39,40,-11,-24]]},{"type":"Polygon","properties":{"COUNTYFP":"133","NAME":"Letcher","ALAND":875193012,"oil_wells":19,"gas_wells":1444},"arcs":[[41,42,43,44,45]]},{"type":"Polygon","properties":{"COUNTYFP":"147","NAME":"McCreary","ALAND":1105417092,"oil_wells":65,"gas_wells":106},"arcs":[[46,47,48,49,50]]},{"type":"Polygon","properties":{"COUNTYFP":"151","NAME":"Madison","ALAND":1132604797,"oil_wells":4,"gas_wells":0},"arcs":[[51,52,53,54,55,56,57]]},{"type":"Polygon","properties":{"COUNTYFP":"187","NAME":"Owen","ALAND":909364873,"oil_wells":0,"gas_wells":0},"arcs":[[58,59,60,61,62,63]]},{"type":"Polygon","properties":{"COUNTYFP":"217","NAME":"Taylor","ALAND":689791762,"oil_wells":79,"gas_wells":8},"arcs":[[64,65,66,67,68]]},{"type":"Polygon","properties":{"COUNTYFP":"231","NAME":"Wayne","ALAND":1186685586,"oil_wells":288,"gas_wells":20},"arcs":[[69,70,-51,71,72]]},{"type":"Polygon","properties":{"COUNTYFP":"237","NAME":"Wolfe","ALAND":575419314,"oil_wells":398,"gas_wells":98},"arcs":[[73,74,75,76,77,78]]},{"type":"Polygon","properties":{"COUNTYFP":"003","NAME":"Allen","ALAND":891830500,"oil_wells":606,"gas_wells":9},"arcs":[[79,80,81,82,83]]},{"type":"Polygon","properties":{"COUNTYFP":"025","NAME":"Breathitt","ALAND":1275350659,"oil_wells":308,"gas_wells":448},"arcs":[[84,-78,85,86,87,88]]},{"type":"Polygon","properties":{"COUNTYFP":"029","NAME":"Bullitt","ALAND":769295444,"oil_wells":0,"gas_wells":1},"arcs":[[89,90,91,92]]},{"type":"Polygon","properties":{"COUNTYFP":"033","NAME":"Caldwell","ALAND":893006791,"oil_wells":11,"gas_wells":35},"arcs":[[93,94,95,96,97,98]]},{"type":"Polygon","properties":{"COUNTYFP":"055","NAME":"Crittenden","ALAND":932275449,"oil_wells":3,"gas_wells":2},"arcs":[[99,100,-99,101,102,103]]},{"type":"Polygon","properties":{"COUNTYFP":"059","NAME":"Daviess","ALAND":1187163652,"oil_wells":2407,"gas_wells":89},"arcs":[[104,105,106,107,108]]},{"type":"Polygon","properties":{"COUNTYFP":"065","NAME":"Estill","ALAND":655468653,"oil_wells":450,"gas_wells":13},"arcs":[[109,110,111,112,-55]]},{"type":"Polygon","properties":{"COUNTYFP":"069","NAME":"Fleming","ALAND":902720729,"oil_wells":0,"gas_wells":0},"arcs":[[113,114,115,-5,116,117]]},{"type":"Polygon","properties":{"COUNTYFP":"079","NAME":"Garrard","ALAND":595898816,"oil_wells":4,"gas_wells":6},"arcs":[[118,-58,119,120,121,122]]},{"type":"Polygon","properties":{"COUNTYFP":"089","NAME":"Greenup","ALAND":892115289,"oil_wells":97,"gas_wells":58},"arcs":[[123,124,125,126]]},{"type":"Polygon","properties":{"COUNTYFP":"095","NAME":"Harlan","ALAND":1206487467,"oil_wells":11,"gas_wells":484},"arcs":[[-41,127,-46,128,-12]]},{"type":"Polygon","properties":{"COUNTYFP":"109","NAME":"Jackson","ALAND":894055721,"oil_wells":28,"gas_wells":63},"arcs":[[-56,-113,129,130,-21,131,132]]},{"type":"Polygon","properties":{"COUNTYFP":"119","NAME":"Knott","ALAND":910435521,"oil_wells":20,"gas_wells":2263},"arcs":[[133,134,135,-43,136,-87]]},{"type":"Polygon","properties":{"COUNTYFP":"123","NAME":"Larue","ALAND":677353871,"oil_wells":1,"gas_wells":37},"arcs":[[137,138,-65,139,140,141]]},{"type":"Polygon","properties":{"COUNTYFP":"139","NAME":"Livingston","ALAND":810982681,"oil_wells":0,"gas_wells":0},"arcs":[[142,-103,143,144,145]]},{"type":"Polygon","properties":{"COUNTYFP":"153","NAME":"Magoffin","ALAND":798866504,"oil_wells":1705,"gas_wells":929},"arcs":[[146,147,-134,-86,-77,148]]},{"type":"Polygon","properties":{"COUNTYFP":"165","NAME":"Menifee","ALAND":527282429,"oil_wells":28,"gas_wells":112},"arcs":[[-7,149,150,-75,151,152]]},{"type":"Polygon","properties":{"COUNTYFP":"183","NAME":"Ohio","ALAND":1521032830,"oil_wells":1412,"gas_wells":85},"arcs":[[153,-107,154,155,156,-15,157]]},{"type":"Polygon","properties":{"COUNTYFP":"193","NAME":"Perry","ALAND":879750116,"oil_wells":44,"gas_wells":1151},"arcs":[[-88,-137,-42,-128,-40,-23,158]]},{"type":"Polygon","properties":{"COUNTYFP":"195","NAME":"Pike","ALAND":2037851002,"oil_wells":25,"gas_wells":5563},"arcs":[[-136,159,160,161,-44]]},{"type":"Polygon","properties":{"COUNTYFP":"203","NAME":"Rockcastle","ALAND":819848743,"oil_wells":7,"gas_wells":5},"arcs":[[162,-120,-57,-133,163,164]]},{"type":"Polygon","properties":{"COUNTYFP":"205","NAME":"Rowan","ALAND":724672131,"oil_wells":11,"gas_wells":73},"arcs":[[165,166,167,168,-150,-6,-116]]},{"type":"Polygon","properties":{"COUNTYFP":"209","NAME":"Scott","ALAND":729770749,"oil_wells":0,"gas_wells":3},"arcs":[[-62,169,-37,170,171,172,173]]},{"type":"Polygon","properties":{"COUNTYFP":"229","NAME":"Washington","ALAND":769917017,"oil_wells":0,"gas_wells":0},"arcs":[[174,175,176,177,178]]},{"type":"Polygon","properties":{"COUNTYFP":"027","NAME":"Breckinridge","ALAND":1469042402,"oil_wells":132,"gas_wells":83},"arcs":[[179,180,181,182,-156,183]]},{"type":"Polygon","properties":{"COUNTYFP":"063","NAME":"Elliott","ALAND":606875335,"oil_wells":426,"gas_wells":115},"arcs":[[-168,184,185,186]]},{"type":"Polygon","properties":{"COUNTYFP":"071","NAME":"Floyd","ALAND":1018762993,"oil_wells":87,"gas_wells":2862},"arcs":[[187,188,-160,-135,-148]]},{"type":"Polygon","properties":{"COUNTYFP":"083","NAME":"Graves","ALAND":1429026325,"oil_wells":0,"gas_wells":0},"arcs":[[189,190,191,192,193,194]]},{"type":"Polygon","properties":{"COUNTYFP":"093","NAME":"Hardin","ALAND":1614337414,"oil_wells":2,"gas_wells":25},"arcs":[[-182,195,196,197,-92,198,-142,199,200]]},{"type":"Polygon","properties":{"COUNTYFP":"101","NAME":"Henderson","ALAND":1130968912,"oil_wells":2928,"gas_wells":39},"arcs":[[-109,201,202,203,204]]},{"type":"Polygon","properties":{"COUNTYFP":"115","NAME":"Johnson","ALAND":678468220,"oil_wells":1118,"gas_wells":855},"arcs":[[205,206,-188,-147,207]]},{"type":"Polygon","properties":{"COUNTYFP":"125","NAME":"Laurel","ALAND":1123945911,"oil_wells":21,"gas_wells":115},"arcs":[[208,-164,-132,-26,-38,209,-48]]},{"type":"Polygon","properties":{"COUNTYFP":"127","NAME":"Lawrence","ALAND":1076386415,"oil_wells":1635,"gas_wells":793},"arcs":[[-186,210,211,212,213,-206,214]]},{"type":"Polygon","properties":{"COUNTYFP":"135","NAME":"Lewis","ALAND":1250589444,"oil_wells":7,"gas_wells":9},"arcs":[[215,-127,216,-166,-115,217]]},{"type":"Polygon","properties":{"COUNTYFP":"159","NAME":"Martin","ALAND":594682183,"oil_wells":73,"gas_wells":1552},"arcs":[[-214,218,-161,-189,-207]]},{"type":"Polygon","properties":{"COUNTYFP":"179","NAME":"Nelson","ALAND":1081354534,"oil_wells":1,"gas_wells":0},"arcs":[[-91,219,220,-175,221,-138,-199]]},{"type":"Polygon","properties":{"COUNTYFP":"181","NAME":"Nicholas","ALAND":505491181,"oil_wells":0,"gas_wells":0},"arcs":[[222,-117,-4,223,-35]]},{"type":"Polygon","properties":{"COUNTYFP":"189","NAME":"Owsley","ALAND":511283093,"oil_wells":17,"gas_wells":39},"arcs":[[224,-89,-159,-22,-131]]},{"type":"Polygon","properties":{"COUNTYFP":"197","NAME":"Powell","ALAND":463555629,"oil_wells":394,"gas_wells":46},"arcs":[[225,-152,-74,226,-111,227]]},{"type":"Polygon","properties":{"COUNTYFP":"107","NAME":"Hopkins","ALAND":1403763233,"oil_wells":808,"gas_wells":306},"arcs":[[228,229,230,231,-95]]},{"type":"Polygon","properties":{"COUNTYFP":"177","NAME":"Muhlenberg","ALAND":1209734580,"oil_wells":1166,"gas_wells":296},"arcs":[[232,-158,-20,233,234,235,-231]]},{"type":"Polygon","properties":{"COUNTYFP":"167","NAME":"Mercer","ALAND":644472907,"oil_wells":0,"gas_wells":0},"arcs":[[236,237,238,-123,239,-177]]},{"type":"Polygon","properties":{"COUNTYFP":"235","NAME":"Whitley","ALAND":1133976305,"oil_wells":91,"gas_wells":1248},"arcs":[[-210,-39,-14,240,-49]]},{"type":"Polygon","properties":{"COUNTYFP":"005","NAME":"Anderson","ALAND":522745724,"oil_wells":0,"gas_wells":0},"arcs":[[241,242,243,-237,-176,-221,244]]},{"type":"Polygon","properties":{"COUNTYFP":"049","NAME":"Clark","ALAND":653878141,"oil_wells":0,"gas_wells":14},"arcs":[[245,246,-228,-110,-54,247]]},{"type":"Polygon","properties":{"COUNTYFP":"099","NAME":"Hart","ALAND":1067328904,"oil_wells":289,"gas_wells":55},"arcs":[[-200,-141,248,249,250,-27,251]]},{"type":"Polygon","properties":{"COUNTYFP":"155","NAME":"Marion","ALAND":888389556,"oil_wells":50,"gas_wells":0},"arcs":[[-222,-179,252,253,-66,-139]]},{"type":"Polygon","properties":{"COUNTYFP":"043","NAME":"Carter","ALAND":1060590174,"oil_wells":21,"gas_wells":54},"arcs":[[-217,-126,254,-211,-185,-167]]},{"type":"Polygon","properties":{"COUNTYFP":"085","NAME":"Grayson","ALAND":1288701716,"oil_wells":13,"gas_wells":268},"arcs":[[-183,-201,-252,-30,-16,-157]]},{"type":"Polygon","properties":{"COUNTYFP":"175","NAME":"Morgan","ALAND":987115528,"oil_wells":65,"gas_wells":180},"arcs":[[-169,-187,-215,-208,-149,-76,-151]]},{"type":"Polygon","properties":{"COUNTYFP":"017","NAME":"Bourbon","ALAND":750369719,"oil_wells":0,"gas_wells":0},"arcs":[[-36,-224,255,-246,256,-171]]},{"type":"Polygon","properties":{"COUNTYFP":"239","NAME":"Woodford","ALAND":489062308,"oil_wells":0,"gas_wells":0},"arcs":[[-173,257,258,-238,-244,259]]},{"type":"Polygon","properties":{"COUNTYFP":"021","NAME":"Boyle","ALAND":467270953,"oil_wells":0,"gas_wells":0},"arcs":[[-178,-240,-122,260,261,-253]]},{"type":"Polygon","properties":{"COUNTYFP":"067","NAME":"Fayette","ALAND":734648557,"oil_wells":0,"gas_wells":0},"arcs":[[-172,-257,-248,-53,262,-258]]},{"type":"Polygon","properties":{"COUNTYFP":"047","NAME":"Christian","ALAND":1858332131,"oil_wells":782,"gas_wells":154},"arcs":[[-96,-232,-236,263,264,265]]},{"type":"Polygon","properties":{"COUNTYFP":"077","NAME":"Gallatin","ALAND":254698298,"oil_wells":0,"gas_wells":7},"arcs":[[266,267,-60,268,269]]},{"type":"Polygon","properties":{"COUNTYFP":"117","NAME":"Kenton","ALAND":415046493,"oil_wells":0,"gas_wells":0},"arcs":[[270,271,272,273,274]]},{"type":"Polygon","properties":{"COUNTYFP":"137","NAME":"Lincoln","ALAND":861773590,"oil_wells":75,"gas_wells":1},"arcs":[[-261,-121,-163,275,276]]},{"type":"Polygon","properties":{"COUNTYFP":"161","NAME":"Mason","ALAND":621929398,"oil_wells":0,"gas_wells":0},"arcs":[[277,278,-218,-114,279]]},{"type":"Polygon","properties":{"COUNTYFP":"191","NAME":"Pendleton","ALAND":717838676,"oil_wells":0,"gas_wells":0},"arcs":[[-273,280,281,282,-32,283]]},{"type":"Polygon","properties":{"COUNTYFP":"201","NAME":"Robertson","ALAND":258768335,"oil_wells":0,"gas_wells":0},"arcs":[[284,-280,-118,-223,-34]]},{"type":"Polygon","properties":{"COUNTYFP":"207","NAME":"Russell","ALAND":656969317,"oil_wells":378,"gas_wells":2},"arcs":[[285,286,287,-70,288,289]]},{"type":"Polygon","properties":{"COUNTYFP":"221","NAME":"Trigg","ALAND":1143307644,"oil_wells":1,"gas_wells":8},"arcs":[[290,-97,-266,291,292,293]]},{"type":"Polygon","properties":{"COUNTYFP":"009","NAME":"Barren","ALAND":1262728237,"oil_wells":849,"gas_wells":170},"arcs":[[294,-28,-251,295,296,-81]]},{"type":"Polygon","properties":{"COUNTYFP":"015","NAME":"Boone","ALAND":637462163,"oil_wells":0,"gas_wells":1},"arcs":[[-275,297,-267,298]]},{"type":"Polygon","properties":{"COUNTYFP":"091","NAME":"Hancock","ALAND":486020451,"oil_wells":337,"gas_wells":36},"arcs":[[299,-184,-155,-106]]},{"type":"Polygon","properties":{"COUNTYFP":"023","NAME":"Bracken","ALAND":532533652,"oil_wells":0,"gas_wells":0},"arcs":[[300,-278,-285,-33,-283]]},{"type":"Polygon","properties":{"COUNTYFP":"035","NAME":"Calloway","ALAND":997205960,"oil_wells":0,"gas_wells":1},"arcs":[[301,-293,302,-193]]},{"type":"Polygon","properties":{"COUNTYFP":"039","NAME":"Carlisle","ALAND":490632795,"oil_wells":0,"gas_wells":0},"arcs":[[-2,303,-190,304,305]]},{"type":"Polygon","properties":{"COUNTYFP":"045","NAME":"Casey","ALAND":1150557971,"oil_wells":104,"gas_wells":30},"arcs":[[-254,-262,-277,306,-287,307,-67]]},{"type":"Polygon","properties":{"COUNTYFP":"053","NAME":"Clinton","ALAND":510864239,"oil_wells":2085,"gas_wells":136},"arcs":[[308,-289,-73,309]]},{"type":"MultiPolygon","properties":{"COUNTYFP":"075","NAME":"Fulton","ALAND":533214585,"oil_wells":0,"gas_wells":0},"arcs":[[[310,311]],[[312]]]},{"type":"Polygon","properties":{"COUNTYFP":"103","NAME":"Henry","ALAND":741450365,"oil_wells":0,"gas_wells":0},"arcs":[[313,314,-64,315,316,317]]},{"type":"Polygon","properties":{"COUNTYFP":"113","NAME":"Jessamine","ALAND":445779168,"oil_wells":0,"gas_wells":0},"arcs":[[-259,-263,-52,-119,-239]]},{"type":"Polygon","properties":{"COUNTYFP":"129","NAME":"Lee","ALAND":540937708,"oil_wells":2868,"gas_wells":19},"arcs":[[-112,-227,-79,-85,-225,-130]]},{"type":"Polygon","properties":{"COUNTYFP":"143","NAME":"Lyon","ALAND":553844805,"oil_wells":0,"gas_wells":1},"arcs":[[-144,-102,-98,-291,318]]},{"type":"Polygon","properties":{"COUNTYFP":"149","NAME":"McLean","ALAND":653906347,"oil_wells":1376,"gas_wells":57},"arcs":[[-202,-108,-154,-233,-230,319]]},{"type":"Polygon","properties":{"COUNTYFP":"163","NAME":"Meade","ALAND":791043370,"oil_wells":16,"gas_wells":201},"arcs":[[-196,-181,320]]},{"type":"Polygon","properties":{"COUNTYFP":"173","NAME":"Montgomery","ALAND":511177493,"oil_wells":10,"gas_wells":5},"arcs":[[-8,-153,-226,-247,-256]]},{"type":"Polygon","properties":{"COUNTYFP":"185","NAME":"Oldham","ALAND":484912266,"oil_wells":0,"gas_wells":0},"arcs":[[321,-318,322,323,324]]},{"type":"Polygon","properties":{"COUNTYFP":"213","NAME":"Simpson","ALAND":606584287,"oil_wells":95,"gas_wells":8},"arcs":[[325,326,-84,327]]},{"type":"Polygon","properties":{"COUNTYFP":"215","NAME":"Spencer","ALAND":483493839,"oil_wells":0,"gas_wells":0},"arcs":[[328,329,-245,-220,-90]]},{"type":"Polygon","properties":{"COUNTYFP":"223","NAME":"Trimble","ALAND":392766407,"oil_wells":0,"gas_wells":0},"arcs":[[330,-314,-322,331]]},{"type":"Polygon","properties":{"COUNTYFP":"019","NAME":"Boyd","ALAND":414053933,"oil_wells":4,"gas_wells":278},"arcs":[[332,-212,-255,-125]]},{"type":"Polygon","properties":{"COUNTYFP":"087","NAME":"Green","ALAND":740837686,"oil_wells":975,"gas_wells":39},"arcs":[[-140,-69,333,334,-249]]},{"type":"Polygon","properties":{"COUNTYFP":"001","NAME":"Adair","ALAND":1049678317,"oil_wells":1115,"gas_wells":15},"arcs":[[-334,-68,-308,-286,335,336]]},{"type":"Polygon","properties":{"COUNTYFP":"041","NAME":"Carroll","ALAND":332993713,"oil_wells":0,"gas_wells":10},"arcs":[[-269,-59,-315,-331,337]]},{"type":"Polygon","properties":{"COUNTYFP":"057","NAME":"Cumberland","ALAND":790416941,"oil_wells":2092,"gas_wells":55},"arcs":[[-336,-290,-309,338,339,340]]},{"type":"Polygon","properties":{"COUNTYFP":"073","NAME":"Franklin","ALAND":538073041,"oil_wells":0,"gas_wells":0},"arcs":[[-316,-63,-174,-260,-243,341]]},{"type":"Polygon","properties":{"COUNTYFP":"105","NAME":"Hickman","ALAND":627487985,"oil_wells":0,"gas_wells":0},"arcs":[[-305,-195,342,-311,343]]},{"type":"Polygon","properties":{"COUNTYFP":"111","NAME":"Jefferson","ALAND":985312154,"oil_wells":0,"gas_wells":0},"arcs":[[344,-324,345,-329,-93,-198]]},{"type":"Polygon","properties":{"COUNTYFP":"141","NAME":"Logan","ALAND":1430014712,"oil_wells":89,"gas_wells":8},"arcs":[[-234,-19,346,-326,347,348]]},{"type":"Polygon","properties":{"COUNTYFP":"145","NAME":"McCracken","ALAND":644251034,"oil_wells":1,"gas_wells":0},"arcs":[[-146,349,-191,-304,-1,350]]},{"type":"Polygon","properties":{"COUNTYFP":"157","NAME":"Marshall","ALAND":780273148,"oil_wells":0,"gas_wells":0},"arcs":[[-350,-145,-319,-294,-302,-192]]},{"type":"Polygon","properties":{"COUNTYFP":"169","NAME":"Metcalfe","ALAND":750178426,"oil_wells":768,"gas_wells":194},"arcs":[[-250,-335,-337,-341,351,-296]]},{"type":"Polygon","properties":{"COUNTYFP":"171","NAME":"Monroe","ALAND":853073327,"oil_wells":469,"gas_wells":23},"arcs":[[-297,-352,-340,352,-82]]},{"type":"Polygon","properties":{"COUNTYFP":"199","NAME":"Pulaski","ALAND":1705273851,"oil_wells":78,"gas_wells":131},"arcs":[[-307,-276,-165,-209,-47,-71,-288]]},{"type":"Polygon","properties":{"COUNTYFP":"211","NAME":"Shelby","ALAND":983257095,"oil_wells":0,"gas_wells":3},"arcs":[[-317,-342,-242,-330,-346,-323]]},{"type":"Polygon","properties":{"COUNTYFP":"227","NAME":"Warren","ALAND":1402743723,"oil_wells":2057,"gas_wells":168},"arcs":[[-29,-295,-80,-327,-347,-18]]},{"type":"Polygon","properties":{"COUNTYFP":"233","NAME":"Webster","ALAND":859730052,"oil_wells":1028,"gas_wells":66},"arcs":[[353,-203,-320,-229,-94,-101]]},{"type":"Polygon","properties":{"COUNTYFP":"037","NAME":"Campbell","ALAND":391910592,"oil_wells":0,"gas_wells":0},"arcs":[[354,-281,-272]]},{"type":"Polygon","properties":{"COUNTYFP":"081","NAME":"Grant","ALAND":668126188,"oil_wells":0,"gas_wells":34},"arcs":[[-298,-274,-284,-31,-170,-61,-268]]},{"type":"Polygon","properties":{"COUNTYFP":"219","NAME":"Todd","ALAND":969942107,"oil_wells":86,"gas_wells":62},"arcs":[[-235,-349,355,-264]]},{"type":"Polygon","properties":{"COUNTYFP":"225","NAME":"Union","ALAND":887974711,"oil_wells":1388,"gas_wells":13},"arcs":[[-204,-354,-100,356]]}]}},"arcs":[[[816,2748],[155,-1023]],[[971,1725],[-228,-131],[-147,93]],[[596,1687],[-42,144],[-52,324],[187,539],[127,54]],[[7349,6397],[171,395]],[[7520,6792],[153,-51],[128,-362]],[[7801,6379],[169,-382],[11,-134]],[[7981,5863],[-104,-142],[-108,57],[-132,-111]],[[7637,5667],[-160,520],[-128,210]],[[7482,718],[127,435],[263,385],[-11,193]],[[7861,1731],[106,-65]],[[7967,1666],[26,-163]],[[7993,1503],[-15,-612],[53,-258]],[[8031,633],[-94,1],[-189,-243],[-20,-68],[-317,19]],[[7411,342],[-33,218],[104,158]],[[3498,2699],[129,461],[55,-115],[195,344]],[[3877,3389],[164,-123],[24,-156]],[[4065,3110],[92,-571]],[[4157,2539],[-90,-62],[-198,115],[-75,-695]],[[3794,1897],[-225,214],[-127,47]],[[3442,2158],[59,86],[-39,259],[36,196]],[[7394,2844],[210,370]],[[7604,3214],[193,-17],[147,-324]],[[7944,2873],[25,-85]],[[7969,2788],[-57,-258],[7,-449],[48,-415]],[[7861,1731],[-307,265],[-64,109]],[[7490,2105],[-129,452],[33,287]],[[4476,3164],[143,-454],[-10,-181]],[[4609,2529],[-23,-430],[-52,29]],[[4534,2128],[-139,162],[-83,-88],[-155,337]],[[4065,3110],[411,54]],[[6585,7532],[107,188]],[[6692,7720],[358,148]],[[7050,7868],[57,-105]],[[7107,7763],[0,-198],[79,-160]],[[7186,7405],[-122,-331]],[[7064,7074],[-235,-348],[-92,14]],[[6737,6740],[-42,442],[-110,350]],[[7199,1732],[175,80],[116,293]],[[7482,718],[-107,150],[-33,278],[-108,199],[-35,387]],[[7969,2788],[48,209],[97,96],[225,-612],[81,-314],[-22,-190]],[[8398,1977],[-102,-196],[-303,-278]],[[8478,1902],[107,298],[-27,133],[80,303]],[[8638,2636],[120,40],[118,236],[115,10]],[[8991,2922],[137,-89],[83,-195]],[[9211,2638],[-206,-287],[0,-235],[-194,-316]],[[8811,1800],[-92,155],[-241,-53]],[[6558,1396],[213,301],[77,48]],[[6848,1745],[80,-51]],[[6928,1694],[-69,-624],[56,-392],[106,-319]],[[7021,359],[-45,-1],[-682,42]],[[6294,400],[137,514],[125,283],[2,199]],[[6627,4802],[119,293]],[[6746,5095],[129,169]],[[6875,5264],[86,96],[67,-171],[186,-72]],[[7214,5117],[-21,-722],[8,-360]],[[7201,4035],[-144,-164]],[[7057,3871],[-195,61]],[[6862,3932],[-140,574],[-95,296]],[[5903,7924],[185,246]],[[6088,8170],[196,221]],[[6284,8391],[15,-385],[256,-549]],[[6555,7457],[-211,-456]],[[6344,7001],[-171,17]],[[6173,7018],[-13,224],[-196,342],[26,205],[-87,135]],[[5233,3671],[154,-16]],[[5387,3655],[146,20],[144,-191],[101,165],[127,-190]],[[5905,3459],[-76,-111],[-45,-279]],[[5784,3069],[-36,-142],[-161,-121],[-50,-182]],[[5537,2624],[-165,646],[-141,258],[2,143]],[[5917,1365],[301,524]],[[6218,1889],[87,-150],[120,87],[133,-430]],[[6294,400],[-9,1],[-250,46]],[[6035,447],[-60,298],[21,233],[-79,387]],[[7705,4602],[101,411]],[[7806,5013],[106,-15],[74,152]],[[7986,5150],[221,-310],[86,-253]],[[8293,4587],[18,-162]],[[8311,4425],[-224,79],[-53,-227],[-84,30]],[[7950,4307],[-245,295]],[[4149,1053],[315,596]],[[4464,1649],[146,-392],[104,-406]],[[4714,851],[5,-355]],[[4719,496],[-306,43],[-272,40]],[[4141,579],[8,474]],[[7875,3808],[75,499]],[[8311,4425],[176,-220],[41,70],[114,-383],[64,-95]],[[8706,3797],[-134,83],[-111,-257],[14,-197]],[[8475,3426],[-100,37],[-174,-132],[-97,-154],[-53,119],[-134,-136]],[[7917,3160],[-9,500],[-33,148]],[[5437,6118],[-54,-83],[-26,-398]],[[5357,5637],[-203,-592],[-125,-84]],[[5029,4961],[-105,176],[-49,329],[-110,201]],[[4765,5667],[81,162],[216,172],[205,-51],[170,168]],[[2309,3330],[-16,-109]],[[2293,3221],[51,-576],[124,-184]],[[2468,2461],[-70,-555]],[[2398,1906],[-189,-159]],[[2209,1747],[-129,405],[-89,405],[-70,19]],[[1921,2576],[57,219],[331,535]],[[1966,3805],[169,-95]],[[2135,3710],[6,-270],[108,46],[60,-156]],[[1921,2576],[-129,-122]],[[1792,2454],[-34,474],[-184,497]],[[1574,3425],[101,181],[264,77],[27,122]],[[2966,5289],[45,-76],[261,-289],[49,395],[72,89]],[[3393,5408],[112,-182],[101,-341],[-8,-203]],[[3598,4682],[8,-241],[-173,-164],[-118,-263]],[[3315,4014],[-295,231],[-193,233]],[[2827,4478],[19,152],[137,138],[-44,221],[27,300]],[[7214,5117],[104,-58]],[[7318,5059],[164,-323],[129,32],[76,-167]],[[7687,4601],[-135,-201],[-107,-453]],[[7445,3947],[-79,145],[-165,-57]],[[7412,7529],[94,-135],[286,260]],[[7792,7654],[83,-359],[167,-183]],[[8042,7112],[-62,-122],[-11,-287],[-168,-324]],[[7520,6792],[17,76],[-190,461]],[[7347,7329],[65,200]],[[6375,4975],[213,-250],[39,77]],[[6862,3932],[-35,-250],[-96,50]],[[6731,3732],[-279,560]],[[6452,4292],[-114,297]],[[6338,4589],[56,46],[-19,340]],[[8598,8410],[180,117],[62,-609],[41,-93],[120,-49],[78,-196]],[[9079,7580],[-136,-272],[-64,-225]],[[8879,7083],[-198,76],[-111,268],[-151,147]],[[8419,7574],[126,343],[53,493]],[[8398,1977],[80,-75]],[[8811,1800],[-12,-305],[-121,-134],[-135,-12],[-161,-434],[-351,-282]],[[7445,3947],[26,-95]],[[7471,3852],[133,-638]],[[7394,2844],[-148,72],[-108,189]],[[7138,3105],[12,142],[-98,486],[5,138]],[[8706,3797],[31,-63]],[[8737,3734],[124,-74],[90,-156],[19,-411],[50,-119]],[[9020,2974],[-29,-52]],[[8638,2636],[-167,275],[4,515]],[[5105,4661],[142,-355],[-68,-346],[136,30]],[[5315,3990],[72,-335]],[[5233,3671],[-98,-181]],[[5135,3490],[-310,69]],[[4825,3559],[22,389],[96,296],[88,123],[74,294]],[[1301,2182],[99,-28],[87,319],[-120,497],[52,388],[81,139],[74,-72]],[[1792,2454],[-50,-248],[-12,-376]],[[1730,1830],[-161,309],[-159,-156]],[[1410,1983],[-109,199]],[[8632,5140],[72,-243],[13,-296]],[[8717,4601],[47,-290],[10,-471],[-37,-106]],[[8293,4587],[-11,205],[239,466],[111,-118]],[[7981,5863],[85,-63]],[[8066,5800],[-13,-345],[-67,-305]],[[7806,5013],[-181,351]],[[7625,5364],[12,303]],[[3234,3468],[-5,245],[86,301]],[[3598,4682],[243,-286]],[[3841,4396],[61,-368]],[[3902,4028],[-91,-85],[66,-554]],[[3498,2699],[-110,216],[-4,178],[-150,375]],[[7944,2873],[-27,287]],[[9020,2974],[50,82],[111,526],[-46,218],[33,521],[46,161]],[[9214,4482],[142,-61],[162,273]],[[9518,4694],[48,-207],[145,-214],[85,-289],[203,-56],[-457,-914],[-48,-108],[-267,-243],[-16,-25]],[[6657,3139],[74,593]],[[7138,3105],[-153,-305],[-46,-330]],[[6939,2470],[-282,669]],[[8042,7112],[47,55],[100,-290]],[[8189,6877],[54,-416],[73,-63]],[[8316,6398],[-25,-291]],[[8291,6107],[-225,-307]],[[6555,7457],[30,75]],[[6737,6740],[53,-284]],[[6790,6456],[-294,-345]],[[6496,6111],[-40,238],[-92,60]],[[6364,6409],[-20,592]],[[5472,4655],[124,335],[204,296]],[[5800,5286],[162,-24]],[[5962,5262],[39,-138],[-32,-664]],[[5969,4460],[-7,-180]],[[5962,4280],[-299,-1],[-154,161],[-37,215]],[[3820,5077],[159,281],[12,419],[45,67]],[[4036,5844],[327,-637],[121,-294]],[[4484,4913],[-163,-775]],[[4321,4138],[-227,-66],[-74,174],[-118,-218]],[[3841,4396],[-51,494],[30,187]],[[8316,6398],[107,276],[153,-272],[162,-70]],[[8738,6332],[47,-238],[-176,-396]],[[8609,5698],[-164,-26],[-159,222],[5,213]],[[8717,4601],[64,-29],[170,180],[161,-136]],[[9112,4616],[102,-134]],[[975,1042],[0,655]],[[975,1697],[434,-18]],[[1409,1679],[-2,-723]],[[1407,956],[-5,-941]],[[1402,15],[-36,1],[-396,6]],[[970,22],[5,1020]],[[4484,4913],[190,74],[41,216],[-30,468]],[[4685,5671],[67,27]],[[4752,5698],[13,-31]],[[5029,4961],[76,-300]],[[4825,3559],[-204,37]],[[4621,3596],[-88,442],[-212,100]],[[2827,4478],[-115,-137]],[[2712,4341],[-315,-34]],[[2397,4307],[-57,479],[-56,11],[-141,504]],[[2143,5301],[127,-95],[171,78],[38,-257],[75,11],[84,352],[132,59],[196,-160]],[[8653,5536],[65,132],[142,-118],[126,-194],[163,-140]],[[9149,5216],[-77,-103],[40,-497]],[[8632,5140],[57,203],[-36,193]],[[6848,1745],[91,725]],[[7199,1732],[-271,-38]],[[8738,6332],[93,57],[79,203]],[[8910,6592],[210,87],[40,-74]],[[9160,6605],[-43,-409],[113,-257],[71,-473]],[[9301,5466],[-110,32],[-42,-282]],[[8653,5536],[-44,162]],[[7787,8076],[25,160],[140,89],[334,-320],[164,26],[148,379]],[[8419,7574],[-93,-292],[8,-329],[-145,-76]],[[7792,7654],[-5,422]],[[9301,5466],[109,-339],[108,-433]],[[5357,5637],[118,-192],[306,120]],[[5781,5565],[19,-279]],[[5472,4655],[-64,-169],[-93,-496]],[[7186,7405],[161,-76]],[[7349,6397],[-154,252],[-131,425]],[[7471,3852],[73,-116],[115,27],[113,161],[103,-116]],[[7365,5410],[115,-97],[145,51]],[[7705,4602],[-18,-1]],[[7318,5059],[47,351]],[[2293,3221],[290,420],[125,95],[163,313]],[[2871,4049],[31,-548],[73,-125]],[[2975,3376],[-120,-514],[99,-221],[-29,-150]],[[2925,2491],[-247,-196],[-210,166]],[[2975,3376],[114,-36],[145,128]],[[3442,2158],[-147,-30]],[[3295,2128],[-260,-77],[-12,120]],[[3023,2171],[-98,320]],[[5962,5262],[128,237],[180,60]],[[6270,5559],[-6,-262],[120,-146]],[[6384,5151],[-9,-176]],[[6338,4589],[-369,-129]],[[7411,342],[-74,7],[-316,10]],[[5868,5812],[103,347]],[[5971,6159],[152,-134],[57,88]],[[6180,6113],[90,-554]],[[5781,5565],[87,247]],[[6942,5924],[272,182]],[[7214,6106],[151,-696]],[[6875,5264],[20,411],[47,249]],[[5135,3490],[-52,-453],[14,-451]],[[5097,2586],[-76,-47]],[[5021,2539],[-214,-81],[-198,71]],[[4476,3164],[110,47],[35,385]],[[5962,4280],[-13,-325]],[[5949,3955],[-6,-476],[-38,-20]],[[8879,7083],[60,-43],[-29,-448]],[[7349,6397],[-135,-291]],[[6942,5924],[-122,167],[32,252],[-62,113]],[[6496,6111],[-46,-425]],[[6450,5686],[-66,-535]],[[6180,6113],[0,92],[184,204]],[[6452,4292],[-249,-327]],[[6203,3965],[-67,-59],[-187,49]],[[6746,5095],[-58,351],[-238,240]],[[3023,2171],[-101,-1626]],[[2922,545],[-402,-13],[-70,-4]],[[2450,528],[27,449],[18,794],[-97,135]],[[6273,8906],[177,-301]],[[6450,8605],[-159,-46],[-7,-168]],[[6088,8170],[-117,377]],[[5971,8547],[171,120],[108,-4],[23,243]],[[6498,9726],[155,78]],[[6653,9804],[43,-342],[61,-89],[-48,-486],[60,-171]],[[6769,8716],[-151,-56]],[[6618,8660],[-110,39]],[[6508,8699],[24,292],[-34,735]],[[6657,3139],[-70,101],[-217,-443]],[[6370,2797],[-3,459],[-168,254],[4,455]],[[7331,7912],[116,659]],[[7447,8571],[262,-485],[78,-10]],[[7412,7529],[-81,383]],[[6769,8716],[245,257]],[[7014,8973],[2,-179]],[[7016,8794],[34,-926]],[[6692,7720],[-74,940]],[[7107,7763],[93,156],[131,-7]],[[5696,1615],[35,271],[214,714]],[[5945,2600],[117,-316],[70,53]],[[6132,2337],[-6,-261],[92,-187]],[[5917,1365],[-71,-119],[-128,103]],[[5718,1349],[-22,266]],[[1839,1397],[370,350]],[[2450,528],[-210,-14],[5,115],[-291,54]],[[1954,683],[-53,260]],[[1901,943],[-62,454]],[[4464,1649],[70,479]],[[5021,2539],[-16,-227],[22,-1012]],[[5027,1300],[-89,-75],[-224,-374]],[[6508,8699],[-58,-94]],[[6273,8906],[-101,166],[47,215],[-56,275],[76,282],[87,155],[172,-273]],[[3393,5408],[79,25],[137,234],[84,-324],[140,-68],[-13,-198]],[[7016,8794],[23,-82],[212,-129],[196,-12]],[[1407,956],[494,-13]],[[1954,683],[50,-518],[-27,-165],[-575,15]],[[971,1725],[4,-28]],[[975,1042],[-335,-2],[-74,48]],[[566,1088],[-19,234],[49,365]],[[6370,2797],[-238,-460]],[[5945,2600],[-18,268],[-143,201]],[[5612,486],[106,863]],[[6035,447],[-397,41],[-26,-2]],[[498,579],[195,-220],[162,-57],[91,-280]],[[946,22],[-674,1],[-94,-16],[69,476],[50,27],[132,-237],[69,306]],[[89,2],[-71,1],[-18,299],[89,-20],[0,-280]],[[5588,7531],[192,350]],[[5780,7881],[123,43]],[[6173,7018],[-168,-80]],[[6005,6938],[-376,85]],[[5629,7023],[-83,383],[42,125]],[[1839,1397],[-109,433]],[[2871,4049],[-118,90],[-41,202]],[[4036,5844],[40,285],[166,30],[6,196],[77,-163],[7,-305],[116,-173],[237,-43]],[[5431,7649],[157,-118]],[[5629,7023],[-55,-181],[-189,-94]],[[5385,6748],[-224,359]],[[5161,7107],[66,265],[117,66],[87,211]],[[3677,573],[16,295],[80,442],[104,147]],[[3877,1457],[38,-200],[241,-87],[-7,-117]],[[4141,579],[-201,-64],[-34,71],[-229,-13]],[[5437,6118],[6,110]],[[5443,6228],[425,-416]],[[5563,8449],[217,-568]],[[5431,7649],[6,235],[-31,464],[157,101]],[[9079,7580],[95,-317],[29,-400],[-43,-258]],[[5537,2624],[-230,-313]],[[5307,2311],[-139,59],[-71,216]],[[5696,1615],[-290,49]],[[5406,1664],[-68,263],[-31,384]],[[5563,8449],[114,-16],[59,-154],[90,43],[145,225]],[[5612,486],[-185,-28]],[[5427,458],[-84,434],[-127,319]],[[5216,1211],[161,286],[29,167]],[[5971,6159],[34,779]],[[970,22],[-14,0],[-10,0]],[[498,579],[-32,247],[100,262]],[[4752,5698],[55,299],[9,355],[142,409],[70,-73],[112,218],[21,201]],[[5385,6748],[83,-81],[-25,-439]],[[3794,1897],[83,-440]],[[3677,573],[-392,-22]],[[3285,551],[10,1577]],[[1410,1983],[-1,-304]],[[816,2748],[7,5],[162,-143],[97,-169],[159,-118],[60,-141]],[[5216,1211],[-189,89]],[[5427,458],[-465,13],[-243,25]],[[2135,3710],[262,597]],[[6653,9804],[245,-275],[116,-556]],[[3285,551],[-71,-3],[-292,-3]],[[1966,3805],[-95,260],[-33,341],[125,279],[47,229],[110,-90],[50,122],[-27,355]]],"transform":{"scale":[0.000758535853585358,0.000264986498649865],"translate":[-89.5526,36.4971]}} -------------------------------------------------------------------------------- /graphics/array-of-objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/graphics/array-of-objects.png -------------------------------------------------------------------------------- /graphics/oil-gas-wells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/graphics/oil-gas-wells.png -------------------------------------------------------------------------------- /graphics/wells.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maptimelex/d3-mapping/f2ab187883ac7bde7f6b958bcc3029fe5a7d1082/graphics/wells.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | maptimeLEX - D3 Mapping 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 63 | 64 | 65 |
66 |
67 |
68 |

Introduction to D3.js Web Mapping Through 7 Simple Maps

69 |

Listed below are the seven example maps from Rich Donohue's introductory lesson on D3.js, presented at the June meetup of maptimeLEX. You can follow along with the presentation on GitHub to create the maps listed below.

70 | 100 |
101 |
102 | 103 |
104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | --------------------------------------------------------------------------------