【Cesium入门教程】第六课:Geojson数据

`Geojson`是一种对各种地理数据结构进行编码的JSON数据格式。`GeoJson`支持点线面等多种几何图形,`type`表示要素类型,`coordinates`表示坐标数据,坐标通常是`WSG-84`.

index.html中引入turf

<script src="https://unpkg.com/@turf/turf/turf.min.js"></script>
const linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]]);
console.log(linestring1)
// 把geoJson对象转换成了实体entity
const data = Cesium.GeoJsonDataSource.load(linestring1)
data.then(res => {
  viewer.entities.add(res.entities.values[0])
  viewer.zoomTo(res.entities.values[0])
})

加载多个线geojson以及删除datasources的方法:

const multiline = turf.multiLineString([[[8, 8], [10, 10]], [[1, 1], [5, 5]]]);
Cesium.GeoJsonDataSource.load(multiline).then(res => {
  data = res
  viewer.dataSources.add(data);
  viewer.zoomTo(data);
})
viewer.dataSources.remove(data)

topoJson数据

TopoJSON 是 GeoJSON 按拓扑学编码后的扩展形式,是由 D3 的作者 Mike Bostock 制定的。

相比 GeoJSON 直接使用 Polygon、Point 之类的几何体来表示图形的方法,TopOJSON 中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。TopOJSON 拓扑表示共享一个称为弧的位置序列的一个或多个几何。

TOPOJSON 作为 GeoJSON 的扩展,支持多种几何类型:

Point,LineString,Polygon,MultiPoint,MultiLineString,MultiPolygon 和 GeometryCollection。

TopoJSON 中的几何可能包含其他属性,以对非几何数据进行编码。Mapshaper和arcgis都采用过这种拓扑格式。

TopOJSON消除了冗余,共享的弧段仅存储一次,允许将相关的几何有效地存储在同一文件中。例如,内蒙古自治区和辽宁省之间的共享边界仅存储一次,而不是在两个省都重复。

const promise = Cesium.GeoJsonDataSource.load('/src/assets/usa.topojson')
viewer.dataSources.add(promise)
viewer.zoomTo(promise):


Kml

KML全称:Keyhole Markup Language,是基于XML(eXtensible Markup Language,可扩展标记语言)语法标准的一种标记语言(markuplanguage),采用标记结构,含有嵌套的元素和属性。

由Google(谷歌(页面存档备份,存于互联网档案馆))旗下的Keyhole公司发展并维护,用来表达地理标记。

根据KML语言编写的文件则为KML文件,格式同样采用的XML文件格式,应用于Google地球相关软件中(Google Earth,Google Map, Google Maps for mobile…),用于显示地理数据(包括点、线、面、多边形,多面体以及模型…)。

而现在很多GIS相关企业也追随Google开始采用此种格式进行地理数据的交换。

const promise = Cesium.KmlDataSource.load('/src/assets/gdp2008.kmz')
console.log(promise)
viewer.dataSources.add(promise)

动态数据格式CZML

CZML是JSON的子集,这意味着一个有效的CZML文档也是一个有效的JSON文档。具体来说,CZML文档包含一个JSON数组,其中数组中的每个对象字面量元素都是一个CZMLPacket。CZML包描述场景中单个对象的图形属性,例如单个飞机。

这种数据格式,使得Cesium具备实现动态数据的能力。

CZML包含点、线、地标、模型等一些图形元素,并指明了这些元素如何随时间而变化。

viewer = new Cesium.Viewer('cesiumContainer', {
  shouldAnimate: true  // 开启场景动画
})
//Cesium.CzmDataSource
data.then(res => {
  viewer.dataSources.add(res);
  let entity = res.entities.getById("Vehicle")
  viewer.trackedEntity = entity;  //trackedEntity 可以实现一直移动相机跟踪entity目标
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值