entity ,primitive,3D tiles 3者的含义和区别
Entity、Primitive、3D Tiles、GeoJSON 等业务图层。
简单理解为:Entity 是业务对象,Primitive 是渲染对象,3D Tiles 是流式加载的大规模三维数据格式。

空间查询的理解
空间查询 = 根据「空间位置 / 范围条件」,筛选出满足几何关系的空间要素(点、线、面、模型)。
不是普通的 id=xxx 属性查询,是基于几何坐标关系 的查询。 工程上通常配合 Turf.js 做地理计算
放到你之前万级动态点位场景,典型需求:
- 在某个多边形范围内,找出里面所有设备点位(框选查询)
- 查询相机视野范围内有哪些点位(视锥查询)
- 查询距离某个中心点 1km 半径内的所有点位(圆形缓冲区查询)
- 查询和某个围栏相交、包含的要素
示例 (booleanPointInPolygon)
javascript
import * as turf from '@turf/turf';
// 多边形顶点 [lon, lat]
const polygon = turf.polygon([[
[118.7, 32.0],
[118.8, 32.0],
[118.8, 32.1],
[118.7, 32.1],
[118.7, 32.0],
]]);
// 待判断的点
const point = turf.point([118.75, 32.05]);
const isInside = turf.booleanPointInPolygon(point, polygon);
console.log(isInside); // true
常见空间关系:包含、相交、距离邻近、在视锥内、碰撞。
区分:属性查询(查字段)、空间查询(查几何关系),大屏孪生项目经常两者组合使用。
简历话术参考:基于 Cesium 实现空间范围查询(多边形框选、缓冲区邻近查询、视锥体查询),支撑圈选设备、区域统计、告警筛选业务;海量点位下搭配 WebWorker + 空间索引(KDTree / 网格索引)降低查询耗时,避免主线程卡顿。
框选查询 : 用户在地图上绘制一个矩形或多边形,查询其中的点位: (pointsWithinPolygon)
javascript
// 1. 监听鼠标绘制,收集顶点坐标 [lon, lat]
const drawPolygon = []; // 用户绘制的顶点
// 2. 绘制完成后构建 GeoJSON 多边形
const searchRegion = turf.polygon([drawPolygon]);
// 3. 将所有点位转成 FeatureCollection
const points = turf.featureCollection(
allDevices.map((d) => turf.point([d.lon, d.lat]))
);
// 4. 求交
const result = turf.pointsWithinPolygon(points, searchRegion);
// 5. 高亮结果
result.features.forEach((f) => {
const id = f.properties?.id;
highlightEntity(id);
});
LOD (Level of Detail,细节层次) = 根据物体离相机远近,切换不同精细程度的模型 / 要素,远了用简单版本、近了用精细版本,平衡渲染性能和视觉效果。
3D Tiles 入口文件 tileset.json,真正几何数据在 content.uri 指向的二进制瓦片:
b3dm:批量模型(倾斜摄影、建筑)pnts:海量点云(点云数据)i3dm:实例化模型(大量相同设备、路灯)cmpt:复合瓦片,打包多个子瓦片
