三维模型淹没分析
在三维模型场景中进行淹没分析可视化,模型要求其自身轴Y轴朝上,可以通过Blender等软件进行调整。


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>三维模型淹没分析</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"/>
<style>
body {
margin: 0;
padding: 0;
}
#map {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
}
.btn-group {
position: absolute;
top: 20px;
left: 20px;
}
</style>
<script src="https://delivery.mapmost.com/cdn/sdk/webgl/v9.4.0/mapmost-webgl-min.js"></script>
</head>
<body>
<div id="map"></div>
<div class="btn-group">
<button onClick="add()">淹没分析</button>
<button onClick="remove()">移除</button>
</div>
<script>
var map = new mapmost.Map({
container: 'map',
style: "<your style url>",
center: [120.74449559193792, 31.30775326748954],
zoom: 16,
pitch: 60,
userId: '***', // 授权码
env3D: {
exposure: 1.72,
envMap: '../example_data/hdr/WhiteBG_Ref_1K.hdr'
}
});
let analysis;
let modelLayer;
let modelGroup;
map.on('load', function () {
let models_obj_jjh = ["jinji_plaza_eastern_door_building", "jinji_plaza_bridge", "jinji_plaza_fence", "jinji_plaza_north_building", "jinji_plaza_star_vista", "jinji_plaza_surface", "jinji_plaza_w"].map(item => ({
type: 'glb',
url: "../example_data/jjh_Scene_Y/" + item + ".glb"
}));
let options = {
id: 'model_id',
type: 'model',
models: models_obj_jjh,
center: [120.67727020663829, 31.31997024841401, 0.0],
callback: function (group, layer) {
modelLayer = layer;
modelGroup = group;
}
};
map.addLayer(options);
})
function add() {
analysis = new mapmost.FloodAnalysis(modelLayer);
let polygon = [
[120.6748700590328, 31.317587208391657],
[120.67304114304773, 31.322872574364027],
[120.67959508946251, 31.32397370332575],
[120.68178555834226, 31.31655724270135],
[120.6748700590328, 31.317587208391657]
];
analysis.analyse({
models: modelGroup,
minHeight: 0,
maxHeight: 150,
startColor: "#07f5ff",
endColor: "#f27d06",
speed: 5,
colorMix: 0.6,
// range: polygon
});
}
function remove() {
analysis.clear()
}
</script>
</body>
</html>