In Zillow gibt es eine Reihe von Shapefiles für verschiedene Stadtteile großer US-amerikanischer Städte. Ich wollte mit R überprüfen, ob in bestimmten Stadtteilen bestimmte Gebäude vorhanden sind:
library(rgeos)
library(sp)
library(rgdal)
df <- data.frame(Latitude =c(47.591351, 47.62212,47.595152),
Longitude = c(-122.332271,-122.353985,-122.331639),
names = c("Safeco Field", "Key Arena", "Century Link"))
coordinates(df) <- ~ Latitude + Longitude
wa.map <- readOGR("ZillowNeighborhoods-WA.shp", layer="ZillowNeighborhoods-WA")
sodo <- wa.map[wa.map$CITY == "Seattle" & wa.map$NAME == "Industrial District", ]
Ich kann ohne Probleme plotten
plot(sodo)
points(df$Latitude ~ df$Longitude, col = "red", cex = 1)
Ich proj4
stimme die Zeichenfolge aus dem Shapefile mit meinem data.frame überein
CRSobj <- CRS("+proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0 ")
df@proj4string <- CRSobj
over(df, sodo)
Dies gibt mir nur eine Reihe von NA
Werten. Ich habe diese Antwort ausprobiert
spp <- SpatialPoints(df)
spp@proj4string <- CRSobj
over(spp, sodo)
bekomme aber trotzdem nur NA
werte. Irgendwelche Ideen, was ich sonst noch versuchen sollte?
Ich habe eine ähnliche Herangehensweise an die akzeptierte Antwort in diesem Beitrag gewählt, war aber nie wirklich zufrieden damit, also habe ich nach Alternativen gesucht und die sf- Bibliothek gefunden.
Und mit dieser Bibliothek können Sie dann Code wie folgt schreiben:
Ausgabe:
Ich habe diesen Code in einem anderen Beitrag gepostet, bei dem es sich um eine ähnliche Frage handelt: Identifizieren Sie den Punkt , der ein Polygon enthält, mit dem Paket R sf
quelle