2016-06-26 4 views
0

У меня есть SpatialPolygonsDataFrame из испанских переписных участков и набор координат.Как получить SpatialPolygonsDataframe, который содержит координаты

Что я хотел бы сделать, так это получить подмножество тракта переписи, содержащее пару координат (как новый SpatialPolygonsDataFrame).

Я пришел ближе, используя 'over', следуя этому примеру: https://www.nceas.ucsb.edu/scicomp/usecases/point-in-polygon Но 'over' не возвращает SpatialPolygonsDataFrame. seccion содержит столбцы «Long» и «Lat» с координатами. map является SpatialPolygonsDataFrame

# turn seccion into a SpatialPoints 
coordinates(seccion) <- c("Long", "Lat") 
# the coordinates are in the same lat/lon reference system (as is "map") 
proj4string(seccion) <- proj4string(map) 
# use 'over' with map as a SpatialPolygonsDataFrame 
# object, to determine which section (if any) contains the coordinates 
sec <- over(seccion, map) 

Я попробовал другие вещи, а также имел взглянуть на библиотеку растровой, но до сих пор, не повезло ...

ответ

1

Вы не можете использовать функцию intersect из raster пакета

Пример данных:

library(raster) 
pols <- shapefile(system.file("external/lux.shp", package="raster")) 
pnts <- SpatialPoints(matrix(c(6, 5.91, 6.13, 6.23, 6.18, 
         50.08, 49.95, 49.63, 49.64, 49.59), 
         ncol=2), proj4string=crs(pols)) 

x <- intersect(pols, pnts) 

выписка результат:

plot(pols, col='light gray') 
plot(x, col='blue', add=TRUE) 
points(pnts, pch=20, col='red') 

Это является попасть туда можно через over (обратите внимание на порядок аргументов)

v <- over(pols, pnts) 
xx <- pols[which(!is.na(v)), ]