Cleaned up province segmentation
This commit is contained in:
1 parent
d56eb3a700
commit
650d596f03
22 files changed
+20297
-9417
No files matched your search
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Segment provinces\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"Create wijk and gemeente level segmentations for all Dutch provinces and save as geojson and Gabmap KML.\n",
|
||||
"\n",
|
||||
"All is based on CBS data.\n",
|
||||
"\n",
|
||||
"For Friesland, several wijken are merged.\n",
|
||||
"\n",
|
||||
"Note: only applied to Groningen and Friesland, because other provinces give gemetry errors."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import sys\n",
|
||||
"sys.path.append('../')\n",
|
||||
"\n",
|
||||
"from stimmen.latitude_longitude import reverse_latitude_longitude\n",
|
||||
"from stimmen.shapefile import shapefiles_to_geojson\n",
|
||||
"from stimmen.cbs import gwb_in_province, get_available_provinces\n",
|
||||
"from stimmen.geojson import merge_features\n",
|
||||
"from gabmap import as_gabmap_kml\n",
|
||||
"\n",
|
||||
"from shapely.geometry import shape, box, mapping\n",
|
||||
"\n",
|
||||
"import json\n",
|
||||
"import folium\n",
|
||||
"import pickle\n",
|
||||
"\n",
|
||||
"from collections import defaultdict"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"for province in ['Groningen', 'Friesland']:\n",
|
||||
" wijken_geojson = gwb_in_province(province, 'wijk', 2018)\n",
|
||||
" gemeente_geojson = gwb_in_province(province, 'gem', 2018)\n",
|
||||
"\n",
|
||||
" if province == 'Friesland':\n",
|
||||
" for gemeente in {'Ameland', 'Harlingen', 'Schiermonnikoog', 'Terschelling', 'Vlieland'}:\n",
|
||||
" merged_geojson = merge_features(\n",
|
||||
" wijken_geojson.copy(),\n",
|
||||
" condition=lambda feature: feature['properties']['GM_NAAM'] == gemeente,\n",
|
||||
" aggregate={'WK_NAAM': ' '.join}\n",
|
||||
" )\n",
|
||||
"\n",
|
||||
" merge_leeuwarden_only_above_latitude = 53.167\n",
|
||||
" wijken_geojson = merge_features(\n",
|
||||
" wijken_geojson,\n",
|
||||
" condition=lambda feature: (\n",
|
||||
" feature['properties']['GM_NAAM'] == 'Leeuwarden' and\n",
|
||||
" shape(feature['geometry']).centroid.y > merge_leeuwarden_only_above_latitude\n",
|
||||
" ),\n",
|
||||
" aggregate={'WK_NAAM': ' '.join}\n",
|
||||
" )\n",
|
||||
" \n",
|
||||
" #Some gemeentes appear twice in the cbs data.\n",
|
||||
" for gemeente in [feature['properties']['GM_NAAM'] for feature in gemeente_geojson['features']]:\n",
|
||||
" gemeente_geojson = merge_features(\n",
|
||||
" gemeente_geojson, condition=lambda feature: feature['properties']['GM_NAAM'] == gemeente)\n",
|
||||
" \n",
|
||||
" for feature in wijken_geojson['features']:\n",
|
||||
" feature['properties']['gemeente_en_wijk_naam'] = (\n",
|
||||
" feature['properties']['GM_NAAM'] +\n",
|
||||
" ', ' +\n",
|
||||
" feature['properties'].get('WK_NAAM', '')\n",
|
||||
" ).replace('&', 'en').replace('/', ' ').replace('\"', ' ').replace(\"'\", ' ')\n",
|
||||
" \n",
|
||||
" for feature in gemeente_geojson['features']:\n",
|
||||
" feature['properties']['gemeente_naam'] = (\n",
|
||||
" feature['properties']['GM_NAAM']\n",
|
||||
" ).replace('&', 'en').replace('/', ' ').replace('\"', ' ').replace(\"'\", ' ')\n",
|
||||
" \n",
|
||||
" with open('../data/{}_wijken.geojson'.format(province), 'w') as f:\n",
|
||||
" json.dump(wijken_geojson, f)\n",
|
||||
" with open('../data/{}_gemeentes.geojson'.format(province), 'w') as f:\n",
|
||||
" json.dump(gemeente_geojson, f)\n",
|
||||
" \n",
|
||||
" with open('../data/{}_wijken.kml'.format(province), 'w') as f:\n",
|
||||
" f.write(as_gabmap_kml(wijken_geojson, name_property='gemeente_en_wijk_naam'))\n",
|
||||
" with open('../data/{}_gemeentes.kml'.format(province), 'w') as f:\n",
|
||||
" f.write(as_gabmap_kml(gemeente_geojson, name_property='gemeente_naam'))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%load_ext autoreload\n",
|
||||
"\n",
|
||||
"%autoreload 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import sys\n",
|
||||
"sys.path.append('../')\n",
|
||||
"import json\n",
|
||||
"\n",
|
||||
"from stimmen.latitude_longitude import reverse_latitude_longitude\n",
|
||||
"import folium\n",
|
||||
"\n",
|
||||
"from stimmen.cbs import get_available_provinces, province_geojson\n",
|
||||
"from shapely.geometry import shape\n",
|
||||
"\n",
|
||||
"import folium\n",
|
||||
"from IPython.display import display"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Groningen\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/html": [
|
||||
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVM9ZmFsc2U7IExfTk9fVE9VQ0g9ZmFsc2U7IExfRElTQUJMRV8zRD1mYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgPHN0eWxlPiNtYXBfNDZiNGUzOWNjZDRkNDgxZjg4YzkwMTVmYWZhMzNkMDkgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwLjAlOwogICAgICAgIGhlaWdodDogMTAwLjAlOwogICAgICAgIGxlZnQ6IDAuMCU7CiAgICAgICAgdG9wOiAwLjAlOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwXzQ2YjRlMzljY2Q0ZDQ4MWY4OGM5MDE1ZmFmYTMzZDA5IiA+PC9kaXY+CjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKICAgIAogICAgICAgIHZhciBib3VuZHMgPSBudWxsOwogICAgCgogICAgdmFyIG1hcF80NmI0ZTM5Y2NkNGQ0ODFmODhjOTAxNWZhZmEzM2QwOSA9IEwubWFwKAogICAgICAgICdtYXBfNDZiNGUzOWNjZDRkNDgxZjg4YzkwMTVmYWZhMzNkMDknLCB7CiAgICAgICAgY2VudGVyOiBbNTMuMjYwNTY3NTAxNDYwMjE2LCA2LjczMDkwMTcyNDE4MTM3M10sCiAgICAgICAgem9vbTogOSwKICAgICAgICBtYXhCb3VuZHM6IGJvdW5kcywKICAgICAgICBsYXllcnM6IFtdLAogICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgem9vbUNvbnRyb2w6IHRydWUsCiAgICAgICAgfSk7CgogICAgCiAgICAKICAgIHZhciB0aWxlX2xheWVyX2FiZTg0NWE0MzNkYzQ1Yzc4ZGExODM0ZWM0OTlkZDY1ID0gTC50aWxlTGF5ZXIoCiAgICAgICAgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3RvbmVyL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgewogICAgICAgICJhdHRyaWJ1dGlvbiI6IG51bGwsCiAgICAgICAgImRldGVjdFJldGluYSI6IGZhbHNlLAogICAgICAgICJtYXhOYXRpdmVab29tIjogMTgsCiAgICAgICAgIm1heFpvb20iOiAxOCwKICAgICAgICAibWluWm9vbSI6IDAsCiAgICAgICAgIm5vV3JhcCI6IGZhbHNlLAogICAgICAgICJzdWJkb21haW5zIjogImFiYyIKfSkuYWRkVG8obWFwXzQ2YjRlMzljY2Q0ZDQ4MWY4OGM5MDE1ZmFmYTMzZDA5KTsKICAgIAoKICAgICAgICAgICAgdmFyIHBvbHlnb25fODcwYWVkMjIxMWEzNGFkYWI0YjY5NWI0NTkxZjA2ZTEgPSBMLnBvbHlnb24oCiAgICAgICAgICAgICAgICBbW1s1My4zMjcyODgxMzQ1NzM0LCA2LjgzMTk5MTc2MDQ3MzA4OV0sIFs1My4zMjcxMTUxMjMwMjA3NiwgNi44MzQ0NTY5NTMzMTE5Nl0sIFs1My4zMzA1MzI4NzAwNzIyNywgNi44Mzg5MjUzMDk1MDYxNl0sIFs1My4zMzY4MTMwMDM4MTgwNSwgNi44MzM3MzE3NDY4NzQ0MzRdLCBbNTMuMzQwMDU2MTY1MzIxNjgsIDYuODM0NTMyODA4NDY1MzU0XSwgWzUzLjM0MTg0NzYzNzE0MjEsIDYuODMzMTU4OTM0ODU1OTU2XSwgWzUzLjM0NTEzMDkxNjU2ODc5LCA2LjgzNjE1MDg0MjU4MjAwNF0sIFs1My4zNDU1NDE0NzkyNTIyLCA2Ljg0MTczODQ3MjU3OTU4NjRdLCBbNTMuMzQzNTA4MDY2MzkxODgsIDYuODQ0NTI2OTA5NDk2MjY4XSwgWzUzLjM0NDgwNTcwOTkyOTMsIDYuODQ5MDk2ODQxMDAxOTMxNV0sIFs1My4zNDQwNjg2NDQwOTk5NywgNi44NjEyMTM3MTY5NTgxNjNdLCBbNTMuMzQxODA1NjEwODU0MjEsIDYuODY2Nzk3NTE3ODc4MDY0XSwgWzUzLjM0MzM5NDYxMDk1MzEyLCA2Ljg2NzE2ODczMTk5NTk4MTVdLCBbNTMuMzQyOTQ4ODczMzQ1NzA1LCA2Ljg3MzgwMjU2MTcwMzUyMV0sIFs1My4zNDczNTA0MzgwNzg3ODQsIDYuODc1NDI5MzIzMTAyNzQ1XSwgWzUzLjM0NTEyODAzOTU0MzA5LCA2Ljg4NTQwNTE4NTYwNDE2NV0sIFs1My4zNDEzOTcyNzc5OTk2NSwgNi44ODU1MDQ2NjUyMzc5OTJdLCBbNTMuMzM4MDQxMzU0MTgzMDcsIDYuODgyNTUwNjY4NTgxMjgxXSwgWzUzLjMzNjU1OTE4MDM4ODgsIDYuODgzNTI4MjAzMTQ0NDI2XSwgWzUzLjMyODU0MjAwODYyMTU3NSwgNi44ODE3MzEwOTM3NjY0NDNdLCBbNTMuMzI0ODI0OTQ4MTc4NjcsIDYuODgxOTcxMjgwMjM3NTYxXSwgWzUzLjMyMzc0MzY1NjAwODEsIDYuODgzNDQ2NzM3MDAyMzI1XSwgWzUzLjMxNjQxMDQ3ODc0Mjg5NSwgNi44ODMwMDYxODc3OTYwMTddLCBbNTMuMzA5MTM0NDE1NTU1MzU2LCA2Ljg4NTYyMjcwMjkxNjA5M10sIFs1My4zMDk2NTUwMDQ3ODI1NCwgNi44ODgxNjA4NDQ4MTc4M10sIFs1My4yOTc4ODIwMTYyODIwNiwgNi44ODczNLine truncated
|
||||
],
|
||||
"text/plain": [
|
||||
"<folium.folium.Map at 0x7f9ea4251cc0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"ename": "FileNotFoundError",
|
||||
"evalue": "[Errno 2] No such file or directory: '../data/Friesland_gemeentes.geojson'",
|
||||
"output_type": "error",
|
||||
"traceback": [
|
||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||||
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
||||
"\u001b[0;32m<ipython-input-5-4015368e13b0>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfolium\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcenter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcenter\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtiles\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'stamentoner'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mzoom_start\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m9\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'../data/{}_gemeentes.geojson'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprovince\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 7\u001b[0m \u001b[0mgemeentes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'../data/{}_wijken.geojson'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprovince\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'r'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
||||
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '../data/Friesland_gemeentes.geojson'"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for province in ['Groningen', 'Friesland', 'Zeeland']:\n",
|
||||
" center = shape(province_geojson(province, with_water=True)['geometry']).centroid\n",
|
||||
"\n",
|
||||
" m = folium.Map((center.y, center.x), tiles='stamentoner', zoom_start=9)\n",
|
||||
" \n",
|
||||
" with open('../data/{}_gemeentes.geojson'.format(province), 'r') as f:\n",
|
||||
" gemeentes = json.load(f)\n",
|
||||
" with open('../data/{}_wijken.geojson'.format(province), 'r') as f:\n",
|
||||
" wijken = json.load(f)\n",
|
||||
" \n",
|
||||
" for feature in wijken['features']:\n",
|
||||
" coordinates = reverse_latitude_longitude(feature['geometry']['coordinates'])\n",
|
||||
" polygon = folium.Polygon(coordinates, fill_color=None, color='blue').add_to(m)\n",
|
||||
" \n",
|
||||
" for feature in gemeentes['features']:\n",
|
||||
" coordinates = reverse_latitude_longitude(feature['geometry']['coordinates'])\n",
|
||||
" polygon = folium.Polygon(coordinates, fill_color=None, color='red').add_to(m)\n",
|
||||
" \n",
|
||||
" print(province)\n",
|
||||
" display(m)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.6.5"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
||||
Reference in new issue
Block a user