g简化不简化R中的shapefile

plu*_*uke 3 r shapefile

我无法在R中简化shapefile

Shapefile来自:https://geoportal.statistics.gov.uk/Docs/Boundaries/Local_authority_district_(GB)_2014_Boundaries_ (Generalised_Clipped).zip

library(tmap)
library(maptools)
library(ggmap)

England <- readOGR(dsn = "...")

#works fine
print(qtm(England, "LAD14CD", borders = NA, fill.title = "A-Level" )) 

# simplify the polygons
England<-gSimplify(England,tol=0.01, topologyPreserve=TRUE)

print(qtm(England, "LAD14CD", borders = NA, fill.title = "A-Level" )) 
Run Code Online (Sandbox Code Playgroud)

给出错误:

Error in process_fill(data, g$tm_fill, gborders, gt, gf, z = z + which(plot.order ==  : 
Fill argument neither colors nor valid variable name(s)
Run Code Online (Sandbox Code Playgroud)

如果查看英国数据对象,您可以看到它已从大空间polygonDataFrame更改为大空间多边形并删除了@data

相反,如果您尝试仅简化Shapefile中的多边形:

England@polygons<-gSimplify(England@polygons,tol=0.01, topologyPreserve=TRUE)
Run Code Online (Sandbox Code Playgroud)

它说:

Error in gSimplify(England@polygons, tol = 0.01, topologyPreserve = TRUE) : 
cannot get a slot ("proj4string") from an object of type "list"
Run Code Online (Sandbox Code Playgroud)

如何从shapefile中简化多边形?

Spa*_*man 8

返回gSimplify仅仅是几何,而不是属性,因此您必须SpatialPolygonsDataFrame使用简化几何和原始属性数据构造一个新的:

> England2 <-gSimplify(England,tol=0.01, topologyPreserve=TRUE)
> England3 = SpatialPolygonsDataFrame(England2, data=England@data)
Run Code Online (Sandbox Code Playgroud)

我认为保证多边形的顺序相同,除非有任何简化.检查length(England2)与行数相同England,或匹配ID上的行.

  • 了解如何进行ID匹配会很有帮助. (3认同)