Ground

Ground类包含指定如何在SceneView中显示地面的属性。它包含一个layers属性,它是一个ElevationLayer的集合,定义了地图表面的海拔或地形。

在一个地图实例中,使用世界高程服务的默认地面可以方便地通过ground属性进行初始化:


var map = new Map({
  basemap: "topo-vector",
  ground: "world-elevation"
});

当需要地形和水深值时,可以使用TopoBathy 3D服务:


var map = new Map({
  basemap: "topo-vector",
  ground: "world-topobathymetry"
});

当没有可用的基本地图时,地面在默认情况下显示一个网格:

这可以通过在表面上设置颜色来改变:


map.ground.surfaceColor = '#004C73';

            const map = new Map({
              basemap: "topo-vector",
            //   ground: "world-elevation"
              ground: "world-topobathymetry"
            });
            const view = new SceneView({
              container: 'mapDivRef',
              map: map,
            });
            map.ground.surfaceColor = '#004C73';

如果场景中包含地下数据,降低地面的不透明度以使其能够穿透地面:


map.ground.opacity = 0.4;

属性概述

layers:一组高程层,定义了构成地面的高程或地形。

官网案列


            const map = new Map({
              basemap: "topo-vector",
            //   ground: "world-elevation"
            //   ground: "world-topobathymetry"
            });
            const view = new SceneView({
              container: 'mapDivRef',
              map: map,
            });
            var layer = new ElevationLayer({
                url: "//elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"
            });
            map.ground.layers.add(layer);

一组高程层,定义了构成地面的高程或地形。当高程层被添加到地面上时,表面的地形变化将以3D方式呈现,就像它们在现实世界中出现一样。

当层集合为空时,地面表面是平的。

loaded:指示实例是否已加载。当为true时,可以访问对象的属性。一个Ground被认为是已加载的,当它的层被完全创建,但还没有加载。默认值为false。

loadError:如果加载时发生错误,则返回错误对象。默认值为null。

loadStatus:表示加载操作的状态。

官网介绍

loadWarnins:加载时发生的警告列表。

navigationConstraint:指定相对于地面的用户导航约束。默认值是:stay-above,约束的类型。从4.8开始拥有。它可以是下列情况之一:

stay-above:用户只能在地面上导航。

none:用户可以在地面上下导航。

opacity:不透明度的地面,包括表面默认颜色和基本地图(没有参考层)。默认值是1

surfaceColor:基本地图下面显示的地面的颜色。默认值为null。


            map.ground.surfaceColor = '#004C73';
            map.ground.opacity = 0.8;
            //map.ground.navigationConstraint='stay-above';
            view.when(function () {
                console.log(map.ground.loadError);
                console.log(map.ground.loadStatus);
                console.log(map.ground.loadWarnings);
                console.log(map.ground.surfaceColor);
                console.log(map.ground.opacity);
                //console.log(map.ground.navigationConstraint)
               
            });

方法概述

cancleLoad():如果load()操作已经在进行中,则取消它。

clone():创建此对象的深度克隆。

createElevationSampler():为给定范围创建一个高程采样器,通过查询地面层的高程数据并将其缓存,以便以后可以快速采样。

destroy():破坏地面和它的图层。

fromJSON():创建这个类的一个新实例,并使用ArcGIS平台中产品生成的JSON对象的值对其进行初始化。

isFulfilled():可能用于验证类的实例创建是否完成(解析或拒绝)。

isRejected():可能用于验证创建类的实例是否被拒绝。

isResolved():可用于验证创建类的实例是否已解析。

load():加载该类引用的资源。

loadAll():加载与地面相关的所有外部可加载资源。

toJSON():将此类的实例转换为其ArcGIS门户JSON表示。

when():一旦创建了类的实例,就可以使用。


            view.when(function () {
                console.log(map.ground.isFulfilled());
                console.log(map.ground.isRejected());
                console.log(map.ground.isResolved());
                console.log(map.ground.toJSON());
            });
            map.ground.load().catch(function (error)      {}).then(function () {
                console.log("load");
            });

queryElevation():查询底层服务中给定几何图形的高程值。返回的结果包含几何图形的一个副本,其z值是从具有可用数据的第一层的高程数据中取样的。

参数:

geometry:取样的几何形状。Point、Multipoint、Polyine。


              const map = new Map({
              basemap: "topo-vector",
              ground: "world-elevation",
              spatialReference:4326
            });
            const view = new SceneView({
              container: 'mapDivRef',
              map: map,
            });
       
            map.ground.surfaceColor = '#004C73';
            var points = [
                 [ 86.9252, 27.9883 ],
                 [ 86.9265, 27.9894 ],
                 [ 86.9292, 27.9923 ],
                 [ 86.9324, 27.9960 ],
                 [ 86.9359, 27.9992 ]
            ];
            map.ground.queryElevation(new Multipoint({
                points:points,
                //不设置坐标系统会出错
                spatialReference: 4326
            }), {returnSampleInfo: true})
            .then(function(result) {
                result.geometry.points.forEach(function (point,index) {
                    var elevation=Math.round(point[2]);
                    var resolution=result.sampleInfo[index].demResolution;
                    var coordinateText="("+point[0]+","+point[1]+")";
                    var resolutionText=Math.round(resolution)+"meter resolution";
                    console.log("Sampled " + coordinateText + ": " + elevation + " at " + resolutionText);
                });
            }).catch(function (error) {
                console.error("Failed to query elevation:", error);
            });

版权声明:
作者:Gomo
链接:https://www.develophm.com/index.php/ground/559/
来源:开发之家
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>