首页 / 浏览问题 / 三维GIS / 问题详情
Cesium上如何访问iServer发布的工作空间中的高程服务
56EXP 2023年09月18日
我将高程dem数据、影像数据等数据制作成一个工作空间,然后通过iServer将工作空间发布成服务,通过Cesium访问服务的URL地址,Cesium能够显示发布的影像服务,但是在绘制点、线对象时只能获取到经纬度,获取不到高程,想获取到高程数据iServer是需要把高程数据单独发布成一个服务?还是该怎么弄?如果需要单独发布成高程服务,应该怎么发布?

2 个回答

写个handler事件直接拾取位置就可以啦~

        var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
        handler.setInputAction(function (e) {
            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);
            var height = cartographic.height;

        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

高程数据直接放在场景open就可以打开。没必要单发。
330EXP 2023年09月18日
应用场景不一样需要Iserver做统一服务发布,多个终端进行访问,感谢!

您好,您是可以将dem、影像数据放在一个工作空间的发布iserver服务的,您在isever三维服务-【data】-【选择相应的DEM数据】作为访问的URL,然后使用以下代码加载地形。您在绘制点或线时,在控制台console.log可以获取到坐标信息吗,可以查看一下是否包含高程值。如果可以您可以发下相关的代码,我来帮您看一下。

var viewer = new Cesium.Viewer('Container',{
        //创建地形服务提供者的实例,url为SuperMap iServer发布的TIN地形服务
        terrainProvider : new Cesium.CesiumTerrainProvider({
            url : Xxxxxxxxxx,
            isSct : true,//地形服务源自SuperMap iServer发布时需设置isSct为true
            invisibility:true
        }),
    });

希望可以帮到您

1,335EXP 2023年09月18日
我现在是利用IDestktop将高程数据、影像数据、水系和道路矢量数据分别制作成三个数据源,再将三个数据源放到统一的工作空间,进行iserver发布时步骤如下:

服务管理-快速创建-数据来源(工作空间)-快速发布的服务类型选择(REST-地图服务、REST-数据服务、REST-三维服务、WMS1.1.1服务、WFS1.0.0服务、)进行服务发布后,用WebGl3D进行预览场景时预览打不开。

能够将iserver服务发布的流程告知一下吗?
正常的流程应该是,

1.新建数据源,导入数据集

2.右键数据集生成缓存,参数按照需求填写,需要注意S3M3..0和S3M2.0的区别

3.生成的缓存添加到场景当中,然后保存工作空间,保证缓存在球面可以定位到

4.打开iserver,发布工作空间,选择三维服务

5.在iserver保证能够成功预览

6.在前端WebGL打开服务

您确认一下地形是否切缓存了?预览看不到的话可以加载到前端页面看一下会不会出来
我地形没有切缓存,但是在前端软件上能够看到有地形效果,就是在获取高程数据时为0,
您方便发一份数据到我的邮箱吗,我帮您看看
...