常见的矢量数据
GeoJSON
最常用的地理数据格式,易于阅读和编辑,可以表示简单的地理要素。
文档说明地址:RFC 7946 - The GeoJSON Format
举例:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [120.1, 30.2]
},
"properties": {
"name": "Point"
}
}
]
}
TopoJSON
TopoJSON 是 GeoJSON 的扩展形式,它通过拓扑编码减少了地理数据的冗余,适合在网络上高效传输大规模的地理数据,常用于制作交互式地图和地理信息可视化项目。
文档说明地址:TopoJSON
举例:
{
"type": "Topology",
"objects": {
"example": {
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"properties": {
"name": "Example Point"
},
"coordinates": [120.1, 30.2]
}
]
}
},
"arcs": [],
"transform": {
"scale": [0.0001, 0.0001],
"translate": [0, 0]
}
}
KML
主要用于在 Google Earth 等地理信息软件中显示地理数据,也可用于创建包含地理要素、图像和文本的丰富地理信息文档,如旅游景点介绍、地质勘探成果展示等。
文件说明地址:OGC KML 2.3 Specification
举例:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>Example Placemark</name>
<Point>
<coordinates>120.1,30.2</coordinates>
</Point>
</Placemark>
</Document>
</kml>
KMZ
KMZ 是 KML 的压缩版本,它实际上是一个 ZIP 文件,包含一个或多个 KML 文件以及相关的资源(如图片、图标等)。可以将上述 KML 文件和一些图片压缩成一个 KMZ 文件。
文件说明地址:OGC KML 2.3 Specification
Shapefile
Shapefile 实际上是一组文件,主要包括 .shp(存储地理要素的几何形状)、.shx(索引文件)和 .dbf(属性数据文件)。例如,一个表示城市边界的 Shapefile 可能包含 cities.shp、cities.shx 和 cities.dbf 三个文件。
文档说明地址:ESRI Shapefile Technical Description
数据转换工具:
Cesium 加载矢量数据
Cesium 直接支持的矢量数据格式有:GeoJSON、TopoJSON、KML、KMZ 以及时间特性的 CZML 和 GPX 都是对 DataSource 这个抽象类的实现。
CZML 和 GPX
加载 GeoJSON 和 TopoJSON
const geojsonDataSource = Cesium.GeoJsonDataSource.load("../SampleData/ne_10m_us_states.geojson")
viewer.dataSources.add(geojsonDataSource)
const topojsonDataSourse = Cesium.GeoJsonDataSource.load("../SampleData/ne_10m_us_states.topojson", {
stroke: Cesium.Color.HOTPINK,
fill: Cesium.Color.PINK.withAlpha(0.5),
strokeWidth: 3
})
viewer.dataSources.add(topojsonDataSourse)
加载 KML 和 KMZ
const kmlDataSource = Cesium.KmlDataSource.load("../SampleData/kml/facilities/facilities.kml")
viewer.dataSources.add(kmlDataSource)
const kmzDataSource = Cesium.KmlDataSource.load("../SampleData/kml/facilities/facilities.kmz")
viewer.dataSources.add(kmzDataSource)
引用文章