Skip to main content

在多边形上聚合栅格数据

项目描述

xagg

构建状态 编解码器 皮皮 康达锻造 文件状态

一个包,用于将网格数据聚合xarray到多边形中,geopandas使用像素和多边形之间的相对区域重叠的区域加权。

安装

安装最新版本的最简单方法xagg是使用conda

conda install -c conda-forge xagg

(可能存在版本问题numba- 在这种情况下,降级numpy使用pip install numpy==1.21.0应该可以解决问题)

或者,您可以使用pip,尽管当前的依赖问题(esmpy不再在 PyPI 上更新)仅限pip于安装xagg<=0.1.4

pip install xagg

文档

请参阅https://xagg.readthedocs.io/en/latest/index.html上的最新文档

介绍

科学经常发生在网格上——网格化天气产品、内插污染数据、夜间灯光、遥感都近似于连续的现实世界,原因是数据分辨率、处理时间或易于计算。

然而,生物并不生活在网格上,也很少在网格上玩耍、行动或观察数据。相反,人类倾向于在县、州、乡、区或市一级工作。鸟类倾向于沿着复杂的迁徙走廊飞行;雨水和分水岭沿着山谷和山脉。

因此,每当我们需要同时使用网格和地理数据产品时,我们都需要让它们匹配的方法。例如,我们可能会感兴趣一个县的平均温度是多少,或者一个流域的平均降雨量是多少。

输入xagg

xagg提供了一种易于使用(2 行!)的标准化方式将栅格数据聚合到多边形。您只需要xarrayDataset 或 DataArray 中的一些网格数据和geopandasGeoDataFrame 中的一些多边形数据。出于以下目的,这两者都很容易使用xagg- 例如,使用 shapefile 只需打开它:

   import xarray as xr
   import geopandas as gpd
    
   # Gridded data file (netcdf/climate data)
   ds = xr.open_dataset('file.nc')

   # Shapefile
   gdf = gpd.open_dataset('file.shp')

xagg然后将找出 中的地理网格(纬度/经度)ds,为每个像素创建多边形,然后在 shapefile 中的每个多边形和每个像素之间生成相交。对于 shapefile 中的每个多边形,计算每个覆盖像素的相对面积 - 例如,如果多边形(例如,美国县)是网格像素的大小和形状,但在两个像素之间被分割,每个像素的权重为 0.5,该多边形上的网格变量的值将只是两者的平均值。

这是一个示例代码运行,使用上面加载的文件:


   import xagg as xa

   # Get overlap between pixels and polygons
   weightmap = xa.pixel_overlaps(ds,gdf)

   # Aggregate data in [ds] onto polygons
   aggregated = xa.aggregate(ds,weightmap)

   # aggregated can now be converted into an xarray dataset (using aggregated.to_dataset()), 
   # or a geopandas geodataframe (using aggregated.to_dataframe()), or directly exported 
   # to netcdf, csv, or shp files using aggregated.to_csv()/.to_netcdf()/.to_shp()

研究人员通常需要对您的数据进行加权,而不仅仅是通过其与多边形的相对面积重叠(例如,您是否希望对人口更多的像素进行加权?)。xagg内置支持将额外的权重网格(另一个xarrayDataArray)添加到xagg.pixel_overlaps().

最后,xagg允许以几种常用数据格式直接导出聚合数据:

  • 网络CDF
  • 用于 STATA、R 的 CSV
  • 用于 QGIS 的 Shapefile,进一步的空间处理

最重要的是,xagg它很灵活。数据集中有多个变量?xagg将它们全部聚合,只要它们至少具有lat/lon维度。您想保留 shapefile 中的字段?xagg在最终导出过程中一直保留所有字段(例如县数据集中的 FIPS 代码)。奇怪的维度名称?xagg经过训练,可以识别作者多年来处理气候数据时遇到的所有版本的“lat”、“Latitude”、“Y”、“nav_lat”、“Latitude_1”等;如果需要,此列表可以轻松扩展为关键字参数。

用例

气候计​​量经济学

许多气候计量经济学研究使用政治或行政级别(例如县)的社会数据(死亡率、作物产量等),但使用网格上的气候和天气数据。通常,需要按人口或农业密度进一步加权。

将像素区域加权到多边形上可确保以稳健的方式将天气和气候数据聚合到多边形上。考虑一个(有些人为的)示例:一个行政区域位于相对平坦的低地,但与多边形略微重叠的像素主要覆盖完全不同的气候(山区、沙漠等)。使用简单的蒙版会使该像素的权重相同,尽管其信息不一定与该地区的气候相关。人口加权也可能并不总是足够的;考虑一下洛杉矶,它有多种显着不同的气候,而且密度都很高。

xagg允许简单的人口面积平均,此外还有导出函数,可以将聚合数据转换为易于在 STATA 或 R 中使用以进行进一步计算的输出。


<small>基于cookiecutter 科学项目模板的项目。</small>

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

xagg-0.3.0.2.tar.gz (13.3 MB 查看哈希

已上传 source

内置分布

xagg-0.3.0.2-py3-none-any.whl (37.6 kB 查看哈希

已上传 py3