Operator spasial di R?

12

Bagaimana saya bisa melakukan seleksi spasial atau filter dalam R? Saya dapat melakukan ini di PostGIS menggunakan (misalnya):

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

dan juga sepotong kue di sebagian besar perangkat lunak GIS lainnya. Jadi saya berharap sesuatu dalam R terlihat seperti:

mypoint[within(mypoint, mypoly),]

tetapi saya tidak dapat menemukan petunjuk di mana pun. Saya mencari sesuatu yang menggunakan terminologi predikat spasial umum yang digunakan dalam PostGIS / GEOS / JTS / Shapely (di dalam, berisi, berpotongan, tumpang tindih, menyentuh, dll.; DWithin akan menjadi bonus). Apakah fungsi atau pustaka ini ada untuk R? Jika tidak, adakah yang serupa?

Catatan: Di R, saya menggunakan spkelas untuk objek saya ( SpatialPointsDataFrame, dll).

Mike T
sumber

Jawaban:

11

Untuk pertanyaan spesifik Anda, Anda harus dapat menggunakan point.in.polygon( dokumen ) atau overlay( sketsa ) untuk melakukan analisis.

Bahasa predikat spasial tidak sepele untuk diterapkan, dan semua contoh yang Anda sebutkan bermuara pada port atau pembungkus JTS di beberapa titik. Ada rilis pre-alpha dari rgeos , entri SOC Google baru-baru ini yang menyediakan akses ke GEOS langsung dari R.

Secara umum, tampaknya pengembang R bergulat dengan apakah mereka ingin mempertahankan implementasi GIS penuh dalam R itu sendiri, atau sebaliknya mengandalkan pada paket fasilitasi yang memungkinkan interaksi dengan PostGIS, GRASS ( spgrass), SAGA ( rsaga) dan sejenisnya untuk memberikan lebih dalam pengetahuan spasial.

scw
sumber
point.in.polygonadalah awal yang baik untuk poligon dasar, meskipun agak kasar (misalnya): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) Saya benar-benar menantikan rgeosyang Anda sebutkan, dan memiliki semua predikat biner dan banyak lagi.
Mike T
Untuk contoh spgrass6 dengan GRASS, lihat grass.osgeo.org/wiki/R_statistics
markusN
1
rgeossekarang di CRAN , dan sangat mudah untuk menginstal / menggunakan / etc.
Mike T