【Python】利用ogr包读取空间数据文件(二):读出Coverage文件节点信息

原创 2018年04月16日 00:09:47

首先讲讲为什么要去做这么一件事情:希望可以用自己用Python写的迪杰斯特拉算法来计算网络图上两个节点的最短路径,于是就需要把coverage文件的信息读进来,生成一个类似于邻接矩阵的矩阵。

一、先加载ogr与numpy的包

import ogr  
import numpy as np

二、创建读取coverage文件的驱动,并读取文件

driver = ogr.GetDriverByName('AVCBin')
filename = 'G:\\data\\coverage\\road\\arc.adf'
dataSource = driver.Open(filename,0)

三、读取coverage中要素的数量

layer = dataSource.GetLayer(0)
n = layer.GetFeatureCount()

四、查找coverage中的最大节点数(这里遇到了一个问题,不知道为什么GetField方法不能直接通过字段名称读取数据,在这里卡了好久,最终查了官方文档后,发现还可以直接通过字段的序号来读取)

nmax = n1 = n2 = 0
for r in range(1, n+1):    
    rr = layer.GetFeature(r)
    n1 = rr.GetField(1)
    if n1 > nmax:
        nmax = n1
    n2 = rr.GetField(2)
    if n2 > nmax:
        nmax = n2

五、利用numpy创建一个nmax*nmax的零二维数组,并给不是对角线上的数值赋值无穷大

road_list = np.zeros((nmax,nmax))
for i in range(0, nmax):
    for j in range(0, nmax):
        if i != j:
            road_list[i][j] = float('inf')

六、遍历coverage文件中的要素,读取节点信息(包括前节点FNODE、后节点TNODE以及长度LENGTH)

for r in range(1, n+1):    
    rr = layer.GetFeature(r)
    n1 = rr.GetField('FNODE') - 1  
    n2 = rr.GetField('TNODE') - 1
    road_list[n1][n2] = road_list[n2][n1] = rr.GetField('LENGTH')

七、读取完成


OGR库读写mif/tab文件lonefox使用经验小结

 ===================================本人log中所有未注明转载的文章和blog一般为本人原创或整理加工,原创文章版权本人(lonefox)所有;转载文章版权归原作者...
  • boythl
  • boythl
  • 2009-11-17 09:19:00
  • 6378

Python地理数据处理之GDAL/OGR使用

一、 首先是在学习Python地理数据处理这本书时了解的这个知识点, 附上书的链接 https://www.manning.com/books/geoprocessing-with-python...
  • wang1042857591
  • wang1042857591
  • 2017-09-04 20:35:29
  • 703

GDAL:2.OGR空间参考

一、定义投影坐标系 OGRSpatialReference oSRS; oSRS.SetProjCS("投影坐标系名称"); oSRS.SetWellKnownGeogCS("WGS84"); o...
  • wuyunbiao
  • wuyunbiao
  • 2016-04-08 13:26:56
  • 592

OGR对shp文件的操作

本文介绍如何使用GDAL/OGR 库对shapefile文件进行简单的操作,包括读取、创建、修改等....
  • tszhangjunqiao
  • tszhangjunqiao
  • 2013-11-21 13:39:27
  • 4917

使用gdal ogr创建shapefile文件(c++)

使用ogr库创建点状要素的shapefile文件以及将经纬度坐标转为投影坐标。实例如下:#include "ogrsf_frmts.h" #include "gdal.h" #include "gda...
  • hnyzwtf
  • hnyzwtf
  • 2016-01-12 17:13:39
  • 3594

Python与开源GIS:使用OGR生成几何要素对象

前面部分我们详细地介绍了如何读取矢量数据,包括数据源、图层、要素、几何形状、字段属性等各个部分。 下面来看一下如何使用OGR来创建矢量数据,亦即使用OGR写GIS矢量文件。首先先看一下写文件的示...
  • langtaosha_a
  • langtaosha_a
  • 2014-01-03 22:44:13
  • 1427

Python+GDAL/OGR矢量数据读写

       常见的矢量数据格式有Shapefile、GeoJSON、CSV,及文件数据库gdb和空间数据库PostGIS,不论是何种格式的数据或如何存储,一旦打开数据源、获取矢量图层后(详情参考OG...
  • shaxiaozilove
  • shaxiaozilove
  • 2018-03-02 11:45:50
  • 114

GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决

GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决
  • langjitianya43
  • langjitianya43
  • 2015-11-15 16:58:10
  • 1701

GDAL学习笔记——OGR投影(二)

解析坐标系当OGRSpatialReference对象被创建时,就可以解析该对象所包含的信息。可以使用OGRSpatialReference提供的IsProjected()和IsGeographic(...
  • u010670734
  • u010670734
  • 2016-11-12 23:50:36
  • 1169

使用GDAL/OGR读取点、线矢量文件

GDAL中对矢量数据的读写操作
  • guoqiong07
  • guoqiong07
  • 2014-07-30 11:19:37
  • 1379
收藏助手
不良信息举报
您举报文章:【Python】利用ogr包读取空间数据文件(二):读出Coverage文件节点信息
举报原因:
原因补充:

(最多只允许输入30个字)