馬上搞懂 GeoJSON

小皮草發表於2019-01-21

用於描述地理空間資訊的資料格式,語法是基於 JSON 格式的。

每一個 GeoJSON 物件都有一個 type 屬性:

  • Point:點
  • MultiPoint:多點
  • LineString:線
  • MultiLineString:多線
  • Polygon:面
  • MultiPolygon:多面
  • GeometryCollection:幾何體集合
  • Feature:特徵
  • FeatureCollection:特徵集合

分類

  • type:Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon

    則該物件必須有屬性 coordinates,這類物件稱為幾何物件。

    // 點物件
    {
      'type': 'Point',
      'coordinates': [-105, 39]
    }
    // 線物件
    {
      'type': 'LineString',
      'coordinates': [[-105, 39], [-107, 38]]
    }
    // 面物件
    {
      'type': 'Polygon',
      'coordinates': [
        [[30, 0], [31, 0], [31, 5], [30, 5], [30, 0]]
      ]
    }
    複製程式碼
  • type:GeometryCollection

    則該物件必須有屬性 geometries,其值是一個陣列,每一項都是一個 GeoJSON 的幾何物件。

    {
      'type': 'GeometryCollection',
      'geometries': [
        {
          'type': 'Point',
          'coordinates': [100, 40]
        },
        {
          'type': 'LineString',
          'coordinates': [[100, 30], [100, 35]]
        }
      ]
    }
    複製程式碼
  • type:Feature

    則該物件必須有屬性 geometry,其值為一個幾何物件;此外還有一個屬性 properties,可以是任意 JSON 或 null

    {
      'type': 'Feature',
      'properties': {
        'name': '北京'
      },
      'geometry': {
        'type': 'Point',
        'coordinates': [116.3671875, 39.977120098439634]
      }
    }
    複製程式碼
  • type:FeatureCollection

    則該物件必須有屬性 features,其值為一個陣列,每一項都是一個 Feature 物件。

    {
      'type': 'FeatureCollection',
      'features': [
        {
          'type': ...,
          'properties': ...,
          'geometry': ...
        },
        ...
      ]
    }
    複製程式碼

參考

  • 《精通D3.js:互動式資料視覺化高階程式設計》

相關文章