引言
Cesium支持加载geojson的数据源,加载成功后,Cesium会创建对应的实体(Entity)对象,在地图上进行显示。
在加载具有MultiPolygon空间类型的geojson数据时,获得的实体(Entity)数量和geojson中数据条数并不对应。
MultiPolygon类型的geojson数据格式说明,参见下列网址:
https://tools.ietf.org/html/rfc7946#section-3.1.7
Cesium加载geojson数据源
Cesium加载geojson的数据代码示例:
let promise = Cesium.GeoJsonDataSource.load(_geojsondata);
promise
.then(function (dataSource) {
viewer.dataSources.add(dataSource);
let entities = dataSource.entities.values;
//根据不同类型进行属性区别设置
}
加载的过程,Cesium自动判断geojson的空间数据类型:点、线、面,在异步的实体(Entity)加载过程中,才会对点、线、面的实体进行区别属性设置。
Cesium中MultiPolygon数据
加载MultiPolygon数据时,Cesium中实体的数量会和geojson中数据源的条数有所不同,MultiPolygon类型feature中,可能存在多个Polygon面状数据,Cesium会分开进行实体创建,导致会多一些实体,这在获取面状数据的属性时,需要对多个面的feature进行判断,按照实际面的数量进行属性赋值,这样在地图获取时,才能获取到对应正确的。
单个面的数据,有的存在hole(挖洞),Cesium中实体对应写法是:
polygon: {
hierarchy: {
positions: polygon,
holes: holes
},
这样才能显示挖洞的效果。
谢谢支持!
本公众号承接各类GIS数据处理、系统开发、技术支持等相关业务,有意者公众号留言联系!