web-dev-qa-db-ja.com

ポイントから凸包ポリゴンを作成し、シェープファイルとして保存します

Rでの変換の問題に関する助けが必要です。

ポイントクラウドの 凸包 を計算しました。凸包を形成する点から、ポリゴンオブジェクトを作成し、それをとして保存しますGISソフトウェア(ArcMapなど)で読み取ることができるshapefile

私のコードは次のようになります:

gps <- read.csv(f)  ##reads the lat-long coordinates  file 
x <- gps$LONGITUDE  ##tells R which columns is which
y <- gps$LATITUDE
z<-chull(x,y)       ##calculates the convex hull --this is just a list of x-y points, N vertex 
dfHull <-cbind(x[z],y[z])  ##the convex hull expressed as a list of selected x-y points
plot(dfHull)     ##this plots the vertex of the polygon, just a check
lines(dfhull)    ##plots the polygon in screen

##generate polygon shapefile, from dfHull, and save it externally as a shapefile ???

ソースファイルには、緯度経度の座標のみが含まれます。例:

52.73336     N  0.365974
52.7332  N  0.366051
52.73289     N  0.36636
52.73297     N  0.366258
52.73298     N  0.366243
52.733   N  0.366112
52.73308     N  0.365942
52.73317     N  0.365881
52.73321     N  0.36593
52.73328     N  0.365942
52.73352     N  0.36579
52.73362     N  0.365678
52.73391     N  0.365536
52.7373  N  0.36543
52.73289     N  0.36728

これらを支援するためのパッケージ(rgdal、maptoolsなど)があることは知っていますが、空間的なものにはあまり慣れていません。本当に必要なのは、ポリゴンオブジェクトを生成してシェープファイルとして保存することだけです。

助けてくれてありがとう。よろしくお願いします。

20
user3310782

次に、SpatialPolygonsDataFrameを作成する簡単な例を示します。これは、rgdal::writeOGR()を使用してシェープファイルとして保存できます。

set.seed(1)
dat <- matrix(stats::rnorm(2000), ncol = 2)
ch <- chull(dat)
coords <- dat[c(ch, ch[1]), ]  # closed polygon

plot(dat, pch=19)
lines(coords, col="red")

convex hull

library("sp")
library("rgdal")

sp_poly <- SpatialPolygons(list(Polygons(list(Polygon(coords)), ID=1)))
# set coordinate reference system with SpatialPolygons(..., proj4string=CRS(...))
# e.g. CRS("+proj=longlat +datum=WGS84")
sp_poly_df <- SpatialPolygonsDataFrame(sp_poly, data=data.frame(ID=1))
writeOGR(sp_poly_df, "chull", layer="chull", driver="ESRI Shapefile")
26
rcs