有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。
生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。
在Python中使用GDAL,只需要导入 gdal
模块。 在早期的版本(1.5以前)中,GDAL是使用 import gdal
语句导入。
但是后来GDAL成为OSGEO的子项目后,对代码进行了重新组织。 在 GDAL RFC 17号文件 中, 实现了Python的新的名称空间osgeo, 并将gdal与ogr都包含在这个名称空间之下。
RFC(Request For Comments),意即“请求评议”,一系列以编号排定的文件。 当某家机构或团体开发出了一套标准或提出对某种标准的设想,想要征询外界的意见时, 就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见。
但是后来GDAL成为OSGEO的子项目后,对代码进行了重新组织。 在 RFC 17号文件中, 实现了Python的新的名称空间osgeo, 并将gdal与ogr都包含在这个名称空间之下。 现在推荐使用下面的语句导入:
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()
-
- 6
可以使用下面的语句判断driver是否注册成功。
- >>> driver = gdal.GetDriverByName('GeoTiff')
- >>> driver == True
-
- False
上面的注册就失败了,因为不存在名称为“GeoTiff”的数据格式(正确的格式为“GTiff”)。
除了使用GetDriverByName(), GDAL还可以使用GetDriver()来获得驱动。 下面的代码获取了系统支持的所有的驱动的名称。
- >>> from osgeo import gdal
- >>> drv_count = gdal.GetDriverCount()
- >>> 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
- GTiff: GeoTIFF
- 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
- AIG: Arc/Info Binary Grid
- AAIGrid: Arc/Info ASCII Grid
- GRASSASCIIGrid: GRASS ASCII Grid
- 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
- GMT: GMT NetCDF Grid Format
- netCDF: Network Common Data Format
- HDF4: Hierarchical Data Format Release 4
- HDF4Image: HDF4 Dataset
- 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
- JP2OpenJPEG: JPEG-2000 driver based on OpenJPEG library
- L1B: NOAA Polar Orbiter Level 1b Data Set
- FIT: FIT Image
- GRIB: GRIdded Binary (.grb, .grb2)
- RMF: Raster Matrix Format
- WCS: OGC Web Coverage Service
- WMS: OGC Web Map Service
- MSGN: EUMETSAT Archive native (.nat)
- RST: Idrisi Raster A.1
- INGR: Intergraph Raster
- 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
- PDF: Geospatial PDF
- Rasterlite: Rasterlite
- MBTiles: MBTiles
- PLMOSAIC: Planet Labs Mosaics API
- CALS: CALS (Type 1)
- WMTS: OGC Web Map Tile Service
- SENTINEL2: Sentinel 2
- MRF: Meta Raster Format
- PNM: Portable Pixmap Format (netpbm)
- DOQ1: USGS DOQ (Old Style)
- DOQ2: USGS DOQ (New Style)
- PAux: PCI .aux Labelled
- MFF: Vexcel MFF Raster
- MFF2: Vexcel MFF2 (HKV) Raster
- FujiBAS: Fuji BAS Scanner Image
- GSC: GSC Geogrid
- FAST: EOSAT FAST Format
- BT: VTP .bt (Binary Terrain) 1.3 Format
- LAN: Erdas .LAN/.GIS
- CPG: Convair PolGASP
- IDA: Image Data and Analysis
- NDF: NLAPS Data Format
- EIR: Erdas Imagine Raw
- DIPEx: DIPEx
- LCP: FARSITE v.4 Landscape File (.lcp)
- GTX: NOAA Vertical Datum .GTX
- LOSLAS: NADCON .los/.las Datum Grid Shift
- NTv1: NTv1 Datum Grid Shift
- NTv2: NTv2 Datum Grid Shift
- CTable2: CTable2 Datum Grid Shift
- ACE2: ACE2
- SNODAS: Snow Data Assimilation System
- KRO: KOLOR Raw
- ROI_PAC: ROI_PAC raster
- RRASTER: R Raster
- BYN: Natural Resources Canada's Geoid
- ARG: Azavea Raster Grid format
- RIK: Swedish Grid RIK (.rik)
- USGSDEM: USGS Optional ASCII DEM (and CDED)
- GXF: GeoSoft Grid Exchange Format
- DODS: DAP 3.x servers
- BAG: Bathymetry Attributed Grid
- HDF5: Hierarchical Data Format Release 5
- HDF5Image: HDF5 Dataset
- NWT_GRD: Northwood Numeric Grid Format .grd/.tab
- NWT_GRC: Northwood Classified Grid Format .grc/.tab
- ADRG: ARC Digitized Raster Graphics
- SRP: Standard Raster Product (ASRP/USRP)
- BLX: Magellan topo (.blx)
- EPSILON: Epsilon wavelets
- PostGISRaster: PostGIS Raster driver
- SAGA: SAGA GIS Binary Grid (.sdat, .sg-grd-z)
- XYZ: ASCII Gridded XYZ
- HF2: HF2/HFZ heightfield raster
- JPEGLS: JPEGLS
- OZI: OziExplorer Image File
- CTG: USGS LULC Composite Theme Grid
- E00GRID: Arc/Info Export E00 GRID
- ZMap: ZMap Plus Grid
- NGSGEOID: NOAA NGS Geoid Height Grids
- IRIS: IRIS data (.PPI, .CAPPi etc)
- PRF: Racurs PHOTOMOD PRF
- RDA: DigitalGlobe Raster Data Access driver
- EEDAI: Earth Engine Data API Image
- EEDA: Earth Engine Data API
- SIGDEM: Scaled Integer Gridded DEM .sigdem
- IGNFHeightASCIIGrid: IGN France height correction ASCII Grid
- GNMFile: Geographic Network generic file based model
- GNMDatabase: Geographic Network generic DB based model
- ESRI Shapefile: ESRI Shapefile
- MapInfo File: MapInfo File
- UK .NTF: UK .NTF
- OGR_SDTS: SDTS
- S57: IHO S-57 (ENC)
- DGN: Microstation DGN
- OGR_VRT: VRT - Virtual Datasource
- REC: EPIInfo .REC
- Memory: Memory
- BNA: Atlas BNA
- CSV: Comma Separated Value (.csv)
- NAS: NAS - ALKIS
- GML: Geography Markup Language (GML)
- GPX: GPX
- LIBKML: Keyhole Markup Language (LIBKML)
- KML: Keyhole Markup Language (KML)
- GeoJSON: GeoJSON
- GeoJSONSeq: GeoJSON Sequence
- ESRIJSON: ESRIJSON
- TopoJSON: TopoJSON
- Interlis 1: Interlis 1
- Interlis 2: Interlis 2
- OGR_GMT: GMT ASCII Vectors (.gmt)
- GPKG: GeoPackage
- SQLite: SQLite / Spatialite
- OGR_DODS: OGR_DODS
- ODBC: ODBC
- WAsP: WAsP .map format
- PGeo: ESRI Personal GeoDatabase
- MSSQLSpatial: Microsoft SQL Server Spatial Database
- OGR_OGDI: OGDI Vectors (VPF, VMAP, DCW)
- PostgreSQL: PostgreSQL/PostGIS
- MySQL: MySQL
- OpenFileGDB: ESRI FileGDB
- XPlane: X-Plane/Flightgear aeronautical data
- DXF: AutoCAD DXF
- CAD: AutoCAD Driver
- Geoconcept: Geoconcept
- GeoRSS: GeoRSS
- GPSTrackMaker: GPSTrackMaker
- VFK: Czech Cadastral Exchange Data Format
- PGDUMP: PostgreSQL SQL dump
- OSM: OpenStreetMap XML and PBF
- GPSBabel: GPSBabel
- SUA: Tim Newport-Peace's Special Use Airspace Format
- OpenAir: OpenAir
- OGR_PDS: Planetary Data Systems TABLE
- WFS: OGC WFS (Web Feature Service)
- WFS3: OGC WFS 3 client (Web Feature Service)
- SOSI: Norwegian SOSI Standard
- HTF: Hydrographic Transfer Vector
- AeronavFAA: Aeronav FAA
- Geomedia: Geomedia .mdb
- EDIGEO: French EDIGEO exchange format
- GFT: Google Fusion Tables
- SVG: Scalable Vector Graphics
- CouchDB: CouchDB / GeoCouch
- Cloudant: Cloudant / CouchDB
- Idrisi: Idrisi Vector (.vct)
- ARCGEN: Arc/Info Generate
- SEGUKOOA: SEG-P1 / UKOOA P1/90
- SEGY: SEG-Y
- XLS: MS Excel format
- ODS: Open Document/ LibreOffice / OpenOffice Spreadsheet
- XLSX: MS Office Open XML spreadsheet
- ElasticSearch: Elastic Search
- Walk: Walk
- Carto: Carto
- AmigoCloud: AmigoCloud
- SXF: Storage and eXchange Format
- Selafin: Selafin
- JML: OpenJUMP JML
- PLSCENES: Planet Labs Scenes API
- CSW: OGC CSW (Catalog Service for the Web)
- VDV: VDV-451/VDV-452/INTREST Data Format
- GMLAS: Geography Markup Language (GML) driven by application schemas
- MVT: Mapbox Vector Tiles
- TIGER: U.S. Census TIGER/Line
- AVCBin: Arc/Info Binary Coverage
- AVCE00: Arc/Info E00 (ASCII) Coverage
- NGW: NextGIS Web
- GenBin: Generic Binary (.hdr Labelled)
- ENVI: ENVI .hdr Labelled
- EHdr: ESRI .hdr Labelled
- ISCE: ISCE raster
- HTTP: HTTP Fetching Wrapper
上面第4行,直接使用了索引值来获得驱动,而在第5行则打印了驱动的名称。注意到驱动有ShortName与LongName。ShortName与栅格数据格式在GDAL中定义的编码是一致的,而LongName则可以看成是描述性的文字。 对于不同的Linux发行版,以及安装的GDAL的版本与编译选项的不同,上面程序的结果是不一样的。所以一般情况下要避免使用gdal.GetDriver()这个函数来获取驱动。 我使用的系统是Debian Squeeze,返回的驱动的个数是88。
这些程序员职场“潜规则”,让你少走5年弯路_【官方推荐】唐城的博客-CSDN博客
一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。