如何使用坐标绘制PNG-OSM地图

7
我想在Python中创建一个带有多个给定点的地图。为此,我想使用matplotlib中的Basemap。它运行良好,但我不知道如何获取适当的背景地图。
我该如何导入OSM地图?或者我应该使用其他地图软件包?我只想创建一个光栅地图并将其保存为png。

请参考以下链接:https://dev59.com/nWDVa4cB1Zd3GeqPiPR9#9485409 - ChrisP
1
但是那里链接的博客文章只描述了一个解决方案,它强制我通过Photoshop / Gimp将两个图像(地图和点)组合在一起,我需要一个完全自动化的解决方案。 - teGuy
发布您的解决方案(尽可能详细),然后接受它。自己回答自己的问题是可以的:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ - Yann
2个回答

3
这不是我的解决方案,我将它从问题中复制粘贴过来,因为提问者没有足够的声望来回答自己的问题。

I found a solution:

Using imshow within Basemap includes an png into the plot as background image. To obtain the right background image, I used the export feature of OSM with boundaries taken from the Basemap constructor:

m = Basemap(llcrnrlon=7.4319, urcrnrlat=52.0632, urcrnrlon=7.848, llcrnrlat=51.8495,
        resolution='h', projection='merc')

im = plt.imread('background.png')
m.imshow(im, interpolation='lanczos', origin='upper')

2
我在NASA GIBS瓦片服务器上找到了一些易于访问的底图影像。您可能可以使用相同的方法来访问其他瓦片服务器。这里使用GDAL的gdal_translate在Python子shell中实现:

http://earthdata.nasa.gov/wiki/main/index.php/GIBS_Supported_Clients#Script-level_access_to_imagery

import subprocess
import matplotlib.pyplot
import mpl_toolkits.basemap

l,u,r,d=(7.4319,52.0632,7.848,51.8495)

subprocess.call ('gdal_translate -of GTiff -outsize 400 400 -projwin {l} {u} {r} {d} TERRA.xml Background.tif'.format(l=l,u=u,r=r,d=d),shell=True )

im=matplotlib.pyplot.imread('Background.tif')

m = mpl_toolkits.basemap.Basemap(llcrnrlon=l, urcrnrlat=u, urcrnrlon=r, llcrnrlat=d,
    resolution='h', projection='merc')
m.imshow(im, interpolation='lanczos', origin='upper')

matplotlib.pyplot.show()

这需要上面链接中的TERRA.xml文件,但您也可以将XML内联。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接