Cesium加载地图切片显示混乱位置偏移

Cesium加载地图切片显示混乱位置偏移

出现这种问题大概分两种情况
1、切片数据本身存在问题,自己检查校验
2、数据没问题,这个是要说的重点

数据没问题但加载到cesium上就是会混乱偏移,这个问题大概分为两种情况

1、数据源有瑕疵

会存在一些数据源下载下来的切片数据目录没有0级,从1一级开始,cesium默认是要加载0级的,解决方法如下:

       new Cesium.UrlTemplateImageryProvider({
                url: "http://xxx/map/{level}/{x}/{y}.png",
                customTags: {
                    level: function(imageryProvider, x, y, z) {
                        return z+1
                    }
                },
              })

2、数据没问题,但是渲染出来就是乱(重点)

这种情况简单来说就是加载的地图数据的切片方式和cesium默认方式对不上

cesium默认切片排列方式是wmts+EPSG:3857
这时候两个问题:
1、什么是wmts?
2、什么是EPSG:3857?

解答
1:wmts是地图瓦片服务标准,就是说将地图切割成瓦片的标准,也就是说瓦片切割是有规律的,不是说想怎么切就怎么切,既然有规律,那么渲染混乱就说明是不符合某种规律导致的。(类似的还有wms、tmp标准等)
2:epsg:3857是地图坐标系,常见的还有epsg:4326
总结
一个是协议,一个是坐标系,上面说cesium默认加载的是wmts+3857,说明一个标准下不同坐标系切片结果也是不一样,所以你拿着4326的切片放到默认3857上的cesium,就是会乱。
解决
1、所以要解决你加载混乱的问题,你就得先搞清楚,你的数据源切片是怎么切的,是wmts+4326还是wmts+3857
最简单的区分方法:4326的0级目录有两张图,3857的0级目录只有1张图,后续层级的切分方式都是对上一级别的图进行2*2的切分。

2、那么其次,看看你的cesium是怎么加载影像的,重点看 tilingScheme,这个参数决定了切片的排列方式,简单来说他决定当前cesium用的是wmts+4326还是wmts+3857,百度一下他的使用方法。

   new Cesium.UrlTemplateImageryProvider({
            url: "http://xxx/map/{z}/{x}/{y}.png",
            tilingScheme: new Cesium.GeographicTilingScheme(),
          })

总结
那么只要你第一步和第二部对应上,那基本不会出现混乱的问题。

但是,不绝对,进阶难题来了
如果,上面的你都对应上了,但是图像还是乱的,比如你确定加载的切片是按照wmts+4326切分的,但是设置了对应的tilingScheme也还是混乱,那么大概这个切片服务的行列排列顺序是存在问题的,比如y上的切片排序可能是反的等,这需要你有一定的经验和眼神能够做出一个大概的判断。

你可以限制地图渲染的层级,只渲染两级,这样切片没那么多,查看渲染切片间的一个关系,类似于做拼图,看看是行列排反了吗,这时候用上述改变层级的方式改变url中原有x、y 、z的值,或者用cesium自带的方法,比如url中的

{z} :切片方案中切片的级别。零级是四叉树金字塔的根。
{x} :切片方案中的图块X坐标,其中0是最西端的图块。
{y} :切片方案中的图块Y坐标,其中0是最北的图块。
{reverseX} :切片方案中的图块X坐标,其中0是最东的图块。
{reverseY} :切片方案中的图块Y坐标,其中0是最南端的图块。
{reverseZ} :切片方案中切片的级别,其中级别0是四叉树金字塔的最大级别。为了使用reverseZ,必须定义maximumLevel。

那么最恐怖的就是不是简单的排序反了之类的,而是数据源切片方式完全不同,比如上述每份切成了22,他给你切成了33什么的,那你就最好是找到规律后转换成上述两种格式,那这过程一定是很酸爽的,祝福吧就。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值