2016-02-17 8 views
0

У меня есть Shapefiles из данных переписи из US census.gov.Как я могу определить SpatialPolygonsDataFrame с помощью другого SpatialPolygonsDataFrame?

Я прочитал файлы в R, используя readOGR из библиотеки rdgal.

sp1: избирательный округ - SpatialPolygonsDataFrame

enter image description here

sp2: уровень блока для большей площади и с более высоким разрешением, чем sp1 - SpatialPolygonsDataFrame

enter image description here

Я попытался используя gIntersection из библиотеки rgeos, но это не r что мне нужно. Или я не могу понять, как правильно его использовать

Как извлечь многоугольники с низким разрешением и связанные с ними данные из sp2 с помощью sp1 в качестве пространственного ограничения? Другими словами, я хочу знать все блоки внутри sp1, где sp1 и sp2 пересекаются.

тока Рабочий раствор

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

library(rgeos) 
result <- vector() 
for (i in 1:nrow(sp2)) { 
    if(gContains(sp1, sp2[i,])) { 
     result <- c(result, i) 
    } 
} 

ответ

0

попробовать

gContains(sp1, sp2, byid = TRUE) 

для парного содержит соотношение для художественных пар.

sp2[sp1,] 

выбирает те sp2 функции, которые пересекаются с sp1, но прочитать vignette('over'), чтобы узнать об ограничениях (она включает в себя функции, которые только касание).

+0

Справочная документация не имела большого смысла, но установка byid = true делает трюк. http://rpubs.com/washcycle/district99tabblockmap –