R을 사용하여 한 다각형과 다른 다각형의 교차를 제거합니까?


9

Poly2에서 Poly1으로 교차를 제거하려고합니다. 아래는 두 다각형의 좌표입니다.

> coords1
          [,1]     [,2]
 [1,] 992.0161 7462.531
 [2,] 950.1962 7413.532
 [3,] 902.3632 7421.207
 [4,] 706.1985 7472.378
 [5,] 654.0139 7711.760
 [6,] 657.5960 7726.950
 [7,] 786.2667 7844.380
 [8,] 789.5935 7842.925
 [9,] 981.7046 7498.659
[10,] 983.4246 7493.271
[11,] 990.6680 7469.888
[12,] 992.0161 7462.531
> coords2
         [,1]     [,2]
[1,] 930.3464 7607.313
[2,] 979.3528 7502.470
[3,] 865.8662 7484.337
[4,] 850.5665 7594.947
[5,] 930.3464 7607.313

Poly1<-Polygon(coords1)
Poly2<-Polygon(coords2)

2 개의 다각형은 다음과 같습니다 여기에 이미지 설명을 입력하십시오. 끝에서 얻고 싶은 것은 연한 파란색 (Poly2) 영역이없는 진한 파란색 다각형 (Poly1)입니다. 즉 새 동부 좌표입니다.

답변:


7

rgeos 패키지 에서이gDifference 기능을 사용해보십시오 .

coords1 <- as.matrix(read.table(textConnection("
992.0161 7462.531
950.1962 7413.532
902.3632 7421.207
706.1985 7472.378
654.0139 7711.760
657.5960 7726.950
786.2667 7844.380
789.5935 7842.925
981.7046 7498.659
983.4246 7493.271
990.6680 7469.888
992.0161 7462.531
")))

coords2 <- as.matrix(read.table(textConnection("
930.3464 7607.313
979.3528 7502.470
865.8662 7484.337
850.5665 7594.947
930.3464 7607.313
")))

library("sp")
poly1 <- Polygon(coords1)
poly2 <- Polygon(coords2)
# create SpatialPolygons objects
p1 <- SpatialPolygons(list(Polygons(list(poly1), "p1")))
p2 <- SpatialPolygons(list(Polygons(list(poly2), "p2")))

library("rgeos")
res <- gDifference(p1, p2)
plot(res, col="blue")

g 차이 결과


5

사용하는 솔루션 rgeos::gDifference이 훨씬 빠르지 만 간단한 SpatialPolygons객체를 반환 합니다.

두 개의 작업을 SpatialPolygonsDataFrame하고 데이터 프레임 정보를 유지하려는 경우 간단히 수행하면 결과는 다음과 SpatialPolygonsDataFrame같습니다.

library(raster)

res <- p1 - p2

이 솔루션을 사용하면 "이진수 연산자에 대한 숫자가 아닌 인수"라는 오류가 발생합니다.
Ashe

@Ashe, 입력 class(my_obj)하여 두 개체가 모두 있는지 확인하십시오SpatialPolygonsDataFrame
rafa.pereira

실로 나는 SpatialPolygonsDataFrame수업을 듣는다.
Ashe

흠. 왜 이런 일이 일어날 지 잘 모르겠습니다. 데이터 정보를 유지하면서 두 개의 SpatialPolygonsDataFrames의 교차를 제거하는 방법에 대한 새로운 질문을 열어야 할 것입니다.
rafa.pereira

1
문제를 해결했습니다. raster이 솔루션이 작동 하려면 라이브러리 를 설치 해야했습니다. 답변에 추가하면 도움이 될 것입니다. 또한이 답변에 대한 신용 : gis.stackexchange.com/a/169597/93643
Ashe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.