writeOGR dengan spatialpolygon yang disederhanakan oleh gSimplify

12

Saya menggunakan gSimplify(paket rgeos) untuk menyederhanakan geometri sebuah shapefile. Funcion berfungsi dengan baik, tapi sekarang saya tidak bisa menulis output di shapefile baru. Saya mencoba beberapa cara:

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

saya mendapat

obj harus berupa SpatialPointsDataFrame, SpatialLinesDataFrame, atau SpatialPolygonsDataFrame

dan dengan:

writePolyShape(simplyshape, file)

Saya mendapat:

Kesalahan: is (x, "SpatialPolygonsDataFrame") tidak BENAR

andriatz
sumber

Jawaban:

8

Pindahkan objek Anda ke -class Spatial*DataFrame(Points / Lines / Polygons) yang sesuai, misalnya untuk SpatialPolygonsmenggunakan 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"
rcs
sumber
5

Anda perlu mengonversi SpatialPolygonskelas Anda ke SpatialPolygonsDataFramekelas. Sebagai contoh:

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")
Harun
sumber