WebGL中数据无法正常显示的几种原因

作者:LingGL

不少用户在初学WebGL产品的时候,总会遇见一些三维数据法正常显示的问题,因此写一篇文章将这些问题总结一下。本文主要例举了影像和S3M缓存数据出现这些问题的原因和解决方案。大家可以根据自己的情况比对本文,找到适合的解决方法。

一、数据不显示

(一)常见问题来源

数据加载不显示是用户经常遇见的问题,加载不出数据有如下一些问题,也是用户最常见的,用户需要先检查一下自己是否用符合以下几种情况,然后再根据自己的数据类型来解决问题。

1. 工作空间保存时相机的视角比较高

iServer打开WebGL预览的时候,相机初始的位置与桌面保存场景时的相机位置是一致的。因此有时并非是数据不正确,而是在桌面软件保存场景时视角太高。这种情况只需要在桌面软件更改一下相机视角,即可解决这个问题。

2. 图层名中带有“#”这个符号

浏览器在向服务发请求时,对于一些特殊字符解析不出来,因此在带有“#”这个符号的图层加载不出来。在iDesktop制作数据时,常有以下两种情况会导致图层名中带“#”:
(1)制作专题图
桌面中对二三维点线面数据制作专题图后,专题图名称就会新增“#”符号,因此在专题图生成缓存后,缓存的scp配置文件名称便会多带个“#”。因此在专题图生成缓存后,要先将缓存配置文件名的“#”删掉,然后再加载。
(2)名称相同的图层添加了两次
除了制作专题图会出现“#”这个符号,场景中添加了两个名称相同的图层,后添加的图层就会多带一个“#”。因此在场景发布之前,检查一下场景图层中是否出现了“#”这个符号。

3.iServer版本低(910版本及以下)

当需要使用iServer产品发布服务,建议iServer版本和iDesktop版本一致。否则就会出现数据不可见的情况。
(1)影像不可见
若是iServer版本低的原因,使用者一般会发现,影像数据在iServer预览没有数据,而在使用代码调用服务后浏览是正常的。这个主要原因是iServer版本内嵌的WebGL版本比较低,支持不了,因此这种情况下,建议用户升级一下版本即可,建议升级到911及以上版本。
(2)缓存切成了S3MBZ和S3MB
这两种格式在910及以下版本的iserver是不支持的,建议升级到911及以上版本。

4. 工作空间保存的数据路径不对

这种情况一般出现在用户转移数据的时候,更改了工作空间和缓存数据之间的相对路径,因此在保存工作空间时,就将工作空间的存储位置确定好,数据转移时将所有的数据一起打包转移。查看工作空间保存的数据源的路径先要将工作空间另存成sxwu格式,再将这个格式的工作空间使用记事本打开或者用文本编辑器。下图截图部分便是记录的工作空间和数据源的相对路径。此时通过更改此路径或着在桌面重新打开数据另存一个工作空间。

WebGL中数据无法正常显示的几种原因_第1张图片

若检测完,以上几种情况都不存在,接下来,我们将要按数据类型来查找原因。

(二) S3M缓存数据不可见

1. 数据切成了矢量缓存导致不可见

点线面数据集生成缓存的时候,有矢量缓存和三维切片两种方式。用户没有注意,就会将数据生成矢量缓存。这时需要重新生成缓存,缓存方式如下:
先将矢量数据添加到三维场景中,保存场景,再使用场景右键生成缓存,在下图标记处设置为三维切片。

WebGL中数据无法正常显示的几种原因_第2张图片

2. OSGB格式的文件没有压缩成S3M格式文件

WebGL支持的缓存格式为S3M,发布的数据若为OSGB格式在前端加载时会转成S3M格式的,在小数据的OSGB格式发布显示可能没有问题,但数量大的时候就会出现加载不出来的情况。因此为了避免这种情况出现,生成缓存的时候我们需要在下图所示的地方选择生成S3M。

WebGL中数据无法正常显示的几种原因_第3张图片

若为倾斜摄影数据或已生成OSGB格式的数据,可以使用压缩纹理的方式将数据格式转换.。在三维数据菜单——倾斜摄影——压缩并单体化打开压缩纹理的功能,保存类型选择S3M。

WebGL中数据无法正常显示的几种原因_第4张图片

3.scp配置文件中路径不对

生成S3M缓存后,会生成一个scp文件和Tile文件夹。scp配置文件内记录着配置文件和Tile缓存文件的路径。出现这种情况就有用户在转移数据的时候,只转移了scp配置文件。为了避免这种情况出现,缓存时scp文件最好放在Tile同一个目录下,打包时将配置文件和Tile文件夹一同打包。
WebGL中数据无法正常显示的几种原因_第5张图片

4. 切成了S3MBZ和S3MB,没有使用谷歌浏览器

这两种格式在IE目前不支持的。

(三) 影像不可见

1. 影像缓存通过场景缓存的方式生成的

场景切缓存默认是dxtz格式,WebGL不支持,缓存方式换成数据集右键缓存,缓存的格式为jpg_png格式。

2. 影像剖分方式不是全球剖分

WebGL加载的影像必须是切的全球剖分瓦片,若为其他剖分方式,则不支持。剖分方式取决于数据的坐标系,只有数据的坐标是地理坐标,才能进行全球剖分,因此如果影像需要在三维产品中使用,建议将数据的坐标系转成WGS84和CGCS2000两种坐标。
通过数据集右键生成的缓存,默认是全球剖分方式。而如果使用地图右键切缓存的方式,默认的是本地剖分,这个需要注意。如下图所示,需要更改一下剖分方式。
WebGL中数据无法正常显示的几种原因_第6张图片

3. 加载WMTS服务不成功

WelGL可以加载第三方发布的WMTS服务。因此第三方发布的地图切图方式与超图切图方式会有一些区别,在加载WMTS服务要注意tileMatrixLabels 和 tilingScheme这两个参数的正确性。详情可以参考以下链接https://www.jianshu.com/p/9ef9fdbd5f9b

4. 没有密钥

现天地图和必应图服务加载需要Token值,初次可以申请试用,一段时间后,密钥会过期。这种情况比较简单,即加载的地图过期了,需要付费,或则IP被服务官网屏蔽。

结语
以上便是WelGL调用数据无法正常显示的原因,大家可以根据自己的情况自检一下。在自检后,若以上情况都不符合,仍然出现前端数据显示问题,大家可以前往超图社区提问或拨打400890086,在咨询时,直接告诉咨询人员使用的产品和版本,电脑硬件配置和使用的浏览器更能帮助支持人员定位问题。

你可能感兴趣的:(三维GIS)