GeoJSON是一种用于编码各种地理数据结构的数据,能够支持点、线、面、多点、多线等几何类型,那geojson格式规范是怎样的?下面来我们就来给大家讲解一下。
一个完整的GeoJSON数据结构总是一个(JSON术语里的)对象。在GeoJSON里,对象由一组名称/值对组成 - 也称为成员。对每个成员来说,名称始终是字符串。成员的值要么是字符串、数字、对象、数组,要么是这文本常量的一个:"true","false"和"null"。数组是由值(上面所说的元素)组成。
举例:
GeoJSON特征集合:
{ "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" } } }] }
GeoJSON对象
GeoJSON总是由一个单独的对象组成。此对象(指的是下面的GeoJSON对象)表示几何、特征或者特征集合。
· GeoJSON对象可以包含任意数量的成员(名称/值对)。
· GeoJSON对象必须由一个名字为“type”的成员。此成员的值是一个字符串,用于确定GeoJSON对象的类型。
· type的值必须是如下之一:"Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","GeometryCollection","Feature"或者"FeatureCollection"。type值的大小写必须如此处所示。
· GeoJSON对象可以有一个可选“crs”成员,其值必须是坐标参考系统对象。
· GeoJSON对象可以有一个“bbox”成员,其值必须是一个边界框数组。
1.几何对象
几何是一种GeoJSON对象,这时type属性的值是下面字符串之一:"Point","MultiPoint","LineString","MultiLineString","Polygn","MultiPolygon",或者"GeometryCollection"。
除了"GeometryCollection"外的其他任何类型的GeoJSON几何对象必须由一个名称为"coordinates(坐标)"的属性。coordinates属性的值总是数组。这个数组里的元素的结构由几何类型来确定。
2.位置(坐标)
位置是基本的几何结构。"coordinates"几何对象的成员由一个位置(在Point几何体的情况下),位置数组(LineString或MultiPoint几何的请看下),位置数组的数组(Polygons,MultiLineString)或多维位置数组组成(MultiPolygon)。
位置由数字数组表示。必须至少有两个元素,可能更多。元素的顺序必须遵循x,y,z顺序(投影坐标参考系统中坐标的东向、北向、高度,或地理坐标参考系统中坐标的经度,纬度,高度)。允许任意数量的附加元素-附加元素的解释和含义超出了本规范的范围。
3.点
对于类型"Point","coordinates"属性必须是单个坐标。
{ "type": "Point" , "coordinates": [100.0, 0.0] }
4.多点
对于类型"MultiPoint","coordinates"属性必须是一个坐标数组。
{ "type": "MultiPoint" , "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }
5.线
对于类型"LineString","coordinates"属性必须是两个或两个以上的坐标数组。
线性环是具有4个或者更多坐标的封闭的线。第一个和最后一个位置是相等的(它们表示相同的点)。虽然线性环没有明确表示为GeoJSON几何类型,但它在多边形几何类型定义中有提到它。
{ "type": "LineString" , "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] }
6.多线
对类型"MultiLineString"来说,"coordinates"属性必须是LineString坐标数组的数组。
{ "type": "MultiLineString" , "coordinates": [ [[100.0, 0.0], [101.0, 1.0]], [[102.0, 2.0], [103.0, 3.0]] ] }
7. 面
对类型"Polygon"来说,"coordinates"属性必须是一个线性环坐标数组的数组。对拥有多个环的面来说,第一个必须是外部环,其它的必须是内部环或孔。
{ "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.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]] ] }
8.多面
对类型"MultiPlygon"来说,"coordinates"属性必须是面坐标数组的数组。
{ "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.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]] ] ] }
9.几何集合
类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。
几何集合必须由一个名称为"geometries"的属性。与"geometries"相对应的值是一个数组。这个数组中的每一个元素都是一个GeoJSON几何对象。
{ "type": "GeometryCollection" , "geometries": [ { "type": "Point" , "coordinates": [100.0, 0.0] } , { "type": "LineString" , "coordinates": [ [101.0, 0.0], [102.0, 1.0] ] } ] }
GeoJSON是基于JavaScript 对象表示法的地理空间信息数据交换格式,在实际工作中也会经常用到,因此对于GeoJSON的相关格式大家需要清楚了解以及使用哦!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: