R Language
spatiële analyse
Zoeken…
Maak ruimtelijke punten van XY-gegevensset
Als het gaat om geografische gegevens, blijkt R een krachtig hulpmiddel voor gegevensverwerking, analyse en visualisatie.
Vaak zijn ruimtelijke gegevens beschikbaar als een XY-coördinaatgegevensset in tabelvorm. Dit voorbeeld laat zien hoe u een ruimtelijke gegevensset maakt van een XY-gegevensset.
De pakketten rgdal
en sp
bieden krachtige functies. Ruimtelijke gegevens in R worden opgeslagen als Spatial*DataFrame
(waar *
kan Points
, Lines
of Polygons
).
Dit voorbeeld maakt gebruik van gegevens die kunnen worden gedownload bij OpenGeocode .
Eerst moet de werkmap worden ingesteld op de map van de gedownloade CSV-gegevensset. Verder moet het pakket rgdal
worden geladen.
setwd("D:/GeocodeExample/")
library(rgdal)
Daarna wordt het CSV-bestand met steden en hun geografische coördinaten in R geladen als een data.frame
xy <- read.csv("worldcities.csv", stringsAsFactors = FALSE)
Vaak is het handig om een glimp op te vangen van de gegevens en de structuur ervan (bijvoorbeeld kolomnamen, gegevenstypen, enz.).
head(xy)
str(xy)
Dit laat zien dat de lengte- en breedtegraadkolommen worden geïnterpreteerd als tekenwaarden, omdat deze items bevatten zoals "-33.532". Toch vereist de later gebruikte functie SpatialPointsDataFrame()
die de verzameling ruimtelijke gegevens maakt, dat de coördinaatwaarden van het gegevenstype numeric
. De twee kolommen moeten dus worden geconverteerd.
xy$latitude <- as.numeric(xy$latitude)
xy$longitude <- as.numeric(xy$longitude)
Weinig van de waarden kunnen niet worden omgezet in numerieke gegevens en dus worden NA
waarden gecreëerd. Ze moeten worden verwijderd.
xy <- xy[!is.na(xy$longitude),]
Ten slotte kan de XY-gegevensset worden omgezet in een ruimtelijke gegevensset. Dit vereist de coördinaten en de specificatie van het coördinatenreferentiesysteem (CRS) waarin de coördinaten zijn opgeslagen.
xySPoints <- SpatialPointsDataFrame(coords = c(xy[,c("longitude", "latitude")]),
proj4string = CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),
data = xy
)
De basisplotfunctie kan eenvoudig worden gebruikt om de geproduceerde ruimtelijke punten te piekeren.
plot(xySPoints, pch = ".")
Een vormbestand (.shp) importeren
rgdal
ESRI-vormbestanden kunnen eenvoudig in R worden geïmporteerd met behulp van de functie readOGR()
uit het rgdal
pakket.
library(rgdal)
shp <- readORG(dsn = "/path/to/your/file", layer = "filename")
Het is belangrijk om te weten, dat de dsn
niet mag eindigen met /
en dat de layer
het bestand niet laat eindigen (bijv. .shp
)
raster
Een andere mogelijke manier om shapefiles te importeren is via de raster
en de shapefile
functie:
library(raster)
shp <- shapefile("path/to/your/file.shp")
Merk op hoe de paddefinitie verschilt van de importinstructie van rgdal.
TMap
tmap
pakket biedt een leuke wrapper voor de functie rgdal::readORG
.
library(tmap)
sph <- read_shape("path/to/your/file.shp")