GeoJSON 深度解析:地理信息表达的秘密武器

517 阅读2分钟

在 WebGIS 和地理信息系统(GIS)的世界中,GeoJSON 是一种必备的数据格式。它让地理数据通过 JSON 格式得到简单、有效的表达。无论是显示一个位置点、绘制复杂的多边形,还是展示多样化的空间数据,GeoJSON 都能得心应手。在这篇文章中,我们将深入解析 GeoJSON 的数据结构和类型,帮助你轻松理解如何在项目中使用它。

GeoJSON 是一种基于 JSON 格式的地理数据交换标准,用于表示地理特征及其属性。它常用于 WebGIS 应用中,支持点、线、多边形等地理类型。以下是 GeoJSON 数据的结构及各数据类型的详细介绍:

1. 基本结构

GeoJSON 的基础结构包括两个核心字段:

  • type:指定数据的类型(如 FeatureCollectionFeaturePoint 等)。
  • coordinates:定义地理要素的坐标。

2. GeoJSON 数据类型

GeoJSON 支持多种地理类型

  • 包括 PointMultiPointLineStringMultiLineStringPolygonMultiPolygonGeometryCollection
  • 还包括 FeatureFeatureCollection 类型。

3. GeoJSON 类型详解

3.1. Point(点)

表示地理上的单一坐标点。

{
  "type": "Point",
  "coordinates": [longitude, latitude]
}

3.2. MultiPoint(多点)

表示多个点的集合。

{
  "type": "MultiPoint",
  "coordinates": [
    [longitude1, latitude1],
    [longitude2, latitude2]
  ]
}

coordinates:包含多个坐标数组的数组,每个数组代表一个点

3.3. LineString(线)

表示连接多个点的连续线段。

{
  "type": "LineString",
  "coordinates": [
    [longitude1, latitude1],
    [longitude2, latitude2]
  ]
}

coordinates:包含两个或更多点的数组,用于定义线的路径。

3.4. MultiLineString(多线)

表示多个 LineString 的集合。

{
  "type": "MultiLineString",
  "coordinates": [
    [
      [longitude1, latitude1],
      [longitude2, latitude2]
    ],
    [
      [longitude3, latitude3],
      [longitude4, latitude4]
    ]
  ]
}

coordinates:每个子数组代表一条 LineString

3.5. Polygon(多边形)

表示由封闭线段定义的多边形,每个多边形至少包含一个环,外环为边界,内环为洞。

{
  "type": "Polygon",
  "coordinates": [
    [
      [longitude1, latitude1],
      [longitude2, latitude2],
      [longitude3, latitude3],
      [longitude1, latitude1]
    ]
  ]
}

coordinates:第一个数组为外边界,其他数组为洞(可选)。

3.6. MultiPolygon(多多边形)

表示多个多边形的集合。

{
  "type": "MultiPolygon",
  "coordinates": [
    [
      [
        [longitude1, latitude1],
        [longitude2, latitude2],
        [longitude3, latitude3],
        [longitude1, latitude1]
      ]
    ],
    [
      [
        [longitude4, latitude4],
        [longitude5, latitude5],
        [longitude6, latitude6],
        [longitude4, latitude4]
      ]
    ]
  ]
}

coordinates:每个子数组表示一个多边形。

3.7. GeometryCollection(几何集合)

表示几何对象的集合,用于包含多种类型的几何体。

{
  "type": "GeometryCollection",
  "geometries": [
    {
      "type": "Point",
      "coordinates": [longitude, latitude]
    },
    {
      "type": "LineString",
      "coordinates": [
        [longitude1, latitude1],
        [longitude2, latitude2]
      ]
    }
  ]
}

geometries:包含一组几何对象

4. FeatureFeatureCollection

4.1. Feature(特征)

表示具有属性的几何对象。

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [longitude, latitude]
  },
  "properties": {
    "name": "Example Point",
    "description": "This is an example feature."
  }
}
  • geometry:包含地理几何体(可以是 PointLineString 等)。
  • properties:包含属性字段(如名称、描述等)

4.2. FeatureCollection(特征集合)

表示多个特征的集合。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [longitude, latitude]
      },
      "properties": {
        "name": "Example Point 1"
      }
    },
    {
      "type": "Feature",
      "geometry": {
        "type": "Polygon",
        "coordinates": [
          [
            [longitude1, latitude1],
            [longitude2, latitude2],
            [longitude3, latitude3],
            [longitude1, latitude1]
          ]
        ]
      },
      "properties": {
        "name": "Example Polygon"
      }
    }
  ]
}

features:包含多个 Feature 对象的数组。