矢量数据的读取包含:矢量文件打开、读取图层、边界、要素提取、属性表字段读取、要素轮廓坐标提取、遍历所有要素
import sys
import ogr #导入工具包,或者下面语句导入
# from osgeo import ogr
driver = ogr.GetDriverByName('ESRI Shapefile') #载入驱动
filename = 'demo1.shp' # 不止需要.shp文件,还需要附带的其它信息文件
dataSource = driver.Open(filename, 1) #第二个参数为0是只读,为1是可写
if dataSource is None: #判断是否成功打开
print('could not open')
sys.exit(1)
else:
print('done!')
layer = dataSource.GetLayer(0) #读取第一个图层
'''读出上下左右边界,坐标系为地理坐标系'''
extent = layer.GetExtent()
print ('extent:', extent)
print ('ul:', extent[0], extent[1]) #左右边界
print ('lr:', extent[2], extent[3]) #下上边界
n = layer.GetFeatureCount() #该图层中有多少个要素
print ('feature count:', n)
feat = layer.GetFeature(0) #提取数据层中的第一个要素
fid = feat.GetField('FieldID') #读取该要素字段名为'FieldID'的值,注意读取'shape'字段会报错
print (fid)
geom = feat.GetGeometryRef() #提取该要素的轮廓坐标
print (geom)
'''循环遍历所有的该图层中所有的要素'''
feat = layer.GetNextFeature() #读取下一个
while feat:
feat = layer.GetFeature(0)
fid = feat.GetField('FieldID')
print (fid)
layer.ResetReading() #复位