跳到主要内容
版本:9.4.0

分析(Analysis)

三维分析。

FloodAnalysis

淹没分析可视化。

参数

名称类型描述
layerLayer必填图层实例,ModelLayer 或 3DTilesLayer。

案例

// 初始化淹没分析类
new mapmost.FloodAnalysis(layer)

实例成员

analyse

设置淹没参数并进行淹没分析渲染模型。

参数
名称类型描述
optionObject必填参数
名称类型默认值描述
modelsObject可选用于淹没分析的模型,默认为当前图层的所有模型。
rangeArray可选框选范围,形如 [[lon,lat],[lon,lat]...],不设置该参数时则对整个 models 范围进行淹没分析。
minHeightNumber0可选淹没开始高度,单位米。
maxHeightNumber100可选淹没结束高度,单位米。
speedNumber1可选淹没速度,单位米/秒。
startColorString#94E6F8可选淹没开始高度颜色。
endColorString#012895可选淹没结束高度颜色。
colorMixNumber0.6可选淹没效果颜色混合占比,范围 0-1。
案例
let analysis = new mapmost.FloodAnalysis(layer);
let polygon = [
[120.74091493906315, 31.309723842354217],
[120.74462296468971, 31.311393233066624],
[120.74484083816549, 31.30670598817069],
[120.74227073726502, 31.306037256905938],
[120.74091493906315, 31.309723842354217]];
analysis.analyse({
minHeight: 0,
maxHeight: 20,
startColor: "#07ff8a",
endColor: "#ff10fd",
speed: 5,
colorMix: 0.4,
range: polygon
});

clear

移除淹没分析可视化效果。

案例
let analysis = new mapmost.FloodAnalysis(layer);
analysis.clear();

参考示例 三维模型淹没分析。 参考示例 3DTiles淹没分析

ClassifyAnalysis

分析类,可进行三维模型和3DTiles单体化分析

参数

名称类型描述
mapMap必填map实例。

案例

// 初始化分析类
new mapmost.ClassifyAnalysis(map)

实例成员

analyse

设置单体化分析参数并进行单体化。

参数
名称类型描述
optionObject必填参数
名称类型默认值描述
coordinateArray[Number]必填外包盒在二维空间的点位坐标,[[经度,纬度],[经度,纬度],……]。
colorString#ff0000可选单体化颜色值。
opacityNumber0.5可选单体化效果不透明度,范围0-1之间。
baseHeightNumber25可选外包盒的起始高度,单位米,支持大于0的整数或小数。
stretchHeightNumber35可选外包盒在垂直方向上的拉伸高度,单位米,支持大于0的整数或小数。
案例
let analysis = new mapmost.ClassifyAnalysis(map);
let coordinate = [
[120.7440396705365, 31.30775759163872],
[120.74733413440896, 31.308306621332633],
[120.74646526481644, 31.305344916185064],
[120.74501714882791, 31.305043327408995],
[120.743795300964, 31.306288341506914],
];
let option = {
coordinate: coordinate,
color: "#ff0000",
opacity: 0.5,
baseHeight: 25,
stretchHeight: 35,
};
analysis.analyse(option);

clear

移除单体化效果。

案例
let analysis = new mapmost.ClassifyAnalysis(map);
analysis.clear();

参考示例 3DTiles动态单体化

ViewshedAnalysis

分析类,可进行可视域分析,场景中需要有background图层。

参数

名称类型描述
mapMap必填map实例。

案例

// 初始化分析类
new mapmost.ViewshedAnalysis(map)

实例成员

analyse

设置分析参数并进行可视域分析。

参数
名称类型描述
optionObject必填参数
名称类型默认值描述
positionArray[Number]必填视点位置坐标,形如 [经度,纬度,高度]。
bearingNumber0可选视点方位角,表示从北方逆时针方向测量的度数,以度为单位。
pitchNumber0可选视点俯仰角,表示当前视线方向与俯视视线方向之间的夹角,以度为单位。
distanceNumber1000可选可视距离,以米为单位,值需大于0。
fovXNumber90可选水平视场角,表示可视域分析水平视角范围,即指相机镜头能够拍摄到的水平范围,以度为单位,范围为 0-180。
fovYNumber45可选垂直视场角,表示可视域分析垂直视角范围,即指相机镜头能够拍摄到的垂直范围,以度为单位,范围为 0-180。
invisibleColorString#990000可选不可见区域颜色,支持十六进制值、RGB、RGBA格式。
invisibleOpacityNumber0.5可选不可见区域透明度,范围为 0-1。
visibleColorString#007f00可选可见区域颜色,支持十六进制值、RGB、RGBA格式。
visibleOpacityNumber0.3可选可见区域透明度,范围为 0-1。
wireframeDisplayBooleantrue可选是否显示提示线。
wireframeColorString#ffff00可选提示线颜色,支持十六进制值、RGB、RGBA格式。
wireframeDensityNumber8可选提示线密度,可视域弧面线框密度,值需为2的倍数。
案例
let map = new mapmost.Map({
......
viewshedBufferSize: 2048 // 设置可视域缓冲区大小,必须为2的幂次方
});

// 初始化分析实例
let analysis = new mapmost.ViewshedAnalysis(map);

// 分析参数
let opt = {
position: [120.69878455823062, 31.30434269979058, 1000],
pitch: 60,
bearing: 60,
fovX: 90,
fovY: 45,
distance: 1000,
visibleColor: "#007f00",
visibleOpacity: 0.3,
invisibleColor: "#990000",
invisibleOpacity: 0.5,
wireframeColor: "#ffff00",
wireframeDisplay: true,
wireframeDensity: 8,
}

// 开始分析
analysis.analyse(opt);

calcOption

根据起止点获取分析参数。

参数
名称类型描述
startPointArray必填起点,形如[经度,纬度,高度]。
endPointArray必填终点,形如[经度,纬度,高度]。
案例
let analysis = new mapmost.ViewshedAnalysis(map);

// 根据起止点获取可视域参数
let st = [120.703589426768602, 31.314416492134825, 1000];
let et = [120.681136937730201, 31.324054117146595, 1];
let opt = analysis.calcOption(st, et);

// 开始分析
analysis.analyse(opt);

clear

清除分析结果,地图清除可视域分析结果,分析实例保留,可调用analyse方法更新分析结果。

案例
analysis.clear();

destroy

销毁分析实例,地图清除分析结果并销毁分析实例,销毁后实例所有方法均不可调用。

案例
analysis.destroy();

getOption

获取分析参数。

案例
let analysis = new mapmost.ViewshedAnalysis(map);

// 获取分析配置信息
let opt = analysis.getOption();

// 更新分析参数
opt.pitch= 45;
analysis.analyse(opt);

setViewPoint

设置当前分析视角为地图视角。

案例
analysis.setViewPoint();

参考示例 可视域分析

ExcavationAnalysis

分析类,可进行地表开挖分析,作用于矢量和栅格数据。

参数

名称类型描述
mapMap必填map实例。

案例

// 初始化分析类
new mapmost.ExcavationAnalysis(map)

实例成员

analyse

设置分析参数并进行地表开挖分析,多次调用会覆盖之前分析结果。

参数
名称类型描述
optionObject必填参数
名称类型描述
rangeArray必填开挖范围,形如 [[经度,纬度],[经度,纬度]……]。
depthNumber必填开挖深度,以米为单位。
bottomImgString可选开挖底部贴图文件路径。
sideImgString可选开挖侧面贴图文件路径。
案例
// 初始化分析实例
let excavation = new mapmost.ExcavationAnalysis(map);
// 开始分析
excavation.analyse({
range: [
[120.67470712700884, 31.31986091806357],
[120.67778068126427, 31.31802931914737],
[120.67315076176152, 31.317359955173245],
[120.67470712700884, 31.31986091806357],
], // 开挖范围
depth: 20, // 开挖深度
sideImg: './excavationAnalysis/excavate_kuangqu.jpg', // 开挖侧面贴图
bottomImg: './excavationAnalysis/excavate_bottom.jpg', // 开挖底部贴图
});

clear

清除分析结果,地图清除分析结果,分析实例保留。

案例
excavation.clear();

destroy

销毁分析实例,地图清除分析结果并销毁分析实例,销毁后实例所有方法均不可调用。

案例
excavation.destroy();

参考示例 地表开挖分析

SightLineAnalysis

通视分析。

参数

名称类型描述
mapMap必填map实例。

案例

// 初始化通视分析类
new mapmost.SightLineAnalysis(map)

实例成员

analyse

设置分析参数并进行通视分析。

参数
名称类型描述
optionObject必填参数
名称类型默认值描述
idString必填唯一标识符。
viewPointArray必填通视分析起点,形如 [经度,纬度,高度]。
targetPointArray必填通视分析目标点,形如 [经度,纬度,高度]。
drawLineBooleantrue可选是否显示通视线。
lineWidthNumber10可选通视/障碍线宽度,当 "drawLine" 为true时生效。
viewLineColorString#ffb536可选通视线颜色,当 "drawLine" 为true时生效。
obstructLineColorString#ff0000可选障碍线颜色,当 "drawLine" 为true时生效。
layerArrayundefined可选参与通视分析图层,不设置默认为全部场景。
返回值

返回值为一个对象,参数如下:

名称类型描述
visibleBoolean起点到该目标点之间是否通视,通视则返回true。
obstructPointArray若不通视,返回障碍点坐标,通视则返回undefined。
案例
// 初始化分析实例
let sightLineAnalysis = new mapmost.SightLineAnalysis(map);

// 开始分析
let result=sightLineAnalysis.analyse({
id:"sight",
viewPoint:[120.67233678173892, 31.318166023281748, 600],
targetPoint: [120.67559559597004, 31.319729878719883, 0],
});

clear

移除通视分析可视化效果。

参数
名称类型描述
idString可选通视分析的唯一标识符,不填则清除所有分析可视化效果。
案例
let sightLineAnalysis = new mapmost.SightLineAnalysis(map);
sightLineAnalysis.clear('sight'); // 根据id清除对应分析可视化效果
sightLineAnalysis.clear(); // 清除所有分析可视化效果

destroy

销毁通视分析实例。

案例
let sightLineAnalysis = new mapmost.SightLineAnalysis(map);
sightLineAnalysis.destroy()

参考示例 通视分析

CubeSectionAnalysis

立方体剖切分析。

参数

名称类型描述
mapMap必填map实例。

案例

// 初始化立方体剖切分析类
new mapmost.CubeSectionAnalysis(map);

实例成员

analyse

设置分析参数并进行立方体剖切分析。

参数
名称类型描述
optionsObject必填参数
名称类型默认值描述
centerArray必填剖切立方体中心点经纬度以及高度,形如[经度,纬度,高度]。
sizeArray[10,10,10]可选剖切立方体尺寸,单位为米,形如 [长,宽,高]。
rotateZNumber0可选剖切立方体在Z轴的旋转角度。
targetLayersArray可选支持剖切的三维图层实例数组,默认为空则不剖切。
enableFillExtrusionBooleanfalse可选是否剖切拉伸体。
enableGroundBooleanfalse可选是否剖切地表。
返回值

返回当前立方体盒子的八个顶点坐标。

案例
// 初始化分析实例
let lst = new mapmost.CubeSectionAnalysis(map);

// 开始分析
let result = lst.analyse({
center: [120,31,30], // 经度,纬度,高度
size: [100, 100, 100], // 立方体剖切的大小
rotateZ: 0, // z轴旋转角度
targetLayers: [modelLayer,layer3dtils], //需要剖切的三维图层实例
enableFillExtrusion: true, // 开启拉伸体裁切
enableGround: true, // 开启地表裁切
});

clear

清除所有剖切效果,分析实例保留,可调用analyse方法更新分析结果。

案例
lst.clear()

destroy

销毁剖切分析实例。

案例
lst.destroy()

参考示例 立方体剖切分析