Cree polígonos de casco convexo desde puntos y guarde como shapefile
polygon (1)
Aquí hay un ejemplo simple para crear un SpatialPolygonsDataFrame
, que se puede guardar como un shapefile con 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")
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")
Necesitando ayuda para un problema de conversión en R.
He calculado el casco convexo de una nube de puntos. Me gustaría, desde los puntos que forman el casco convexo, construir un objeto poligonal y guardarlo como un shapefile que pueda ser leído por un software GIS (ArcMap o similar).
Mi código se ve así:
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 ???
El archivo de origen solo contiene coordenadas de latitud larga, por ejemplo:
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
Sé que hay paquetes (rgdal, maptools, ..) para ayudar con estos, pero no estoy muy familiarizado con las cosas espaciales. Realmente todo lo que necesito es generar el objeto polígono y guardarlo como shapefile.
Cualquier ayuda apreciada. Gracias de antemano, dev.