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