sf パッケージでポリゴン フィーチャをディゾルブする 質問する

sf パッケージでポリゴン フィーチャをディゾルブする 質問する

ディゾルブはSFアプローチとして議論される一般的な地理処理技術である。ここ

ArcGIS で機能するディゾルブを再現しようとしています。ArcGIS で郡を 2 つのグループに分けて考えてみましょう。

ArcGIS のディゾルブ コマンドは、東半島が追加の個別のポリゴンで構成されているという事実に関係なく、2 つのポリゴンを生成します。次のようになります。

これは sf で再現したい機能ですが、以下に示すようにできません。

nc <- st_read(system.file("shape/nc.shp", package="sf"))

#create two homogenous spatial groups
nc$group <- ifelse(nc$CNTY_ <= 1980,1,2)

#plot
ggplot() + geom_sf(data=nc, aes(fill = factor(group)))  

#dissolve
library(dplyr)#the summarize function is based on the one from dplyr (which may interfere with summarize from other libraries that may be loaded)
nc_dissolve <- nc %>% group_by(group) %>% summarize() 

#plot dissolved
ggplot() + geom_sf(data=nc_dissolve, aes(fill = factor(group)))

#Cartographically, it looks like we have two polygons, but there are 
#actually several more wrapped up as MULTIPOLYGONS. We can plot these.
t <- nc_dissolve %>% st_cast() %>% st_cast("POLYGON")
ggplot() + geom_sf(data=t, aes(fill=factor(row.names(t))))

半島には複数の余分なポリゴンがあることに注意してください。

ArcGIS の場合のように 2 つだけにするにはどうすればよいでしょうか? よろしくお願いします。

ベストアンサー1

ArcGIS がポリゴンをどのように定義するかについてはよく知りませんが、ポリゴンのシンプルなフィーチャ アクセス (ISO 標準) 仕様は、穴を表す 0 個以上の内部リングを持つ単一のリングです。つまり、その仕様では、メインの陸地といくつかの島がある場合、単一のポリゴンは存在しません。これらを単一のフィーチャとして表すには、対応するジオメトリ タイプはマルチポリゴンです。つまり、答えはnc_dissolve: です。2 つのフィーチャがあります。

おすすめ記事