基于 geopandas DataFrame 几何图形聚合栅格数据
情况
我有两个数据集:
- 使用
rioxarray
加载的栅格数据,一个xarray.DataArray
- 一个带有
geometries
指示的geopandas.DataFrame
1. 数据集中的区域
两个数据集中的地理数据位于相同的 CRS (EPSG:4326) 中。
问题
对于 2. 中的每个条目,我想聚合 1. 中与特定几何图形重叠的所有值。有点像使用几何图形的 .group-by()
+ .sum()
。
当前 WIP 方法
包 xagg
已经做到了这一点,不幸的是在我的一个子集上速度很慢当我尝试在完整数据集上使用它时,数据集和规模会更糟。
问题
有没有一种简单而有效的方法可以在Python中做到这一点? (该解决方案不需要准确地复制 xagg
的结果。)
Situation
I have two datasets:
- Raster data loaded using
rioxarray
, anxarray.DataArray
- An
geopandas.DataFrame
withgeometries
indicating areas in the 1. dataset
The geo data in both datasets are in the same CRS (EPSG:4326).
Problem
For each entry in 2. I want to aggregate all values from 1. which overlap with the specific geometry
. Kind of like an .group-by()
using the geometries + .sum()
.
Current WIP approach
The package xagg
does that already, is unfortunately slow on a subset of my dataset and scales worse when I try to use it on my full dataset.
Question
Is there an simple and efficient way to do this in Python?
(The solution wouldn't need to replicate the results from xagg
accurately.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
WRT 你的评论是我用来做你想做的事情的一些伪代码。在这种情况下,正在执行的函数输出文件。如果这一点不明显,那么如果您只有 1 个大光栅和 1 个大多边形文件,策略将不会有帮助。该方法假定平铺数据并使用索引系统将正确的栅格与覆盖的多边形进行匹配。完整的例子有点超出了单一答案的范围。但如果您询问具体情况是否有问题,我可以尽力提供帮助。除了 dask 的良好文档之外,这里还有很多其他帖子以及 dask 延迟示例。
WRT your comment here is some pseudo code I've used to do what you're after. The function being executed outputs files in this case. If it's not obvious this, strategy isn't going to help if you just have 1 big raster and 1 big poly file. This method assumes tiled data and uses an indexing system to match the right rasters with the overlaying polys. The full example is kind of beyond the scope of a single answer. But if you ask specifics if you have issues I can try to assist. In addition to dask's good documentation, there are lots of other posts on here with dask delayed examples.