RFC 7946 - geoJSON format

摘要

geoJSON 是一种基于JSON的地理空间格式。它定义了数种JSON对象以及他们的组合方式来描述地理空间的属性,空间幅度。它使用的坐标系统是WGS1984小数点坐标系。

介绍

GeoJSON是一种用JSON格式定义各种各样空间数据结构的格式。一个GeoJSON对象可能被用来描述一个空间范围(Geometry),或者是一个有限的空间实体(Feature),或者是有限空间实体的集合(FeatureCollection)。GeoJSON支持以下数据类型:

  • Point
  • LineString
  • Polygon
  • Multiport
  • MultiLineString
  • MultiPolygon
  • GeometryCollection

这种格式广义上来说就是一种地理空间数据。凡是具有地理空间特性的,不管它是否是真实的物体都可以算作一种Feachture。GeoJSON 并不是新东西,这套标准来源于现有的开放地理信息系统标准,并且已经简化,使得其更适合用户web应用程序的开发。

GeoJSON包含7种定义在SFSQL(OpenGIS Simple Features Implementation Specification)的地理类型(如上)。

GeoJSON同样支持Featrue 和 FeatureCollection类型。Feature类型是包含一个上述其中7种类型的地理空间对象和额外的成员。而FeatureCollection 则是Feature类型的数组。自2008年首次发布以来[GJ2008], GeoJSON格式规范在流行中稳步增长。它广泛应用于JavaScript web映射库、基于json的文档数据库和web api。

一个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"
               }
           }
       }]
   }

Point

Point 包含一组描述地理位置的坐标。(经纬度,x,y坐标或者东/北投影)

{
       "type": "Point",
       "coordinates": [100.0, 0.0]
 }

LineString

由一组Point描述的路径

{
         "type": "LineString",
         "coordinates": [
             [100.0, 0.0],
             [101.0, 1.0]
         ]
 }

Polygon

由一组Point描述的封闭空间。其起点必须和终点重合。

//No holes:

     {
         "type": "Polygon",
         "coordinates": [
             [
                 [100.0, 0.0],
                 [101.0, 0.0],
                 [101.0, 1.0],
                 [100.0, 1.0],
                 [100.0, 0.0]
             ]
         ]
     }

   //With holes: 类似于一个环

     {
         "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]
             ]
         ]
     }

MultiPoint

{
         "type": "MultiPoint",
         "coordinates": [
             [100.0, 0.0],
             [101.0, 1.0]
         ]
 }

MultiLineString

{
         "type": "MultiLineString",
         "coordinates": [
             [
                 [100.0, 0.0],
                 [101.0, 1.0]
             ],
             [
                 [102.0, 2.0],
                 [103.0, 3.0]
             ]
         ]
}

MultiPolygon

{
         "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]
                 ]
             ]
         ]
}

GeometryCollection

eometryCollection的“geometries”数组中的每个元素都是上述其中一种几何对象

{
         "type": "GeometryCollection",
         "geometries": [{
             "type": "Point",
             "coordinates": [100.0, 0.0]
         }, {
             "type": "LineString",
             "coordinates": [
                 [101.0, 0.0],
                 [102.0, 1.0]
             ]
         }]
}

在线生成
原文

相关推荐