在 WebGIS 和地理信息系统(GIS)的世界中,GeoJSON 是一种必备的数据格式。它让地理数据通过 JSON 格式得到简单、有效的表达。无论是显示一个位置点、绘制复杂的多边形,还是展示多样化的空间数据,GeoJSON 都能得心应手。在这篇文章中,我们将深入解析 GeoJSON 的数据结构和类型,帮助你轻松理解如何在项目中使用它。
GeoJSON 是一种基于 JSON 格式的地理数据交换标准,用于表示地理特征及其属性。它常用于 WebGIS 应用中,支持点、线、多边形等地理类型。以下是 GeoJSON 数据的结构及各数据类型的详细介绍:
1. 基本结构
GeoJSON 的基础结构包括两个核心字段:
- type:指定数据的类型(如
FeatureCollection、Feature、Point等)。 - coordinates:定义地理要素的坐标。
2. GeoJSON 数据类型
GeoJSON 支持多种地理类型
- 包括 Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon 和 GeometryCollection。
- 还包括 Feature 和 FeatureCollection 类型。
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. Feature 和 FeatureCollection
4.1. Feature(特征)
表示具有属性的几何对象。
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [longitude, latitude]
},
"properties": {
"name": "Example Point",
"description": "This is an example feature."
}
}
- geometry:包含地理几何体(可以是
Point、LineString等)。 - 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 对象的数组。