GeoServer WMS 空间查询图形简化严重?改这一个数字就能解决
有次同事在群里发了两张截图使用Geoserver发布出来的wms图层服务第一张是直接加载 WMS 图层整体显示正常边界清晰 第二张用空间查询点击单个地块返回的图形轮廓出现了明显的锯齿和顶点丢失圆滑的弧线变成了折线。如下图我一开始以为时前端渲染引擎的问题后来还是另一个同事最后找到了原因是Geoserver里的全局设置服务设置里的小数位数只有4位。1. 根因定位全局设置里的“保留小数位数”登录 GeoServer 管理后台左侧菜单 → 设置→ Service Response Settings → 保留小数位数这个数字决定了 GeoServer 在输出 WMS / WFS 响应时坐标值保留多少位小数。以最常用的经纬度坐标系EPSG:4326为例1° 经度在赤道附近约等于 111 公里4 位小数 0.0001°对应约11 米的绝对精度如果你的业务需要分辨 1 米甚至更小的地物边界11 米的误差足够把曲率平滑的道路变成阶梯状对于 Web MercatorEPSG:3857或 UTM 投影坐标系坐标值动辄百万级4 位小数的像素误差同样会被放大放大到街道级别就能肉眼观察到变形。2. 修改小数位数改成8位或者10位配置即时生效无需重启 GeoServer数值怎么选问了AI给出的建议如下供参考个人觉得8位或者10位就够了适用场景推荐值精度参考常规 WebGIS地图展示、查询、叠加8经纬度毫米级投影坐标系厘米级覆盖绝大多数日常业务测绘 / 工程 / 高精度 GIS10冗余充足多出的数据量可以忽略不计低精度或带宽极敏感环境6折中选择但有条件仍建议 83. 修改后查询结果修改前(小数位数4位)修改后(小数位数8位)可以看到修改后基本和图层能够贴合了4. 分析为什么图层整个查看是正常的其实比较好理解因为wms的GetMap请求回来是图片而wms的空间查询GetFeatureInfo回来的是feature(坐标)因此受此处小数位影响总结通过修改Geoserver全局设置里的服务响应设置-保留小数位数解决空间查询锯齿问题。