WebGIS|GeoJSON简介

简介

GeoJSON 是用 JSON 的语法表达和存储地理数据,可以说是 JSON 的子集。
图片数据参考:http://geojson.io

GeoJSON对象

  1. GeoJSON总是由一个单独的对象组成。
  2. GeoJSON对象可能有任何数目成员(名/值对)。
  3. GeoJSON对象必须由一个名字为"type"的成员。这个成员的值是由GeoJSON对象的类型所确定的字符串。
  4. type成员的值必须是下面之一:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "GeometryCollection", "Feature", 或者 "FeatureCollection"。

几何对象

当type的值是:"Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", 或者"GeometryCollection"时,GeoJSON就是几何对象。除"GeometryCollection"之外,其他几何对象都要有"coordinates"属性,它的值是一个数组,表示坐标集合。

位置(coordinates)

  1. 点(type: "Point"):“coordinates"的值必须是一个单独的位置。
  2. 多点(type: "MultiPoint"): “coordinates"的值必须是一个位置数组。
  3. 线(type: "LineString"): “coordinates"的值必须是两个或者多个位置的数组。
  4. 多线(type: "MultiLineString"): “coordinates"的值必须是线坐标数组的数组。
  5. 面(type: "Polygon"): “coordinates"的值必须是线性环坐标数组的数组。
  6. 多面(type: "MultiPlygon"): “coordinates"的值必须是面坐标数组的数组。
  7. 几何集合(type: "GeometryCollection"):类型为"GeometryCollection"的GeoJSON对象是一个集合对象,它表示几何对象的集合。几何集合必须有一个名字为"geometries"的成员。与"geometries"相对应的值是一个数组。这个数组中的每个元素都是一个GeoJSON几何对象。

特征对象(type:"Feature")

  1. 特征对象必须有一个名字为"geometry"的成员,这个几何成员的值是上面定义的几何对象或者JSON的null值。
  2. 特征对戏那个必须有一个名字为“properties"的成员,这个属性成员的值是一个对象(任何JSON对象或者JSON的null值)。
  3. 如果特征是常用的标识符,那么这个标识符应当包含名字为“id”的特征对象成员。

特征集合对象(type:"FeatureCollection")

类型为"FeatureCollection"的对象必须由一个名字为"features"的成员。与“features"相对应的值是一个数组。这个数组中的每个元素都是上面定义的特征对象。

示例

下面是一个点数据。

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometry": {
        "type": "Point",
        "coordinates": [114.34853553771973,30.48129922513529]
      }
    }
  ]
}

img

几何要素

地理要素分为Point(点)、MultiPoint(多点)、LineString(线)、MultiLineString(多线)、Polygon(面)、MultiPolygon(多面)、GeometryCollection(几何集合)。

这些地理要素被规划到geometry特征的type属性下,并且不同的type会有不同的coordinates值。

"geometry": {
        "type": "Point",
        "coordinates": [114.34853553771973,30.48129922513529]
}

Point(点)

点要素是最简单的,类型type对应Point,然后坐标是一个1维的数组,里面有两个元素(如果是立体的坐标就是三维x,y,z),分别为经度和纬度。

coordinates的值是一个点。

"geometry":{
        "type":"Point",
        "coordinates":[114.34853553771973,30.48129922513529]
}

MultiPoint(多点)

多点,坐标数目变多。

coordinates的值是多个点。

"geometry":{
        "type":"MultiPoint",
        "coordinates":[
        [114.35980046127969,30.475784276668875],
	[114.35974608393923,30.474073697808265]               
        ]
}

image-20221204163537264

LineString(线)

线要素就是指线段,记录的是线的端点坐标,可视化时会按照记录顺序联结。
对于曲线(如贝塞尔曲线)目前还没有很好的表达,但是在地理数据中,曲线一般会用LineString去拟合,现实地理世界中也没有标准的曲线地理要素。

线要素的坐标coordinates里的二维数组和多点要素基本一样,区别就在type上了。

coordinates的值是多个点,类似MultiPoint(多点)。

"geometry":{
        "type":"LineString",
        "coordinates":[[
            114.3529924135459,
            30.478572845744893
          ],
          [
            114.35481302363945,
            30.47748133618272
          ],
          [
            114.35568375020608,
            30.476662695980167
          ],
          [
            114.35766267422133,
            30.475502943909135
          ]]
} // 依次连接点 

image-20221204170948097

MultiLineString(多线)

好似一个三维数组,一条线连完,连下一条线。

"geometry":{
        "type":"MultiLineString",
        "coordinates":
        [
            [
                [
                    114.3529924135459,
                    30.478572845744893
                ],
                [
                    114.35481302363945,
                    30.47748133618272
                ],
                [
                    114.35568375020608,
                    30.476662695980167
                ],
                [
                    114.35766267422133,
                    30.475502943909135
                ]
            ], //一条线,注意开始点和结束点不一样。
            [
                [
                    114.35320435038312,
                    30.47471607166429
                ],
                [
                    114.35460111088736,
                    30.47524631647086
                ],
                [
                    114.35558216885983,
                    30.476091835997835
                ],
                [
                    114.35751102860343,
                    30.477180968974636
                ]
            ] //第二条线
        ]
}
image-20221204172054237

Polygon(面)

一个无孔单面。

"geometry":{ 
        "type": "Polygon",
        "coordinates": [
            [
                [114.35571287414865,30.47481892185671],
                [114.35571287414865,30.4737127088717],
                [114.35864427416618,30.4737127088717],
                [114.35864427416618,30.47481892185671],
                [114.35571287414865,30.47481892185671]
            ]
        ] // 注意里面多了一层括号,区别于线
}

image-20221204174834677

MultiPolygon(多面)

两个相交的面。

"geometry": {
        "type": "MultiPolygon",
        "coordinates":
                [ 
                    [
                        [
                            [114.35571287414865,30.47481892185671],
                            [114.35571287414865,30.4737127088717],
                            [114.35864427416618,30.4737127088717],
                            [114.35864427416618,30.47481892185671],
                            [114.35571287414865,30.47481892185671]
                        ] // 这层括号可能就是为了突出此为面,首尾点相同
                    ], // 注意里面多了一层括号,区别于线
                    [
                        [
                            [114.35651014589808,30.47460511218374],
                            [114.35651014589808,30.474017156423642],
                            [114.357878246913,30.474017156423642],
                            [114.357878246913,30.47460511218374],
                            [114.35651014589808,30.47460511218374]
                        ] 
                    ] // 注意里面多了一层括号,区别于线
                ]
}

image-20221204180307274

GeometryCollection(几何集合)

GeometryCollection是多种基本地理要素的集合,就是里面可以包含点、线、面要素。
这个是个特殊的要素,不需要放在FeatureCollection里。

{
    "type": "GeometryCollection",
    "geometries": [
         {
            "type": "Point",
            "coordinates": [114.35771652302878,
          30.473617278566252]
         }, 
        {
            "type": "LineString",
            "coordinates": [
                [114.35760115753658,30.473493873521008],
                [114.35779916509125,30.473522316109594],
                [114.35808627604439,30.473582045517958],
                [114.35836678674559,30.47355644720433],
                [114.35852849291592,30.473616176592472]
            ]
         }
    ]
}

image-20221204180555983

posted @ 2022-12-04 18:12  Weltㅤ  阅读(337)  评论(0编辑  收藏  举报