【发布时间】:2019-02-17 00:22:56
【问题描述】:
尊敬的堆栈溢出社区,
这是我在这个网站上的第一个问题。我正在使用 R 并尝试使用 sf::st_union 合并两个 shapefile。不过,虽然 shapefile 占用的空间不大,但 union 还是很重的!
这是我终端中尺寸的最小工作示例:
library(sf)
canada <- st_read("./gpr_000b11a_e.shp", quiet = TRUE)
usa <- st_read("./cb_2017_us_state_500k.shp", quiet = TRUE)
usa <- st_transform(x = usa, crs = st_crs(canada))
north_america = st_union(usa, canada)
以及三个对象的大小:
print(object.size(canada), units = "auto")
58.9 Mb
print(object.size(usa), units = "auto")
4.6 Mb
print(object.size(north_america), units = "auto")
3 Gb
您对正在发生的事情有任何想法吗?我怎样才能让事情变得更轻松?另外,我想要的只是几何图形,但sf::st_geometry 并没有使对象变小。
【问题讨论】:
-
可能边界没有精确对齐,所以它计算了很多小孔。从包含两个国家/地区的数据开始(可能来自rnaturalearth)可能会有所帮助。或者先添加一个小缓冲区。
-
@alistaire 谢谢,我现在选择了 rnaturalearth。
sf::st_buffer从昨天晚上开始运行到现在还没有完成,所以我可能会放弃 -
真的不应该花那么长时间。也许如果你在一台非常低功率的机器上使用超高分辨率地图,我猜。也许首先尝试使用真正的低分辨率版本以确保它正在做你想要的?显然,它并不完美,但它是检查代码的一种相对快速的方法。