Skip to content

Instantly share code, notes, and snippets.

@marijer
Last active November 15, 2015 19:42
Show Gist options
  • Save marijer/72aa21677495e6b71e12 to your computer and use it in GitHub Desktop.
Save marijer/72aa21677495e6b71e12 to your computer and use it in GitHub Desktop.
Module 3 - Netherlands
  1. downloaded the shp files from http://www.cbs.nl/nl-NL/menu/themas/dossiers/nederland-regionaal/publicaties/geografische-data/archief/2015/wijk-en-buurtkaart-2014-art.htm

  2. Worked on the command line with ogr2ogr*:

  • ogr2ogr -f "ESRI Shapefile" source_maps/wgs84.shp source_maps/shape-2014-versie-1.0/gem_2014.shp -s_srs EPSG:28992 -t_srs EPSG:4326

  • ogr2ogr -f "GeoJSON" -lco COORDINATE_PRECISION=6 source_maps/wgs84.geojson source_maps/wgs84.shp

  1. Simplified it to ~1% in mapshaper.org

  2. retrieved province data from http://www.cbs.nl/nl-NL/menu/methoden/classificaties/overzicht/gemeentelijke-indeling/2015/default.htm

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Netherlands</title>
<script src="//d3js.org/d3.v3.min.js" charset="utf-8"></script>
<link rel="stylesheet" type="text/css" href="main.css" />
</head>
<body>
<div class="content-wrapper">
<h1>The twelve provinces of the Netherlands</h1>
<div id="country-hook"></div>
</div>
<div id="tooltip" class="none"></div>
<script type="text/javascript" src="main.js"></script>
</body>
</html>
html, body {
margin: 0;
padding: 0;
}
* { outline: none; }
body {
font-family: Helvetiva, Arial;
background: #EFEFEF;
}
h1, h2, h3 {
font-family: "Helvetica Neue";
}
h1 {
margin: 0 0 1em;
padding: 0;
font-weight: 400;
}
.none { display: none; }
.content-wrapper {
max-width: 960px;
min-width: 360px;
margin: 0 auto;
border-left: 1px solid #D7D9E2;
border-right: 1px solid #D7D9E2;
padding: 20px;
background: #FFF;
min-height: 100vh;
height: 100%;
}
/* TOOLTIP */
#tooltip {
position: absolute;
padding: 8px 20px;
background: #FFF;
border-radius: 4px;
box-shadow: 1px 1px 1px #CCC;
border: 1px solid #CCC;
pointer-events: none;
}
.tooltip-label {
font-size: 1.1em;
padding-bottom: .4em;
}
/* SVG */
path {
stroke-width: .2px;
opacity: 1;
cursor: pointer;
transition: opacity .2s ease;
}
.gemeente.fadeout {
opacity: 0.3;
stroke-opacity: 0.3;
}
.gemeente.hover{
opacity: 1;
}
var width = 960,
height = 500;
var mapsource = "wgs84_edited.json";
var gemeentesource = "w_Gemeentenalfabetischperprovincie2015.csv";
var projection = d3.geo.mercator().scale(1).translate([0,0]).precision(0);
var path = d3.geo.path().projection(projection);
var c20 = d3.scale.category20();
var svg = d3.select('#country-hook')
.append('svg')
.attr('width', width)
.attr('height', height);
var gemeentedata;
function initMap(){
d3.json(mapsource, function(geo_data){
var bounds = path.bounds(geo_data);
var scale = .95 / Math.max((bounds[1][0] - bounds[0][0]) / width,
(bounds[1][1] - bounds[0][1]) / height);
var transl = [(width - scale * (bounds[1][0] + bounds[0][0])) / 2,
(height - scale * (bounds[1][1] + bounds[0][1])) / 2];
projection.scale(scale).translate(transl);
var mergedData = mergeGeoData(geo_data.features, gemeentedata);
svg.selectAll('path')
.data(mergedData)
.enter()
.append('path')
.filter(function(d) {
return d.properties.WATER !== 'JA';
})
.attr({
d: path,
fill: function(d) { return c20(d.properties.provincie); },
stroke: function(d) { return c20(d.properties.provincie); },
class: function(d) { return 'gemeente ' + d.properties.provincie; }
})
.on('mouseover', function(d) {
var provincie = d.properties.provincie;
showTooltip(provincie);
d3.selectAll('.gemeente')
.classed('fadeout', true);
d3.selectAll('.' + provincie)
.classed('hover', true);
})
.on('mouseout', function(d) {
var provincie = d.properties.provincie;
d3.selectAll('.' + provincie)
.classed('hover', false);
d3.selectAll('.gemeente')
.classed('fadeout', false);
hideTooltip();
})
})
}
function mergeGeoData(data, dataset2) {
var dataset = data;
for( var i = 0, l = dataset.length; i < l; i++) {
var gemeenteCode = dataset[i].properties.GM_CODE.split("GM")[1]; //GM_CODE: "GM0003"
for (var j = 0, jlen = dataset2.length; j < jlen; j++ ) {
var jsonGemeente = dataset2[j].Gemcode; //Gemcode: "0003"
if (gemeenteCode === jsonGemeente) {
dataset[i].properties.provincie = dataset2[j].provcodel;
break;
}
}
}
return dataset;
}
function getTooltipContent(title) {
var html = '<div class="tooltip-label">' + title + '</h1>';
return html;
}
function showTooltip(title){
//Get this bar's x/y values, then augment for the tooltip
var xPosition = (d3.event.pageX),
yPosition = (d3.event.pageY - 28);
var content = getTooltipContent(title);
d3.select("#tooltip")
.style("left", xPosition + "px")
.style("top", yPosition + "px")
.html(content);
d3.select("#tooltip").classed("none", false);
}
function hideTooltip() {
d3.select("#tooltip").classed("none", true);
}
function initGemeentedata() {
d3.csv(gemeentesource, function(data) {
gemeentedata = data;
initMap();
})
}
initGemeentedata();
Gemcode Gemcodel provcode provcodel
0003 Appingedam 20 Groningen
0005 Bedum 20 Groningen
0007 Bellingwedde 20 Groningen
0009 Ten Boer 20 Groningen
0010 Delfzijl 20 Groningen
1651 Eemsmond 20 Groningen
0014 Groningen 20 Groningen
0015 Grootegast 20 Groningen
0017 Haren 20 Groningen
0018 Hoogezand-Sappemeer 20 Groningen
0022 Leek 20 Groningen
0024 Loppersum 20 Groningen
1663 De Marne 20 Groningen
0025 Marum 20 Groningen
1987 Menterwolde 20 Groningen
1895 Oldambt 20 Groningen
0765 Pekela 20 Groningen
0040 Slochteren 20 Groningen
0037 Stadskanaal 20 Groningen
0047 Veendam 20 Groningen
0048 Vlagtwedde 20 Groningen
0053 Winsum 20 Groningen
0056 Zuidhorn 20 Groningen
0059 Achtkarspelen 21 Friesland
0060 Ameland 21 Friesland
0063 het Bildt 21 Friesland
1891 Dantumadiel 21 Friesland
1921 De Friese Meren 21 Friesland
0058 Dongeradeel 21 Friesland
1722 Ferwerderadiel 21 Friesland
0070 Franekeradeel 21 Friesland
0072 Harlingen 21 Friesland
0074 Heerenveen 21 Friesland
0079 Kollumerland en Nieuwkruisland 21 Friesland
0080 Leeuwarden 21 Friesland
0081 Leeuwarderadeel 21 Friesland
0140 Littenseradiel 21 Friesland
1908 Menameradiel 21 Friesland
0085 Ooststellingwerf 21 Friesland
0086 Opsterland 21 Friesland
0088 Schiermonnikoog 21 Friesland
0090 Smallingerland 21 Friesland
1900 Súdwest-Fryslân 21 Friesland
0093 Terschelling 21 Friesland
0737 Tytsjerksteradiel 21 Friesland
0096 Vlieland 21 Friesland
0098 Weststellingwerf 21 Friesland
1680 Aa en Hunze 22 Drenthe
0106 Assen 22 Drenthe
1681 Borger-Odoorn 22 Drenthe
0109 Coevorden 22 Drenthe
0114 Emmen 22 Drenthe
0118 Hoogeveen 22 Drenthe
0119 Meppel 22 Drenthe
1731 Midden-Drenthe 22 Drenthe
1699 Noordenveld 22 Drenthe
1730 Tynaarlo 22 Drenthe
1701 Westerveld 22 Drenthe
1690 De Wolden 22 Drenthe
0141 Almelo 23 Overijssel
0147 Borne 23 Overijssel
0148 Dalfsen 23 Overijssel
0150 Deventer 23 Overijssel
1774 Dinkelland 23 Overijssel
0153 Enschede 23 Overijssel
0158 Haaksbergen 23 Overijssel
0160 Hardenberg 23 Overijssel
0163 Hellendoorn 23 Overijssel
0164 Hengelo 23 Overijssel
1735 Hof van Twente 23 Overijssel
0166 Kampen 23 Overijssel
0168 Losser 23 Overijssel
0173 Oldenzaal 23 Overijssel
1773 Olst-Wijhe 23 Overijssel
0175 Ommen 23 Overijssel
0177 Raalte 23 Overijssel
1742 Rijssen-Holten 23 Overijssel
0180 Staphorst 23 Overijssel
1708 Steenwijkerland 23 Overijssel
0183 Tubbergen 23 Overijssel
1700 Twenterand 23 Overijssel
0189 Wierden 23 Overijssel
1896 Zwartewaterland 23 Overijssel
0193 Zwolle 23 Overijssel
0034 Almere 24 Flevoland
0303 Dronten 24 Flevoland
0995 Lelystad 24 Flevoland
0171 Noordoostpolder 24 Flevoland
0184 Urk 24 Flevoland
0050 Zeewolde 24 Flevoland
0197 Aalten 25 Gelderland
0200 Apeldoorn 25 Gelderland
0202 Arnhem 25 Gelderland
0203 Barneveld 25 Gelderland
1859 Berkelland 25 Gelderland
0209 Beuningen 25 Gelderland
1876 Bronckhorst 25 Gelderland
0213 Brummen 25 Gelderland
0214 Buren 25 Gelderland
0216 Culemborg 25 Gelderland
0221 Doesburg 25 Gelderland
0222 Doetinchem 25 Gelderland
0225 Druten 25 Gelderland
0226 Duiven 25 Gelderland
0228 Ede 25 Gelderland
0230 Elburg 25 Gelderland
0232 Epe 25 Gelderland
0233 Ermelo 25 Gelderland
0236 Geldermalsen 25 Gelderland
0241 Groesbeek 25 Gelderland
0243 Harderwijk 25 Gelderland
0244 Hattem 25 Gelderland
0246 Heerde 25 Gelderland
0252 Heumen 25 Gelderland
0733 Lingewaal 25 Gelderland
1705 Lingewaard 25 Gelderland
0262 Lochem 25 Gelderland
0263 Maasdriel 25 Gelderland
0265 Millingen aan de Rijn 25 Gelderland
1955 Montferland 25 Gelderland
1740 Neder-Betuwe 25 Gelderland
0304 Neerijnen 25 Gelderland
0267 Nijkerk 25 Gelderland
0268 Nijmegen 25 Gelderland
0302 Nunspeet 25 Gelderland
0269 Oldebroek 25 Gelderland
1586 Oost Gelre 25 Gelderland
1509 Oude IJsselstreek 25 Gelderland
1734 Overbetuwe 25 Gelderland
0273 Putten 25 Gelderland
0274 Renkum 25 Gelderland
0275 Rheden 25 Gelderland
0196 Rijnwaarden 25 Gelderland
0277 Rozendaal 25 Gelderland
0279 Scherpenzeel 25 Gelderland
0281 Tiel 25 Gelderland
0282 Ubbergen 25 Gelderland
0285 Voorst 25 Gelderland
0289 Wageningen 25 Gelderland
0668 West Maas en Waal 25 Gelderland
0293 Westervoort 25 Gelderland
0296 Wijchen 25 Gelderland
0294 Winterswijk 25 Gelderland
0297 Zaltbommel 25 Gelderland
0299 Zevenaar 25 Gelderland
0301 Zutphen 25 Gelderland
0307 Amersfoort 26 Utrecht
0308 Baarn 26 Utrecht
0310 De Bilt 26 Utrecht
0312 Bunnik 26 Utrecht
0313 Bunschoten 26 Utrecht
0317 Eemnes 26 Utrecht
0321 Houten 26 Utrecht
0353 IJsselstein 26 Utrecht
0327 Leusden 26 Utrecht
0331 Lopik 26 Utrecht
0335 Montfoort 26 Utrecht
0356 Nieuwegein 26 Utrecht
0589 Oudewater 26 Utrecht
0339 Renswoude 26 Utrecht
0340 Rhenen 26 Utrecht
0736 De Ronde Venen 26 Utrecht
0342 Soest 26 Utrecht
1904 Stichtse Vecht 26 Utrecht
0344 Utrecht 26 Utrecht
1581 Utrechtse Heuvelrug 26 Utrecht
0345 Veenendaal 26 Utrecht
0620 Vianen 26 Utrecht
0352 Wijk bij Duurstede 26 Utrecht
0632 Woerden 26 Utrecht
0351 Woudenberg 26 Utrecht
0355 Zeist 26 Utrecht
0358 Aalsmeer 27 Noord-Holland
0361 Alkmaar 27 Noord-Holland
0362 Amstelveen 27 Noord-Holland
0363 Amsterdam 27 Noord-Holland
0370 Beemster 27 Noord-Holland
0373 Bergen (NH.) 27 Noord-Holland
0375 Beverwijk 27 Noord-Holland
0376 Blaricum 27 Noord-Holland
0377 Bloemendaal 27 Noord-Holland
0381 Bussum 27 Noord-Holland
0383 Castricum 27 Noord-Holland
0384 Diemen 27 Noord-Holland
0498 Drechterland 27 Noord-Holland
0385 Edam-Volendam 27 Noord-Holland
0388 Enkhuizen 27 Noord-Holland
0365 Graft-De Rijp 27 Noord-Holland
0392 Haarlem 27 Noord-Holland
0393 Haarlemmerliede en Spaarnwoude 27 Noord-Holland
0394 Haarlemmermeer 27 Noord-Holland
0396 Heemskerk 27 Noord-Holland
0397 Heemstede 27 Noord-Holland
0398 Heerhugowaard 27 Noord-Holland
0399 Heiloo 27 Noord-Holland
0400 Den Helder 27 Noord-Holland
0402 Hilversum 27 Noord-Holland
1911 Hollands Kroon 27 Noord-Holland
0405 Hoorn 27 Noord-Holland
0406 Huizen 27 Noord-Holland
1598 Koggenland 27 Noord-Holland
0415 Landsmeer 27 Noord-Holland
0416 Langedijk 27 Noord-Holland
0417 Laren 27 Noord-Holland
0420 Medemblik 27 Noord-Holland
0424 Muiden 27 Noord-Holland
0425 Naarden 27 Noord-Holland
0431 Oostzaan 27 Noord-Holland
0432 Opmeer 27 Noord-Holland
0437 Ouder-Amstel 27 Noord-Holland
0439 Purmerend 27 Noord-Holland
0441 Schagen 27 Noord-Holland
0458 Schermer 27 Noord-Holland
0532 Stede Broec 27 Noord-Holland
0448 Texel 27 Noord-Holland
0450 Uitgeest 27 Noord-Holland
0451 Uithoorn 27 Noord-Holland
0453 Velsen 27 Noord-Holland
0852 Waterland 27 Noord-Holland
0457 Weesp 27 Noord-Holland
1696 Wijdemeren 27 Noord-Holland
0880 Wormerland 27 Noord-Holland
0479 Zaanstad 27 Noord-Holland
0473 Zandvoort 27 Noord-Holland
0478 Zeevang 27 Noord-Holland
0482 Alblasserdam 28 Zuid-Holland
0613 Albrandswaard 28 Zuid-Holland
0484 Alphen aan den Rijn 28 Zuid-Holland
0489 Barendrecht 28 Zuid-Holland
0491 Bergambacht 28 Zuid-Holland
0568 Bernisse 28 Zuid-Holland
0585 Binnenmaas 28 Zuid-Holland
1901 Bodegraven-Reeuwijk 28 Zuid-Holland
0501 Brielle 28 Zuid-Holland
0502 Capelle aan den IJssel 28 Zuid-Holland
0611 Cromstrijen 28 Zuid-Holland
0503 Delft 28 Zuid-Holland
0505 Dordrecht 28 Zuid-Holland
0689 Giessenlanden 28 Zuid-Holland
1924 Goeree-Overflakkee 28 Zuid-Holland
0512 Gorinchem 28 Zuid-Holland
0513 Gouda 28 Zuid-Holland
0518 's-Gravenhage 28 Zuid-Holland
0523 Hardinxveld-Giessendam 28 Zuid-Holland
0530 Hellevoetsluis 28 Zuid-Holland
0531 Hendrik-Ido-Ambacht 28 Zuid-Holland
0534 Hillegom 28 Zuid-Holland
1884 Kaag en Braassem 28 Zuid-Holland
0537 Katwijk 28 Zuid-Holland
0588 Korendijk 28 Zuid-Holland
0542 Krimpen aan den IJssel 28 Zuid-Holland
1621 Lansingerland 28 Zuid-Holland
0545 Leerdam 28 Zuid-Holland
0546 Leiden 28 Zuid-Holland
0547 Leiderdorp 28 Zuid-Holland
1916 Leidschendam-Voorburg 28 Zuid-Holland
0553 Lisse 28 Zuid-Holland
0556 Maassluis 28 Zuid-Holland
1842 Midden-Delfland 28 Zuid-Holland
1927 Molenwaard 28 Zuid-Holland
0643 Nederlek 28 Zuid-Holland
0569 Nieuwkoop 28 Zuid-Holland
0575 Noordwijk 28 Zuid-Holland
0576 Noordwijkerhout 28 Zuid-Holland
0579 Oegstgeest 28 Zuid-Holland
0584 Oud-Beijerland 28 Zuid-Holland
0644 Ouderkerk 28 Zuid-Holland
0590 Papendrecht 28 Zuid-Holland
1926 Pijnacker-Nootdorp 28 Zuid-Holland
0597 Ridderkerk 28 Zuid-Holland
0603 Rijswijk 28 Zuid-Holland
0599 Rotterdam 28 Zuid-Holland
0606 Schiedam 28 Zuid-Holland
0608 Schoonhoven 28 Zuid-Holland
0610 Sliedrecht 28 Zuid-Holland
0612 Spijkenisse 28 Zuid-Holland
0617 Strijen 28 Zuid-Holland
1525 Teylingen 28 Zuid-Holland
0622 Vlaardingen 28 Zuid-Holland
0623 Vlist 28 Zuid-Holland
0626 Voorschoten 28 Zuid-Holland
0627 Waddinxveen 28 Zuid-Holland
0629 Wassenaar 28 Zuid-Holland
1783 Westland 28 Zuid-Holland
0614 Westvoorne 28 Zuid-Holland
0707 Zederik 28 Zuid-Holland
0637 Zoetermeer 28 Zuid-Holland
0638 Zoeterwoude 28 Zuid-Holland
1892 Zuidplas 28 Zuid-Holland
0642 Zwijndrecht 28 Zuid-Holland
0654 Borsele 29 Zeeland
0664 Goes 29 Zeeland
0677 Hulst 29 Zeeland
0678 Kapelle 29 Zeeland
0687 Middelburg 29 Zeeland
1695 Noord-Beveland 29 Zeeland
0703 Reimerswaal 29 Zeeland
1676 Schouwen-Duiveland 29 Zeeland
1714 Sluis 29 Zeeland
0715 Terneuzen 29 Zeeland
0716 Tholen 29 Zeeland
0717 Veere 29 Zeeland
0718 Vlissingen 29 Zeeland
0738 Aalburg 30 Noord-Brabant
1723 Alphen-Chaam 30 Noord-Brabant
0743 Asten 30 Noord-Brabant
0744 Baarle-Nassau 30 Noord-Brabant
1724 Bergeijk 30 Noord-Brabant
0748 Bergen op Zoom 30 Noord-Brabant
1721 Bernheze 30 Noord-Brabant
0753 Best 30 Noord-Brabant
1728 Bladel 30 Noord-Brabant
0755 Boekel 30 Noord-Brabant
0756 Boxmeer 30 Noord-Brabant
0757 Boxtel 30 Noord-Brabant
0758 Breda 30 Noord-Brabant
1706 Cranendonck 30 Noord-Brabant
1684 Cuijk 30 Noord-Brabant
0762 Deurne 30 Noord-Brabant
0766 Dongen 30 Noord-Brabant
1719 Drimmelen 30 Noord-Brabant
0770 Eersel 30 Noord-Brabant
0772 Eindhoven 30 Noord-Brabant
0777 Etten-Leur 30 Noord-Brabant
0779 Geertruidenberg 30 Noord-Brabant
1771 Geldrop-Mierlo 30 Noord-Brabant
1652 Gemert-Bakel 30 Noord-Brabant
0784 Gilze en Rijen 30 Noord-Brabant
0785 Goirle 30 Noord-Brabant
0786 Grave 30 Noord-Brabant
0788 Haaren 30 Noord-Brabant
1655 Halderberge 30 Noord-Brabant
1658 Heeze-Leende 30 Noord-Brabant
0794 Helmond 30 Noord-Brabant
0796 's-Hertogenbosch 30 Noord-Brabant
0797 Heusden 30 Noord-Brabant
0798 Hilvarenbeek 30 Noord-Brabant
1659 Laarbeek 30 Noord-Brabant
1685 Landerd 30 Noord-Brabant
0809 Loon op Zand 30 Noord-Brabant
1671 Maasdonk 30 Noord-Brabant
0815 Mill en Sint Hubert 30 Noord-Brabant
1709 Moerdijk 30 Noord-Brabant
0820 Nuenen Gerwen en Nederwetten 30 Noord-Brabant
0823 Oirschot 30 Noord-Brabant
0824 Oisterwijk 30 Noord-Brabant
0826 Oosterhout 30 Noord-Brabant
0828 Oss 30 Noord-Brabant
1667 Reusel-De Mierden 30 Noord-Brabant
1674 Roosendaal 30 Noord-Brabant
0840 Rucphen 30 Noord-Brabant
0844 Schijndel 30 Noord-Brabant
1702 Sint Anthonis 30 Noord-Brabant
0845 Sint-Michielsgestel 30 Noord-Brabant
0846 Sint-Oedenrode 30 Noord-Brabant
0847 Someren 30 Noord-Brabant
0848 Son en Breugel 30 Noord-Brabant
0851 Steenbergen 30 Noord-Brabant
0855 Tilburg 30 Noord-Brabant
0856 Uden 30 Noord-Brabant
0858 Valkenswaard 30 Noord-Brabant
0860 Veghel 30 Noord-Brabant
0861 Veldhoven 30 Noord-Brabant
0865 Vught 30 Noord-Brabant
0866 Waalre 30 Noord-Brabant
0867 Waalwijk 30 Noord-Brabant
0870 Werkendam 30 Noord-Brabant
0873 Woensdrecht 30 Noord-Brabant
0874 Woudrichem 30 Noord-Brabant
0879 Zundert 30 Noord-Brabant
0888 Beek 31 Limburg
0889 Beesel 31 Limburg
0893 Bergen (L.) 31 Limburg
0899 Brunssum 31 Limburg
1711 Echt-Susteren 31 Limburg
1903 Eijsden-Margraten 31 Limburg
0907 Gennep 31 Limburg
1729 Gulpen-Wittem 31 Limburg
0917 Heerlen 31 Limburg
1507 Horst aan de Maas 31 Limburg
0928 Kerkrade 31 Limburg
0882 Landgraaf 31 Limburg
1640 Leudal 31 Limburg
1641 Maasgouw 31 Limburg
0935 Maastricht 31 Limburg
0938 Meerssen 31 Limburg
0944 Mook en Middelaar 31 Limburg
0946 Nederweert 31 Limburg
0951 Nuth 31 Limburg
0881 Onderbanken 31 Limburg
1894 Peel en Maas 31 Limburg
1669 Roerdalen 31 Limburg
0957 Roermond 31 Limburg
0962 Schinnen 31 Limburg
0965 Simpelveld 31 Limburg
1883 Sittard-Geleen 31 Limburg
0971 Stein 31 Limburg
0981 Vaals 31 Limburg
0994 Valkenburg aan de Geul 31 Limburg
0983 Venlo 31 Limburg
0984 Venray 31 Limburg
0986 Voerendaal 31 Limburg
0988 Weert 31 Limburg
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment