利用Python实现轴马力格式向GeoJSON的转换方法

  

  

轴马力格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格式的数据,众所周知JSON (JavaScript对象Nonation)是利用键值对+嵌套来表示数据的一种格式,以其轻量,易解析的优点,被广泛使用与各种领域,而GeoJSON就是指在一套规定的语法规则下用JSON格式存储矢量数据,本文就将针对GeoJSON的语法规则,以及如何利用Python完成轴马力格式到GeoJSON格式的转换进行介绍。

  

  

<强> 2.1 GeoJSON格式说明

  

GeoJSON本质依旧是JSON,其基本格式如下:

        {   “类型”:“FeatureCollection”,   “功能”:[]   }   
     

一个完整的GeoJSON文件最外层为一个字典,把整个GeoJSON文件看做自顶向下的树状结构的话,其根目录包含键值对“类型”:“FeaturesCollection”,以及存放所有要素的键值对“功能”:[],所有矢量要素都存放在这个列表中,每个要素都是一个字典、下面我们来认识一下各种矢量要素在GeoJSON中的规范格式:

  

点要素(点):

  

对于单个点要素,其格式如下:

        {“类型”:“特性”,   “属性”:{value1, value2},   “几何”:{   “类型”:“点”,   “坐标”:[经度,纬度)   }   }      

其中属性对应的值为这个要素对应的属性表中按顺序存放的值,几何对应的值中类型指明了要素类型,坐标传入一个包含两个元素的列表,第一个元素代表经度,第二个元素代表纬度。

  

<强>多点要素(多点):

  

多点要素是点要素的特殊情况,其几何形状下的类型属性传入“多点”,其坐标属性传入的是一个二维列表,其最内层列表定义了每个点的经纬度,如下:

        {“类型”:“特性”,   “属性”:{value1, value2},   “几何”:{   “类型”:“多点”,   “坐标”:[[经度1,纬度1],   (经度2,纬度2]   ]   }   }   
     

<强>线要素(LineString):

  

线要素记录的是一条线上所有折点的经纬度信息,只需要按顺序连接这些折点就可以还原一条线的形态,在GeoJSON中线要素与多点要素在坐标属性上格式相同,区别在于几何属性需要传入“LineString”,如下:

        {“类型”:“特性”,   “属性”:{value1, value2},   “几何”:{   “类型”:“LineString”,   “坐标”:[[经度1,纬度1],   (经度2,纬度2],   (经3度,纬度3],   (经4度,纬度4]]   }   }   
     

<强>多线要素(MultiLineString):

  

多线要素是多个线要素的组合,因此其坐标传入三维列表,来组合多条线,对应的几何下类型属性为“MultiLineString”,如下:

        {“类型”:“特性”,   “属性”:{value1, value2},   “几何”:{   “类型”:“MultiLineString”,   “坐标”:   (   (   纬(经度1日度1],   (经度2,纬度2],   (经3度,纬度3],   (经4度,纬度4]   ),   (   (经5度,纬度5],   纬(经度6日度6]   ]   ]   }   }      

<强>多边形要素(多边形):

  

多边形要素记录了构成一个多边形所有边缘折点的经纬度信息,其坐标属性传入“多边形”,其几何下类型属性格式为三维列表,其第三层列表中嵌套的所有列表记录的经纬度按顺序连接即构成了一个多边形,但需要注意的是,多边形头尾折点的经纬度需要相同,才能构成一个闭合的多边形,如下:

        {“类型”:“特性”,   “属性”:{value1, value2},   “几何”:{   “类型”:“多边形”,   “坐标”:(   (   纬(经度1日度1],   (经度2,纬度2],   (经3度,纬度3],   (经4度,纬度4],   纬(经度1日度1]   ]   ]   }   }      

<强>多多边形要素(多个多边形):

  

多多边形的格式为四维列表,其几何下类型属性传入“MultiPloygon”,由于多多边形要素中存在几种特殊情况,下面我们在geojson.io中进行对应GeoJSON数据的可视化以便于理解:

  

互不重叠的两个多边形:

  

下面是互不重叠的两个多边形的示例:,
  

  

利用Python实现轴马力格式向GeoJSON的转换方法

利用Python实现轴马力格式向GeoJSON的转换方法