Operatori spaziali in R?


12

Come posso effettuare selezioni spaziali o filtri in R? Posso farlo in PostGIS usando (es.):

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

ed è allo stesso modo un gioco da ragazzi nella maggior parte degli altri software GIS. Quindi mi aspetto che qualcosa in R assomigli a:

mypoint[within(mypoint, mypoly),]

ma non riesco a trovare alcun cavo da nessuna parte. Sto cercando qualcosa che usi la terminologia del predicato spaziale comune usata in PostGIS / GEOS / JTS / Shapely (dentro, contiene, interseca, sovrapposizioni, tocchi, ecc .; DWithin sarebbe un bonus). Questa funzionalità o libreria esiste per R? In caso contrario, c'è qualcosa di simile?

Nota: in R, uso la spclasse per i miei oggetti ( SpatialPointsDataFrame, ecc.).

Risposte:


11

Per la tua domanda specifica, dovresti essere in grado di utilizzare point.in.polygon( documenti ) o overlay( vignetta ) per eseguire l'analisi.

Un linguaggio di predicato spaziale non è banale da implementare e tutti gli esempi che hai citato si riducono a porte o wrapper di JTS ad un certo punto. Esiste una versione pre-alpha di rgeos , una recente voce SOC di Google che fornisce l'accesso a GEOS direttamente da R.

In generale, sembra che gli sviluppatori di R stiano affrontando la questione se vogliono mantenere un'implementazione GIS completa all'interno di R stesso, o invece fare affidamento su pacchetti di facilitazione che consentano l'interazione con PostGIS, GRASS ( spgrass), SAGA ( rsaga) e simili per fornire approfondimenti esperto di spazio.


point.in.polygonè un buon inizio per i poligoni di base, anche se un po 'rozzo (ad es.): point.in.polygon(pnt@coords[,1], pnt@coords[,2], lake@polygons[[1]]@Polygons[[1]]@coords[,1], lake@polygons[[1]]@Polygons[[1]]@coords[,2]) non vedo davvero l'ora rgeosche tu abbia menzionato, e abbia tutti i predicati binari e altro ancora.
Mike T,

Per esempi spgrass6 con GRASS, vedere grass.osgeo.org/wiki/R_statistics
markusN

1
rgeosè ora su CRAN ed è molto semplice da installare / utilizzare / ecc.
Mike T,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.