geoserver发布的wms标签图层显示不全问题

解决GeoServer WMS标签显示问题:瓦片边缘标签优化与配置
本文讲述了作者如何解决地理信息系统(GIS)中Geoserver发布地图时,标签在放大地图后不显示或显示不全的问题。通过调整图层样式中的partials参数和DefaultRenderingBuffer,确保瓦片边缘标签完整显示,并介绍了矢量瓦片技术的应用和优化建议。
部署运行你感兴趣的模型镜像

最近遇到个问题,有客户反馈:在查看地图数据时,本来显示的点位名称,在地图放大时有些不显示了,是不是数据有问题?

排查问题后发现,数据是没问题的,可确实出现了客户描述的情况,如下图所示:

通常GIS服务器会为了解决标签重叠显示的问题,默认使用标签自动避让功能,但~这样不应该是放大地图后显示的标签会越来越多吗,怎么还更少了呢?

地图是用geoserver发布的,熟悉geoserver的同学都知道,geoserver图层的显示主要是用图层样式来控制的,包括图层的显示层级、标签自动避让等。

于是从这个思路入手,经过一番查找。。。

发现在配置geoserver styles的时候,把partials参数设置为true,能够解决这个问题

这个参数是什么意思呢,下面是官方文档给出的解释

大概意思是,当标签在瓦片边缘显示不全时,是否绘制。

该属性默认为false不绘制,这样就会出现文章开头描述的问题,本来显示的标签,结果地图放大后却不显示了。

partials参数设置为true后,标签可以显示了,但是又出现了新的问题,就是在瓦片边缘的标签显示不全,如下图:

又经过一番查找。。。

注意到,发布标签图层时,有个Default Rendering Buffer的参数,这个参数默认为空,试着将它设置为100后,再重新刷新图层,发现标签显示不全的问题竟然解决了。

2021051104

该参数的官方解释如下

我的理解是,默认情况下WMS的一个瓦片只处理自己范围内的数据,当设置缓冲后,瓦片就会向外多处理一部分,相邻的瓦片会有重叠,这样就能相互照应,避免缺失标签。

如下图所示,当Default Rendering Buffer设置为空时,图中框选部分是不显示的,原因是此标签对应的点位不在该瓦片所包含的范围内,当设置为合适的值后,该标签就会显示。

综上,geoserver发布的wms标签图层显示不全问题已完美解决。

这个项目是老项目维护,使用的栅格瓦片,新项目中已经开始使用矢量瓦片技术,矢量瓦片因为是在前台渲染,在标签显示上更灵活,效果更好,也推荐大家使用,具体使用可以参考如下思路:

  1. 使用geoserver发布矢量瓦片,这个百度一下会有很多教程。
  2. 使用maputnik配图获取配图样式。注意,在使maputnikgeoserver配图是会遇到问题,具体解决方式参考如何不改源码让maputnik支持geoserver
  3. 使用mapboxgl调用geoserver发布矢量瓦片图层,图层样式采用maputnik导出的配图样式。

总结

  1. geoserver发布的WMS标签图层使用默认样式,在瓦片边缘的标签会不显示
  2. 把样式中的partials参数设置为true,可显示瓦片边缘的标签,但是会显示不全
  3. 在图层发布中,将Default Rendering Buffer参数设置为100,显示不全的标签会显示完整

原文地址:http://gisarmory.xyz/blog/index.html?blog=GeoServerStyleLabel

关注《GIS兵器库》, 第一时间获得更多高质量GIS文章。

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名《GIS兵器库》(包含链接: http://gisarmory.xyz/blog/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Geoserver发布WMS服务的方法和步骤如下: 1. 启动Geoserver并登录管理页面:启动Geoserver服务,打开Geoserver服务主页面。若未安装Geoserver,需先安装。在Windows下可参考相关安装教程。管理页面网址一般为http://localhost:8080/geoserver/web/ ,使用安装时设置的帐户名和密码登录,默认账号/密码是admin / geoserver [^1][^2][^3]。 2. 添加工作空间:登录后在管理页面进行工作空间的添加操作 [^1]。 3. 注意事项:通过这种方法发布出来的服务只有空间点位,没有图标和注记样式,因为GeoServer中数据服务和渲染是分开的。要想利用GeoServer发布图幅美观的地图,需要通过第三方GIS桌面软件设置图层样式并输出SLD格式,供GeoServer使用 [^4]。 4. 使用openlayers访问wms服务浏览地图数据:可以使用如下代码加载WMS图层和属性数据。 ```javascript function addWMSLayer(url, LAYERS, VERSION, zoom, center) { var params = { LAYERS: LAYERS, //"topp:states", transparent: true, STYLES: '', format: "image/png" }; map.addWMSLayer("layerWms", url, params); //添加一个图层,第一个参数是图层名称 map.getMap().getView().fit(ol.proj.transformExtent([minX, minY, maxX, maxY], "EPSG:4326", "EPSG:3857"), { duration: 500, nearest: true }); //缩放到图层范围 } ``` 其中参数`url`为安装geoserver服务器的地址,例如:http://your_ip/geoserver/wms ;参数`layers`格式为`your_ws:t_buildings`,前面是新建的工作区名称,后面是发布图层名称 [^5]。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值