python怎么由边界生成网格,如何使用python生成常规地理网格?

本文介绍了如何使用Python根据边界生成规则的地理网格。对于矩形区域,可以通过迭代坐标实现;对于任意多边形,需要检查点与多边形的交集。在计算以度或米为单位的网格时,要注意地球表面的度数不等效于实际距离。以米为单位的网格需要投影坐标,并使用shapely和pyproj库进行处理。示例代码展示了如何生成5km网格步长的网格点并将其保存为CSV文件。
摘要由CSDN通过智能技术生成

初步考虑

如何定义某个区域会略有不同.如果它只是一个矩形区域(注意:投影中的矩形在地球表面上不一定是矩形的!),您可以使用所需的步长在两个坐标维度中从最小值到最大值迭代.如果手头有任意多边形,则需要测试生成的点与哪个多边形相交,并且仅返回此条件成立的坐标对.

计算规则网格

规则网格不等于投影的规则网格.你在谈论纬度/经度对,这是一个极地坐标系,以近似地球表面形状的度数来度量.在纬度/经度(EPSG:4326)中,距离不是以米/公里/英里为单位,而是以度为单位.

此外,我假设您想要计算一个网格,其“水平”步骤与赤道平行(即纬度).对于其他网格(例如旋转的矩形网格,垂直于经度的垂直线等),您需要花费更多精力来改变形状.

问问自己:你想创建一个以度数或米为单位的规则间隔网格吗?

以度为单位的网格

如果你想以度为单位,你可以简单地迭代:

stepsize = 0.001

for x in range(lonmin, lonmax, stepsize):

for y in range(latmin, latmax, stepsize):

yield (x, y)

但是:一定要知道地球表面上以度为单位的长度(以米为单位)并不相同.例如,靠近赤道的0.001度的纬度覆盖表面上的米的距离与靠近极点的距离不同.

以米为单位的网格

如果您想要以米为单位,则需要将输入区域的纬度/经度边界(地图上的特定区域)投影到支持以米为单位的距离的坐标系中.您可以使用Haversine formula作为粗略近似来计算纬度/经度对之间的距离,但这不是您可以使用的最佳方法.

更好的是搜索合适的投影,将您感兴趣的区域转换为该投影,通过直接迭代创建网格,获取点,并将它们投影回纬度/经度对.例如,适用于欧洲的预测是EPSG:3035.顺便说一句,谷歌地图使用

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值