Просторові оператори в R?


12

Як я можу зробити просторові виділення або фільтри в R? Я можу це зробити в PostGIS, використовуючи (наприклад):

SELECT * FROM mypoint, mypoly
WHERE ST_Within(mypoint.geom, mypoly.geom);

і це аналогічно шматок пирога в більшості інших програм ГІС. Тож я очікую, що щось у R виглядатиме так:

mypoint[within(mypoint, mypoly),]

але я ніде не можу знайти жодного відвідника. Я шукаю те, що використовує загальну просторову термінологію предикатів, що використовується в PostGIS / GEOS / JTS / Shapely (всередині, містить, перетинає, перекриває, торкається тощо; DWithin буде бонусом). Чи існує ця функціональність або бібліотека для R? Якщо ні, чи є щось подібне?

Примітка. У R я використовую spклас для своїх об'єктів ( SpatialPointsDataFrameтощо).

Відповіді:


11

Для вашого конкретного запитання ви повинні мати можливість використовувати point.in.polygon( документи ) або overlay( віньєтку ) для проведення аналізу.

Просторова мова предикатів не тривіальна для реалізації, і всі згадані вами приклади зводяться до портів або обгортки JTS в якийсь момент. Існує попередня альфа-версія rgeos , нещодавній запис Google SOC, який забезпечує доступ до GEOS безпосередньо з Р.

Загалом, здається, що розробники R стикаються з тим, чи хочуть вони підтримувати повну реалізацію ГІС в межах самого R, або замість цього покладаються на полегшення пакетів, які дозволяють взаємодію з PostGIS, GRASS ( spgrass), SAGA ( rsaga) тощо надавати більш глибокі просторовий кмітливість.


point.in.polygonє гарним початком для базових багатокутників, хоча трохи грубо (наприклад): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) я дуже з нетерпінням чекаю на rgeosте, що ви згадали, і має всі бінарні предикати та інше.
Майк Т

Для прикладів spgrass6 з GRASS див. Trave.osgeo.org/wiki/R_statistics
markusN

1
rgeosзараз на CRAN , і його дуже просто встановити / використовувати / тощо.
Майк T
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.