Geoserver Style使用(二)

来源:互联网 发布:肝脏再造术的真假知乎 编辑:程序博客网 时间:2024/06/05 16:38

Geoserver Style 有多种格式,默认可以使用的是SLD格式。使用SLD编辑样式需要有一定的HTML语法基础。

一种样式可以包含一个或者多个规则来控制基于要素属性或缩放级别的显示。该功能类似于Arcgis的符号化功能,可以定制点,线、面、栅格和文本标签的样式。

GeoServer支持的矢量数据由三类形状组成:点,线和多边形。Geoserver中线(一维形状)是最简单的,因为它们只有边缘样式(Geoserver中称为“stroke”),也就是说,Geoserver中不支持线条的边缘和中心区别显示,如果需要实现该功能,可以使用线条的叠加;多边形(二维形状)包含边缘和内部填充(Geoserver中称为“fill”)两种属性,两者可以有不同的风格;点虽然没有维度,但在Geoserver中有边缘和内部填充属性,此外还包含大小属性,这些属性都可以编辑样式。对于“fill”属性,用户可以指定颜色;对于“stroke”属性,可以指定颜色和宽度。

GeoServer也支持栅格数据样式编辑,可以通过调色板、不透明度、对比度和其他参数进行设计。

当然也可以实现一些更高级的样式编辑。例如点元素可以渲染为圆形、正方形、星形,甚至是用户自定义图形或文本;线条可以用虚线或来表示;多边形可以用用户定制的图形填充。此外,样式可以基于数据自身的属性(字段),以实现不同类要素分别显示,这就类似Arcgis中的分类显示功能。Geoserver还支持在要素图形上显示文本标签,样式还可以依据缩放级别而有所不同,以便以合适的外观尺寸显示要素。

下面是一个SLD样例,该例中对Openstreetmap地图中的道路、水系、边界图层分别进行样式编辑,叠加效果如下:
这里写图片描述

以道路图层为例,通过以下代码设置道路的填充颜色、标签字段、标签放置角度、标签间隔等:

<StyledLayerDescriptor version="1.0.0"    xmlns="http://www.opengis.net/sld"    xmlns:ogc="http://www.opengis.net/ogc"    xmlns:xlink="http://www.w3.org/1999/xlink"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"> <NamedLayer>  <Name>Line with default label</Name>  <UserStyle>   <Title>SLD Cook Book: Line with default label</Title>   <FeatureTypeStyle>    <Rule>     <LineSymbolizer>      <Stroke>       <CssParameter name="stroke">#DAA520</CssParameter>      </Stroke>     </LineSymbolizer>     <TextSymbolizer>      <Label>       <ogc:PropertyName>name</ogc:PropertyName>      </Label>      <Font/>      <Fill>       <CssParameter name="fill">#000000</CssParameter>      </Fill>         <VendorOption name="followLine">true</VendorOption>         <VendorOption name="maxAngleDelta">90</VendorOption>         <VendorOption name="maxDisplacement">400</VendorOption>         <VendorOption name="repeat">800</VendorOption>     </TextSymbolizer>    </Rule>   </FeatureTypeStyle>  </UserStyle> </NamedLayer></StyledLayerDescriptor>

代码说明:这段代码看起来繁琐,但其实我们只需要理解其中比较重要的几行。15行设置道路颜色为暗黄色,颜色代码为”#DAA520”;第20行设置显示”name” 字段为标签,也就是显示道路名称;26-29行,“followline”属性设置为true,使得道路名称沿道路走向显示,更为和谐美观。”maxAngleDelta”设置为小于90°,这使得标签倾斜角度超过90度,以防止标签由于明显角度变化而难以辨认。 第28行将标签的最大位移设置为400像素,这是因为为了避免标签重叠,GeoServer会自动移动标签,使其不再重叠。该值设置标签相对于其原始位置可以移动的距离,避免位移过大造成混淆。 最后,第29行设置标签每隔800像素重复显示一次。这种设置通常适用于线状要素或面积较大的面状要素。一个要素通常只显示一个标签,但对于道路或河流显然不适用。将标签设置为重复可确保较长要素持续被标记。

PS:Geoserver使用十六进制颜色代码。颜色代码可参考网站http://www.yellowpipe.com/yis/tools/hex-to-rgb/color-converter.php,该网站提供了详细的颜色列表的十六进制代码和对应的RGB值,另外还提供了两者间转换的小工具,使用很方便。

Geoserver style详细使用说明参见用户手册:
http://docs.geoserver.org/stable/en/user/styling/sld/index.html

原创粉丝点击