关于GeoServer发布的wfs服务的精度问题

    本周基于arcgis/core组件,利用arcgis api for js 4.22版本加载GeoServer发布的同一数据源的wms和wfs服务,出现了偏移的问题。

    分析:同一数据源不同的访问方式,出现了偏移,这是很严重的问题。初步判断为js api加载方式的问题,或者是geoserver中的配置问题。

    探索一:js api是利用WFSLayer来加载WFS服务,通过页面调试,发现访问的请求中epsg是4326,而我们的数据是4490,找到问题了。但在加载WFSLayer时设置spatialReference,设置后依然无效。包括MapView设置spatialReference,依然无效。

    在网上查找相关资料,针对一些针对3.x版本中同仁们遇到的问题,尝试采用如下方式加载WFSLayer(代码段1):

getCapabilities('https://zjgt.portal.com:9080/geoserver/ows').then((capabilities) => {
          // create a list of the returned feature types
          getWFSLayerInfo(capabilities, 'polygona', 'https://zjgt.portal.com:9080/zjgt', { spatialReference: viewSpatialReference }).then((layerInfo) => {
            // create a list of the returned feature types
            const layer = WFSLayer.fromWFSLayerInfo(layerInfo)
            // add layer to the map
            map.add(layer)

结果,很遗憾问题依然存在,虽然spatialReference通过调试发现已经正确了。这就很尴尬了,还有别的问题。

          经过疯狂的查找,最终发现geoserver返回的坐标小数点后面只有4位。这。。。。。

GeoServer这么坑的吗?于是登录GeoServer,查看相关配置。最后找到了如下配置:

修改后 ,发现无效。在服务器上重启相关容器,发现依然无效。。。。。。。

简直崩溃,但我还是认为就是这里的问题。在本机(windows)上查看这个地方,发现是8。修改后,查看服务情况,发现果然改了。终于确定问题。

那么服务器上的这个版本GeoServer如何解决呢?重装一个版本??

现象:修改值后,能够成功保存,但是查看服务没有生效。暂且认为是GeoServer的bug。到服务器上找找相关配置:

修改后,果然解决了。

这里其实还有一个问题:我在本机(windows)安装与服务器上同一个版本的GeoServer也没有这个配置问题,哎。

到这里,这个问题就解决了,但是还有一个现象记录一下。采用代码段1加载wfs服务的时候(图片3):

 但是,调试的时候发现代码段1中:

 spatialReference已经改为:4490,且不再偏移。

回过头来用下列加载方式:

const layer = new WFSLayer({
          url: 'https://zjgt.portal.com:9080/geoserver/ows',
          name: 'zjgt:polygona'
        })
        map.add(layer)

 图片3中依然是4326,但是不再偏移。这里我认为是易智瑞的一个bug。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值