>>> from helper import info; info()
页面更新时间: 2020-02-21 17:46:41
操作系统/OS: Linux-4.19.0-8-amd64-x86_64-with-debian-10.3 ;Python: 3.7.3
7.4. 绘制栅格影像¶
GDAL和栅格数据源允许你包含一幅地图上的栅格影像。有了数据源,就可以使用 RasterSymbolizer 将其显示在地图的图层上。
7.4.1. RasterSymbolizer¶
创建一个 RasterSymbolizer是非常简单。 RasterSymbolizer把图层中的栅格文件数据源中的内容自动绘制到地图上,RasterSymbolizer 支持以下用来控制显示栅格数据的选项:
symbolizer.opacity
控制栅格数据的透明度,值为 0.0
,则影像完全透明, 值为
1.0
,则影像完全不透明。在默认情况下,栅格影像是不透明的。
symbolizer.mode
属性告诉RasterSymbolizer怎样结合光栅数据呈现地图。
这些模式与在图形编辑器中显示图层的方式相似,例如Photoshop或者GIMP。
支持以下合并模式:
symbolizer.scaling
可以用来控制光栅图像的算法。
可用的选项是:fast(采用最近邻居算法),
bilinear(在所有四个颜色通道中使用双线性插值法),
和bilinear8(仅仅为一个颜色通道使用双线性插值法)。
注意:Mapnik目前不支持动态的栅格数据的重投影,
如果你生成一幅地图使用一个不同于栅格数据投影的投影方式,
你需要在它显示之前对栅格数据进行重新投影,例如,通过使用
gdalwarp
工具。
RasterSymbolizer的主要用途是展现shaded relief背景,如上面的图所显示的。这能给读者留下一个地形的基本印象。
前面的图像是使用来自国家高程数据集的一个Digital Elevation
Map(DEM文件格式)的数据文件创建的。该文件是使用
Hillshade选项gdaldem应用程序处理的来创建一幅地貌晕渲的灰度图像。
这个图像是使用RasterSymbolizer设置成hard_light
模式进行显示的,
平铺在由GSHHS shoreline database定义的海岸线的浅绿色背景之上。
7.4.2. 示例¶
>>> import mapnik
>>>
>>>
>>> datasource = mapnik.Gdal(file='/gdata/lu75c.tif')
>>> layer = mapnik.Layer("myLayer")
>>> layer.datasource = datasource
>>> layer.styles.append("myLayerStyle")
>>> symbol = mapnik.RasterSymbolizer()
>>>
>>> s = mapnik.Style()
>>> r = mapnik.Rule()
>>> r.symbols.append(mapnik.RasterSymbolizer())
>>> s.rules.append(r)
>>>
>>> m = mapnik.Map(600, 300, "+proj=latlong +datum=WGS84")
>>> m.background = mapnik.Color('steelblue')
>>>
>>> rule = mapnik.Rule()
>>> rule.symbols.append(symbol)
>>> style = mapnik.Style()
>>> style.rules.append(rule)
>>>
>>> m.append_style('My Style', s)
>>>
>>>
>>> print(layer.envelope())
>>> m.zoom_to_box(layer.envelope())
>>> mapnik.render_to_file(m, 'xx_raster.png', 'png')
Box2d(1852951.7603168152,5169280.360150607,2036611.7603168152,5309350.360150607)