R Language
rumslig analys
Sök…
Skapa rumsliga punkter från XY-datauppsättningen
När det gäller geografiska data visar R vara ett kraftfullt verktyg för datahantering, analys och visualisering.
Ofta är rumsliga data tillgängliga som en XY-koordinatdatauppsättning i tabellform. Detta exempel visar hur man skapar en rumslig datauppsättning från en XY-datauppsättning.
Paketen rgdal
och sp
ger kraftfulla funktioner. Spatial data i R kan lagras som Spatial*DataFrame
(där *
kan vara Points
, Lines
eller Polygons
).
I det här exemplet används data som kan laddas ner på OpenGeocode .
Först måste arbetskatalogen ställas in till mappen för den nedladdade CSV-datauppsättningen. Dessutom rgdal
paketet rgdal
laddas.
setwd("D:/GeocodeExample/")
library(rgdal)
Efteråt laddas CSV-filen som lagrar städer och deras geografiska koordinater i R som en data.frame
xy <- read.csv("worldcities.csv", stringsAsFactors = FALSE)
Ofta är det användbart att få en glimt av uppgifterna och dess struktur (t.ex. kolumnnamn, datatyper etc.).
head(xy)
str(xy)
Detta visar att bredd- och longitudkolumnerna tolkas som teckenvärden, eftersom de har poster som "-33.532". Ändå kräver den senare använda funktionen SpatialPointsDataFrame()
som skapar den rumsliga SpatialPointsDataFrame()
numeric
. Således måste de två kolumnerna konverteras.
xy$latitude <- as.numeric(xy$latitude)
xy$longitude <- as.numeric(xy$longitude)
Få av värdena kan inte konverteras till numeriska data och därför skapas NA
värden. De måste tas bort.
xy <- xy[!is.na(xy$longitude),]
Slutligen kan XY-datauppsättningen konverteras till en rumslig datauppsättning. Detta kräver koordinaterna och specifikationen för det koordinatreferenssystem (CRS) där koordinaterna lagras.
xySPoints <- SpatialPointsDataFrame(coords = c(xy[,c("longitude", "latitude")]),
proj4string = CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),
data = xy
)
Den grundläggande plottfunktionen kan enkelt användas för att smyga upp de producerade rumsliga punkterna.
plot(xySPoints, pch = ".")
Importera en formfil (.shp)
rgdal
ESRI-formfiler kan enkelt importeras till R genom att använda funktionen readOGR()
från rgdal
paketet.
library(rgdal)
shp <- readORG(dsn = "/path/to/your/file", layer = "filename")
Det är viktigt att veta att dsn
inte får sluta med /
och layer
inte tillåter att filen slutar (t.ex. .shp
)
raster
Ett annat möjligt sätt att importera shapefiles är via raster
och shapefile
funktionen:
library(raster)
shp <- shapefile("path/to/your/file.shp")
Observera hur bandefinitionen skiljer sig från rgdal-importmeddelandet.
TMAP
tmap
paketet erbjuder ett trevligt omslag för rgdal::readORG
.
library(tmap)
sph <- read_shape("path/to/your/file.shp")