摘要: Python与开源GIS教程的内容,开发了单独的内容,请打开 https://www.osgeo.cn/pygis/ 查看。 本页面的内容不再更新。 首先我们来看如何使用Mapnik来渲染一幅世界地图。要开始本 节的编程,需要一点基础数据。这...
本页面的内容不再更新。
首先我们来看如何使用Mapnik来渲染一幅世界地图。要开始本 节的编程,需要一点基础数据。这个数据是Shapefile,名称 为 world_borders.shp 。
安装 Mapnik
让我们开始吧!在终端中打开Python的一个编译器。然后导入 python绑定:
>>> import mapnik2 as mapnik
建立地图对象
首先要建立Mapnik对象。
>>> import mapnik >>> m = mapnik.Map(6000,3000,"+proj=latlong +datum=WGS84") >>> m.background = mapnik.Color('steelblue')
'map.srs' 为你希望要生成地图的投影,
创建一个给定宽度和高度的地图,设置背景 的颜色为“steelblue”。
创建样式
使用样式来决定数据是如何渲染的。
>>> s = mapnik.Style() >>> r=mapnik.Rule() >>> polygon_symbolizer = mapnik.PolygonSymbolizer(mapnik.Color('#f2eff9')) >>> r.symbols.append(polygon_symbolizer) >>> line_symbolizer = mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1 >>> r.symbols.append(line_symbolizer) >>> s.rules.append(r) >>> m.append_style('My Style',s)
上面 s 与 r ,分别是地图对象的样式与规则,polygon_symbolizer 与 line_symbolizer 分别定义了多边形与线状要素的样式;然后,符号添加到规则中,规则添加到样式中,样式再加入到地图中。
创建数据源
在上面的第二步中你需要下载一个世界边界的样本面的shapefile. 现在我们就用 Python 把他转成一个 Mapnik 数据源。如果你的 Python 编译器和你下载的 shape 文件在同一个目录,那么你可以创建一个相对路径来创建数据源,不然就使用绝对路径。
>>> ds = mapnik.Shapefile(file='/gdata/world_borders.shp')
创建图层
Mapnik层包含了周围的数据源,存储有用的属性,现在让我们创建 一个层,把数据源加进去。名称为 world ,当然也可以是其他有 效的名字。
>>> layer = mapnik.Layer('world')
现在把数据集加到层里面。最后我们需要确定我们上面创建的样式 也适用于层,根据其字符串参考
>>> layer.datasource = ds >>> layer.styles.append('My Style')
地图渲染
最后把图层加到地图里,然后显示图层的全部范围,如果你不把 图层全部显示,那么输出很可能是空白的。可以使用 zoom_all 函数,来计算 map 所以相关的图层的最大范围。
m.layers.append(layer) m.zoom_all()
最后渲染地图。把数据写成png格式然后保存到当前目录的
world.png 。
mapnik.render_to_file(m,'xworld.png', 'png') exit()
返回目录:Python与开源GIS