如何检查形状文件多边形包含纬度和经度点的 numpy meshgrid

how to check a shape file polygon contains numpy meshgrid of lat and lon points

我有形状为 1750 X 1750 的纬度和经度点的 numpy 网格及其相同形状的相应数据(降雨量)。我需要找到落在多边形内的数据点的平均值,从形状文件中读取。

如果我的逻辑是正确的,我必须找出落在多边形内的纬度和经度点的索引,然后使用该索引过滤数据,然后进行平均。

我已经使用 Inpolygon 函数在 Matlab 中成功实现了它,但我想重写 Python 中的代码。我使用了 matplotlib Path.contains_points 函数,但它不适用于 numpy ND 数组。

谁能推荐一种合适的方法? 非常感谢您的帮助。

要检查多边形是否包含一些点,您可以简单地使用 matplotlib,更准确地说,matplotlib.path 中实现的 Path.contains_points 是解决方案。它确实接受 ND 数组,你只需要事先将它们展平,

import numpy as np
from matplotlib.path import Path

X, Y = np.meshgrid(x, y)  # X, Y are 2D ndarrays
XY = np.dstack((X, Y))
XY_flat = XY.reshape((-1, 2))

mpath = Path( vertices ) # the vertices of the polygon
mask_flat = mpath.contains_points(XY_flat)
mask = mask_flat.reshape(X.shape)  

或者,您可以查看 GeoPandas 模块,该模块具有更通用的处理地理空间数据的实现。