문제

R, R에서 일부 지오 프로세싱 작업을 실행 중이며 환경 정보의 래스터를 클리핑하기 위해 일부 다각형을 만들려고합니다.나는 다소 복잡한 다각형을 버퍼링하고 있으며, 이것은 내가 제거하고 싶은 작은 양버어 로머를 낳습니다.Arcgis에서는 이것이 다각형에서 멀티 파트 (또는 해당 라인을 따라 무언가를 따라 뭔가를 따라)로 변환 한 다음이 작업을 수행하는 방법을 모르겠습니다.

문제를 보여주는 예제는 다음과 같습니다.

require(maptools)
require(rgeos)

data(wrld_simpl)
wrld_simpl[which(wrld_simpl@data$NAME=='Greece'),]->greece
proj4string(greece)<-CRS('+proj=lonlat +datum=WGS84')
gBuffer(greece,width=0.5)->buf
plot(buf)
.

내가 정말로 원하는 것은 다각형의 바깥 쪽 경계는 그 안에 아무 것도 없습니다.어떤 아이디어도 있습니까?

도움이 되었습니까?

해결책

버퍼의 경계를 형성하는 한 링을 만들고 싶다면 다음과 같이하십시오.

plot(SpatialPolygons(list(Polygons(list(buf@polygons[[1]]@Polygons[[1]]),ID=1))),lwd=2)
.

는 귀하의 경우에 해당하는 매우 임시적인 방법입니다.

정말로 원하는 것은 나머지가 구멍이 될 것이므로 ringDir=1로 모든 링을 얻는 것입니다.버퍼가 여전히 두 개의 연결이 끊어진 섬이 여전히있을 수 있으므로 모든 링이 필요합니다.

outerRings = Filter(function(f){f@ringDir==1},buf@polygons[[1]]@Polygons)
outerBounds = SpatialPolygons(list(Polygons(outerRings,ID=1)))
plot(outerBounds)
.

는 트릭을 할 수 있습니다 ... width=0.1로 시도해보십시오. 그리고 여러 섬으로 작동하지만 여전히 구멍을 제거합니다.

다른 팁

그리스에 맞는 볼록한 선체를 원한다면 gConvexHull 패키지에서 rgeos 함수를 사용할 수 있습니다.질문의 제목의 사건이었던 것처럼, 그들에게 구멍이있는 다각형을 다루는다면 이는 반드시 취해야 할 것입니다.그러나 귀하의 예에서는 아래의 접근 방식이 당신이 원하는 곳에서 당신을 얻을 것 같습니다.

myCH <- gConvexHull(greece)

plot(myCH)
. 와 같은 것을 생성 할

여기에 이미지 설명을 입력하십시오

모든 것이 맞는지 확인하려면

plot(myCH)
plot(greece,add=TRUE)
.

여기에 이미지 설명

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top