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

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"

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")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.