Operatory przestrzenne w R?

12

Jak mogę dokonać selekcji przestrzennej lub filtrów w R? Mogę to zrobić w PostGIS za pomocą (np.):

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

i podobnie jest w przypadku większości innych programów GIS. Spodziewałbym się więc, że coś w R będzie wyglądać:

mypoint[within(mypoint, mypoly),]

ale nigdzie nie mogę znaleźć żadnych potencjalnych klientów. Szukam czegoś, co wykorzystuje wspólną terminologię predykatów przestrzennych używaną w PostGIS / GEOS / JTS / Shapely (wewnątrz, zawiera, przecina, nakłada się, dotyka itp .; DWithin byłby bonusem). Czy ta funkcjonalność lub biblioteka istnieje dla R? Jeśli nie, to czy jest coś podobnego?

Uwaga: W R używam tej spklasy dla moich obiektów ( SpatialPointsDataFrameitp.).

Mike T.
źródło

Odpowiedzi:

11

W przypadku konkretnego pytania powinieneś być w stanie użyć point.in.polygon( dokumentów ) lub overlay( winiety ) do przeprowadzenia analizy.

Przestrzenny język predykatów nie jest prosty do wdrożenia, a wszystkie wspomniane przykłady sprowadzają się w pewnym momencie do portów lub opakowań JTS. Istnieje pre-alfa wersja rgeos , najnowszy wpis Google SOC, który zapewnia dostęp do GEOS bezpośrednio z R.

Ogólnie rzecz biorąc, wydaje się, że programiści R zmagają się z tym, czy chcą utrzymać pełną implementację GIS w samym R, czy zamiast tego polegają na ułatwianiu pakietów, które umożliwiają interakcję z PostGIS, GRASS ( spgrass), SAGA ( rsaga) i podobnymi, aby zapewnić głębsze doświadczony przestrzennie.

scw
źródło
point.in.polygonto dobry początek dla podstawowych wielokątów, choć nieco prymitywny (np.): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) Naprawdę nie mogę się doczekać, aby rgeoswspomnieć, i ma wszystkie predykaty binarne i więcej.
Mike T
Przykłady spgrass6 z GRASS, patrz grass.osgeo.org/wiki/R_statistics
markusN
1
rgeosjest teraz w CRAN i jest bardzo prosty w instalacji / użyciu / etc.
Mike T