前言
在三维空间分析中,对模型的精确控制是必不可少的。SuperMap iClient 3D for WebGL 支持批量偏移模型,这意味着用户可以一次性对多个对象进行位置调整,这在城市规划、建筑设计和环境管理等领域中尤为重要。在本文中我们将探讨如何通过批量偏移模型来实现对三维空间数据的精确控制。我们将通过实例分析和操作步骤详解,向读者展示此功能的实现方法和应用场景
一、选定两点
//选一个模型基准点
var first = SuperMap3D.Cartesian3.fromDegrees(116.4526387723931, 39.91069801473176, 0)
var firstPoint = [116.4526387723931, 39.91069801473176, 0]
//基准点需要偏移到的点位
var second = SuperMap3D.Cartesian3.fromDegrees(116.45158484666833, 39.910758167457644, 0)
二、根据上述两点进行插值
// 计算两点之间的距离
var distance = SuperMap3D.Cartesian3.distance(first, second);
// 确定插入点的数量和间隔
var numberOfPoints = 1000; // 例如,插入10个点
var interval = distance / (numberOfPoints + 1); // 间隔
// 循环创建插入点
for (var i = 1; i <= numberOfPoints; i++) {
var fraction = i * interval / distance; // 计算比例因子
var interpolatedPoint = SuperMap3D.Cartesian3.lerp(first, second, fraction, new SuperMap3D.Cartesian3());
//将笛卡尔坐标转换为经纬度坐标
cartesianToLonLat(interpolatedPoint)
}
function cartesianToLonLat(position) {
//通过笛卡尔坐标计算经纬度坐标
var cartographic = SuperMap3D.Cartographic.fromCartesian(position);
var longitude = SuperMap3D.Math.toDegrees(cartographic.longitude);
var latitude = SuperMap3D.Math.toDegrees(cartographic.latitude);
//这里height直接赋值为0
var height = 0;
//将点位都绘制出来看是否正确
viewer.entities.add({
position: position,
point: {
color: SuperMap3D.Color.SKYBLUE,
pixelSize: 1,
outlineColor: SuperMap3D.Color.YELLOW,
outlineWidth: 3,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
});
points.push({
"x": longitude,
"y": latitude,
"z": height
})
}
三、偏移方法
function setOffset() {
//根据之前两个点位得出来的新点
var p = SuperMap3D.Cartesian3.fromDegrees(firstPoint[0], points[i].y, 0)
//x偏移距离
console.log(p, points[i])
var xd = SuperMap3D.Cartesian3.distance(p, SuperMap3D.Cartesian3.fromDegrees(points[i].x, points[i].y, 0))
//y偏移距离
var yd = SuperMap3D.Cartesian3.distance(first, p)
var options = {}
//这里挑选id从1-399的对象进行移动
for (var j = 1; j < 400; j++) {
options[j] = new SuperMap3D.Cartesian3(-xd, yd, 0)
}
buildingLayer.setBatchObjsTranslate(options)
if (i == points.length - 1) {
clearInterval(interval)
} else {
i++
}
}
四、平移效果
模型对象批量偏移
1619

被折叠的 条评论
为什么被折叠?



