geojson格式规范是怎样的?geojson格式规范说明

阳光 2021-11-10 16:47:22 java常见问答 8048

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工具网。

推荐阅读:

java贪吃蛇怎么改变速度?java贪吃蛇开发原理及代码

java面试小公司一般多久通知?Java有哪些面试技巧?

java字符怎么输入?java字符串怎么创建?