主题
全球场景和局部场景
字数统计: 844 字
阅读时长: 约 2 分钟
当前版本: 4.29
相同底图和要素图层在全球场景和局部场景下的对比
什么是全球场景和局部场景?
全球场景和局部场景是用于可视化 3D 数据的两种不同的查看模式。在使用场景时,可以选择是在全球上渲染数据,还是将数据投影到可在 3D 空间中导航的平面上展示。
全球场景通常用于显示跨越全球范围的数据,需要查看地球曲率时,非常重要。
局部场景是地表的投影视图,通常用于较小的范围。在可视化国家/地区或城市数据时,它非常有用。要仅显示感兴趣的区域,可以将局部场景裁剪到某个范围。
在全球场景和局部场景中,都可以显示地下数据,并在地下和地上进行漫游。
如何创建场景
创建全球场景或局部场景,先定义需要显示的底图图层和数据图层,然后设置照相机属性。
定义场景
第一步是创建具有底图图层和数据图层的场景。如果需要,还可以引用高程服务以显示带有地貌的场景。
js
// In the GeoScene JS API, the Map class is used
// to define both maps and scenes.
const map = new Map({
basemap: "tianditu-vector",
ground: "world-elevation"
});
设置相机位置
设置场景后,可通过定义场景视图的相机、指定相机的位置(包括高度)、方向和倾斜度(或俯仰)来设置场景视图的场景视角。
使用场景视图时可以指定查看模式是 local
还是 global
。
js
const sceneView = new SceneView({
map: map,
camera: {
position: [
-41.18215285,
-86.13467977,
9321113.29449
],
heading: 359.73,
tilt: 68.57
},
viewingMode: "local",
container: "view2Div"
});
示例
创建全球场景
此示例显示了全球场景中的地震数据。该场景使用 Vintage Shaded Relief 图层作为底图。此外,地震数据图层作为 CSV 图层加载。在场景视图上设置了场景以及相机位置和全球查看模式。
js
const map = new Map({
basemap: new Basemap({
baseLayers: [
new TileLayer({
url: "https://tiles.arcgis.com/tiles/nGt4QxSblgDfeJn9/arcgis/rest/services/VintageShadedRelief/MapServer"
})
]}),
layers: [csvLayer]
});
const view = new SceneView({
container: "viewDiv",
map: map,
// Indicates to create a global scene
viewingMode: "global",
camera: {
position: [
-63.77153412,
20.75790715,
25512548.00000
],
heading: 0.00,
tilt: 0.10
},
constraints: {
altitude: {
min: 700000
}
},
alphaCompositingEnabled: true,
highlightOptions: {
fillOpacity: 0,
color: "#ffffff"
},
environment: {
background: {
type: "color",
color: [0, 0, 0, 0]
},
atmosphere: null,
starsEnabled: false
}
});
创建局部场景
此示例在一个裁剪的局部场景中显示地震。场景视图显示底图和地震数据 (显示在地平面下方)。启用地下导航以探索地震。此外,该视图使用裁剪范围来仅显示感兴趣的区域。
js
const map = new Map({
basemap: "tianditu-vector",
layers: [
uakesDepthLayer
],
ground: {
navigationConstraint: {
type: "none"
},
opacity: 0.8
}
});
const view = new SceneView({
container: "viewDiv",
map: map,
// Indicates to create a local scene
viewingMode: "local",
// Use the exent defined in clippingArea to define the bounds of the scene
clippingArea: {
xmax: -10834217,
xmin: -10932882,
ymax: 4493918,
ymin: 4432667,
spatialReference: {
wkid: 3857
}
},
camera: {
position: [
-98.36408160,
36.42115060,
26124.42603
],
heading: 32.37,
tilt: 78.08
},
// Turns off atmosphere and stars settings
environment: {
atmosphere: null,
starsEnabled: false
}
});