我们的组织最近一直在使用数据库进行ETL和数据集的开发。然而,我发现栅格数据集的库/功能非常有限。有几个光栅/火花图书馆,但他们不是很成熟。例如GeoTrellis、RasterFrames和阿帕奇塞多纳。
因此,我一直在探索在Databricks平台上高效处理栅格数据的其他方法,该平台利用Spark / Delta表/ Parquet文件。
我的一个想法是将栅格数据转储到简单的x,y,value列,并将它们作为表加载。如果我的其他数据集具有相同的分辨率(我将对它们进行预处理,使它们具有相同的分辨率),那么我应该能够执行简单的SQL查询,以屏蔽/加/减和更复杂的用户定义函数。
第一步,我认为应该是将我的光栅作为一个CSV的点,然后我可以加载到一个Delta表。但是在我的Databricks集群(128 3GB内存,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文件绑定在一起,但这似乎有点费劲。
发布于 2022-09-27 21:23:54
从3.5版开始,GDAL就有一个拼花驱动程序。因此,至少在这个版本中,您应该能够用这样的"terra“来编写栅格数据。
library(terra)
x <- rast(ncol=10, nrow=10, val=1:100)
writeRaster(x, "file.pqt", driver="Parquet")您可以检查"terra“与terra::gdal()一起使用的版本。目前windows的CRAN版本还没有发布(但几乎没有)。
gdal()
#[1] "3.4.3"发布于 2022-10-14 19:50:53
您可以使用Sedona轻松地将GeoTiffs加载到DataFrame,并将数据存储为Parquet格式。见此处:https://sedona.apache.org/api/sql/Raster-loader/
https://stackoverflow.com/questions/73865059
复制相似问题