In het verleden werd het merendeel van ruimtelijke GEO analyses vooral verricht met softwarepakketten zoals ArcGIS. Het voordeel van dergelijke pakketten is je gemakkelijk met enkele muisklikken complexe analyses kan doen en direct een goede weergave van data en analyse opties hebt.
Er zijn ook een paar nadelen:
- het kost geld, je moet licentiekosten betalen,
- niet alle analyses zijn mogelijk, en
- het kan omslachtig zijn voor simpele handelingen.
Over de afgelopen jaren zijn meerdere GIS packages voor Python ontwikkeld, waarmee een breed scala aan ruimtelijke bewerkingen en analyses verricht kan worden. We behandelen hier enkele veelgebruikte packages.
Shapely
Shapely biedt ruimtelijke objecten aan, opgebouwd uit coördinaten, waarmee gewerkt kan worden. Voorbeelden hiervan zijn Point (punt), LineString (lijn) en Polygon (vorm). Elk van deze ruimtelijke objecten bezit specifieke eigenschappen, de methoden en attributen. Met behulp hiervan kunnen gemakkelijk de juiste analyses en bewerkingen gedaan worden zoals het bepalen van afstanden, oppervlaktes, en onderlinge relaties.
Omdat ruimtelijke objecten een fundamentele basis zijn voor GIS data wordt package Shapely ook weer door andere packages gebruikt, zoals in GeoPandas.
Lees hier een volledige blog over de mogelijkheden van het Python GIS Shapely package
We hebben ook een gratis Python gis tutorial online staan waarin Shapely wordt gebruikt
GeoPandas
Ruimtelijke data is veelal voor te stellen in tabulaire vorm. Denk bijvoorbeeld aan een tabel met gegevens van landen, waarbij van ieder land ook de ruimtelijke vorm bekend is. Met GeoPandas kun je vanuit een tabulaire structuur met ruimtelijke data werken. Het maakt gebruik van de DataFrame structuur vanuit package Pandas en breidt dit uit met een extra kolom, de Geometry. Deze kolom bevat voor iedere rij een ruimtelijk object. Hierbij maakt GeoPandas gebruik van de ruimtelijke objecten vanuit package Shapely.
Met GeoPandas kun je ruimtelijke datasets openen, analyseren, bewerken en opslaan. Je kunt bijvoorbeeld gemakkelijk coördinaten referentiesystemen wijzigen of spatial joins uitvoeren om ruimtelijke data samen te voegen.
Een GeoPandas dataset heet een GeoDataFrame.
Fiona
Ruimtelijke data komt in veel verschillende formaten voor. Denk bijvoorbeeld aan SHP, DXF en GeoJSON. Met package Fiona kun je vrijwel alle ruimtelijke bestanden uitlezen waarna je de data verder kunt gebruiken. GeoPandas maakt hier ook gebruik van wanneer je datasets opent of opslaat.
PyProj
Ruimtelijke data kan in verschillende coördinaten referentiesystemen (CRS) voorkomen. Om meerdere redenen kan het nodig zijn om dit om te zetten naar een ander CRS. Package PyProj biedt de module met de naam CRS, waarmee omzettingen van coördinaten referentiesystemen gedaan kunnen worden. Vanuit GeoPandas kan je hier ook direct gebruik van maken.
GeoPy
Het omzetten van adressen in coördinaten, of juist omgekeerd, heet geocoding. Packege GeoPy biedt meerdere mogelijkheden om dit eenvoudig te kunnen doen. Hierbij kun je bijvoorbeeld gebruik maken van de omvattende en nauwkeurige Google geocoding API.
Ook interessant: zelf een API maken in Python
Rtree
Indien je met grote hoeveelheden ruimtelijke data werkt en hiermee ruimtelijke queries (spatial queries) doet, kan dit veel rekenkracht en dus veel tijd kosten. Neem het volgende voorbeeld: we hebben een dataset met de ruimtelijke vormen van alle dorpen en steden in Nederland. Dit is een dataset van 2500 rijen. Vervolgens hebben we de coördinaten van een punt, en willen het gebied zien van het dorp of stad waarin dit punt zich bevindt. We zouden dan voor elk van de 2500 vormen kunnen controleren of het punt zich in de vorm bevindt.
met Rtree maak je een R-tree index object waarin je de in ons geval 2500 vormen in een vertakkende structuur bevindt. Dit leidt ertoe dat maar een klein deel van de 2500 opties getoetst wordt, waardoor je je ruimtelijke queries aanzienlijk kunt versnellen.
MapClassify
Met MapClassify kun je een ruimtelijke dataset reclassificeren. Stel je hebt een dataset met gegevens van een stad: per rij de ruimtelijke vorm van een stadsdeel en informatie over de gemiddelde woningwaarde. Door te reclassificeren kun je een samengevatte dataset verkrijgen, waarin je in ons voorbeeld bijvoorbeeld de vormen van stadsdelen samenvoegt die binnen een bepaald interval van gemiddelde woningwaarde liggen.
Reclassificeren met MapClassify is ook geïntegreerd in packege GeoPandas.
Matplotlib
Package Matplotlib is een universeel package om visualisaties in Python te maken zoals grafieken. Je kunt er ook eenvoudig ruimtelijke objecten mee plotten. GeoPandas maakt hier bijvoorbeeld ook gebruik van, zodat je gemakkelijk alle ruimtelijke objecten uit een GeoDataFrame kunt visualiseren.
Contextily
Contextily kun je gebruiken om aan een Matplotlib plot een kaart als achtergrond toe te voegen. Je kunt hierbij voor verschillende kaarten en eigenschappen zoals tekst en de detailgraad kiezen. Een belangrijk detail is dat je het juiste coördinaten referentiesysteem moet kiezen.
MplLeaflet
Hiermee kun je een interactieve kaart maken van een Matplotlib plot. Dit resulteert in een kaartobject wat je in de browser kunt bekijken. Hiermee kun je bijvoorbeeld in- en uitzoomen, het gebied verplaatsen en eigenschappen van datapunten bekijken. De mogelijkheden tot persoonlijke aanpassingen zijn beperkt.
Folium
Folium biedt zeer uitgebreide mogelijkheden om interactieve kaarten te maken en die volledig te personaliseren. Je kunt bijvoorbeeld verschillende kaartsoorten kiezen, het standaard getoonde gebied wijzigen of variëren in detailgraad. Verder kun je de datapunten op de kaart op tal van verschillende manieren weergeven. Je kunt uit verschillende markers kiezen zoals een pointer of circle marker, je kunt een heatmap maken of je kunt bijvoorbeeld datapunten clusteren. Een Folium object is tot slot eenvoudig te exporteren naar bijvoorbeeld een HTML pagina voor verder gebruik.
Wat je moet onthouden
Er zijn diverse Python GIS packages die je kunt gebruiken om een breed scala aan GIS analyses en bewerkingen mee te kunnen doen. We hebben gezien dat er packages zijn voor het werken met ruimtelijke objecten, openen van ruimtelijke data, het werken met een tabelstructuur, het doen van diverse operaties en analyses en het weergeven van ruimtelijke data in een kaart.
Wil je meer leren over werken met ruimtelijke data en het doen van GIS analyses met Python? Schrijf je dan in voor onze Python cursus voor data science, onze machine learning training, of voor onze data science opleiding en leer met vertrouwen te programmeren en analyseren in Python. Of neem contact op over onze in-company GIS training.
Download één van onze opleidingsbrochures voor meer informatie
Peter is een ervaren data scientist en python trainer. Na zijn studie aan de Technische Universiteit Delft heeft hij zich altijd bezig gehouden met data en diverse programmeertalen. Peter heeft veel data analyses uitgevoerd en processen geautomatiseerd met Python in productieomgevingen.