目录

上一个主题

7.3. 数据源

下一个主题

7.5. 绘制线

关注公众号


常见问题

  1. Windows下的安装说明
  2. Jupyter免费在线实验环境
  3. 勘误与补充


>>> 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)

image0