Cesium 加载矢量数据

矢量数据介绍

在GIS中,对于数据格式的分类,我们一般会将其分为栅格数据和矢量数据两种类型。 栅格数据(影像数据)是将空间看做离散的像元,由二维数组或者其他数据组织方式来进行表达。 矢量数据恰恰相反,它将空间看成是连续的,用要素(点、线、面)来进行表达。在GIS应用中最熟悉的矢量数据就是Shpfile,更多关于矢量数据查看。

Cesium 能够直接支持的矢量数据格式包括:geojson、topojson、kml 以及具有时间特性的 czml

在线工具推荐

  • JSON在线解析及格式化:https://www.json.cn/
  • 在线生成 GeoJSON:http://geojson.io/
  • shp数据转 GeoJSON 和 TopoJSON:http://mapshaper.org/
  • GeoJson和TopopJson在线转换:http://jeffpaine.github.io/geojson-topojson/

一、加载 GeoJSON & TopoJSON

【官方示例】GeoJSON & TopoJSON

1.1 GeoJSON & TopoJSON 简介

  • GeoJSON & TopoJSON 格式的对比,最大的区别在于TopoJSON将两个相连的边合并为一个边,大大的减少了数据存储空间。
  • GeoJSON 格式:我的理解就是Python中复复杂的字典,【截图所在地址】自行查看。形式如下:

可以将本地的shp文件在这网站上导出,但不建议(数据安全问题)。还可以通过Cesium实验室来进行数据转换,ArcMap也行,最好用ArcMap转,最为安全。记得转shp前将坐标系变为wgs-84哦!或者墨卡托

Cesium 加载矢量数据_第1张图片
Cesium 加载矢量数据_第2张图片

1.2 加载 GeoJSON & TopoJSON

【官方加载GeoJSON文档】GeoJSON

以下代码是通过Django框架来实现的,结合官方示例

  • GeoJSON
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer');
        viewer.dataSources.add(Cesium.GeoJsonDataSource.load('{% static "GIS/json/china.json" %}', {
            stroke: Cesium.Color.HOTPINK,
            fill: Cesium.Color.PINK.withAlpha(0.5),
            strokeWidth: 3
        }));
    </script>

  • TopoJSON
 var dataSource = viewer.dataSources.add(
       Cesium.GeoJsonDataSource.load("/static/data/ne_10m_us_states.topojson")
     );

二、加载 KML

KML (keyhole markup language)是一种基于XML语法格式的文件,用来描述和存储地理信息数据(点、线、面、多边形、多面体以及模型等),通常应用于Google地球软件中,它跟XML文件最大的不同就是KML描述的是地理信息数据,同时KML已正式被OGC采用,成为OGC众多规范中的一个。KML文件有两个文件扩展名:.KML.KMZ(一个或几个KML 文件的压缩集,采用zip格式压缩)

var options = {
      camera: viewer.scene.camera,
      canvas: viewer.scene.canvas,
    };
var dataSource = Cesium.KmlDataSource.load(
       "/static/data/kml/gdpPerCapita2008.kmz",
       options
     );
     viewer.dataSources.add(dataSource);
     viewer.camera.flyHome(0);

三、加载 CZML

CZML是一种JSON格式的字符串,用于描述与时间有关的动画场景,CZML包含点、线、地标、模型和其他的一些图形元素,并指明了这些元素如何随时间而变化。Cesium拥有一套富客户端API,通过CZML采用数据驱动的方式,不用写代码我就可以使用通用的Cesium viewer构建出丰富的场景。更多关于CZML查看链接

    var dataSource = Cesium.CzmlDataSource.load("/static/data/Vehicle.czml");

你可能感兴趣的:(Ceisum学习之旅,Cesium,矢量数据,django)