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
相关产品推荐
相关产品推荐

