You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何基于中心点生成指定间距的经纬度坐标网格

你可以通过球面坐标近似转换实现这个功能,小范围场景下精度完全满足需求,实现逻辑如下:

实现原理

地球表面经纬度换算距离有近似规则:

  • 纬度每差1度,地表距离大约为111320米
  • 经度每差1度,地表距离大约为 111320 * cos(当前纬度弧度值) 米
    基于这个规则就可以把指定的米数间距转换成对应的经纬度偏移量,再按需要的范围生成网格即可。

坐标网格示意图

完整代码实现

import math

def get_grid_of_coordinates_from_center(lat, lon, meters_between_coor, coors_away_from_center):
    # 计算纬度偏移量(度)
    delta_lat = meters_between_coor / 111320
    # 计算经度偏移量(度),需要换算当前纬度的经度系数
    lat_rad = math.radians(lat)
    delta_lon = meters_between_coor / (111320 * math.cos(lat_rad))
    
    grid = []
    # 遍历纬度方向偏移,从负向到正向
    for i in range(-coors_away_from_center, coors_away_from_center + 1):
        row = []
        # 遍历经度方向偏移
        for j in range(-coors_away_from_center, coors_away_from_center + 1):
            current_lat = lat + i * delta_lat
            current_lon = lon + j * delta_lon
            row.append((current_lat, current_lon))
        grid.append(row)
    return grid

# 示例调用
if __name__ == "__main__":
    center_lat = 40.8264859
    center_lon = -3.6805897
    # 间距100米,向外最多2个坐标
    grid = get_grid_of_coordinates_from_center(center_lat, center_lon, 100, 2)
    # 打印网格坐标示例
    for row in grid:
        print(row)

说明

  • 该实现默认生成正方形网格,返回的嵌套列表外层对应纬度方向、内层对应经度方向的坐标点
  • 小范围(直径50km以内)使用精度足够,如果需要生成超大范围网格,可以引入UTM投影等专业坐标转换方法进一步提升精度

内容的提问来源于stack exchange,提问作者Lucas Mengual

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:48:03