Mapnik简介与技术说明

Python与开源GIS

Mapnik简介与技术说明

2015-04-25 作者: bukun 浏览: 2359 次

摘要: Mapnik 是一个开源的 Python/C++ 地图渲染引擎,他的功能是把数据形式的地图(主要是指shapefile,osm等GIS数据),包含一些地理对象,如地图、层、数据源、特征和地理几何等,通过 一个样式表的定义,渲染成位图格式,用来提供 WMS 服务...

Mapnik 是一个开源的 Python/C++ 地图渲染引擎,他的功能是把数据形式的地图(主要是指shapefile,osm等GIS数据),包含一些地理对象,如地图、层、数据源、特征和地理几何等,通过 一个样式表的定义,渲染成位图格式,用来提供 WMS 服务。其核心是一个 C++ 的共享库,提供空间数据访问和可视化的算法和模式。

该共享库支持多种操作系统,可以在多线程环境下很好的运行,主要面向一些提供 GIS 服务的 Web 应用开发。对于桌面应用来讲,Mapnik也提供了非常方便的支持。 作为一个开源的地图渲染引擎,Mapnik 拥有良好的技术架构,并使用了很多成熟的开源技术,如 proj4 、 freetype 、 libxml2 、 GDAL 、 Boost 、 ltdl 等,并使用 AGG 、 Cairo-Graphics 来具体渲染绘制,具有良好的反锯齿效果!大量使用了 Boost 库特有的 C++ 技术,如 variant 、 tuple ,并利用 C++ STL (仿函数等)、泛型编程技术及相关设计模式(单件模式、访问者模式等),使用插件式的数据源开发方式,使 Mapnik 可以灵活扩展出针对自己的数据格式插件! 然而对于开发人员, mapnik 采用的属性与具体渲染操作分开的模式,屏蔽了内部复杂的实现细节,而对外提供的接口确是简单易用!

Mapnik 数据组织包括地图、图层、风格、规则、符号等,其具体以渲染地图文件的方式或者是编程实现的方式予以提供。地图中可以包含多个风格( Style )、多个图层( Layer ),图层包含对应一个数据源及多个风格,风格包含多个规则,一个规则可以包含多种符号,不同的符号包含不同的属性设置,以 LineSymbolizer 为例,包含 stroke (颜色)、 stroke-width (宽度)、透明度( stroke-opacity )、线相交处模式( stroke- linejoin )、线头模式( stroke-linecap )、线段绘制迭代间隔( stroke-dasharray )。不同的符号之间也有一些相同的属性如 line_pattern_symbolizer 、polygon_pattern_symbolizer 、point_symbolizer 都需要一个file 属性来作为填充图片! 使用Mapnik的主要技术流程为:

  • 定义 Map 对象,设置绘制使用的设备大小,及投影信息
  • 加载 Map 的配置信息
  • 设置 Map 绘制的地理范围
  • 定义绘制使用的设备( agg_renderer 为内存图片缓冲区)
  • 使用 agg_renderer 或者 cairo_renderer 渲染
  • 保存到文件(可选,对于 cairo_renderer 渲染到 pdf 及 svg 等矢量文件时不需要)

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © 2014-2019 OSGeo中国中心 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org