Skip to content

Instantly share code, notes, and snippets.

@pbogden
Last active March 11, 2017 21:35
Show Gist options
  • Save pbogden/46face2bb2a465bbfd8c to your computer and use it in GitHub Desktop.
Save pbogden/46face2bb2a465bbfd8c to your computer and use it in GitHub Desktop.
counties1

Counties using Mike Bostock's most excellent us-atlas.

Small difference: "make counties.json" will preserve properties.STATE & properties.COUNTY

Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
<!DOCTYPE html>
<meta charset="utf-8">
<title>counties1</title>
<style>
body {
font: 20px sans-serif;
}
path {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
#info {
position: absolute;
top: 20px;
left: 600px;
}
</style>
<body>
<div id="info"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/1.6.19/topojson.min.js"></script>
<script>
var width = 960, height = 500;
var path = d3.geo.path();
var info = d3.select("body").append("div")
.attr("id", "info");
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("counties.json", function(error, data) {
if (error) throw error;
features = topojson.feature(data, data.objects.counties).features;
svg.selectAll("path")
.data(features)
.enter()
.append("path")
.attr("d", path)
.on("mouseover", function(d) { var p = d.properties; info.html(p.COUNTY + ", " + p.STATE + "<br>FIPS: " + d.id) });
});
</script>
# Create counties.json preserving county name & state 2-character ID
all: counties.json
# Use Mike Bostock's most excellent us-atlas (rest of the makefile is equivalent)
counties.json.orig:
cd ../us-atlas; make topo/us-counties-10m-ungrouped.json
cp ../us-atlas/topo/us-counties-10m-ungrouped.json counties.json.orig
gz/countyp010_nt00795.tar.gz:
curl 'http://dds.cr.usgs.gov/pub/data/nationalatlas/$(notdir $@)' -o $@
shp/us/counties-unfiltered.shp: gz/countyp010_nt00795.tar.gz
rm -rf $(basename $@)
mkdir -p $(basename $@)
tar -xzm -C $(basename $@) -f $<
for file in $(basename $@)/*; do chmod 644 $$file; mv $$file $(basename $@).$${file##*.}; done
rmdir $(basename $@)
# remove water counties (e.g., Great Lakes)
shp/us/counties.shp: shp/us/counties-unfiltered.shp
rm -f $@
ogr2ogr -f 'ESRI Shapefile' -where "FIPS NOT LIKE '%000'" $@ $<
counties.json: shp/us/counties.shp
mkdir -p $(dir $@)
topojson \
-o $@ \
--no-pre-quantization \
--post-quantization=1e6 \
--simplify=7e-7 \
-p STATE,COUNTY \
--id-property=+FIPS \
-- $<
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment