Geoserver中面图层Label标注重复的问题

文章讨论了在Geoserver中面图层Label重复显示的问题,原因在于WMS单个瓦片渲染导致。解决方案是通过修改SLD,使用centroid函数使标注基于面的中心点,但大Polygon可能无法看见标注。最佳方案是采用整屏请求显示。
摘要由CSDN通过智能技术生成

Geoserver中面图层Label标注重复的问题

原因分析

主窗口中是使用的 WMS整屏请求渲染,看到的是单个注记(kqwebmap 没有封装提供二次开发)。

多窗口视图,基于原生的 leaflet js api 开发,L.tileLayer.wms 用来显示地图上WMS服务,它继承自TileLayer瓦片图层,Geoserver在渲染单个瓦片时,总是试图在每个瓦片中都显示一个Label标注,看到的每个瓦片中都有一个注记。

var layer3_xzq_xj = L.tileLayer.wms(compareUrl, 
{ layers: 'qxyj:xzq_xianji', 
format: 'image/png', 
transparent: true, 
version: '1.1.1', 
identify:false, 
tileSize: 512, 
})

解决方案

修改SLD,将标注改为以面的中心点进行标注,添加如下配置,如图所示。

<se:Geometry> 
<ogc:Function name="centroid">
 <ogc:PropertyName>geom</ogc:PropertyName>
 </ogc:Function> 
</se:Geometry>

修改好效果如下:

缺点

此方法能有效的解决标注重复问题,缺点是如果Polygon较大的情况下,会出现看不见标注的情况。因为标注只会在中心点的固定位置渲染,而不会随可视范围变化。

最好的解决办法还是是改造成整屏请求显示。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值