【问题标题】:Using st_read to import large geojson in iterations R使用 st_read 在迭代 R 中导入大型 geojson
【发布时间】:2019-03-24 18:11:58
【问题描述】:

我想使用 R 中的 st_read 将一个非常大的 geojson 导入一个简单的特征对象,但是从 geojson 转换为 sf 时对硬件的需求似乎很大。例如,导入用于构建俄亥俄州 (https://github.com/Microsoft/USBuildingFootprints) 的 1.2 GB geojson 的 Microsoft 数据在转换时会占用超过 32 GB 的 RAM。它们是一种在函数中遍历 geojson 行的方法,这样我就可以导入整个文件的部分内容而不会耗尽所有 RAM,类似于 read.csv 中的跳过行?

【问题讨论】:

    标签: r geojson sf


    【解决方案1】:

    使用 library(geojsonsf) 在我的 16gb RAM 的 Mac 上似乎可以正常工作

    library(geojsonsf)
    library(sf)
    
    sf <- geojsonsf::geojson_sf("~/Downloads/Ohio.geojson")
    
    sf
    # Simple feature collection with 5449419 features and 0 fields
    # geometry type:  POLYGON
    # dimension:      XY
    # bbox:           xmin: -84.82027 ymin: 38.40334 xmax: -80.51887 ymax: 41.97041
    # epsg (SRID):    4326
    # proj4string:    +proj=longlat +datum=WGS84 +no_defs
    # First 10 features:
    #   geometry
    # 1  POLYGON ((-84.81222 39.9087...
    # 2  POLYGON ((-84.80084 39.8882...
    # 3  POLYGON ((-84.78565 39.8811...
    # 4  POLYGON ((-84.7373 39.9014,...
    # 5  POLYGON ((-84.73916 39.8980...
    # 6  POLYGON ((-84.80422 39.8646...
    # 7  POLYGON ((-84.80025 39.8592...
    # 8  POLYGON ((-84.79336 39.8593...
    # 9  POLYGON ((-84.79268 39.8604...
    # 10 POLYGON ((-84.80194 39.8639...
    

    【讨论】:

    • 厉害,为什么比顺丰快?是否包含 CPP 源文件?
    • @Sergio - 是的,但sf 也是如此。主要区别在于它使用rapidjson,这是最快的 JSON 解析库之一
    • 啊,是的,这比 st_read 更有效。感谢您的帮助!
    • 第二个。我的 RAM 在尝试加载我的 geojson 文件时以各种可能的方式崩溃,使用 geojson_sf 花了不到一分钟。
    • 太棒了。谢谢@SymbolixAU!我确实有同样的问题。我通常会ogr2ogr,创建一个 Postgres 数据库,对 AOI 进行空间过滤等,但是这个 geojson 解析器速度非常快。干的很好! github.com/SymbolixAU/geojsonsf
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2019-10-31
    • 2014-06-30
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多