量测距离
在地表上逐点单击,连成折线并算出总长度,每一段的中点标着自己的公里数。 右键或按钮清空重新量。
距离为什么用 EllipsoidGeodesic
Cartesian3.distance 算的是三维空间里的直线长度,也就是穿过地壳的弦长。
北京到上海弦长约 1067 公里,沿地表的大圆距离约 1068 公里,短距离差别可以忽略,
但量几百公里的管线、上千公里的航线时,误差会累积到百米级。
EllipsoidGeodesic 直接给出椭球面上的距离,同时还能按比例
取出中间点,示例正是用它来放分段标签的。
重绘的思路
每次加点都把之前创建的临时实体全部移除,再按当前点表重建一次。 点的数量在个位数到几十个,重建开销可以忽略,代码也不用维护增量的状态。
数据量大时(比如上百个拐点的管线),应该改成只追加新增线段, 否则每点一次都要销毁重建全部几何,肉眼能看到卡顿。
可调参数
| 位置 | 改什么 | 效果 |
|---|---|---|
polyline.width | 2 改成 1 | 线更细,适合精细的工程图 |
clampToGround | 改 false | 线按拾取高度画,不贴地形 |
interpolateUsingFraction(0.5) | 改成 0.5 之外的值 | 标签沿线段移动位置 |
showBackground | 改 false | 去掉标签底色,深色球面上更难读 |
| 右键回调 | 改成撤销上一点 | 把 points.pop() 后重绘 |
量出来偏短。没有地形时拾取的是椭球面,高程为零;
山谷里的实际地面比椭球面低、高原上更高,沿地形的真实里程会更长。
对精度有要求时,用 globe.pick 取真实地表点,
并按采样点做分段累加,而不是只连两个端点。
扩展方向
同一套采集逻辑换成面就是面积量测:把点表交给
PolygonHierarchy,面积用 Cesium.PolygonGeometry
计算,或者投影到局部平面后用鞋带公式估算。换成矩形就是框选范围,
换成立方体就是空域量测。