【发布时间】:2015-01-20 21:00:11
【问题描述】:
我正在尝试在 R 中执行溶解。我以前在 QGIS 中完成过此操作,但我想在 R 中实现此操作,以便尽可能与我的工作流程的其余部分集成。
我有一个带有小型地理多边形的 ESRI shapefile(输出区域,如果您熟悉英国人口普查地理)。我还提供了一个查找表,其中包含所有 OA 代码及其关联的聚合地理代码的列表。
我无法提供我正在处理的实际文件,但可以提供可比较的文件和以下可重现的最小示例:
- https://www.dropbox.com/s/4puoof8u5btigxq/oa-soa.csv?dl=1 (130kb csv)
- https://www.dropbox.com/s/xqbi7ub2122q14r/soa.zip?dl=1 (~4MB shp)
和代码:
require("rgdal") # for readOGR
require("rgeos") # for gUnion
require("maptools")
unzip("soa.zip")
soa <- readOGR(dsn = "soa", "england_oac_2011")
proj4string(soa) <- CRS("+init=epsg:27700") # British National Grid
lookup <- read.csv("oa-soa.csv")
slsoa <- gUnaryUnion(soa, id = lookup$LSOA11CD)
我也试过了:
slsoa <- unionSpatialPolygons(soa, lookup$$LSOA11CD)
但我的理解是,因为我安装了 (R)GEOS,所以无论如何它都使用 rgeos 包中的 gUnion 方法。
所以,我的问题是溶解似乎有效;我没有收到错误消息,并且 length() 函数表明我现在有更少的多边形:
length(soa@polygons) # 1,817
length(slsoa@polygons) # should be 338
但图看起来是相同的(即内部溶解没有起作用),如下两个图所示:
plot(soa)
plot(slsoa)
我在互联网和 stackoverflow 上四处寻找,看看我是否可以解决我的问题并找到了几篇文章但没有成功。
- problems when unioning and dissolving polygons in R(我认为 shapefile 的质量不是问题,因为我使用查找表来匹配地理位置)。
- https://www.nceas.ucsb.edu/scicomp/usecases/PolygonDissolveOperationsR(使用两个 sp 对象,而不是查找表)。
- https://gis.stackexchange.com/questions/93441/problem-with-merging-and-dissolving-a-shapefile-in-r(据我所知,我已按照相关步骤进行操作)
有谁知道我做错了什么以及为什么情节不能正常工作?
非常感谢。
【问题讨论】: