我正在寻找一种在 python 脚本中制作地图的 png 文件的方法,该文件显示旅行为线(我的坐标已经为纬度、经度和海拔高度)。据我所知,使用“离线”或打印的谷歌地图是不合法的,所以我的目标是 OpenStreet 地图。
你能给我推荐一种方法吗?任何可以帮助我的模块?甚至是一个例子?
谢谢!
我正在寻找一种在 python 脚本中制作地图的 png 文件的方法,该文件显示旅行为线(我的坐标已经为纬度、经度和海拔高度)。据我所知,使用“离线”或打印的谷歌地图是不合法的,所以我的目标是 OpenStreet 地图。
你能给我推荐一种方法吗?任何可以帮助我的模块?甚至是一个例子?
谢谢!
对于此类任务,我无法高度推荐tilemill 。它可以让您从大量选择中选择一个基本地图,或者从 OSM 数据中导入您自己的地图并设置其样式。它还对像您的路线这样的数据层有很好的支持。最重要的是它有很棒的文档和教程。
如果你想完全留在 python 中,那么我推荐使用Mapnik库。
您将需要一个数据文件,例如此处的 shapefile :
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