writeOGR với một spatialpolygon được đơn giản hóa bởi gSimplify


12

Tôi đang sử dụng gSimplify(gói rgeos) để đơn giản hóa hình học của một shapefile. Chức năng này hoạt động tốt, nhưng bây giờ tôi không thể viết đầu ra trong một shapefile mới. Tôi đã thử một số cách:

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

tôi có

obj phải là SpatialPointsDataFrame, SpatialLinesDataFrame hoặc SpatialPolygonsDataFrame

và với:

writePolyShape(simplyshape, file)

Tôi có:

Lỗi: là (x, "SpatialPolygonsDataFrame") không đúng

Câu trả lời:


8

Ép buộc đối tượng của bạn vào Spatial*DataFramelớp thích hợp (Điểm / Đường / Đa giác), ví dụ: để SpatialPolygonssử dụng 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

Bạn cần chuyển đổi SpatialPolygonslớp của bạn thành một SpatialPolygonsDataFramelớp. Ví dụ:

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")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.