2016-12-05 10 views
7

シェイプファイル(ここではhttp://www.car.gov.br/publico/municipios/downloads?sigla=MA(任意))をダウンロードできます。ここで、各ポリゴンは農家のプライベートプロパティを表しています。ただし、ポリゴンは重なり合っています。実行する必要のある分析については、エリアを2回(つまり、2つのプロパティで)計上することはできません。したがって、重複する領域では、この重複領域を最小面積のポリゴンに割り当て、別の領域から消去したいと考えました。ポリゴンの重複領域(オーバーラップ)を1つのポリゴンに割り当てる

私はthis oneのような他の質問を見ました。しかし、誰も実際にこれに対処していません。

答えて

3

rgeos::gDifferenceを使用して、大きいポリゴンから小さなポリゴンを差し引くことで、これを行うことができます。

例:

まず、我々は我々が今、私たち

a1 = gArea(p1) 
## [1] 320000 
a2 = gArea(p2) 
## [1] 150000 

小さくなる見つけるために gAreaを使用することができます

library(sp) 
library(rgeos) 
p1 <- Polygon(matrix(c(
    100, 100, 
    100, 500, 
    900, 500, 
    900, 100, 
    100, 100), ncol=2, byrow = T)) 
p2 <- Polygon(matrix(c(
    50, 400, 
    50, 600, 
    800, 600, 
    800, 400, 
    50, 400), ncol=2, byrow = T)) 
p1 <- SpatialPolygons(list(Polygons(list(p1), "p1"))) 
p2 <- SpatialPolygons(list(Polygons(list(p2), "p2"))) 
plot(p1) 
plot(p2, add=T) 

enter image description here

に証明するためにいくつかのダミーポリゴンを作ります交差点をより大きなものから取り除くことができます

if (a1>a2){ 
    p3 = gDifference(p1,p2) 
    p4 = p2 
} else { 
    p3 = gDifference(p2,p1) 
    p4 = p1 
} 
plot(p3) 

enter image description here

2つのポリゴンが一緒にこの

plot(p4, add=T) 

enter image description here

次のようになります。このようにしてポリゴン
関連する問題