三分钟搞懂 GeoJSON 是什么?

前言
GeoJSON(地理JSON)是一种开放的标准数据格式,用于表示地理信息和地理特征的地理数据。它基于JSON(JavaScript Object Notation)格式,旨在用于描述地理和空间信息,例如地图数据、地理特征、地理坐标等。GeoJSON通常用于Web地图应用、地理信息系统(GIS)、地理空间数据的存储和交换,以及其他与地理位置相关的应用。
GeoJSON 的主要特点包括:
地理特征:
GeoJSON允许表示各种地理特征,如点(Point)、线(LineString)、多边形(Polygon)、多点(MultiPoint)、多线(MultiLineString)、多边形集合(MultiPolygon)、几何集合(GeometryCollection)、特征对象(Feature)、以及特征集合(FeatureCollection)等。这使得它适用于各种地理数据的表示。地理坐标:
GeoJSON使用经度和纬度坐标来表示地理位置。这些坐标通常使用WGS 84坐标系,这是一种广泛使用的地理坐标系。在国际上,每个坐标系统都会被分配一个EPSG代码,EPSG:4326就是WGS84的代码。属性信息:
GeoJSON允许为地理特征添加属性信息。这些属性信息通常以键-值对的形式包含在GeoJSON对象中,使用户能够附加各种属性数据。简洁性:
GeoJSON使用JSON格式,这使得它易于阅读、编写和解析。JSON 是一种文本格式,易于与各种编程语言兼容。
GeoJSON 通常用于 Web 地图应用中,例如 高德、OpenLayers 和 Mapbox,用于将地理数据显示在地图上。它也被用于地理信息系统,用于地理数据的导入、导出和存储。许多地理信息数据提供者和地理数据 API 也支持 GeoJSON 格式,使其成为广泛应用的标准。
GeoJSON 对象
GeoJSON 对象分为三种:几何对象、特征对象、特征集合对象
几何对象
GeoJSON 支持以下几何类型:Point,MultiPoint,LineString,MultiLineString,Polygon,和MultiPolygon。
除了 GeometryCollection 外的其他任何类型的 GeoJSON 几何对象必须由一个名字为 coordinates 的成员。coordinates 成员的值总是数组。这个数组里的元素的结构由几何类型来确定。
点(Point)
1 | { |
多点(MultiPoint)
1 | { |
线 (LineString)
1 | { |
多线 (MultiLineString)
1 | { |
多边形 (Polygon)
- 不带孔
1
2
3
4
5
6
7
8
9
10
11
12{
"type": "Polygon",
"coordinates": [
[
[ 100, 0 ],
[ 101, 0 ],
[ 101, 1 ],
[ 100, 1 ],
[ 100, 0 ]
]
]
} - 带孔的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
"type": "Polygon",
"coordinates": [
[
[ 100, 0 ],
[ 101, 0 ],
[ 101, 1 ],
[ 100, 1 ],
[ 100, 0 ]
],
[
[ 100.2, 0.2 ],
[ 100.8, 0.2 ],
[ 100.8, 0.8 ],
[ 100.2, 0.8 ],
[ 100.2, 0.2 ]
]
]
}
多个多边形 (Polygon)
1 | { |
几何集合
1 | { "type": "GeometryCollection", |
特征对象
类型为 Feature 的 GeoJSON 对象是特征对象。
特征对象必须由一个名字为 geometry 的成员,这个几何成员的值是上面定义的几何对象或者 JSON 的 null 值。特征对象那个必须有一个名字为 properties 的成员,这个属性成员的值是一个对象(任何 JSON 对象或者 JSON 的 null 值)。
1 | { |
特征集合对象
特征集合对象 type 为 FeatureCollection,必须有一个名字为 features 的属性。与 features 相对应的值是一个数组。这个数组中的每个元素都是上面定义的特征对象。
这个是一个基本的特征集合对象示例,包含点、线、多边形。
1 | { |
坐标参考系统对象
GeoJSON 对象的坐标参考系统(CRS)是由它的 crs 属性来确定的。如果对象没有 crs 属性,那么它的父对象或者祖父对象的 crs 属性可能被获取作为它的 crs。如果这样还没有获得 crs 成员,那么默认的 CRS 将应用到 GeoJSON 对象。
默认的 CRS 是地理坐标参考系统,使用的是 WGS84 数据。
1 | { |
边界框
通常情况下,坐标参考系统对象会包含几何、特征或者特征集合的坐标范围信息,GeoJSON 对象可能有一个名字为 bbox 的属性。bbox 属性的值必须是 2*n 数组,n 是所包含几何对象的维数(如二维简单的经纬度,将包含经度和纬度的最大值、最小值,如果是三维空间将多一个高度的最大值、最小值。),并且所有坐标轴的最低值后面跟着最高者值。bbox 的坐标轴的顺序遵循几何坐标轴的顺序。除此之外,bbox 的坐标参考系统假设匹配它所在 GeoJSON 对象的坐标参考系统。
- 特征对象上的
bbox成员的例子1
2
3
4
5
6
7
8
9
10
11
12{
"type": "Feature",
"bbox": [-180.0, -90.0, 180.0, 90.0],
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-180.0, 10.0], [20.0, 90.0], [180.0, -5.0], [-30.0, -90.0]
]
]
}
} - 特征集合对象
bbox成员的例子1
2
3
4
5{
"type": "FeatureCollection",
"bbox": [100.0, 0.0, 105.0, 1.0],
"features": []
}





