Cesium加载矢量数据,通常有两种方式。
加载方法
一种是通过Cesium.GeoJsonDataSource直接加载GeoJson格式的矢量数据(注意!GeoJson的坐标系必须为EPSG:4326)。查看官网说明。
示例代码如下。
Cesium.GeoJsonDataSource.load('片区边界.geojson', {
clampToGround: true //开启贴地
}).then((datasource) => {
let entities = datasource.entities.values;
for(var i in entities){
let entity = entities[i];
// TODO
// 根据一些entity的条件,修改颜色
entities[i].polyline.material = Cesium.Color.fromCssColorString('#4c16cc');
}
viewer.dataSources.add(datasource);
});
另外一种,是加载MapBox的矢量瓦片。供参考的开源项目不少。如davenquinn /
cesium-vector-provider

如果你把矢量数据切片成图片格式,也算是一种显示矢量数据的方法了。但是显示风格固定、无法进行拓扑运算也是问题。当然,如果另外提供WFS作为数据查询,也是不错的解决思路。
性能分析
如果矢量数据比较大,通常超过5MB后,使用GeoJson的方式加载,显示上会有很大的性能下降。所以,如果你的数据比较大,一定需要先处理后,再进行加载。
优化思路就有很多了,比如分层加载、矢量瓦片、预切片等等。
大家若有更好的思路,欢迎回复。期待你的分享!
有更多Cesium使用问题,欢迎留言!转载请注明出处。