Cesium入门之矢量数据

228 阅读2分钟

常见的矢量数据

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.shpcities.shx 和 cities.dbf 三个文件。

文档说明地址:ESRI Shapefile Technical Description

数据转换工具:

Cesium 加载矢量数据

Cesium 直接支持的矢量数据格式有:GeoJSON、TopoJSON、KML、KMZ 以及时间特性的 CZML 和 GPX 都是对 DataSource 这个抽象类的实现。

DataSource.jpg

CZML 和 GPX

CZML

GPX 1.1

加载 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)

引用文章

Cesium开发基础篇 | 03加载矢量数据