Zillow tiene un conjunto de archivos de forma para diferentes vecindarios de las principales ciudades de EE. UU. Quería verificar si ciertos edificios estaban presentes en ciertos vecindarios usando 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", ]
Puedo trazar sin problemas
plot(sodo)
points(df$Latitude ~ df$Longitude, col = "red", cex = 1)
proj4
Coincido con la cadena del archivo de forma a mi data.frame
CRSobj <- CRS("+proj=longlat +datum=NAD83 +no_defs +ellps=GRS80 +towgs84=0,0,0 ")
df@proj4string <- CRSobj
over(df, sodo)
Esto solo me da un montón de NA
valores. He intentado esta respuesta
spp <- SpatialPoints(df)
spp@proj4string <- CRSobj
over(spp, sodo)
pero aun así solo obtengo NA
valores. ¿Alguna idea de qué más debería probar?
Utilicé un enfoque similar a la respuesta aceptada en esta publicación, pero nunca estuve realmente satisfecho con ella, así que busqué alternativas y encontré la biblioteca sf .
Y usando esta biblioteca, puede escribir código como este:
Salida:
Publiqué este código en otra publicación que era una pregunta similar, aquí: Identifique el punto que contiene el polígono con el paquete R sf
fuente