【 D3.js 入門系列 — 10.3 】 GeoJSON 檔案和 TopoJSON 檔案的區別和聯絡

來源:互聯網
上載者:User

標籤:d3   geojson   topojson   地圖   檔案   

本人的個人部落格為:www.ourd3js.com 

csdn部落格為:blog.csdn.net/lzhlzz

轉載請註明出處,謝謝。

前些天有朋友留言詢問 GeoJSON 檔案和 TopoJSON 檔案的關係,正好我其實也不是十分明了,查詢了一番後整理如下,還望大家指證。

這兩種檔案都是基於 JSON 文法的,首先來說一下 JSON 文法和檔案是怎樣的。

1. JSON 格式

JSON(JavaScript Object Notation) 是一種輕量級的資料交換語言,以文字為基礎,且易於讓人閱讀。儘管 JSON 是 Javascript 的一個子集,但 JSON 是獨立於語言的文本格式,並且採用了類似於C語言家族的一些習慣。

JSON 的格式[1]如下:

  • 物件( object ):一個物件的資料寫在一組大括弧內 { ... }
  • 名稱/值( collection ): 每一個物件都由一系列的名稱/值( collection )組成,名稱/值之間用逗號( , )分隔。一個名稱可以是一個字串;一個值可以是字串,數值,布爾值,有序列表,或 null 值。
name:value

由於 name 必定是字串,所以要寫在雙引號之內。

  • 值的有序列表( Array ):列表寫在 [ ... ] 之間
[collection, collection, collection, ...]
2. GeoJSON 格式

GeoJSON 是一種對地理資料結構進行編碼的格式。它只是一個採用上述 JSON 格式的用於描述地理資訊的格式。它的文法和 JSON 是一樣的,只是對各名稱做了規範,形如[2]:

{ "type": "FeatureCollection",    "features": [      { "type": "Feature",        "geometry": {"type": "Point", "coordinates": [102.0, 0.5]},        "properties": {"prop0": "value0"}        },      { "type": "Feature",        "geometry": {          "type": "LineString",          "coordinates": [            [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0]            ]          },        "properties": {          "prop0": "value0",          "prop1": 0.0          }        },      { "type": "Feature",         "geometry": {           "type": "Polygon",           "coordinates": [             [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0],               [100.0, 1.0], [100.0, 0.0] ]             ]         },         "properties": {           "prop0": "value0",           "prop1": {"this": "that"}           }         }       ]     }

具體的可以參加 http://geojson.org/

3. TopoJSON 格式

TopoJSON 是 GeoJSON 簡化後的版本,可以說是 GeoJSON 的小孩。D3.js 的作者認為 GeoJSON 不太好,比較推崇 TopoJSON 格式。

TopoJSON 與 GeoJSON 相比,檔案大小縮小了 80% ,因為:

  • 邊界線只記錄一次(例如廣西和廣東省的交界線只記錄一次)
  • 不使用浮點數,只使用整數

不過 TopoJSON 似乎只在 D3.js 中比較廣泛的使用,還不是世界範圍內認可的格式。

 

要注意,無論 GeoJSON 還是 TopoJSON ,它們本質上有是 JSON 格式的檔案,都遵循 JSON 的文法,只不過對變數的名稱做了不同的規範。

在 http://mapshaper.org/ 可以試著轉換 GeoJSON 和 TopoJSON 的資料,我們會看到對於同一個地理資料檔案,TopoJSON 的檔案大小大概相當於 GeoJSON 的 20% ,這對於解決因檔案量過大而造成的讀取速度過慢是相當簡單有效。

[1] http://zh.wikipedia.org/wiki/JSON

[2] http://geojson.org/

【 D3.js 入門系列 — 10.3 】 GeoJSON 檔案和 TopoJSON 檔案的區別和聯絡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.