R의 공간 연산자?


12

R에서 공간 선택 또는 필터를 어떻게 수행 할 수 있습니까? PostGIS에서 (예)를 사용 하여이 작업을 수행 할 수 있습니다.

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

그리고 그것은 대부분의 다른 GIS 소프트웨어에서 케이크 한 조각입니다. 그래서 R의 무언가가 다음과 같이 보일 것으로 기대합니다.

mypoint[within(mypoint, mypoly),]

하지만 어디에서나 리드를 찾을 수 없습니다. PostGIS / GEOS / JTS / Shapely에서 사용되는 일반적인 공간 술어 용어를 사용하는 것을 찾고 있습니다 (내부, 포함, 교차, 겹치기, 접촉 등; DWithin은 보너스 일 것입니다). 이 기능 또는 라이브러리가 R에 존재합니까? 그렇지 않다면 비슷한 것이 있습니까?

참고 : R에서는 sp객체 ( SpatialPointsDataFrame, 등)에 클래스를 사용합니다 .

답변:


11

특정 질문에 대해서는 point.in.polygon( docs ) 또는 overlay( vignette )를 사용하여 분석을 수행 할 수 있어야합니다.

공간 술어 언어는 구현하기가 쉽지 않으며 언급 한 모든 예제는 어느 시점에서 JTS의 포트 또는 랩퍼로 요약됩니다. R에서 GEOS에 직접 액세스 할 수있는 최신 Google SOC 항목 인 rgeos 의 사전 알파 릴리스가 있습니다.

일반적으로 R 개발자는 R 자체 내에서 전체 GIS 구현을 유지 하려는지 또는 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여러분이 언급 한 것을 정말로 기대 하고 있으며 모든 이진 술어 등을 가지고 있습니다.
Mike T

GRASS가 포함 된 spgrass6 예제는 grass.osgeo.org/wiki/R_statistics
markusN을

1
rgeos이제 CRAN 에 있으며 설치 / 사용 / 등이 매우 간단합니다.
Mike T
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.