但是后来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