GEOJSON数据格式解析

最近想通过echarts来实现一些自定义的地图,接触到了一种地图的数据格式GeoJSONGeo是地理坐标的意思,然后JSON是指json类型的数据格式。
我们可以通过阿里云DataV来快速的获取到一份县级以上的地图。而如果想绘制县级以的地图,则需要自己想一点办法。
比如自己去geojson站点去绘制。绘制完成后将最终得到一份类型为JSON的地图文件,格式确切的说为GeoJSON
而本文在于解释GeoJSON这种数据格式中各项的具体含义。

除了echarts外,其它的地图组件也基本是基于GeoJSON的,比如:Leaflet
准备 在正式理解GeoJSON之前,我们先下载一下成型的文件,以当前笔者所研究的尚义县为例,我们在阿里云上下载一个成型文件。
然后使用sublime等工具打开这个文件并进行格式化。最终发现
一个基本的GeoJSON文件有个主要的关键字:type:
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "adcode": 130725, "name": "尚义县", "center": [113.977713, 41.080091], "centroid": [114.147607, 41.123316], "childrenNum": 0, "level": "district", "acroutes": [100000, 130000, 130700], "parent": { "adcode": 130700 } }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [114.35286, 40.73159], [114.356768, 40.73224] ] ] ] } }] }

注意:以上文件省略了大部分基础数据。
type 根级的type分别为FeatureCollectionFeature,分别代表特征值集合特征值
查询rfc7946白皮书可得:当typeFeatureCollection时,其必然还拥有一个features值,该值的类型是一个JSON数组,每一个数据的类型均是一个Feature
【GEOJSON数据格式解析】白皮书同时还给出了Feature特征值的的说明:
  • 拥有一个geometry属性,该属性的值的类型是object, 作用是对其图型的进行描述(定义),如果当前特征值还没有确认,则给其赋值为null。
  • 拥有一个properties属性。该属性的值的类型是object或是null。它定义了地图的相关属性。
  • 如果该特征值需要规定一个标识符(ID),那么这个标识符应该使用字符串或是数字的形式。
阅读完白皮书我们大概了解到:一个地图是由一个或多个Feature组成的,每个Feature会定义一些属性(properties)以及地图的边界数据(geometry)。
Geometry Geometry译为几何图形,它是整个地图的核心,其中的数据决定了地图长什么样子。
几何形状的种类有PositionPointMultiPointLineStringMultiLineStringPolygonMultiPolygonGeometryCollection。分别代表:位置,单点多点, 线,多条线,多边形,多个多边型几何形状集合
该种类由type关键字来规定,比如我们下载到的地图文件的type值为MultiPolygon:
"geometry": { "type": "MultiPolygon",

表示该几何形状由多个多边形组成。
而具体的地图的数据则被定义在coordinates中,当type不同时coordinates的类型也不同。
解读 通过学习白皮书,结合我们下载的地图文件,我们大概了解到:
  1. 一个地图文件由一个或多个特征值Feature组成,如果我们愿,则可以为每个特征值起个名字。
  2. 每个特定值下都可以规定一个几何形状。
  3. 当一个几何形状不足以满足要求时,还可以将几何形状的类型声明为GeometryCollection以定义多个几何形状。
  4. 需要为每个几何形状都指定好类型,该类型为:点、线、多边形等。
有了上述的数据格式,其它的地图软件便可以根据读取后的数据绘制地图了。
参考文档(工具) http://www.thingjs.com/guide/cn/tutorial_city_builder/Data_description/Online_tools.html
https://datav.aliyun.com/portal/school/atlas/area_generator
https://geojson.org/
http://geojson.io/
rfc7946白皮书

    推荐阅读