Skip to content

Instantly share code, notes, and snippets.

@almccon
Created September 2, 2017 00:46
Show Gist options
  • Save almccon/b3cbb0ea8910bee4cd2869ae3beaba7c to your computer and use it in GitHub Desktop.
Save almccon/b3cbb0ea8910bee4cd2869ae3beaba7c to your computer and use it in GitHub Desktop.
Municipalities of Mexico II
border: no
height: 600
license: gpl-3.0
.DS_Store
build
node_modules
<!DOCTYPE html>
<svg width="960" height="600" fill="none" stroke="#333">
<path id="municipalities" stroke-width="0.2"></path>
<path id="states"></path>
</svg>
<script src="https://unpkg.com/d3-array@1"></script>
<script src="https://unpkg.com/d3-collection@1"></script>
<script src="https://unpkg.com/d3-dispatch@1"></script>
<script src="https://unpkg.com/d3-request@1"></script>
<script src="https://unpkg.com/d3-selection@1"></script>
<script src="https://unpkg.com/d3-geo@1"></script>
<script src="https://unpkg.com/topojson-client@3"></script>
<script>
var projection = d3.geoMercator(),
path = d3.geoPath(projection);
d3.json("mx.json", function(error, mx) {
if (error) throw error;
var states = topojson.feature(mx, mx.objects.states),
municipalities = topojson.feature(mx, mx.objects.municipalities);
projection.fitSize([960, 600], states);
d3.select("#municipalities")
.datum(municipalities)
.attr("d", path);
d3.select("#states")
.datum(states)
.attr("d", path);
});
</script>
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{
"scripts": {
"prepublish": "bash prepublish"
},
"devDependencies": {
"d3-geo": "^1.6.4",
"ndjson-cli": "^0.3.1",
"shapefile": "^0.6.5",
"topojson-client": "^3.0.0",
"topojson-server": "^3.0.0",
"topojson-simplify": "^3.0.2"
}
}
#!/bin/bash
mkdir -p build
# Download.
curl -z build/estados.zip -o build/estados.zip http://mapserver.inegi.org.mx/MGN/mge2010v5_0.zip
curl -z build/municipios.zip -o build/municipios.zip http://mapserver.inegi.org.mx/MGN/mgm2010v5_0.zip
# Decompress.
unzip -od build build/estados.zip
unzip -od build build/municipios.zip
# Reproject to WGS84.
ogr2ogr build/states.shp build/Entidades_2010_5.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"
ogr2ogr build/municipalities.shp build/Municipios_2010_5.shp -t_srs "+proj=longlat +ellps=WGS84 +no_defs +towgs84=0,0,0"
# shp2json - convert shapefiles to GeoJSON.
# ndjson-map - map property names and coerce numeric properties.
# geo2topo - convert GeoJSON to TopoJSON.
# toposimplify - simplify TopoJSON.
# topoquantize - quantize TopoJSON.
geo2topo -n \
states=<(shp2json -n build/states.shp \
| ndjson-map 'd.properties = {state_code: +d.properties.CVE_ENT, state_name: d.properties.NOM_ENT}, d') \
municipalities=<(shp2json -n build/municipalities.shp \
| ndjson-map 'd.properties = {state_code: +d.properties.CVE_ENT, mun_code: +d.properties.CVE_MUN, mun_name: d.properties.NOM_MUN}, d') \
| toposimplify -s 1e-7 \
| topoquantize 1e5 \
> mx.json
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment