writeOGR avec un polygone spatial simplifié par gSimplify


12

J'utilise gSimplify(package rgeos) pour simplifier les géométries d'un fichier de formes. La fonction fonctionne bien, mais maintenant je ne peux pas écrire la sortie dans un nouveau fichier de formes. J'ai essayé plusieurs façons:

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

Je reçois

obj doit être un SpatialPointsDataFrame, SpatialLinesDataFrame ou SpatialPolygonsDataFrame

et avec:

writePolyShape(simplyshape, file)

Je reçois:

Erreur: est (x, "SpatialPolygonsDataFrame") n'est pas VRAI

Réponses:


8

Obligez votre objet à la Spatial*DataFrameclasse appropriée (Points / Lignes / Polygones), par exemple pour SpatialPolygonsutiliser 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

Vous devez convertir votre SpatialPolygonsclasse en SpatialPolygonsDataFrameclasse. Par exemple:

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")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.