Підставити просторовий полігонDataFrame за ідентифікатором в R?


13

Я використовував gIntersectфункцію з rgeosпакета, щоб визначити, які багатокутники перетинаються у двох SpatialPolygonsDataFrames (spdfs). Результатом є логічна матриця з іменами рядків, що містять ідентифікатори полігону з sfdf # 1 та називають ідентифікатори полігону з spdf # 2. Я хотів би використовувати цю матрицю для підмноження двох оригінальних файлів spdfs, опускаючи ті багатокутники, які не перетинаються, перш ніж використовувати функцію gIntersection. Я можу легко перетворити логічну матрицю в два вектори ідентифікаторів (по одному для кожного spdf), які представляють ці багатокутники з принаймні деяким перекриттям.

Моє запитання - чи можу я використовувати вектор ідентифікаторів багатокутника для підмноження spdf? Якщо так, чи правильно вони будуть підмножувати значення в @dataслоті? Я знаю, що я, як правило, можна підмножити spdfs за допомогою цього синтаксису:

spdf[spdf@data$myVariable[someVector], ]

Це не працюватиме для ідентифікаторів, оскільки вони заглиблені набагато глибше у структурі списку spdf.

Відповіді:


11

Ідентифікатори матриці, повернені з gIntersect, повинні відповідати іменам рядків у кожному об'єкті sp-джерела. Ви повинні мати змогу просто проіндексувати позицію імен рядків для підмноження даних.

r <- c(1,5,3,9,10)
sp.polys <- sp.polys[r,]

Я просто хочу перевірити - чи це також буде працювати безпосередньо на об'єкт spdf? (тобто spdf[r, ])
Альберто

Так, він працює на sp-об'єктах, і індекс поширюється через ідентифікатори, які пов'язують усі об'єкти ігрових рядів, що відповідають іменам рядків @data.
Джефрі Еванс

Можливо, я не читаю правильно, але це виглядає трохи неправильно? Ви повинні витягнути на рядок r імена рядків, використовуючи цілі числа, витягуйте звичайно
MichaelChirico

@MichaelChirico для повернення відомого положення рядка це правильно. Якщо ви знаєте лише значення імен (рядків) рядків, ви могли б створити індекс, використовуючи щось на зразок якого (назви рядків (x)% у% c (1,5)) і, ні, якщо імена рядків не призначено справжній рядок символів ніж значення не потрібно цитувати. За замовчуванням назви рядків є цитованим вектором 1: n
Джеффрі Еванс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.