初步考虑
它对如何定义特定区域有一点不同。如果它只是一个矩形区域(注:投影中的矩形在地球表面不一定是矩形!),只需使用所需的步长在两个坐标维中从最小值迭代到最大值。如果手头有任意多边形形状,则需要测试生成的点中哪些与该多边形相交,并仅返回该条件适用的坐标对。
计算规则网格
规则网格不等于投影上的规则网格。你说的是经纬度对,这是一个极坐标系,以度为单位,以地球表面形状的近似值来测量。在纬度/经度(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作为粗略的近似值来计算lat/lon对之间的距离,但这不是您可以使用的最