但是后来GDAL成为OSGEO的子项目后,对代码进行了重新组织。 在 GDAL
RFC 17号文件
中, 实现了Python的新的名称空间 osgeo
,
并将 gdal
与 ogr
都包含在这个名称空间之下。
RFC(Request For Comments),意即“请求评议”,一系列以编号排定的文件。 当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时, 就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见。
在 GDAL 版本 1.6 以后,推荐使用下面的语句导入:
from osgeo import gdal
在一段时间内早期版本也是支持的,但是在使用的时候会产生一个弃用警告。现在的版本只能用上面语句来导入了。
为了保持兼容性,可以使用下面的语句来导入:
try:
import gdal
except:
from osgeo import gdal
除了 gdal
包,还有一个 gdalconst
包最好也导入。
gdalconst
也是 osgeo
的一个包,它只是在代码中对GDAL中用到的一些常量进行了绑定。
其中 gdalconst
中的常量都加了前缀,力图与其他模块冲突最小。
所以一般情况下可以对 gdalconst
可以直接这样导入:
from osgeo.gdalconst import *
gdal.AllRegister()
单独注册某一类型的数据驱动,这样的话可以读也可以写,可以新建数据集(这最终还要取决于GDAL是否已经进行了实现)。
下面的语句注册了Erdas的栅格数据类型。
driver = gdal.GetDriverByName('HFA')
driver.Register()
9
可以使用下面的语句判断driver是否注册成功。
driver = gdal.GetDriverByName('GeoTiff')
driver == True
False
上面的注册就失败了,因为不存在名称为 GeoTiff
的数据格式(正确的格式为 GTiff
)。
from osgeo import gdal
drv_count = gdal.GetDriverCount()
drv_count
197
for idx in range(10):
driver = gdal.GetDriver(idx)
print( "%10s: %s" % (driver.ShortName, driver.LongName))
VRT: Virtual Raster DERIVED: Derived datasets using VRT pixel functions GTI: GDAL Raster Tile Index SNAP_TIFF: Sentinel Application Processing GeoTIFF GTiff: GeoTIFF COG: Cloud optimized GeoTIFF generator NITF: National Imagery Transmission Format RPFTOC: Raster Product Format TOC format ECRGTOC: ECRG TOC format HFA: Erdas Imagine Images (.img)
上面第4行,直接使用了索引值来获得驱动,而在第5行则打印了驱动的名称。注意到驱动有ShortName与LongName。ShortName与栅格数据格式在GDAL中定义的编码是一致的,而LongName则可以看成是描述性的文字。 对于不同的Linux发行版,以及安装的GDAL的版本与编译选项的不同,上面程序的结果是不一样的。所以一般情况下要避免使用gdal.GetDriver()这个函数来获取驱动。 我使用的系统是Debian Squeeze,返回的驱动的个数是88。
from osgeo import ogr
drv_count = ogr.GetDriverCount()
drv_count
for idx in range(drv_count):
driver = gdal.GetDriver(idx)
print( "%10s: %s" % (driver.ShortName, driver.LongName))
VRT: Virtual Raster DERIVED: Derived datasets using VRT pixel functions GTI: GDAL Raster Tile Index SNAP_TIFF: Sentinel Application Processing GeoTIFF GTiff: GeoTIFF COG: Cloud optimized GeoTIFF generator NITF: National Imagery Transmission Format RPFTOC: Raster Product Format TOC format ECRGTOC: ECRG TOC format HFA: Erdas Imagine Images (.img) SAR_CEOS: CEOS SAR Image CEOS: CEOS Image JAXAPALSAR: JAXA PALSAR Product Reader (Level 1.1/1.5) GFF: Ground-based SAR Applications Testbed File Format (.gff) ELAS: ELAS ESRIC: Esri Compact Cache AIG: Arc/Info Binary Grid AAIGrid: Arc/Info ASCII Grid GRASSASCIIGrid: GRASS ASCII Grid ISG: International Service for the Geoid SDTS: SDTS Raster DTED: DTED Elevation Raster PNG: Portable Network Graphics JPEG: JPEG JFIF MEM: In Memory Raster JDEM: Japanese DEM (.mem) GIF: Graphics Interchange Format (.gif) BIGGIF: Graphics Interchange Format (.gif) ESAT: Envisat Image Format BSB: Maptech BSB Nautical Charts XPM: X11 PixMap Format BMP: MS Windows Device Independent Bitmap DIMAP: SPOT DIMAP AirSAR: AirSAR Polarimetric Image RS2: RadarSat 2 XML Product SAFE: Sentinel-1 SAR SAFE Product PCIDSK: PCIDSK Database File PCRaster: PCRaster Raster File ILWIS: ILWIS Raster Map SGI: SGI Image File Format 1.0 SRTMHGT: SRTMHGT File Format Leveller: Leveller heightfield Terragen: Terragen heightfield ISIS3: USGS Astrogeology ISIS cube (Version 3) ISIS2: USGS Astrogeology ISIS cube (Version 2) PDS: NASA Planetary Data System PDS4: NASA Planetary Data System 4 VICAR: MIPL VICAR file TIL: EarthWatch .TIL ERS: ERMapper .ers Labelled L1B: NOAA Polar Orbiter Level 1b Data Set FIT: FIT Image RMF: Raster Matrix Format WCS: OGC Web Coverage Service WMS: OGC Web Map Service MSGN: EUMETSAT Archive native (.nat) RST: Idrisi Raster A.1 GSAG: Golden Software ASCII Grid (.grd) GSBG: Golden Software Binary Grid (.grd) GS7BG: Golden Software 7 Binary Grid (.grd) COSAR: COSAR Annotated Binary Matrix (TerraSAR-X) TSX: TerraSAR-X Product COASP: DRDC COASP SAR Processor Raster R: R Object Data Store MAP: OziExplorer .MAP KMLSUPEROVERLAY: Kml Super Overlay WEBP: WEBP Rasterlite: Rasterlite MBTiles: MBTiles PLMOSAIC: Planet Labs Mosaics API