Python 底图don'中的坐标;和真的不一样

Python 底图don'中的坐标;和真的不一样,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,对于我的团队项目,我正在尝试使用Python获取我所在城市的地图,并在上面绘制热图。我正在使用Basemap和matplotlib 我发现选择epsg=3003可以提供足够的图形结果,但问题是,如果我想在地图上显示精确的坐标,例如lat=45.0306和long=7.42,它显示的点与我使用Google Earth得到的点不同 因为我需要用非常精确和接近的坐标绘制数据,所以获得精确的地图是至关重要的 有人能帮我写代码吗 from mpl_toolkits.basemap import Basem

对于我的团队项目,我正在尝试使用Python获取我所在城市的地图,并在上面绘制热图。我正在使用Basemap和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()

问题是您使用的是两种不同的投影系统。Google Earth使用WGS84,其epsg代码为:3857,但您使用epsg:3003设置地图。最好的方法是在定义基本地图时更改地图的投影。或者,如果您真的想使用EPSG:3003,那么您必须重新投影从Google Earth获得的坐标(您可能想看看这个)

下面是一个小示例,说明通过使用适当的投影,您可以很好地匹配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')
下面是带有谷歌地图截图的basemap地图:

谢谢您的回答。不幸的是,我尝试了你的代码,我看到一个完全空白的地图,我不知道为什么,只是espg=3003似乎适合我。你有什么建议可以解释它的原因吗?你使用的是哪个版本的matplotlib和basemap?但是在任何情况下,你的问题基本上是一个投影问题,因此如果你需要与google earth合作,你应该真正改变地图的投影。或者,您可以编写一个脚本,将WGS84坐标重新投影到EPSG:3003Matplotlib 3.1.1,Basemap 3.7。我将有许多相对纬度和经度的数据要绘制,但我不需要使用google earth,只是检查我地图上的坐标是否与我将使用GPS获得的坐标匹配。