Zillow ma zestaw plików kształtowych dla różnych dzielnic głównych amerykańskich miast. Chciałem sprawdzić, czy niektóre budynki były obecne w niektórych dzielnicach za pomocą R:
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", ]
Mogę spiskować bez żadnych problemów
plot(sodo)
points(df$Latitude ~ df$Longitude, col = "red", cex = 1)
I dopasować proj4
ciąg z shapefile do mojego data.frame
CRSobj <- CRS("+proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0 ")
df@proj4string <- CRSobj
over(df, sodo)
To po prostu daje mi wiele NA
wartości. Próbowałem tego odpowiedzi
spp <- SpatialPoints(df)
spp@proj4string <- CRSobj
over(spp, sodo)
ale nadal otrzymuj tylko NA
wartości. Jakieś pomysły, co jeszcze powinienem spróbować?
Użyłem podobnego podejścia do zaakceptowanej odpowiedzi w tym poście, ale nigdy tak naprawdę nie byłem z tego zadowolony, więc szukałem alternatyw i znalazłem bibliotekę sf .
Za pomocą tej biblioteki możesz następnie napisać kod w następujący sposób:
Wynik:
Wysłałem ten kod na inny post, który był podobnym pytaniem, tutaj: Zidentyfikuj wielokąt zawierający punkt za pomocą pakietu R sf
źródło