开始使用GDAL
导入GDAL
GDAL
和OGR
都归于osgeo
的新类库下面,所以通过以下引入GDAL:
from osgeo import gdal
除了GDAL包,还有一个gdalconst
包最好也导入。 gdalconst
也是osgeo
的一个包,它只是在代码中对GDAL中用到的一些常量进行了绑定。 其中gdalconst
中的常量都加了前缀,力图与其他模块冲突最小。
from osgeo.gdalconst import *
Drivers
驱动,注册驱动程序。
使用GDAL
读取数据,那么第一步就是要创建一个驱动器Driver
,Driver
的意义在于打开gdal
支持的栅格数据文件类型。
第一个方法:
是创建所有文件的总Driver
,这个可以读取所有的文件,但是并不能改写。
gdal.AllRegister()
第二个方法:
单独注册所需要打开的文件的Driver
,这样可以实现读写,但是目标文件必须是gdal
支持的文件类型。
所有的文件类型在官方文档的Raster drivers
中可以找到。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lt175oLM-1667653368663)(I:\MarkDownFiles\GDAL\GDAL_Pic\2022-11-04-15-05-11-image.png)]
这里以HFA
、L1B
、ZMap
文件格式为例,可以发现都是gdal
所支持的。
目前并不清楚print之后表达的值是什么意思,猜测可能是在支持列表中的顺序。
以上问题解决,表示的就是在gdal支持文件列表中的顺序,即序号。
from osgeo import gdal
from osgeo.gdalconst import *
driver_hfa = gdal.GetDriverByName('HFA') # 7
driver_l1b = gdal.GetDriverByName('l1b') # 55
driver_zmap = gdal.GetDriverByName('zmap') # 129
print(driver_zmap.Register())
查看GDAL所支持的所有数据格式
若提前知道所需文件格式的序号,可以通过id
来获取生成Driver
。
gdal.GetDriver(id)
通过下列的循环可以输出当前gdal所支持的所有数据格式。
gdal.GetDriverCount()
输出gdal当前支持的数据格式的数目;
driver.ShortName``driver.LongName
两个属性,输出当前driver的数据格式简写和全称。
driver_count = gdal.GetDriverCount()
for index in range(driver_count):
driver_loop = gdal.GetDriver(index)
print(f"{driver_loop.ShortName} : {driver_loop.LongName}")
注意:一般情况下用数据名称直接获取Driver
,用GetDriver
有时会因index
的改变而出现错误。