python3 ogr AttributeError: 'NoneType' object has no attribute 'GetLayer'

在使用osgeo.ogr的时候,发现ds.GetLayer(0)报错:
AttributeError: ‘NoneType’ object has no attribute ‘GetLayer’
原因是fn路径有问题.

原代码:

from osgeo import ogr
fn = 'E:\meichuan_prec_station.shp'
ds = ogr.Open(fn,False)
layer = ds.GetLayer(0)

报错信息如下:

Traceback (most recent call last):

  File "<ipython-input-2-08750655ab67>", line 4, in <module>
    layer = ds.GetLayer(0)

AttributeError: 'NoneType' object has no attribute 'GetLayer'

原因排除了gdal版本和python版本的问题,事实上,在可以完成osgeo的调用后,就说明不是python版本和gdal包之间冲突的问题,因为如果在装错gdal版本的情况下,import osgeo的时候,会提示python无法找到适应python版本的gdal.

AttributeError: ‘NoneType’ object has no attribute ‘GetLayer’

根本原因是绝对路径下无法找到所声明的这个‘meichuan_prec_station.shp’
文件不存在,所以打开的是一个空的ds = ogr.Open(fn,False)
在执行这句时,layer = ds.GetLayer(0)
由于ds(DataSource)是空,所以空的ds是没有图层信息的,无法得到其图层。
在这里插入图片描述
检查修改路径后,则GetLayer成功!

from osgeo import ogr
fn = 'E:\课程PPT\Python空间数据处理\python空间数据处理-期中大作业02\梅川江地面数据\meichuan_prec_station.shp'
ds = ogr.Open(fn,False)
layer = ds.GetLayer(0)

在这里插入图片描述

摇曳在笔尖的舞姿、是聚光灯下最浓烈的一抹艳红。


版权归作者 小白是哪个小白_ 所有,转载、引用请注明链接出处。

发布了19 篇原创文章 · 获赞 28 · 访问量 5052

猜你喜欢

转载自blog.csdn.net/qq_37970770/article/details/103222679
今日推荐