GeoJSON详解(带图)

GeoJSON_README

文章目录

    GeoJSON_README
        GeoJSON
            1 引子
            2 基本要素

GeoJSON
1 引子

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

    下面是一个点数据。

{
  "type": "FeatureCollection",
  "features": [
        {"type":"Feature",
        "properties":{},
        "geometry":{
            "type":"Point",
            "coordinates":[105.380859375,31.57853542647338]
            }
        }
    ]
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

在这里插入图片描述
2 基本要素

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

    这些地理要素被规划到geometry特征的type属性下。

    并且不同的type会有不同的coordinates值。

"geometry":{
        "type":"Point",
        "coordinates":[105.380859375,31.57853542647338]
}

    1
    2
    3
    4

    Point(点)

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

    coordinates的值是一个点。

"geometry":{
        "type":"Point",
        "coordinates":[105.380859375,31.57853542647338]
}

    1
    2
    3
    4

在这里插入图片描述

    MultiPoint(多点)

    多点,坐标数目变多。

    coordinates的值是多个点。

"geometry":{
        "type":"MultiPoint",
        "coordinates":[[105.380859375,31.57853542647338],
                [105.580859375,31.52853542647338]
        ]
}

    1
    2
    3
    4
    5
    6

在这里插入图片描述

    LineString(线)

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

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

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

"geometry":{
        "type":"LineString",
        "coordinates":[[105.6005859375,30.65681556429287],
        [107.95166015624999,31.98944183792288],
        [109.3798828125,30.031055426540206],
        [107.7978515625,29.935895213372444]]
} // 依次连接点

    1
    2
    3
    4
    5
    6
    7

在这里插入图片描述

    MultiLineString(多线)

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

"geometry":{
        "type":"MultiLineString",
        "coordinates":
        [
            [
                [105.6005859375,30.65681556429287],
                [107.95166015624999,31.98944183792288],
                [109.3798828125,30.031055426540206],
                [107.7978515625,29.935895213372444]
            ], //一条线,注意开始点和结束点不一样。
            [
                [109.3798828125,30.031055426540206],
                [107.1978515625,31.235895213372444]
            ] //第二条线
        ]
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

在这里插入图片描述

    Polygon(面)

        一个无孔单面。

"geometry":{
        "type": "Polygon",
        "coordinates": [
                        [
                            [100.0, 0.0],
                            [101.0, 0.0],
                            [101.0, 1.0],
                            [100.0, 1.0],
                            [100.0, 0.0]
                        ] // 这层括号可能就是为了突出此为面,首尾点相同
                ] // 注意里面多了一层括号,区别于线
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

在这里插入图片描述

        一个有孔单面。
        这个数组的第一个元素表示的是外部环。其他后续的元素表示的内部环(或者孔)。

"geometry":{
        "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]
                        ] // 这层括号可能就是为了突出此为面,首尾点相同
    ]
 }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

在这里插入图片描述

    MultiPolygon(多面)

        两个不会相交的面。

"geometry": {
        "type": "MultiPolygon",
        "coordinates":
                [
                    [
                        [
                            [109.2041015625,30.088107753367257],
                            [115.02685546875,30.088107753367257],
                            [115.02685546875,32.7872745269555],
                            [109.2041015625,32.7872745269555],
                            [109.2041015625,30.088107753367257]
                        ] // 这层括号可能就是为了突出此为面,首尾点相同
                    ], // 注意里面多了一层括号,区别于线
            
                    [
                        [
                            [112.9833984375,26.82407078047018],
                            [116.69677734375,26.82407078047018],
                            [116.69677734375,29.036960648558267],
                            [112.9833984375,29.036960648558267],
                            [112.9833984375,26.82407078047018]
                        ] // 这层括号可能就是为了突出此为面,首尾点相同
                    ] // 注意里面多了一层括号,区别于线
                ]
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25

在这里插入图片描述

        两个镶套的面。
        小的面表示在前,大的面表示在后,效果不是有洞的。

"geometry": {
        "type": "MultiPolygon",
        "coordinates":
        [
            [
                [
                    [101.6455078125,27.68352808378776],
                    [114.78515624999999,27.68352808378776],
                    [114.78515624999999,35.209721645221386],
                    [101.6455078125,35.209721645221386],
                    [101.6455078125,27.68352808378776]
                ]   
            ], // 小的面在前
            [
                [
                    [104.2822265625,30.107117887092357],
                    [108.896484375,30.107117887092357],
                    [108.896484375,33.76088200086917],
                    [104.2822265625,33.76088200086917],
                    [104.2822265625,30.107117887092357]
                ]
            ] // 大的面在后
        ]
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

在这里插入图片描述

        有孔洞的多面。
        注意层级不太一样。

"geometry": {
        "type": "MultiPolygon",
        "coordinates":
        [
            [
                [
                    [101.6455078125,27.68352808378776],
                    [114.78515624999999,27.68352808378776],
                    [114.78515624999999,35.209721645221386],
                    [101.6455078125,35.209721645221386],
                    [101.6455078125,27.68352808378776]
                ], // 一个外部环
                
                [
                    [104.2822265625,30.107117887092357],
                    [108.896484375,30.107117887092357],
                    [108.896484375,33.76088200086917],
                    [104.2822265625,33.76088200086917],
                    [104.2822265625,30.107117887092357]
                ] // 一个内部环
        ] // 一个有孔的单面
    ] // 因为是多个有孔的蛋面组成的集合,所以这里多了一个层级。
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23

在这里插入图片描述

    GeometryCollection(几何集合)

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

{
    "type": "GeometryCollection",
    "geometries": [
         {
            "type": "Point",
            "coordinates": [108.62, 31.02819]
         },
        {
            "type": "LineString",
            "coordinates": [[108.896484375,30.1071178870],
                        [108.2184375,30.91717870],
                        [109.5184375,31.2175780]]
         }
    ]
}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

在这里插入图片描述




原文地址:https://blog.csdn.net/Richard__Ting/article/details/99319860

原文地址:https://www.cnblogs.com/Fooo/p/15753427.html