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

如何以指定经纬度为中心绘制2km×2km方格网格并设置米制坐标轴

解决方案:绘制指定中心的2km×2km网格并满足坐标/地理要素需求

关键调整思路

  • 改用UTM投影:UTM是局部米制投影,适配小范围区域,能直接以米为单位定义地图范围,解决比例失真和坐标单位问题
  • 基于中心经纬度转换为UTM坐标,将其设为绘图原点(0,0),再向四周扩展±1km得到2km×2km的网格范围
  • 调用Basemap专用方法加载并绘制河流、湖泊等地理要素

完整代码实现

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import pyproj

# 中心经纬度
center_lat, center_lon = 47.9187393, 106.9175013

# 步骤1:将经纬度转换为UTM米制坐标
# 自动匹配该点对应的UTM投影带
utm_proj = pyproj.Proj(proj='utm', zone=pyproj.Proj(proj='utm').from_latlon(center_lat, center_lon), ellps='WGS84')
center_x, center_y = utm_proj(center_lon, center_lat)

# 步骤2:定义2km×2km网格范围(中心向四周延伸1km)
grid_half_size = 1000  # 半边长1000米
min_x, max_x = center_x - grid_half_size, center_x + grid_half_size
min_y, max_y = center_y - grid_half_size, center_y + grid_half_size

# 步骤3:创建UTM投影的Basemap实例
fig, ax = plt.subplots(figsize=(8, 8))  # 正方形画布保证比例正确
m = Basemap(
    projection='utm',
    zone=pyproj.Proj(proj='utm').from_latlon(center_lat, center_lon),
    llcrnrx=min_x, urcrnrx=max_x,
    llcrnry=min_y, urcrnry=max_y,
    resolution='h',  # 高分辨率保证地理要素清晰
    ax=ax
)

# 步骤4:绘制各类地理要素
m.drawcoastlines()
m.drawcountries(color='gray')
m.drawstates(color='gray')
m.drawrivers(color='blue')  # 绘制河流
m.drawlakes(color='lightblue')  # 绘制湖泊
m.drawmapboundary(fill_color='aliceblue')  # 地图背景填充
m.fillcontinents(color='wheat', lake_color='lightblue')  # 陆地填充

# 步骤5:绘制2km×2km正方形网格
grid_points = [
    (min_x, min_y), (max_x, min_y),
    (max_x, max_y), (min_x, max_y), (min_x, min_y)
]
x_plot, y_plot = zip(*grid_points)
ax.plot(x_plot, y_plot, color='red', linewidth=2, label='2km×2km网格')

# 步骤6:调整坐标轴为(0,0)原点(中心对应(0,0))
ax.set_xticks([min_x, center_x, max_x])
ax.set_xticklabels([-1000, 0, 1000])
ax.set_yticks([min_y, center_y, max_y])
ax.set_yticklabels([-1000, 0, 1000])
ax.set_xlabel('X (米)')
ax.set_ylabel('Y (米)')
ax.legend()
ax.set_aspect('equal')  # 强制等比例,避免网格变形

plt.show()

关键说明

  1. UTM投影适配:UTM投影会根据经纬度自动划分投影带,确保小范围区域的比例准确,解决之前的比例失真问题
  2. 坐标原点偏移:通过修改坐标轴刻度标签,将中心的UTM坐标映射为(0,0),实现需求的坐标系统
  3. 地理要素加载:调用drawrivers()、drawlakes()等方法,直接加载并显示河流、湖泊、陆地等要素
  4. 等比例约束:ax.set_aspect('equal')强制画布等比例,避免网格出现拉伸变形

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:35