今天同事反馈我们的系统加载不了国家20004490)的WMTS服务,刚改完的功能,用别的地方的数据可以,新提供的数据却不行,经过调试,发现确实不行。

然后也在百度上找了一下Cesium 4490 ,主要参考解决思路有下面这两个

https://blog.csdn.net/chenguizhenaza/article/details/112003278

https://blog.csdn.net/A873054267/article/details/86652620

这两篇文章,并没有解决问题,可以肯定的是代码并没有问题,因为有4490的数据可以加载,网上也有其他人成功加载过,那问题肯定出在数据上。

整理了一下思路

1、核实数据坐标系,加载成功过的数据和加载不成功的数据坐标系都是4490,

2、向同事要了加载不成功服务的切片方案(2000.xml)和加载成功的服务的切片方案(Conf2000天地图切片方案(5-16).xml),通过比较发现

 Cesium 4490  解决方案-风君雪科技博客

2000.xml 2000天地图切片方案(5-16).xml 区别在于200021级切片,2000天地图只有20级切片,2000的切片方案第0级是多出来的一级,其他级别与2000天地图一致。

3、找了网上公开互联网的天地图切片方案,发现与2000天地图切片方案除了原点不一致,其他都一致

 Cesium 4490  解决方案-风君雪科技博客

会不会是级别导致的问题呢?

4、查看系统请求图片的错误

 Cesium 4490  解决方案-风君雪科技博客

如果是级别问题,那么请求的时候如果级别+1,会不会返回成功呢?

Cesium 4490  解决方案-风君雪科技博客

神奇的是竟然返回成功图片了,随机测试了几个无法返回图片的请求,在Level+1情况下,都返回了图片

5、验证整个服务,既然是级别问题,那如果我在服务器上直接修改切片的文件夹级别(可以看下ArcGISServer 切片规则,知道原由),把每个级别都减少1,比如L17改为L16

请求成功了

 Cesium 4490  解决方案-风君雪科技博客

解决方案

1、修改Cesium 源码WebMapTileServiceImageryProvider,判断WMTS服务的切片级别,请求数据时调整级别,这个方案比较麻烦,对源码的理解要比较深入,才能修改,暂时没用这种方式

2、修改数据

1)重新发布数据,用2000天地图的切片方案重新切片

2)如果客户已经用2000的切片方案切好的服务,那可以重新发布一个服务,选择2000的切片方案,但是不生成切片(生成切片会比较长的时间,对客户来说也解释不了,客户只会认为你的系统支持不了2000坐标系的数据),把原来已经切好的切片目录拷贝到新服务的切片目录下,并把这些切片目录的名称级别都减少1,如果L21改为L20

 

加载代码:

 Cesium 4490  解决方案-风君雪科技博客

其他问题

互联网2000的切片方案,原点是400-400,似乎也加载不了,有数据的时候可以测试下