【问题标题】:How to draw a png-osm-map with coordinates如何绘制带有坐标的 png-osm-map
【发布时间】:2012-05-16 12:36:04
【问题描述】:

我想在 Python 中创建一个包含多个给定点的地图。为此,我想使用 matplotlib 中的Basemap。效果很好,但我不知道如何获得合适的背景图。

如何导入OSM 地图?或者我应该使用不同的映射包?我只想创建一个栅格地图并将其保存为 png。

【问题讨论】:

  • 但是那里链接的博客文章只描述了一个解决方案,迫使我通过 photoshop/gimp 组合两个图像(地图和点),我需要一个全自动的解决方案
  • teGuy...发布您的解决方案(尽可能详细)作为答案...然后接受它。可以回答您自己的问题:blog.stackoverflow.com/2011/07/…

标签: python matplotlib gis openstreetmap


【解决方案1】:

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

我找到了解决办法:

在 Basemap 中使用 imshow 会在绘图中包含一个 png 作为 背景图片。为了获得正确的背景图像,我使用了 export feature of OSM 边界取自底图 构造函数:

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 tileserver 中找到了一些可访问的底图图像。您也许可以对其他 tileserver 使用相同的方法。

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

    在 python 子shell 中使用 GDAL 的 gdal_translate:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多