vorige | blogs | volgende

readOGR(): het inlezen van geografische data in R


readOGR(): het inlezen van geografische data in R

Inleiding

In deze oefening laten we zien hoe je geografische data kan inladen in het statistische pakket R. Dit gaan we doen met de functie readOGR().

Als invoerbestand gebruiken we het bestand NL_Gemeenten2014.TAB, dat elders op deze site, op de pagina Geografische Data, wordt aangeboden. Dit is een MapInfo tabel met statistiche gegevens per gemeente voor het jaar 2014. Een volledige beschrijving van het bestand staat in dit PDF document.

Het script voor deze oefening staat hier: LadenNL_Gemeenten2014.R (Raw).

Maar voordat je dit script in één keer laadt en uitvoert, is het leerzamer om de instructies hieronder te volgen: dan shrijf je het script zelf, en kun je het regel voor regel testen.

Het instellen van de werkmap

Laten we beginnen:

Het ophalen en uitpakken van het invoerbestand

Je kunt het invoerbestand handmatig downloaden en unzippen, maar je kunt dat ook door R laten doen. Zie de regels code - met commentaar - hieronder:

# Sla de URL van het te downloaden bestand op in een variabele
URL <- "http://www.twiav.nl/files/NL_Gemeenten2014.zip"
 # Extraheer de bestandsnaam uit de URL
bestand <- file.path(basename(URL))
 # Maak een submap in de werkmap (voor het opslaan van de invoerdata)
dir.create("./Data", showWarnings = FALSE)
 # Sla het huidige pad van de werkmap op in een variabele
werkmap <- getwd()
# Switch tijdelijk naar de Datamap
setwd("./Data")
# Download het bestand
download.file(URL, destfile = bestand, mode = "wb")
# Pak het bestand uit
unzip(bestand)
# Ruim een beetje op:
 # Na het uitpakken kan het zip bestand verwijderd worden
unlink(bestand)
# De variabelen 'URL' en 'bestand' zijn niet meer nodig na de download
rm(URL, bestand)
# Keer terug naar de oorspronkelijke werkmap
setwd(werkmap)
# De variabele 'werkmap' is niet meer nodig na terugkeer naar de oorspronkelijke werkmap
rm(werkmap)

Hoeveel bestanden staan er na deze actie in de map ‘Data’?

Het inlezen van de MapInfo tabel

Nu dat het invoerbestand NL_Gemeenten2014.TAB (met de vier bijbehorende bestanden *.DAT, *.MAP, *.ID en *.IND) op zijn plek staat, kun je het gaan inlezen.

De functie readOGR() is onderdeel van de bibliotheek rgdal, dus deze moet geladen worden:

library(rgdal)
## Loading required package: sp
## rgdal: version: 1.1-1, (SVN revision 572)
##  Geospatial Data Abstraction Library extensions to R successfully loaded
##  Loaded GDAL runtime: GDAL 1.11.2, released 2015/02/10
##  Path to GDAL shared files: C:/Program Files/R/R-3.2.2/library/rgdal/gdal
##  GDAL does not use iconv for recoding strings.
##  Loaded PROJ.4 runtime: Rel. 4.9.1, 04 March 2015, [PJ_VERSION: 491]
##  Path to PROJ.4 shared files: C:/Program Files/R/R-3.2.2/library/rgdal/proj
##  Linking to sp version: 1.2-1

Let op: als de package rgdal nog niet geïnstalleerd is, dan moet je dat eerst nog even doen (éénmalig):

install.packages("rgdal")

Lees de gegevens in in het aan te maken object gem014:

gem2014 <- readOGR(dsn = "Data", layer = "NL_Gemeenten2014")
## OGR data source with driver: MapInfo File 
## Source: "Data", layer: "NL_Gemeenten2014"
## with 403 features
## It has 34 fields

In het Environment scherm zie je nu het object gem2014 verschijnen, als Large SpatialPolygonsDataFrame (403 elements, 2 Mb)

Bekijk de attribuutgegevensgegevens in de Data Viewer:

View(gem2014)

Dit scherm biedt goede mogelijkheden voor een eerste verkennende gegevensanalyse (exploratory data analysis (EDA)), doordat je de gegevens kan filteren, sorteren en doorzoeken.

Experimenteer met deze mogelijkheden door de volgende vragen te beantwoorden:

Plot de geometrie:

plot(gem2014, col = "darkgreen", border = "lightgray")



Egge-Jan Pollé