>>> from env_helper import info; info()
页面更新时间: 2024-04-10 15:21:25
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
9.4. 绘制栅格影像¶
GDAL和栅格数据源允许你包含一幅地图上的栅格影像。有了数据源,就可以使用 RasterSymbolizer 将其显示在地图的图层上。
9.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定义的海岸线的浅绿色背景之上。
9.4.2. 示例¶
>>> import mapnik
>>> m = mapnik.Map(600, 500, "+proj=latlong +datum=WGS84")
>>> symbol = mapnik.RasterSymbolizer()
>>> ###############################################################################
>>> s = mapnik.Style()
>>> r = mapnik.Rule()
>>> r.symbols.append(symbol)
>>> s.rules.append(r)
>>> m.append_style('My Style', s)
>>> datasource = mapnik.Gdal(file='/gdata/geotiff_file.tif')
>>> layer = mapnik.Layer("myLayer")
>>> layer.datasource = datasource
>>> layer.styles.append('My Style')
>>> m.layers.append(layer)
>>> ###############################################################################
>>> layer.envelope()
>>> ###############################################################################
>>> m.zoom_to_box(layer.envelope())
>>> mapnik.render_to_file(m, 'xx_mapnik_result.png', 'png')