Cesium 4490 解决方案
今天同事反馈我们的系统加载不了国家2000(4490)的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),通过比较发现
2000.xml 和2000天地图切片方案(5-16级).xml 区别在于2000有21级切片,2000天地图只有20级切片,2000的切片方案第0级是多出来的一级,其他级别与2000天地图一致。
3、找了网上公开互联网的天地图切片方案,发现与2000天地图切片方案除了原点不一致,其他都一致
会不会是级别导致的问题呢?
4、查看系统请求图片的错误
如果是级别问题,那么请求的时候如果级别+1,会不会返回成功呢?
神奇的是竟然返回成功图片了,随机测试了几个无法返回图片的请求,在Level+1情况下,都返回了图片
5、验证整个服务,既然是级别问题,那如果我在服务器上直接修改切片的文件夹级别(可以看下ArcGISServer 切片规则,知道原由),把每个级别都减少1,比如L17改为L16
请求成功了
解决方案
1、修改Cesium 源码WebMapTileServiceImageryProvider,判断WMTS服务的切片级别,请求数据时调整级别,这个方案比较麻烦,对源码的理解要比较深入,才能修改,暂时没用这种方式
2、修改数据
1)重新发布数据,用2000天地图的切片方案重新切片
2)如果客户已经用2000的切片方案切好的服务,那可以重新发布一个服务,选择2000的切片方案,但是不生成切片(生成切片会比较长的时间,对客户来说也解释不了,客户只会认为你的系统支持不了2000坐标系的数据),把原来已经切好的切片目录拷贝到新服务的切片目录下,并把这些切片目录的名称级别都减少1,如果L21改为L20
加载代码:
其他问题
互联网2000的切片方案,原点是400,-400,似乎也加载不了,有数据的时候可以测试下