1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 修改图层样式(geoserver)

修改图层样式(geoserver)

时间:2019-08-07 04:24:30

相关推荐

修改图层样式(geoserver)

背景

GeoServer支持自定义修改样式,但是默认情况下只能自己编写SLD代码,安装插件以后可以编写CSS代码来修改样式。不过这样子搞还是很麻烦,因此想找到更便捷的方法来修改图层样式。

生成SLD文件

既然GeoServer默认情况下只接受sld文件,那我们只需要找到可以生成sld格式的图层样式即可,因此我们可以使用QGIS软件先配置图层样式,然后再将配好的样式导出到GeoServer即可。没装QGIS的自行百度,这里不再赘述了。

1.图层读入到QGIS,并配置样式

右键点击图层,选择图层属性

按需调整以下属性

如果需要某个字段标注图形,可以设置:

如果要利用多个字段标注图形

如果需要在某种比例尺范围下显示或隐藏,可设置:

minimum,缩小到小于该比例尺不显示,maximum则相反。

设置好后保存导出样式:

选择sld格式,保存文件即可

导入GeoServer并配置到图层

登录GeoServer找到样式菜单,进入并选择新建样式

选择之前做好的SLD文件并上传,点击保存即可

然后打开图层,进入图层后选择“”发布“”选项卡:

找到wms设置下的图层设置,下拉选择找到刚才上传的样式,最后保存修改即可

效果如下:

注意事项

1.图形正常显示隐藏,但文字不行的问题

如果设置了按比例尺范围显示隐藏,请在上传后给字体也设置一下显示隐藏的比例尺,否则会出现图形可以正常显示隐藏但文字不行的问题。具体方法很简单,只要在sld文件中将设置显示隐藏的代码复制到设置字体的代码当中去即可:

2.多字段标签显示

有时候我们会想用多个字段一起标注图层的各个要素,进而达到如下效果:

在QGIS里面只需要利用concat函数就行,具体如下图所示:

但这个concat函数在geoserver那边是不认的,因此需要别的方法。

在geoserver中可以用以下方法实现:

一是直接放上两个属性字段(注意,如果做了中文别名,字段名称需要改成中文别名,而不是原字段名,否则会报错。至于怎么给图层加中文别名,可参考我的另一篇文章: 点击这里查看 )

// 注意找到label标签<se:TextSymbolizer><se:Label><ogc:PropertyName>属性A</ogc:PropertyName><ogc:PropertyName>属性B</ogc:PropertyName></se:Label></se:TextSymbolizer>

这种方法的效果将是:

//两属性横排拼接,中间空格分隔属性A 属性B

二是利用concat函数,方法如下:

<se:TextSymbolizer><se:Label><ogc:Function name="strConcat"> //调用concat函数<ogc:Function name="strConcat"><ogc:PropertyName>属性A</ogc:PropertyName><ogc:Literal>||</ogc:Literal> //拼接固定字符串“||”</ogc:Function><ogc:PropertyName>属性B</ogc:PropertyName></ogc:Function></se:Label></se:TextSymbolizer>

最后实现效果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。