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工具网。
推荐阅读: