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

使用Basemap将经纬度转XY坐标时出现超大值问题求助

解决Basemap绘制位置点时XY值异常的问题
  • 问题根源:你调用Basemap实例的坐标转换方法时,参数顺序搞反了!Basemap的m(lon, lat)方法要求先传经度,再传纬度,但你写的是m(37.5,-122.5)——把纬度(37.5)放在了经度的位置,经度(-122.5)放在了纬度的位置,这直接导致纬度值超出了你设置的投影范围(35-40),所以返回了异常的1e+30(代表超出范围的无效值)。

  • 修正后的代码:

from mpl_toolkits.basemap import Basemap
m = Basemap(projection='merc',llcrnrlat=35,urcrnrlat=40,\
llcrnrlon=-125,urcrnrlon=-120,resolution='c')
# 调换参数顺序:先经度(-122.5),再纬度(37.5)
x,y = m(-122.5, 37.5)
print(x,y)
  • 验证结果:运行修正后的代码,会得到正常的投影坐标:

(17662053.21565348, 4227787.281473132)

  • 额外提醒:
    • 所有Basemap的坐标转换方法(包括m()、m.scatter()里的坐标输入)都是先经度后纬度,和我们日常习惯的“纬度在前经度在后”相反,很容易踩坑;
    • 如果后续要批量转换坐标,可以把经纬度列表按(lon_list, lat_list)的格式传入,避免逐个出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:32