GeoJson格式數(shù)據(jù):
//這是一個(gè)簡(jiǎn)單的矩形(坐標(biāo)系:WGS_84)
{
"type":"FeatureCollection",
"features": [
{
"type":"Feature",
"geometry":{
"type":"Polygon",
"coordinates":
[
[[117.42218831167838,31.68971206252246],
[118.8025942451759,31.685801564127132],
[118.79961418869482,30.633841626314336],
[117.41920825519742,30.637752124709664],
[117.42218831167838,31.68971206252246]]
]
},
"properties":{"Id":0}
}
]
}
TopoJson格式數(shù)據(jù):
//這是一個(gè)簡(jiǎn)單的矩形(坐標(biāo)系:WGS_84)
{
"type":"Topology","arcs":
[
[[0,100],[100,0],[0,-100],[-100,0],[0,100]]
],
"transform":
{
"scale":
[0.013833859899784785,0.010558704362081244],
"translate":
[117.41920825519742,30.633841626314336]
},
"objects":
{
"polygon":
{
"type":"GeometryCollection",
"geometries":
[
{
"arcs":[[0]],
"type":"Polygon",
"properties":{"Id":0}
}
]
}
}
}
兩個(gè)JSON數(shù)據(jù)展示是同一個(gè)矩形面播揪,對(duì)比一下差異:
GeoJson:
(1)GeoJson 是用于描述地理空間信息的數(shù)據(jù)格式。GeoJSON 不是一種新的格式潦闲,其語(yǔ)法規(guī)范是符合 JSON 格式的胳岂,只不過(guò)對(duì)其名稱進(jìn)行了規(guī)范桶唐,專門(mén)用于表示地理信息族沃。
(2)GeoJson 的最外層是一個(gè)單獨(dú)的對(duì)象(object)。這個(gè)對(duì)象有:
- 幾何體(Geometry)
- 特征(Feature)
- 特征集合(FeatureCollection)
每一個(gè)對(duì)象都有一個(gè)成員變量 coordinates命斧。
(3)type 的值為 GeometryCollection田晚,那么該對(duì)象一定要有變量 geometries。
{
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [116.3232, 35.2154]
},
{
"type": "LineString",
"coordinates": [ [116.3232, 35.2154], [116.854,35.8854] ]
}
]
}
type 的值為 Feature,那么此特征對(duì)象必須包含有變量 geometry国葬,表示幾何體贤徒,geometry 的值必須是幾何體對(duì)象。此特征對(duì)象還包含有一個(gè) properties汇四,表示特性接奈,properties 的值可以是任意 JSON 對(duì)象或 null捉兴。
{
"type": "Feature",
"properties": {
"name": "合肥"
},
"geometry": {
"type": "Point",
"coordinates": [ 116.3751, 31.5631]
}
}
如果 type 的值為 FeatureCollection(特征集合)屁擅,則該對(duì)象必須有一個(gè)名稱為 features 的成員。features 的值是一個(gè)數(shù)組为狸,數(shù)組的每一項(xiàng)都是一個(gè)特征對(duì)象背苦。
TopoJson:
TopoJSON 是 GeoJSON 按拓?fù)鋵W(xué)編碼后的擴(kuò)展形式互捌,是由 D3 的作者 Mike Bostock 制定的潘明。相比 GeoJSON 直接使用 Polygon、Point 之類(lèi)的幾何體來(lái)表示圖形的方法秕噪,TopoJSON 中的每一個(gè)幾何體都是通過(guò)將共享邊(被稱為arcs)整合后組成的钳降。
TopoJSON 消除了冗余,文件大小縮小了 80%腌巾,因?yàn)椋哼吔缇€只記錄一次(省界線為例)遂填。地理坐標(biāo)使用整數(shù),不使用浮點(diǎn)數(shù)澈蝙。
推薦網(wǎng)站:
在線生成 GeoJSON:http://geojson.io/
GeoJSON 和 TopoJSON簡(jiǎn)化吓坚、轉(zhuǎn)換:http://mapshaper.org/
GeoServer裝載插件可以生成GeoJson和TopoJson
現(xiàn)在大多數(shù)地圖API支持GeoJson和TopoJson格式數(shù)據(jù)地圖的調(diào)用(Openlayers、Leaflet等)灯荧,這些Json文件只記錄空間要素的幾何屬性礁击,數(shù)據(jù)在前端渲染進(jìn)行展示。
//貼出部分代碼
var promise = Cesium.GeoJsonDataSource.load('date/wuhu.json');
promise.then(function(dataSource) {
viewer.dataSources.add(dataSource);
var entities = dataSource.entities.values;
var colorHash = {};
for (var i = 0; i < entities.length; i++) {
var entity = entities[i];
var name = entity.name;
var color = colorHash[name];
if (!color) {
color = Cesium.Color.fromRandom({
alpha : 1.0
});
colorHash[name] = color;
}
entity.polygon.material = color;
entity.polygon.outline = false;
entity.polygon.extrudedHeight =5000.0;
}
});
viewer.flyTo(promise);