Python:制作带路线的地图PNG以用于书面报告的最佳方法是什么?

2 投票
1 回答
2694 浏览
提问于 2025-04-17 20:15

我想在一个Python脚本里制作地图的PNG文件,显示旅行的路线(我已经有了经纬度和海拔的坐标)。据我所知,使用谷歌地图“离线”或打印是不合法的,所以我打算使用开放街图(OpenStreet Maps)。

你能推荐我一个方法吗?有没有什么模块可以帮我?或者给我一个例子也行!

谢谢!

1 个回答

6

我非常推荐 tilemill 来完成这种任务。它可以让你从大量的基础地图中选择,或者从开放街图(OSM)数据中导入并自定义你的地图样式。它对数据层的支持也非常好,比如你的路线。最重要的是,它有非常棒的文档和 教程

如果你想完全使用Python的话,我建议使用 Mapnik 这个库。

你需要一个数据文件,比如这个形状文件 在这里

ne_110m_admin_0_countries.shp

还需要一个xml样式文件:

<Map background-color="black" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
  <Style name="My Style">
    <Rule>
      <PolygonSymbolizer fill="#f2eff9" />
      <LineSymbolizer stroke="rgb(50%,50%,50%)" stroke-width="5.0" />
    </Rule>
  </Style>
  <Layer name="world" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
    <StyleName>My Style</StyleName>
    <Datasource>
      <Parameter name="type">shape</Parameter>
      <Parameter name="file">ne_110m_admin_0_countries.shp</Parameter>
    </Datasource>
  </Layer>
</Map>

以及一个Python脚本:

import mapnik
stylesheet = 'world_style.xml'
image = 'world_style.png'
m = mapnik.Map(2000, 1500)
mapnik.load_map(m, stylesheet)
m.zoom_all() 
mapnik.render_to_file(m, image)
print "rendered image to '%s'" % image

撰写回答