GeoJSON 数据简介
前言
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]
显示。
{"type": "Point","coordinates": [100.0, 0.0]
}
3.2. GeoJSON-LineString
LineString
属性coordinates
是一个数组,元素为Point
数组坐标对。
{"type": "LineString","coordinates": [[100.0, 0.0],[101.0, 1.0]]
}
3.3. GeoJSON-Polygon
Polygon
属性coordinates
是一个数组,元素为LineString
线性环数组。数组的第一个元素表示外环,任何后续元素表示内环。无孔洞
{"type": "Polygon","coordinates": [[[100.0, 0.0],[101.0, 0.0],[101.0, 1.0],[100.0, 1.0],[100.0, 0.0]]]
}
有孔洞
{"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
数组。
{"type": "MultiPoint","coordinates": [[100.0, 0.0],[101.0, 1.0]]
}
3.5. GeoJSON-MultiLineString
MultiLineString
属性coordinates
是一个数组,元素为LineString
数组。
{"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
数组。
{"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
对象。
{"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"
,由几何对象和属性信息构成。
{"type": "Feature","geometry": {"type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"}
}
5. GeoJSON要素集对象
要素FeatureCollection
对象type
属性为"FeatureCollection"
,由features
数组构成。元素是Feature
对象。
{"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开发 相关内容,欢迎关注 !