引言

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数据处理、系统开发、技术支持等相关业务,有意者公众号留言联系!