zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    POJ 2407 Relatives 欧拉函数
    HDU 4704 Sum 超大数幂取模
    HDU 4699 Editor 维护栈
    HDU 4696 Answers 水题
    HDU 4686 Arc of Dream 矩阵
    [转]高斯消元题集
    [转]计算几何题集
    POJ 2981 Strange Way to Express Integers 模线性方程组
    Linux 设置文件默认打开方式
    FZU 1402 猪的安家 中国剩余定理
  • 原文地址:https://www.cnblogs.com/Fooo/p/15753427.html
Copyright © 2011-2022 走看看