分享

<a href="https://links.jianshu.com/go?to=http%3A%2F%2Fgeojson.org%2F" target="_bla

 看见就非常 2020-08-18

简介

Geojson是一个很重要的数据格式,结构清晰,表达简洁,是用于满足空间数据展示。如今,各大地图服务商的jssdk都已经支持geojson的数据格式,例如高德等,更不用说阿里的L7地理数据可视化引擎,可见这种数据格式的重要性。

与ESRI的shapefile相比更加小巧简单,但是表现的数据内容却是一样的,我觉得GeoJson大有取代shapefile的势头。与还不是很成熟的topojson相比,geojson已经兼容很多前端后段的工具,有很多脚本插件。如下:

举个栗子,抗击非典的全国疫情各省份分布图,可以被称之为专题地图,geojson则被广泛应用​到各种实时报告页面当中。​

结构说明

点的数据格式

{  "type": "Feature",  "geometry": {    "type": "Point",    "coordinates": [125.6, 10.1]  },  "properties": {    "name": "Dinagat Islands"  }}

type指的是数据类型,它是一个feature。它包含几何要素属性几何要素包含要素的类型和坐标。属性可以包含各种数据类型。

线的数据格式

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

线状数据由两个以上的点组合而成,在坐标的外面多包上一层中括号,表示json中的数组。

面的数据格式

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

由于面状数据可以为镂空多边形,可以支持一个以上的多边形,所以在线状数据的基础上多加一层中括号。

要素组合的数据格式

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

不同的数据类型间可以包成一个FeatureCollection,最外层有个type来表示类型,而features指向各个feature数组。有人肯定会疑惑shp中有proj的属性,geojson中可以用crsbbox来表示投影参数和边界范围,详情参考

案例

这里分享一个小案例。

网友问我,获取大批量线段的起点和终点。

我的第一反应就是并不是用arcpy等api,这方法也可行,但是并不是最简洁的方法。我的解决方法是最直接的:

  • 通过qgis将shapefile文件转换成geojson
  • 用python内置库json去解析获取数据

这样相对来说,虽然多了一个数据转换的过程,但是结合本章内容,geojson是文本,结构简洁,方便解析。数据可以很容易获取且替换。这个小实验作为课余作业。json的解析大概是10行代码左右,熟悉python的高手可能5行代码就搞定,比arcpy大大节省代码。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约