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

Cartopy:如何在NearsidePerspective投影地图中心添加标记点

问题:NearsidePerspective投影地图添加标记后显示异常

我尝试在NearsidePerspective投影的地图中心添加一个红色小圆点标记,代码如下:

import matplotlib.pyplot as plt

import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt
import cartopy.feature as cfeature


data = {
    'lat': 11.9320027,
    'lng': -86.055024,
    'time': '2022-01-01T00:33:32.401Z',
    'place': 'Catarina, Nicaragua',
}

fig = plt.figure(figsize=(5, 5), frameon=False)

projection = ccrs.NearsidePerspective(
    central_longitude=data['lng'],
    central_latitude=data['lat'],
    satellite_height=500000,
)
ax = plt.subplot(1, 1, 1, projection=projection)

ax.add_feature(cfeature.BORDERS, linewidth=0.5)
ax.add_feature(cfeature.RIVERS, linewidth=0.3)
ax.add_image(cimgt.Stamen('watercolor'), 6)

# ax.plot([point['lng']], [point['lat']], marker='.', color='red', markersize=5, alpha=0.7, transform=ccrs.Geodetic())

plt.show()

当标记代码处于注释状态时,地图显示正常;取消注释后,地图显示异常,视角偏移且标记位置不符合预期。


解决方案

核心问题是变量名错误,同时需避免自动缩放导致的视角偏移,修改后的代码如下:

# 替换错误变量名,并添加范围锁定
ax.plot(data['lng'], data['lat'], marker='.', color='red', markersize=10, alpha=0.7, transform=ccrs.Geodetic())
# 手动设置地图范围,确保视角与初始状态一致
ax.set_extent([data['lng']-2, data['lng']+2, data['lat']-2, data['lat']+2], crs=ccrs.Geodetic())

关键修改说明:

  1. 修正变量名:原代码中用了未定义的point字典,替换为实际存储坐标的data,才能正确读取经纬度。
  2. 锁定地图范围:取消注释标记后,matplotlib会自动根据标记点调整缩放范围,导致NearsidePerspective的卫星视角偏移,通过set_extent手动设置以中心点为基准的经纬度区间,保证地图显示和初始状态一致。
  3. 优化标记可见性:适当增大markersize,避免红色圆点被地图底图覆盖。

修改后运行代码,就能在地图中心看到正确的红色标记,同时地图显示正常。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:45:19