绘制地理多边形不是 R 的强项,但如果做得好,它会非常有回报。我正在使用来自英国的数据,多边形边界中的细节高得离谱,这使得任何绘图或操作功能(尤其是在运行 fortify 以使其支持 ggplot 之后)都很慢。
合乎逻辑的方法是简化多边形几何形状,因此它们不太复杂。
我按照这篇文章在 R 中实现了 Douglas-Peucker 算法来执行此操作,但速度非常慢。应用于此数据集(英格兰地区),以下代码在我的配备 16 Gb RAM 的 Intel® Core™ i7-3630QM 机器上运行大约需要 10 分钟:
for(i in 1:length(gors@polygons)){
for(j in 1:length(gors@polygons[[i]]@Polygons)){
temp <- as.data.frame(gors@polygons[[i]]@Polygons[[j]]@coords)
names(temp) <- c("x", "y")
temp2 <- dp(temp, 0.01)
gors@polygons[[i]]@Polygons[[j]]@coords <- as.matrix(cbind(temp2$x, temp2$y))
}QGIS
}
在QGIS中,相同的功能大约需要一秒钟。当然,我将来可能会使用 QGIS 实现,但只是发现 R 实现需要很长时间才令人困惑。非常感谢任何如何使其更快或以更有效的方式实现算法的想法。