基础篇的前两节我们学习了在三维球中通过Cesium如何加载影像数据和地形数据,今天我们学习一下Cesium是如何加载矢量数据的。在学习之前,首先我们先了解一下什么是矢量数据。
矢量数据(Vector Data)是用X、Y、Z坐标表示地图图形或地理实体位置的数据,一般是通过记录坐标的方式来尽可能将地理实体的空间位置表现的准确无误,常见的矢量数据有:点、线、面等格式。我们使用矢量数据的原因,就是因为矢量数据具有数据结构紧凑、冗余度低、有利于网络和检索分析、图形显示质量好、精度高等优点。
目前最常见的矢量数据格式就是shapfile(简称shp),它是由Esri公司开发的一种空间数据开放格式。同时shapfile也成为了GIS行业的标准,几乎所有的商业和开源GIS软件都支持Shapefile。通常情况下,一个"shapefile"通常指带有.shp、.shx、.dbf和其他扩展名且前缀名称一致的文件(.prj、.sbn等)集合。
一个shapfile必须包含的文件:
- 主文件(*.shp):存储地理要素的几何信息
- 索引文件(*.shx):存储要素几何图形的索引信息
- dBase表文件(*.dbf):存储地理要素的属性信息(非几何信息)
除此之外还有可选的文件:
- 空间参考文件(.prj):存储空间参考信息,即地理坐标系统信息和投影坐标系统信息,使用well-known文本格式(WKT)进行描述。
- 几何体的空间索引文件(.sbn 和 .sbx)、只读的Shapefiles的几何体的空间索引文件(.fbn 和.fbx)等等
shapfile如此强大和受欢迎,只可惜Cesium却不能直接加载shp文件,如果想加载shp文件,感兴趣的可以参考这位大牛封装的库CesiumVectorTile。Cesium直接支持的矢量数据格式包括:geojson、topojson、kml以及具有时间特性的czml,并以DataSouce后缀去命名相关的类。
Cesium加载geojson文件
GeoJSON介绍
GeoJSON是用于描述地理空间信息的数据格式,它不是一种新的格式,其语法规范是符合JSON格式的,只不过对其名称进行了规范,专门用于表示地理信息。
GeoJSON的最外层是一个单独的对象(object)。这个对象可表示:
① 几何体(Geometry);
② 特征(Feature);
③ 特征集合(FeatureCollection);
最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type 属性,表示对象的类型,其type 的值可以是:Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection、Feature、FeatureCollection。下面是一个GeoJSON特征集合