【问题标题】:GeoTiff raster data to Delta Lake / Parquet format?GeoTiff 栅格数据到 Delta Lake / Parquet 格式?
【发布时间】:2022-10-15 03:50:53
【问题描述】:

我们的组织最近一直在使用 Databricks 进行 ETL 和数据集开发。但是,我发现栅格数据集的库/功能非常有限。周围有一些 raster/Spark 库,但还不是很成熟。例如GeoTrellisRasterFramesApache Sedona

因此,我一直在探索在 Databricks 平台上有效处理栅格数据的替代方法,该平台利用 Spark / Delta 表 / Parquet 文件。

我的一个想法是将栅格数据转储到简单的 x、y、值列并将它们作为表加载。如果我的其他数据集具有相同的分辨率(我将对它们进行预处理,以便它们是),那么我应该能够为屏蔽/加法/减法和更复杂的用户定义函数执行简单的 SQL 查询。

第一步,我想将我的栅格转储为 CSV 格式的点,然后我可以加载到 Delta 表中。但是在我的 Databricks 集群(128GB 内存,16 核)上运行 12 小时后,一个 3GB 的栅格仍然没有完成(我正在使用下面的 gdal2xyz 函数)。

有没有人有更快的方法将栅格转储到 CSV?甚至更好,直接以镶木地板格式。

python gdal2xyz.py -band 1 -skipnodata "AR_FLRF_UD_Q1500_RD_02.tif" "AR_FLRF_UD_Q1500_RD_02.csv"

也许我可以平铺栅格,使用并行处理将每个 CSV 转储到文件中,然后将 CSV 文件绑定在一起,但这似乎有点费力。

【问题讨论】:

    标签: gis databricks raster gdal terra


    【解决方案1】:

    GDAL 自 3.5 版起就有 parquet 驱动程序。因此,至少使用该版本,您应该能够像这样使用“terra”将栅格数据写入镶木地板

    library(terra)
    x <- rast(ncol=10, nrow=10, val=1:100)
    writeRaster(x, "file.pqt", driver="Parquet")
    

    您可以使用terra::gdal() 检查“terra”使用的版本。当前的 Windows CRAN 版本还没有(但几乎)

    gdal()
    #[1] "3.4.3"
    

    【讨论】:

      【解决方案2】:

      您可以使用 Sedona 轻松将 GeoTiffs 加载到 DataFrame 并将数据帧保存为 Parquet 格式。见这里:https://sedona.apache.org/api/sql/Raster-loader/

      【讨论】:

        猜你喜欢
        • 2021-03-26
        • 2016-11-17
        • 2020-04-21
        • 1970-01-01
        • 2021-09-17
        • 2021-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多