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

时间:2019-10-28 13:09:19

标签: python matplotlib matplotlib-basemap

对于我的团队项目,我正在尝试使用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()

1 个答案:

答案 0 :(得分: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