底图中的坐标与实际不匹配

问题描述 投票:0回答:1

对于我的团队项目,我正在尝试使用Python获取我的城市地图并在其上绘制热图。我正在使用底图和matplotlib。

我发现选择epsg = 3003可以得到足够的图形结果,但是问题是,如果我想在地图上可视化精确的坐标,例如lat = 45.0306和long = 7.42,则相对于我通过Google Earth获得的一款。

由于我需要绘制非常精确且接近坐标的数据,因此获得准确的地图至关重要。

有人可以帮我提供我的代码吗?

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

map = Basemap(llcrnrlat=45,urcrnrlat=45.4,
    llcrnrlon=7.41,urcrnrlon=7.8,resolution='h', epsg=3003)
map.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels = 3000, verbose= True)
plt.show()
python matplotlib matplotlib-basemap
1个回答
0
投票

问题是您正在使用两个不同的投影系统。 Google地球使用WGS84,其epsg代码为:3857,但是您使用EPSG:3003设置了地图。最好的办法就是在定义底图时更改地图的投影。另外,如果您确实要使用EPSG:3003,则必须重新投影从Google Earth获得的坐标(您可能需要查看此answer

这里有一个小例子,说明使用正确的投影可以很好地匹配Google地图结果:

map = Basemap(llcrnrlat=45.245,urcrnrlat=45.255,
      llcrnrlon=7.54,urcrnrlon=7.55,resolution='h', epsg=4326)
map.arcgisimage(service='ESRI_StreetMap_World_2D', xpixels = 3000, verbose= True)
plt.plot(7.544335,45.250423,marker='+',markersize=15,color='Red')

[从底图中获取带有Google地图截图的地图:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.