python OGR操作矢量数据
OGR简单要素库是地理空间数据抽象库(GDAL)的一部分,是一个开源库,可以读写许多不同格式的矢量数据,编辑属性值,筛选等。
当使用OGR打开数据源,例如Shapefile文件、GeoJSON文件,会有一个DataSource对象,此数据源可以有一个或者多个子图层对象,每一个图层代表数据源中的一个数据集,许多矢量数据格式(如Shapefile)只能包含一个数据集,但是其他如SpatialLite可以包含多个数据集,不管一个数据源中有多少数据集,每一个数据集都被OGR认为是一个图层,也就是说在数据源和实际数据集之间多了一个叫做图层(Layer)的东西,这一点需要注意理清概念。
对于实际的数据,每一个图层都是要素对象的集合,包含其几何形状和属性,如果在GIS软件中加载一个思路数据,在属性表中的每一行对应一个要素,每列对应一个属性字段,在一些GIS软件中(ArcGIS)在属性表中会有一个shape列显示几何对象。
读取矢量数据
需要记住一个数据源由一个或多个图层组成,所以打开数据源后,需要获得具体的图层
数据源有一个GetLayer函数,可以来获得图层索引或者图层名,图层索引从0开始,默认返回第一个图层
Shapefile数据源只有一个图层,所以不需要提供索引
图层由一个或多个要素组成,每一个要素表示一个地理对象。地理对象的几何形状和属性值存储在这些要素中
from osgeo import ogr import sys fn=r"D:\00Paper\00Data\zonal_shp\watershed.shp" ds=ogr.Open(fn,0)#1为编辑模式 if ds is None: sys.exit('Could not open {0}.'.format(fn)) lyr = ds.GetLayer(0) #输出前10个要素的信息 i=0 for feat in lyr: pg=feat.geometry() name=feat.GetField('ID') print(name) i+=1 if i==10: break num_features=lyr.GetFeatureCount()#要素个数 del ds #删除变量 强制关闭文件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2020-04-21 ASTER数据