writeOGR con un polígono espacial simplificado por gSimplify


12

Estoy usando gSimplify(paquete rgeos) para simplificar las geometrías de un shapefile. La función funciona bien, pero ahora no puedo escribir la salida en un nuevo archivo de forma. Intenté algunas formas:

writeOGR(simplyshape, file, driver="ESRI Shapefile", layer='test')

yo obtengo

obj debe ser un SpatialPointsDataFrame, SpatialLinesDataFrame o SpatialPolygonsDataFrame

y con:

writePolyShape(simplyshape, file)

Yo obtengo:

Error: is (x, "SpatialPolygonsDataFrame") no es VERDADERO

Respuestas:


8

Coaccione su objeto a la Spatial*DataFrameclase apropiada (Puntos / Líneas / Polígonos), por ejemplo, para SpatialPolygonsusar as(x, "SpatialPolygonsDataFrame" ):

R> l <- readWKT("LINESTRING(0 7,1 6,2 1,3 4,4 1,5 7,6 6,7 4,8 6,9 4)")
R> x1 <- gSimplify(p, tol=10)
R> class(x1)
[1] "SpatialPolygons"
attr(,"package")
[1] "sp"
R> x2 <- as(x, "SpatialPolygonsDataFrame")
R> class(x2)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"

5

Necesitas convertir tu SpatialPolygonsclase en una SpatialPolygonsDataFrameclase. Por ejemplo:

require(rgdal)
require(rgeos)

# Read shapefile
shp = 'C:/temp/myshp.shp'
myshp = readOGR(shp, layer = basename(strsplit(shp, "\\.")[[1]])[1])

# Read shapefile attributes
df = data.frame(myshp)

# Simplify geometry using rgeos
simplified = gSimplify(myshp, tol = 1000, topologyPreserve=FALSE)

# Create a spatial polygon data frame (includes shp attributes)
spdf = SpatialPolygonsDataFrame(simplified, df)

# Write to shapefile
writeOGR(spdf, layer = 'myshp_simplified', 'C:/temp', driver="ESRI Shapefile")
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.