Mapnik xml配置

这块我个人创建了一个Mapnik的QQ群,感兴趣的朋友可以加进来交流讨论【Mapnik

资源

官方帮助:Mapnik configuration XML

基础

Map对象包含Style对象、Layer对象。然后Style对象包含Rule对象,Layer对象通过StyleName指定使用的Style对象。Layer对象本身包含DataSource对象,DataSource对象用来设置图层的数据源。

<Map background-color="white" srs="+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.1502,0.247,0.8421,-20.4894 +units=m +no_defs">
  <Style name="TidalWater_FullColour">
    <Rule>
      <MinScaleDenominator>1000</MinScaleDenominator>
      <MaxScaleDenominator>25000</MaxScaleDenominator>
      <PolygonSymbolizer fill="#D5F4F8"/>
    </Rule>
  </Style>
  <Layer>
    <StyleName>TidalWater_FullColour</StyleName>
    <Datasource>
      <Parameter name="file">./OS-VectorMap-District/st/ST_TidalWater.shp</Parameter>
      <Parameter name="type">shape</Parameter>
    </Datasource>
  </Layer>
</Map>

思维导图

在这里插入图片描述

XML基础配置

Map对象

Mapnik XML配置的Master对象

属性说明
background-color
地图背景颜色
例如#000000,不透明度由8位数值的最后两位数控制。#00000000表示透明背景,默认值为#000000FF。
background-image
地图背景图片
可在Mapnik2中使用,可以使用一张图片来设置背景色,代替颜色填充。
buffer-size
缓冲区大小
font-directory
字体目录
maximum-extent
最大显示范围
设置(投影)地图的最大显示范围,比如-20037508.34, -20037508.34, 20037508.34, 20037508.34
minimum-version
最低版本
声明要与样式表一起使用的mapnik的最小版本
srs
坐标系
地图渲染的坐标系,比如‘+proj=latlong+datum=WGS84’,坐标系可以参考epsg

子节点:

子节点名称说明
<DataSource>
数据源
<FileSource>
文件源
<FontSet>
字体集
为后备字体定义字体集(如果在第一个字体中找不到字符,则在列表中找到之前继续执行)
<Include>
用于包装通过XInclude包含的文件中的所有上下文的容器标记
<Layer>
图层
<Style>
样式

Style对象

包含许多Rule对象的集合。用来定义对象的渲染方式,一个Mapnik的配置文件可以有不限制数量的样式对象。Layer对象引用来Style对象来渲染地理数据。

属性说明
filter-mode
过滤模式
默认是all,会应用所有的rule对象;还可以设置first,当一个Rule对象匹配成功后则停止。
name
名称
每个配置文件都需要是唯一的Style对象的名称。样式由Layer通过相应的StyleName参数引用
opacity
不透明度
样式级别不透明度:1表示完全不透明,而0表示完全透明,.5表示50%透明

子节点:

属性说明
<Rule>
Rule对象
定义渲染的规则

Rule对象

可以指定特定缩放级别显示指定的符号。

属性说明
name
名称
Rule对象的名称,可选参数
title
标题

子节点:

子节点名称说明
<MinScaleDenominator>
最小比例尺
此规则适用的最小地图比例尺, [ScaleAndPpi scale] >= minScaleDenominator - 1e-6时可见
<MaxScaleDenominator>
最大比例尺
此规则使用的最大地图比例尺, [ScaleAndPpi scale] < MaxScaleDenominator + 1e-6时可见
<Filter>
属性过滤条件
支持比较运算符:大于&gt、大于等于&gt;=,小于&lt,小于等于&lt;=,等于=
支持逻辑运算符:andornot
支持正则匹配,.match
<ElseFilter/>
其他过滤条件
包含<ElseFilter /> 标签的Rule对象,.在当前Rule的匹配中,如果没有可以匹配到的(符合最大最小比例尺或过滤条件)规则,就会执行ElseFilter过滤条件。
<PointSymbolizer>
点符号
<LineSymbolizer>
线符号
<LinePatternSymbolizer>
线图案符号
<MarkersSymbolizer>
点符号
<ShieldSymbolizer>
盾牌符号
<PolygonSymbolizer>
面符号
<PolygonPatternSymbolizer>
面图案符号
<TextSymbolizer>
文本符号
<RasterSymbolizer>
栅格符号
<BuildingSymbolizer>
建筑符号
指定渲染多边形的伪3D效果,为它们提供类似建筑物的外观
<GroupSymbolizer>
组符号
指定多个道路防护罩或其他标签的渲染,组合后当成一个点对象对一个要素进行渲染。
<DebugSymbolizer>
调试符号

补充:
在这里插入图片描述

Layer对象

图层对象通过设置StyleName来引用Style。

属性说明
cache-features默认为off,设置这个参数为on,当图层有多个样式附加到图层上市将会触发mapnik尝试缓存这些要素到内存中。(mapnik>2版本生效)
clear-label-cacheDefault “off”. Setting this to “on” clears the internal placement detector list, causing the items of this layer, and from this layer on, to be rendered without taking previous rendered items into account (‘clear collision avoidance list’)
minzoom最小缩放级别,默认0.0
maxzoom最大缩放级别,默认1.797693134862316e+308
name图层的名称
srs默认继承自Map.srs。引用Proj.4格式的坐标系,例如 +proj=latlong +datum=WGS84
status状态,默认是on,on代表打开图层,off代表关闭图层。也可以是0和1
title默认为""
queryable默认 false

子节点:

子节点名称说明
<Datasource>要渲染的数据源
<StyleName>定义的样式的名字,必须包含与Style.name属性完全相同的字符串。
DataSource对象
属性说明
name数据源模板的名称
base指定继承的数据源模板
type支持的类型有:
shape: ESRI shapefile
postgis: Postgis table or query
pgraster: Postgis table or query (containing or returning raster)
raster:Tiled or stripped TIFF
gdal: GDAL supported raster dataset (not build by default)
ogr:OGR supported vector datasource (not build by default)
osm: OpenStreetMap (not build by default)
estimate_extentboolean,告诉Mapnik估计图层的范围(true)或(false)
extent如果estimate_extent设置为false,请手动输入范围。

base:

<Map>
  <Datasource name="shapes">
   <Paramaeter name="base">/home/foo/shapes</Parameter>
  </Datasource>
  <Layer name="lay">
    <Datasource base="shapes">
      <Parameter name="file">places</Parameter>
    </Datasource>
  </Layer>
</Map>

XML符号配置

PointSymbolizer(点符号)

使用png,tiff,svg图形符号来渲染点。可以使用ShiedSymbolizer将文本标签和图形符号组合起来。如果你想改变符号的offset(偏移量)请使用MarkerSymbolizer
在这里插入图片描述

属性说明
file
文件
图片路径
width
(removed)
默认4px
height
(removed)
默认4px
type
(removed)
png tiff svg 默认值none
allow-overlap
允许重叠
允许文本和点图片叠加,true/false,默认值false
opacity
不透明度
0.0 - 1.0
transform
转换
SVG transform
ignore-placement
允许后面的点/盾牌符号叠加此符号。默认值false
comp-opCompositing,默认值none

LineSymbolizer(线符号)

属性说明
stroke线的颜色,CSS颜色,比如‘green’#A3D979,默认值为black
stroke-width线的宽度,单位是像素,默认是1.0
stroke-opacity线不透明度,0代表完全透明,1代表不透明,.5代表50%透明
stroke-linejoinmiter(尖角)、round(圆角)、bevel(斜角),默认值为miter
stroke-linecapround(向线条的每个末端添加圆形线帽)、butt(向线条的每个末端添加平直的边缘)、square(向线条的每个末端添加正方形线帽),默认值是butt
stroke-dasharray一对长度值[a,b],其中(a)是短划线长度,(b)是间隙长度。也支持两个以上的值(例如,不是用笔划开始线,而是用间隙开始)。
comp-opCompositing
smooth值在0.0-1.0之间。1表示完全平滑的线,0表示没有变化。默认是值0.0

LinePatternSymbolizer(线图案符号)

指定重复的png,tiff或svg符号的渲染以创建一条线,如下图所示的悬崖。
在这里插入图片描述

属性说明
file图片文件的路径,默认为none,要求mapnik>=2.0
basebase path where to search for file
width
(removed)
默认4px
height
(removed)
默认4px
type
(removed)
png tiff,默认none
comp-opCompositing

MarkersSymbolizer

指定将tiff,png或svg图像渲染为方向标记。可以用作PointSymbolizer的替代方案,以更好地控制图像的定位。
在这里插入图片描述

属性说明
allow-overlap允许符号叠加其它符号,默认是false
spacing点与点之间的间隔距离,默认是100pixel
max-error标记可以从指定位置移动以避免碰撞的最大量。该值是“间隔”的一部分,例如spacing = 100,max_error = 0.2然后标记可以移动的最大值是20像素,如果这还不够,则根本不绘制
file用于标记的SVG文件
transformSVG transform
opacity不透明度,默认1.0
fill点符号填充颜色,比如#FFFFFF,默认是blue
stroke外边线颜色,CSS颜色 - 颜色值,例如“green”或#A3D979。默认值是black
stroke-width外边线宽度
stroke-opacity外边线不透明度
width标记像素的宽度,默认10px
height标记像素的高度,默认10px
placement“point”, “interior”(内部), “line”, “vertex-first” (mapnik >= 3), “vertex-last” (mapnik >= 3)。
默认值:line (mapnik <=2.0.x) point (mapnik >= 2.1)
ignore-placement“true” or “false”,默认false
marker-type“arrow”(箭头) “ellipse”(椭圆)
默认值:“arrow” if line placement, “ellipse” if point placement

ShieldSymbolizer(盾牌符号)

指定在某一点渲染png,tiff或svg图形符号和标签文本。
实际上,这是TextSymbolizer和PointSymbolizer的(工作)组合。如果您尝试分开使用TextSymbolizerPointSymbolizer,您将经常看到没有文本的点和/或没有点的文本。
在这里插入图片描述
支持TextSymbolizer的所有配置选项,一下是额外的配置选项。

属性说明
base基本符号模板
file用于盾牌背景的文件
opacity用于盾牌的图像的不透明度,默认1
text-opacity放置在盾牌顶部的文字的不透明度
unlock-image如果为true,盾牌图像不会移动,默认为false
shield-dx盾牌图像和文字的水平偏移量,默认为0
shield-dy盾牌图像和文字的垂直偏移量,默认为0
transformTransform image

base
Add <FileSource name="foo">/home/bar/baz/</FileSource> to the beginning of your stylesheet and then use <ShieldSymbolizer base="foo" name="bridge" /> to refer to /home/bar/baz/bridge.
dx,dy
dx,dy仅用来移动文本,对shield无效。

属性说明
shield-dx
shield-dy
Move shield only
dx,dyWith unlock_image = true: move text only.
With unlock_image = false: move text and shield
unlock_imageTrue: Shield base point is always the input line/point (usecase: labeling bus stations).
False: Shield base point is the center of the text (i.e. depends on dx,dy,vertical-alignment, horizontal-alignment) (usecase: highway shields)

placement
placement =“line”仅表示ShieldSymbolizer沿着一条线放置,而对于TextSymbolizer,它也会旋转文本。添加spacing参数以使ShieldSymbolizer沿线重复,否则placement =“line”placement =“point”将看起来相同

PolygonSymbolizer(面填充符号)

属性说明
fillcss颜色,默认是“grey”,填充颜​​色以指定多边形,默认为rgba(128,128,128,1),表示灰色且完全不透明(alpha = 1),与rgb(128,128,128)相同。
fill-opacity多边形的不透明度(指定alpha的另一种方法)。可与rgba颜色组合使用,并将与颜色的现有alpha分量相乘
gamma0.0-1.0之间,多边形边缘的抗锯齿级别 - 基本上是伽玛1(默认)意味着完全抗锯齿,而较小的伽玛降低了抗锯齿级别,导致更多锯齿状的多边形边缘。如果您希望背景颜色不“透过”,则可能需要降低伽马值。
comp-opCompositing

PolygonPatternSymbolizer(面图案填充符号)

渲染由多边形包围的区域,用重复的tiff,png或svg图像填充它。PolygonSymbolizer的替代方案。
在这里插入图片描述

属性说明
file图片文件的路径,默认为none
width
(removed)
默认4px
height
(removed)
默认4px
type
(removed)
png tiff,默认none
comp-opCompositing

TextSymbolizer

RasterSymbolizer

BuildingSymbolizer

渲染多边形的伪3D效果,为它们提供类似建筑物的外观。
在这里插入图片描述

属性说明
fillcss colour,默认gray
fill-opacity填充不透明度,默认值为1.0
heightfloat (static value or expression)
<BuildingSymbolizer fill="#000000" height="8" fill-opacity="1" /

Height表达式:

<BuildingSymbolizer fill="#000000" height="[height_db]" fill-opacity="1" />

GroupSymbolizer

DebugSymbolizer(略)

示例

  1. 面符号叠加标注
    在这里插入图片描述
    <PolygonSymbolizer fill="#FF00FF" fill-opacity="0.5"/>
    <LineSymbolizer stroke-width=".5" stroke="#FFFF00"/>
    <TextSymbolizer face-name="Unifont Medium" fill="black" placement="interior" size="20">[f_name]</TextSymbolizer>
    
  2. 面条件渲染,如下我对面图层定义了三个过滤条件gid>=0,gid>=20,gid>=50,然后叠加了外边线和文本标注符号。
    在这里插入图片描述
    <Style name="t_201906111017107533">
         <Rule>
             <Filter>[gid]&gt;=0</Filter>
             <PolygonSymbolizer fill="#00FFFF" />
         </Rule>
         <Rule>
             <Filter>[gid]&gt;=20</Filter>
             <PolygonSymbolizer fill="#97a9e9"/>
         </Rule>
         <Rule>
             <Filter>[gid]&gt;=50</Filter>
             <PolygonSymbolizer fill="#f0aaf0"/>
         </Rule>
         <Rule>
             <LineSymbolizer stroke-width=".5" stroke="#FFFF00"/>
             <TextSymbolizer face-name="Unifont Medium" fill="black" placement="interior" size="20">[f_name]</TextSymbolizer>
         </Rule>
     </Style>
    

PostGIS配置

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值