Python:制作带路线的地图PNG以用于书面报告的最佳方法是什么?
我想在一个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