Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как квалифицировать SpatialPolygonsDataFrame с помощью другого SpatialPolygonsDataFrame?

Автор вопроса: Matt L.Ответов: 1

У меня есть шейп-файлы из данных переписи населения США census.gov.

Я прочитал файлы в R с помощью readOGR из библиотеки rdgal.

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

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

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

Как мне извлечь многоугольники с более низким разрешением и связанные данные из 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)
    }
}

rspgiscensus

Ответы

Ответ 1 · Edzer Pebesma

пытаться

gContains(sp1, sp2, byid = TRUE)

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

sp2[sp1,]

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы