【问题标题】:Huge size simple feature大尺寸简单功能
【发布时间】: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从昨天晚上开始运行到现在还没有完成,所以我可能会放弃
  • 真的不应该花那么长时间。也许如果你在一台非常低功率的机器上使用超高分辨率地图,我猜。也许首先尝试使用真正的低分辨率版本以确保它正在做你想要的?显然,它并不完美,但它是检查代码的一种相对快速的方法。

标签: r sf


【解决方案1】:

使用 rbind 会提供你所追求的吗? 这是 rbind 的 sf 帮助的链接 https://r-spatial.github.io/sf/reference/bind.html

north_america = rbind(usa, canada)

【讨论】:

    猜你喜欢
    • 2012-05-31
    • 1970-01-01
    • 2020-04-19
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多