前言
❝
GeoJSON
是一种用于编码各种地理数据结构的格式,采用JSON
方式表示。在WebGIS
开发中,被广泛应用于数据传输和共享交换。
1. GeoJSON数据格式
GeoJSON
对象类型多样,具有Geometry
类型:Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon
以及GeometryCollection
,要素类型Feature
和要素集类型FeatureCollection
共九大类 。几何对象(Geometry)
加上属性信息(Properties)
构成要素(Feature)
,要素集(Features)
组成要素集合(FeatureCollection)
,其逻辑关系如下图。
图1几何对象组成结构图
图2几何对象包含结构图
2. GeoJSON对象结构特点
GeoJSON
对象表示几何对象(Geometry)
、要素对象(Feature)
、以及要素类对象(Features)
的集合(FeatureCollection)
,具有如下特征。
- 每一个
GeoJSON
对象都是JSON
对象 - 每一个
GeoJSON
对象都具有一个type
属性,其值必须是GeoJSON
类型,以上九大类型之一。 GeoJSON
对象还可能具有"bbox"
属性,其值必须是边界范围数组。GeoJSON
对象还可能具有其他属性,如用户自定义属性。
3. GeoJSON几何对象
3.1. GeoJSON-Point
Point
属性coordinates
是一个数组,在投影坐标系中按[x,y]
顺序显示,在地理坐标系中按经度和纬度[longitude,latitude]
显示。
json
{
"type": "Point",
"coordinates": [100.0, 0.0]
}
3.2. GeoJSON-LineString
LineString
属性coordinates
是一个数组,元素为Point
数组坐标对。
csharp
{
"type": "LineString",
"coordinates": [
[100.0, 0.0],
[101.0, 1.0]
]
}
3.3. GeoJSON-Polygon
Polygon
属性coordinates
是一个数组,元素为LineString
线性环数组。数组的第一个元素表示外环,任何后续元素表示内环。无孔洞
csharp
{
"type": "Polygon",
"coordinates": [
[
[100.0, 0.0],
[101.0, 0.0],
[101.0, 1.0],
[100.0, 1.0],
[100.0, 0.0]
]
]
}
有孔洞
csharp
{
"type": "Polygon",
"coordinates": [
// 外环
[
[100.0, 0.0],
[101.0, 0.0],
[101.0, 1.0],
[100.0, 1.0],
[100.0, 0.0]
],
// 内环
[
[100.8, 0.8],
[100.8, 0.2],
[100.2, 0.2],
[100.2, 0.8],
[100.8, 0.8]
]
]
}
3.4. GeoJSON-MultiPoint
MultiPoint
属性coordinates
是一个LineString
数组,元素为Point
数组。
csharp
{
"type": "MultiPoint",
"coordinates": [
[100.0, 0.0],
[101.0, 1.0]
]
}
3.5. GeoJSON-MultiLineString
MultiLineString
属性coordinates
是一个数组,元素为LineString
数组。
csharp
{
"type": "MultiLineString",
"coordinates": [
[
[100.0, 0.0],
[101.0, 1.0]
],
[
[102.0, 2.0],
[103.0, 3.0]
]
]
}
3.6. GeoJSON-MultiPolygon
MultiPolygon
属性coordinates
是一个数组,元素为Polygon
数组。
csharp
{
"type": "MultiPolygon",
"coordinates": [
[
[
[102.0, 2.0],
[103.0, 2.0],
[103.0, 3.0],
[102.0, 3.0],
[102.0, 2.0]
]
],
[
[
[100.0, 0.0],
[101.0, 0.0],
[101.0, 1.0],
[100.0, 1.0],
[100.0, 0.0]
],
[
[100.2, 0.2],
[100.2, 0.8],
[100.8, 0.8],
[100.8, 0.2],
[100.2, 0.2]
]
]
]
}
3.7. GeoJSON-GeometryCollection
GeometryCollection
属性geometries
是一个数组,元素为geometry
对象。
csharp
{
"type": "GeometryCollection",
"geometries": [
{
"type": "Point",
"coordinates": [100.0, 0.0]
},
{
"type": "LineString",
"coordinates": [
[101.0, 0.0],
[102.0, 1.0]
]
}
]
}
4. GeoJSON要素对象
要素Feature
对象type
属性为"Feature"
,由几何对象和属性信息构成。
json
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
5. GeoJSON要素集对象
要素FeatureCollection
对象type
属性为"FeatureCollection"
,由features
数组构成。元素是Feature
对象。
csharp
{
"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"
}
}
}]
}
6. 注意
GeoJSON
坐标对是经度在前,纬度在后,即[longitude,latitude]
GeoJSON
遵循右手规则,即外环为逆时针,内环为顺时针。GeoJSON
数据都有一个type
属性,Geometry
对象为对应Geometry
类型值,Feature
对象为"Feature"
,FeatureCollection
对象为"FeatureCollection"
GeoJSON
数据可能会有额外属性"bbox"
或者用户自定义属性,"bbox"
值为:["west", "south", "east", "north"]
,即[xmin,ymin,xmax,ymax]
❝
OpenLayers示例数据下载,请回复关键字:ol数据
全国信息化工程师-GIS 应用水平考试资料,请回复关键字:GIS考试
❝【GIS之路】 已经接入了智能助手,欢迎关注,欢迎提问。
欢迎访问我的博客网站-长谈GIS :
http://shanhaitalk.com
都看到这了,不要忘记点赞、收藏 + 关注 哦 !
本号不定时更新有关 GIS开发 相关内容,欢迎关注 !