SuperMap GIS基础产品三维GIS FAQ集锦(5)

SuperMap GIS基础产品三维GIS FAQ集锦(5)
【WebGL】时间轴怎么添加?
【解决办法】在初始化的时候添加时间轴,例如:
//添加地形
var viewer = new Cesium.Viewer(‘cesiumContainer’, {
timeline: true,
});

【WebGL】鼠标获取屏幕坐标后,如何转化为wgs84经纬度坐标?
【解决办法】代码如下:

//获取点击位置笛卡尔坐标,将屏幕坐标转化为笛卡尔坐标
        var position = scene.pickPosition(e.position);

        //将笛卡尔坐标先转化为弧度制的经纬度坐标,再将弧度制转化为角度制的经纬度坐标
        var cartographic = Cesium.Cartographic.fromCartesian(position);
        var longitude = Cesium.Math.toDegrees(cartographic.longitude);
        var latitude = Cesium.Math.toDegrees(cartographic.latitude);

【WebGL】模型专题图如何提升加载速率?
【解决办法】1、开启本地缓存根节点:layers[ij]. indexedbBSetting. isGeoTilesRootNodeSave = true;//本地缓存根节点,根节点不需要重复下载〈不清浏览器缓存)
2、根节点驻留内存:layers[i].residentRootTile = true;//根节点驻留内存(屏幕区域外不清除根节点内存>
3、关闭是否保存属性:layer.indexedDBSetting.isAttributessave=false,设置专题图字段时,默认是layer.indexedDBSetting.isAttributessave=true,会开启图层的全部属性字段下载,数据量大会影响性能
4、指定仅下载需要的属性字段,提升性能:layers[j].queryFieldMames = ['Floors ', ‘landuse’];//指定仅下载需要的属性字段,提升性能,桌面缓存生成时,‘属性存属类型’需要选择ATRTBUTE才支持
【WebGL】怎么让entity做的标签不被地形覆盖
【解决办法】可以从数据处理层面来处理,也可以前端去设置
1.数据处理层面:点数据提取地形高程,三维数据—TIN地形—提取数据;
2.前端设置:

distanceDisplayCondition:根据与摄像机的距离设置标签的显隐
disableDepthTestDistance :6000, //在相机高度在6000以下标签就不被地形遮挡;
disableDepthTestDistance:Number.POSITIVE_INFINITY,//要想文本一直显示,可以设置为Number.POSITIVE_INFINITY无穷大

【WebGL】限制相机不再向下缩放
【解决办法】

//设置相机最小缩放距离,距离地表100米
viewer.scene.screenSpaceCameraController.minimumZoomDistance = 100; 

【WebGL】相机穿过模型怎么设置
【解决办法】

//开启碰撞检测
scene.screenSpaceCameraController.enableIndoorColliDetection=true;

【WebGL】参考官网bim写图层树html正常,使用vue框架后很慢
【问题原因】viewer放入到了data里面
【解决办法】将viewer对象作为window的全局对象,避免vue劫持viewer,同时方便在其他组件中调用。参考文章:http://support.supermap.com.cn:8090/webgl/examples/TopicDOC/Vue&WebGLDevelopment.html
【WebGL】官方自定义气泡示例里面点击气泡事件进不去
【问题原因】示例设置了鼠标无法点击标签
【解决办法】pointerEvents设置的是none,改为auto

document.getElementById('test').style.pointerEvents= 'auto';

【WebGL】如何自定义倾斜数据不同相机高度图层的粗糙层
【解决办法】在webgl中场景通过数据与相机的直线距离来调度显示不同LOD,每一个LOD层级之间的切换距离大约是1000米,如果效果没有达到需求,也可以通过监听相机高度来设置倾斜的lod缩放比例,例如:

viewer.camera.changed.addEventListener(function () {
 var height= viewer.camera.positionCartographic.height;// 返回当前相机高度
 if (height < 1000000) { 
 // 如果高度低于1000000米,设置一个缩放比例
      S3MTilesLayer.lodRangeScale=0.01;
   } else { 
 // 高度在1000000米及以上,设置一个缩放比例
       S3MTilesLayer.lodRangeScale=0.5;
  }
});

【WebGL】entity设置贴地无效,贴模型了
【解决办法】

//classificationType写polygon{}里生效
classificationType: Cesium.ClassificationType.TERRAIN

【WebGL】如何固定模型受光照的时间
【解决办法】

viewer.clockViewModel.currentTime = Cesium.JulianDate.fromDate(new Date("2023/07/24 12:00:00"));

【WebGL】WebGL加载二维地图背景颜色如何去掉?
【解决方法】设置背景颜色透明

var layer = viewer.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
        url : "https://iserver.supermap.io/iserver/services/map-jingjin/rest/maps/京津地区地图"
        }));
        layer.transparentBackColor = Cesium.Color.WHITE;
        layer.transparentBackColorTolerance = 0.5;

【WebGL】如何实现城市交通模拟?
【解决办法】可以通过以下步骤实现:1、通过iDesktop X 制作车辆轨迹三维线;
2、将三维线数据集发布为数据服务
3、在iClient for Cesium中通过Ajax请求获取车辆路线
4、通过动态图层DynamicLayer3D,来实现小车移动
【WebGL】在动态图层中,如何实现点击小车使相机跟随?
【解决办法】可以通过以下步骤实现:1、点击小车模型,获取当前点击的对象:pickedObject = scene.pick(e.position);
2、通过当前对象,获取动态图层中,当前对象的运行状态state:

var selectedPrimitive = pickedObject.primitive; // 选中的图元
            var ownerGroup = selectedPrimitive._ownerGroup; // 图元所在的组信息
            var stateList = ownerGroup.stateList; // 状态信息列表
            var state = stateList.get(pickedObject.id);

3、根据运行状态state,构造point对象:

 trackedEntity = viewer.entities.add({
                    id: 'tracked-entity',
                    position: state.position,
                    point: {
                        pixelSize: 1,
                        show: true // 不能设为false
                    },
                    viewFrom: new Cesium.Cartesian3(-100, -150, 100) // 观察位置的偏移量
                });

4、将当前场景的跟随对象设置为上一步构建的point对象:viewer.trackedEntity = trackedEntity;
【WebGL】是否可以使用一张本地图片作为地球底图?如何实现?
【解决办法】可以,通过 new Cesium.SingleTileImageryProvider()方法,传入本地图片相对路径即可。建议图片长宽比2:1。
【WebGL】添加在线天地图服务,浏览器出现很多429 (Too Many Requests)错误,是什么原因?
【问题原因】这是由于请求天地图服务过于频繁,天地图官方服务器做了请求数量限制
【解决办法】对于在线免费的天地图服务,没有办法处理这个现象。另外提供两个方案:1、购买天地图服务,即可取消该限制;2、下载高清离线地图,再通过SuperMap iServer发布服务调用
【WebGL】运行iClient for Cesium范例时,没有出现地球,只有星空背景是什么情况?
【问题原因】因为范例中添加了在线的BingMap地图服务,在某些情况下比如BingMap服务器维护、服务key值过期,都会导致访问不到地图服务
【解决办法】1、去BingMap官网申请可用的key;
2、将添加地图服务的代码全部删除。
【WebGL】是否可以添加ArcGIS Server发布的地方坐标系服务?
【解决办法】1、地方坐标系,可以通过动态服务的方式加载,接口:ArcGisMapServerImageryProvider,并且加载到球面位置可能不对,建议用平面场景加载;
2、地方坐标系的切片服务,Cesium无法加载;
3、Cesium可通过ArcGisMapServerImageryProvider加载4326地理坐标系的切片服务;
4、Cesium可通过CGCS2000MapServerImageryProvider加载4490,web墨卡托投影的切片服务;
5、Cesium可通过WebMapTileServiceImageryProvider加载OGC标准的wmts服务,支持4326,4490坐标系,对于4490坐标系,只能针对于原点在orgin X: -180.0Y: 90.0的情况,对于原点在orgin X: -400.0Y: 400.0时还是无法加载。
【WebGL】如何通过键盘实现场景漫游?
【解决办法】有两种方案实现键盘操纵场景漫游。1、第一人称模式:相机默认贴地,通过键盘鼠标控制相机:scene.walkingMode = Cesium.WalkingMode.ByKeyboard ;
2、通过键盘改变相机参数实现相机移动,参考demo:http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#KeyboardControlCamera
【WebGL】浏览三维场景时,如何让相机不穿透建筑和地形?
【解决办法】分别开启室内碰撞检测和地形碰撞检测。1、室内碰撞检测:scene.screenSpaceCameraController.ScreenSpaceCameraController = true
2、地形碰撞检测:scene.screenSpaceCameraController…enableCollisionDetection = true
【WebGL】开启扫描线特效后,出现上下两个扫描特效?
【问题原因】关闭了地形深度检测,导致地下也出现了扫描特效
【解决办法】开启地形深度检测:viewer.scene.globe.depthTestAgainstTerrain = true
【WebGL】为什么我发布的模型无法设置线框模式?
【问题原因】模型生成缓存,默认不带线框,所以前端无法设置线框模式
【解决办法】使用10.1.2及以后的iDesktop,生成缓存,并在缓存参数界面勾选【带线框】
【WebGL】如何调节模型的亮度?
【解决办法】1、使用iDesktop【修改材质颜色】功能,将模型颜色修改为白色
2、使用iDesktop,对模型缓存图层右键属性,在参数面板中调整亮度
3、使用iClient for Cesium,在S3MTilesLayer类中修改brightness 参数调节图层亮度
4、使用iClient for Cesium,利用颜色校正对象,更改场景亮度:

var correction = scene.colorCorrection;//创建颜色校正对象
 correction.show = true;//开启颜色校正
 correction.brightness = 2.0;

【WebGL】为什么我的模型没有阴影效果,开启光照和设置时间都没用?
【问题原因】模型不带法线,法线决定了光在物体表面的反射效果,模型不带法线,就没有任何的光影效果
【解决办法】在iDesktop中对模型数据集生成缓存时,在参数面板中勾选【法线】
【WebGL】对模型数据集右键生成场景缓存,特征值字段是什么意思,该如何使用?
【解决办法】含义:特征值表示在数据集生成缓存时设置的特征值字段,前端可根据这个特征值字段批量控制各个值代表的模型的显隐
用法:1、特征值字段必须为整型字段类型。在对数据集右键,或者批量生成缓存时,将“顶点权重模式”参数设置为“数据集字段”,再将“特征值”参数设置为指定的整形字段。2、iClient for Cesium中,可根据该属性进行模型的批量显隐控制:

if(!this.checked) {
 building.setCategoriesVisible([-2000011], 0);//拥有该字段的对象隐藏
} else {
 building.setCategoriesVisible([-2000011], 1);//拥有该字段的对象显示
}

【WebGL】有什么方法能对前端添加的模型进行分屏显示?
【解决办法】前端添加模型有几种方式,分别是、;entity实体方式,S3MInstance实例化对象方式,kml图层方式。其中S3MInstance,和kml图层方式可设置分屏显示,指定对象在哪个屏可见。相关代码:

S3MInstanceCollection.setVisibleInViewport(index, visible);
KmlDataSource.setVisibleInViewport(index, visible)

【WebGL】WebGL圆球和椭球有什么区别,分别在什么条件下使用?
【问题原因】为了更好的兼容3Dtiles等椭球数据,从11i版本开始,全面支持椭球场景
【解决办法】圆球表示球体的长半轴和短半轴相等,地球是一个标准的球体。椭球表示球体的长半轴大于短半轴,地球是一个微扁的椭球体,更符合真实情况。如果三维数据都是使用iDesktop11i之前的版本处理的,默认是圆球数据,前端加载时也使用默认圆球;如果三维数据是使用iDesktop11i及以后的版本处理的,默认是椭球数据,前端需要将默认圆球改为椭球进行添加。前端将球体变为椭球的代码:

var obj = [6378137.0, 6378137.0, 6356752.3142451793];
Cesium.Ellipsoid.WGS84 = Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));

圆球数据和椭球数据添加到同一场景下会有相对偏移,需要重新处理成相同球体数据进行添加
【iServer】通过iServer将点云数据发布为服务后,进行预览,发现点云的颜色丢失,跟iDesktopX中显示效果不同,该如何解决?
点云数据在前端想要显示颜色,需要进行分层设色设置,具体实现代码可以参考官网示例:
http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#S3MTiles_pointCloud
【WebGl】坡度坡向分析后,是否支持设置坡向结果箭头的颜色?
【解决方案】可以使用SuperMap iClient3D for Cesium11.1.0的版本,设置对应的SlopeSetting的参数即可。比如:Cesium.SlopeSetting.SlopeArrowsColor= new Cesium.Color(255 / 255, 0 / 255, 0 / 255);
【WebGL】如何使Leaflet 二维和 3D-WebGL三维进行联动
【解决方案】二维对三维的联动主要是指鼠标在二维中浏览操作时,将影响三维中相机控制,即鼠标在二维中进行缩放或漫游等操作后所示的地理范围将修改三维中的摄像机的位置和方向,使三维中所看到的区域范围与二维一致;三维对二维的联动是指鼠标在三维中进行漫游、缩放等操作后,所示区域范围将传递给二维系统,使二维地图与三维画面所呈现的区域一致。
实现代码建议参考技术博客相关内容:(https://blog.csdn.net/supermapsupport/article/details/122114790)
【WebGL】查询相机的位置以及姿态
【解决方案】可通过 Web 控制台输出信息并查看。
(1)获取当前相机位置:

console.log(viewer.camera.position);	

(2)获取heading、pitch、roll等参数值:

console.log(viewer.camera.heading);
console.log(viewer.camera.pitch);
console.log(viewer.camera.roll);

【WebGL】SuperMap Cesium 如何初始界面不是地球
【解决方案】(1)直接跳转到场景,建议直接使用scene.open()打开场景,代码参考如下:

var viewer = new Cesium.Viewer('cesiumContainer');
var scene = viewer.scene;
var promise = scene.open('http://localhost:8090/iserver/services/XXX/rest/realspace');

(2)跳转到指定位置,建议通过scene.camera.setView()设置相机位置,具体代码参考官方示例:(http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#S3MTiles_suofeiya);
获取当前相机位置以及heading、pitch、roll等参数值可通过 Web 控制台输出信息并查看,代码如下所示:

console.log(viewer.camera.position);
console.log(viewer.camera.heading);
console.log(viewer.camera.pitch);
console.log(viewer.camera.roll);

【WebGL】WebGL中如何创建渐变色实体
【解决方案】创建实体时材质使用PolylineTrailMaterialProperty创建,例如:

material: new Cesium.PolylineTrailMaterialProperty({
            color: Cesium.Color.RED.withAlpha(0.9),
            trailLength: 0.4,
            period: 1.0
    	})

【WebGL】为什么WebGL接口中飞行站点传入的heading和桌面飞行路线文件中的heading差距很大,并且前端取值传入后端构造出的fpf方位不对.
【问题原因】因为桌面heading单位为度,WebGL用的单位是弧度
【解决方案】坐标转换一下,WebGL的弧度转为度后传给后端,接口: Cesium.Math.toDegrees
【WebGL】WebGL如何不在创建Viewer前向安全验证类中传入参数
【解决方案】如下:

let tmp = [{
                        rooturl: "asdasdadasd",
                        type: "key",
                        value: "adasdada"
                    }]
                    Cesium.Credential.CREDENTIAL.addCredential(tmp, 0)

【WebGL】WebGL如何禁止相机旋转和缩放
【解决方案】

scene.screenSpaceCameraController.enableZoom = false; //禁止缩放
scene.screenSpaceCameraController.enableRotate = false; // 禁止旋转

【WebGL】如何调整TIN地形的透明度?
【解决办法】

viewer.scene.undergroundMode = true;
viewer.scene.globe.globeAlpha = 0.5;

【WebGL】对图层设置layer.setObjsColor([50], new Cesium.Color(1,1,1,0.8));,透明后的构件会穿透后面的构件;
【解决办法】前端代码设置

var viewer = new Cesium.Viewer('cesiumContainer',{
			orderIndependentTranslucency:false
		});

来关闭透明排序即可解决
【WebGL】场景加载404报错Aborted(RuntimeError:Aborted(both async and sync fetching of the wasm failed))
【解决办法】在IIS的MIME中添加相关后缀文件。
https://blog.csdn.net/allway2/article/details/124843506
添加“.wasm”–“application/wasm”
【WebGL】如何通过绘制的圆形区域,进行三维空间查询?
【解决方法】参考GPU空间查询示例可实现http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#spatialQuery3D
【WebGL】倾斜摄影如何实现分层分户?
【解决方法】可以参考:
(1)、倾斜摄影分层分户数据制作:https://blog.csdn.net/supermapsupport/article/details/103263569
(2)、SuperMap iClient3D for WebGL教程之分层分户:https://blog.csdn.net/supermapsupport/article/details/103671827
【Unity】关联矢量资产种树设置预制体不起作用,场景中看不到效果,请问如何解决?
【解决方案】使用该功能有两个注意事项:
1.在运行【关联矢量资产】时需要提前打开场景;
2.将spm的资源必须放到Resources路径下。
【WebGL】设置参数S3M2.0生成缓存后在前端调用不显示模型,但是iServer预览正常,如何解决?
【解决办法】如果使用的是10.2.1之前的WebGL包(SuperMap iClient3D)加载倾斜缓存文件,则倾斜入库时建议使用S3M1.0。
【WebGL】前端加载桌面切的三维标签专题图缓存,注记部分不显示,如何解决?
【解决办法】前端加载的时候对注记默认做了避让,设置S3MTilesLayer的isOverlapDisplayed为true即可。
【WebGL】Cesium椭球模式加载缓存数据位置偏移严重,如何解决?
【解决办法】 椭球模式开启代码在在初始化viewer前添加。代码如下:

Cesium.Ellipsoid.WGS84 = Object.freeze(new Cesium.Ellipsoid(6378137.0, 6378137.0, 6356752.3142451793));

【WebGL】如何在WebGL中用S3MInstanceCollection接口加载s3m模型?
【解决办法】参考示例:

 //s3mInstance添加s3m模型
    var s3mInstanceColc = new Cesium.S3MInstanceCollection(scene._context);
    scene.primitives.add(s3mInstanceColc);
    s3mInstanceColc.add('./data/car/qiche10.s3m', {
      id: 1,
      position: new Cesium.Cartesian3.fromDegrees(116.4717575064941,39.92171235599680, 20),
    });

【WebGL】Cesium添加billborad 可以使用动图吗?
【解决办法】Cesium添加billbord不支持动图格式,如果是想在前端添加动图,可以通过libgif库实现,参考:https://blog.csdn.net/Fascinated0525/article/details/125284778,其他方式例如html元素,参考:https://blog.csdn.net/supermapsupport/article/details/101772188。
【WebGL】web端加载数据,例如倾斜摄影数据,是否有加载模型图层数量的限制?
【解决办法】web端没有对加载模型图层数量做限制,但是渲染时,每个图层都会占用一定资源,并且调度时也会带来一定损耗。因此,不建议场景中的图层数量过多。最好控制在 20个 之内,多了也不要 50个。倾斜摄影单独加载是否清晰,出现模糊情况可能是S3M图层的LOD层级也会影响倾斜摄影的显示效果,可以通过设置S3MTilesLayer.lodRangeScale来调整。
【WebGL】如何关闭选中实体对象出现的绿色框?
【解决办法】在示例化viewer的时候设置以下参数进行关闭:

 var viewer = new Cesium.Viewer('mapContainer',{
        selectionIndicator: false 
    });

【WebGL】前端球面场景加载4548的rest服务不显示
【问题原因】WebGL球面场景只支持加载地理坐标系和墨卡托投影的坐标系
【解决办法】将数据投影转换成对应的地理坐标系
【WebGL】billboard被地形遮挡怎么办
【解决办法】在billboard里面设置disableDepthTestDistance = Number.POSITIVE_INFINITY
【WebGL】前端如何设置图元选中不高亮
【解决办法】设置图层选中颜色为白色,layer.selectedColor = Cesium.Color.WHITE
【WebGL】如何给图层设置亮度?
【解决办法】layer.brightness 设置图层亮度值调节颜色。
【WebGL】图层底部高程太低了,如何抬高图层
【解决办法】参考代码设置:

var waterLayer =scene.layers.find('水面@vector');
                var style = new Cesium.Style3D();
                style.bottomAltitude = 5;
                //设置水面图层的底部高程,确保水面与模型贴合
                waterLayer.style3D = style;
                //设置风格后需刷新
                waterLayer.refresh();

【WebGL】如何隐藏部分图元
【解决办法】可以通过layer.setObjsVisible([图元id数组],false)设置
【WebGL】前端如何定位到指定图层
【解决办法】可以使用viewer.flyTo(layer)进行图层定位
【WebGL】分层分户查询示例鼠标事件改成MOUSE_MOVE事件为什么不生效?
【问题原因】移动终点的位置是endPosition,点击的位置是position。ScreenSpaceEventHandler 监听屏幕空间中发生的事件(即鼠标、触摸和指针事件),e是一个在 ScreenSpaceEventHandler 内部构造的对象,用于将事件传递给回调函数.e.endPosition 具有 x 和 y表示鼠标移动在屏幕空间中的结果位置的值。
【解决方法】示例中,scene.pickPosition(e.position)改为scene.pickPosition(e.endPosition)
【WebGL】桌面中模型颜色为浅黄色,生成缓存时,设置纹理压缩格式为Webp参数进行缓存后,发布服务在iServer中预览模型颜色变灰了怎么办?
【解决方法】纹理压缩格式为Webp的情况下,当纹理红绿反转时,使用颜色通道RGB转BGR。layer.RGBTOBGR =true;该参数默认关闭,需自行开启。
【WebGL】前端需要获取的数据服务面的范围坐标字段,udbx数据源没有范围字段,内存数据源有,怎么办?
【解决方法】udbx范围信息存入SmGeometry为二进制信息。 内存数据源与udb数据源格式相同, 范围信息明码。如果想使用udbx数据源可以通过属性表-计算几何属性获取范围信息。 或者使用udb数据源。
【WebGL】前端查询例如分层分户示例,查询不到属性信息,替换其他数据正常,代码以及服务没有问题, 是什么其他原因导致的?
【问题原因】前端查询的是id,属性字段不要以“id”命名,会影响前端查询结果。
【WebGL】左下角SuperMap图标如何去掉?
【解决方法】有几种方式可以实现:
1.隐藏对应的div,$(“.cesium-widget-credits”).hide();
2.打开浏览器的开发者模式查看其css样式,在viewer.css中.cesium-viewer .cesium-widget-credits可以设置元素 display: none;。
3.代码中设置 viewer._bottomContainer.style.display = “none”;隐藏图标
【WebGL】加载投影坐标系的矢量瓦片为什么不显示?
【问题原因】WebGL球面场景只支持加载地理坐标系的矢量瓦片数据。暂不能支持其他投影坐标系的矢量瓦片
【解决办法】将数据投影转换成对应的地理坐标系
【WebGL】前端做阴影分析时,如何获取所有点的阴影率?
【解决办法】 可以使用以下接口获取:

shadowQuery.queryPointsEvent.addEventListener(function(e) {
  console.log(e)
})

【WebGL】位置拾取示例中为何选中模型,模型没有高亮显示?如何实现该效果?
【问题原因】在位置拾取示例中,初始化加载后遍历了所有图层设置了不可选中。
【解决办法】代码中通过设置S3MTilesLayer.selectEnabled = false 即可实现模型不可选中的效果。
【WebGL】如何去除实体entity的点击事件?
【解决办法】
可以通过下面代码去除实体的点击事件

viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

【WebGL】iServer中同一个三维服务发布多个场景如何加载指定场景?

【解决办法】WebGL中通过scene.open打开的场景默认会加载到第一个场景。如果需要加载指定场景可以在scene.open(url, sceneName, options)中指定场景名称即可实现添加指定场景。
【WebGL】显卡配置较低,内存相对较小电脑,在拖动场景过程中出现浏览器崩溃应该如何解决?
【解决办法】在场景初始化前,通过代码设置Cesium.MemoryManager.setCacheSize(1024);最大缓存空间,此设置将控制缓存空间大小。默认不限制大小,当缓存超过1024则不继续请求瓦片。
【WebGL】场景出现崩溃应该如何输出内存占用信息?
【解决办法】在代码中设置Cesium.MemoryManager.showMemoryInfo()方法,当场景崩溃或达到设定范围后,控制台会输出内存占用的信息。
【WebGL】矢量瓦片style3D设置底部高程,线、面并没有抬高是什么原因?
【问题原因】矢量瓦片通过设置底部高程的方法仅对图层中的标签图层生效,其他图层暂没有支持。
【解决办法】
如需面图层抬升,则需要对原始点线面数据在场景中制作专题图,通过生成s3m缓存的方式制作,制作后的数据可以抬高高度。
【iDesktop】多份栅格数据应该如何处理为地形缓存?
【解决办法】
多份地形数据,数据量较小的情况下可以将多份数据导入至数据源,并通过栅格镶嵌的方式合并为同一个栅格数据后,右键数据集生成缓存即可。
如数据量较大,可以通过创建镶嵌数据集的方法,拼接多份栅格数据后,再生成地形缓存。具体实现方法参考下方链接(http://support.supermap.com.cn:8090/webgl/examples/TopicDOC/Process%20of%20Large-Scale%20Terrain%20to%20Imagery.html)
【iDesktopX】iDesktopX中s3m数据转换为3dtiles数据后,前端查询不到3dtiles属性是什么原因?
【问题原因】iDesktopX将s3m转换为3dtiles数据并不存储其属性信息所以默认查不到数据。
【解决方法】
将模型数据提取面数据后,发布为数据服务,前端通过点击拾取位置对面数据做空间查询后返回其对应属性信息。
【WebGL】场景中同时存在s3m3.0及2.0数据,数据iDesktop中观察模型显示正常,在Webgl中模型加载时发现模型错位了应该如何处理?
【问题原因】iDesktop中会默认将椭球圆球识别进行转化,所以桌面中观察并没有问题。webgl中默认按照圆球加载数据所以会出现错位问题。
【解决方法】
可以通过代码设置

var obj = [6378137.0, 6378137.0, 6356752.3142451793];
Cesium.Ellipsoid.WGS84 = Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));

来解决错位问题。
【iDeskop】对倾斜摄影数据进行裁剪,保存的结果还是原来的倾斜,没有裁剪出来怎么办?
【问题原因】裁剪面有多个对象,并且节点很多,十分复杂,导致未成功裁剪
【解决办法】将面数据的多个对象合并为一个后,再进行倾斜摄影数据裁剪
【WebGL】WebGL如何给管线加gif贴图?
【解决办法】如果是webgl要实现流动管线的话,是通过缓存纹理流动或实体尾迹线实现的,而不是材质贴图自己是动图。
参考:
http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#FlowingPipeLine
http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#airlinesTrailLines
https://blog.csdn.net/supermapsupport/article/details/102775780
【Bentley插件】插件导出报错,”操作系统无法加载 …\ DgnToUDB.dll,错误 127…无法加载库(DLL 或 MDL 共享库) DgnToUDB“怎么办?
【问题原因】组件没有真正被运行起来,其问题原因可能来自许可、软件与插件版本以及环境变量等方向。
【解决办法】建议按如下操作排查报错问题:
1.检查Bentley版本与插件版本是否一致。
2.拷贝文件的目录是否与插件说明注意事项文档中路径一致。
3.是否有超图组件许可,插件官网插件安装包中使用的是组件10i的bin包,注意组件许可使用10i系列。
4.组件包设置饿的环境变量确保其置顶并在path最前端。
5.如以上操作设置确认无误,导出时仍出现此报错,尝试一下方法:重启电脑,再次查看插件导出是否报错。
6.如仍出现报错,考虑为读不到BIN得环境变量导致的问题,复制bin包内容,粘贴至安装目录,例如C:\Program Files\Bentley\MicroStation CONNECT Edition\MicroStation\Mdlapps下 ,即可解决此报错问题。

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