• Python与开源GIS:开始使用GDAL


    640?wx_fmt=gif  

    watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNTcwNjU4,size_16,color_FFFFFF,t_70

    有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。

    生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 


    导入GDAL

    在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

    当然早期版本也是支持的,但是在使用的时候会产生一个弃用警告:

    为了保持兼容性,可以使用下面的语句来导入:

    1. >>> try:
    2. >>> import gdal
    3. >>> except:
    4. >>> from osgeo import gdal

    除了gdal包,还有一个gdalconst包最好也导入。 gdalconst也是osgeo的一个包,它只是在代码中对GDAL中用到的一些常量进行了绑定。 其中gdalconst中的常量都加了前缀,力图与其他模块冲突最小。 所以对gdalconst你可以直接这样导入:

    >>> from osgeo.gdalconst import *

    驱动

    要读取某种类型的数据,必须要先载入数据驱动,也就是初始化一个对象,让它“知道”某种数据结构。 可以使用下面语句一次性注册所有的数据驱动,但是只能读不能写:

    >>> gdal.AllRegister()

    单独注册某一类型的数据驱动,这样的话可以读也可以写,可以新建数据集(这最终还要取决于GDAL是否已经进行了实现)。下面的语句注册了Erdas的栅格数据类型。

    1. >>> driver = gdal.GetDriverByName('HFA')
    2. >>> driver.Register()
    3. 6

    可以使用下面的语句判断driver是否注册成功。

    1. >>> driver = gdal.GetDriverByName('GeoTiff')
    2. >>> driver == True
    3. False

    上面的注册就失败了,因为不存在名称为“GeoTiff”的数据格式(正确的格式为“GTiff”)。

    查看系统支持的数据格式

    除了使用GetDriverByName(), GDAL还可以使用GetDriver()来获得驱动。 下面的代码获取了系统支持的所有的驱动的名称。

    1. >>> from osgeo import gdal
    2. >>> drv_count = gdal.GetDriverCount()
    3. >>> for idx in range(drv_count):
    4. >>> driver = gdal.GetDriver(idx)
    5. >>> print( "%10s: %s" % (driver.ShortName, driver.LongName))
    6. VRT: Virtual Raster
    7. DERIVED: Derived datasets using VRT pixel functions
    8. GTiff: GeoTIFF
    9. NITF: National Imagery Transmission Format
    10. RPFTOC: Raster Product Format TOC format
    11. ECRGTOC: ECRG TOC format
    12. HFA: Erdas Imagine Images (.img)
    13. SAR_CEOS: CEOS SAR Image
    14. CEOS: CEOS Image
    15. JAXAPALSAR: JAXA PALSAR Product Reader (Level 1.1/1.5)
    16. GFF: Ground-based SAR Applications Testbed File Format (.gff)
    17. ELAS: ELAS
    18. AIG: Arc/Info Binary Grid
    19. AAIGrid: Arc/Info ASCII Grid
    20. GRASSASCIIGrid: GRASS ASCII Grid
    21. SDTS: SDTS Raster
    22. DTED: DTED Elevation Raster
    23. PNG: Portable Network Graphics
    24. JPEG: JPEG JFIF
    25. MEM: In Memory Raster
    26. JDEM: Japanese DEM (.mem)
    27. GIF: Graphics Interchange Format (.gif)
    28. BIGGIF: Graphics Interchange Format (.gif)
    29. ESAT: Envisat Image Format
    30. BSB: Maptech BSB Nautical Charts
    31. XPM: X11 PixMap Format
    32. BMP: MS Windows Device Independent Bitmap
    33. DIMAP: SPOT DIMAP
    34. AirSAR: AirSAR Polarimetric Image
    35. RS2: RadarSat 2 XML Product
    36. SAFE: Sentinel-1 SAR SAFE Product
    37. PCIDSK: PCIDSK Database File
    38. PCRaster: PCRaster Raster File
    39. ILWIS: ILWIS Raster Map
    40. SGI: SGI Image File Format 1.0
    41. SRTMHGT: SRTMHGT File Format
    42. Leveller: Leveller heightfield
    43. Terragen: Terragen heightfield
    44. GMT: GMT NetCDF Grid Format
    45. netCDF: Network Common Data Format
    46. HDF4: Hierarchical Data Format Release 4
    47. HDF4Image: HDF4 Dataset
    48. ISIS3: USGS Astrogeology ISIS cube (Version 3)
    49. ISIS2: USGS Astrogeology ISIS cube (Version 2)
    50. PDS: NASA Planetary Data System
    51. PDS4: NASA Planetary Data System 4
    52. VICAR: MIPL VICAR file
    53. TIL: EarthWatch .TIL
    54. ERS: ERMapper .ers Labelled
    55. JP2OpenJPEG: JPEG-2000 driver based on OpenJPEG library
    56. L1B: NOAA Polar Orbiter Level 1b Data Set
    57. FIT: FIT Image
    58. GRIB: GRIdded Binary (.grb, .grb2)
    59. RMF: Raster Matrix Format
    60. WCS: OGC Web Coverage Service
    61. WMS: OGC Web Map Service
    62. MSGN: EUMETSAT Archive native (.nat)
    63. RST: Idrisi Raster A.1
    64. INGR: Intergraph Raster
    65. GSAG: Golden Software ASCII Grid (.grd)
    66. GSBG: Golden Software Binary Grid (.grd)
    67. GS7BG: Golden Software 7 Binary Grid (.grd)
    68. COSAR: COSAR Annotated Binary Matrix (TerraSAR-X)
    69. TSX: TerraSAR-X Product
    70. COASP: DRDC COASP SAR Processor Raster
    71. R: R Object Data Store
    72. MAP: OziExplorer .MAP
    73. KMLSUPEROVERLAY: Kml Super Overlay
    74. WEBP: WEBP
    75. PDF: Geospatial PDF
    76. Rasterlite: Rasterlite
    77. MBTiles: MBTiles
    78. PLMOSAIC: Planet Labs Mosaics API
    79. CALS: CALS (Type 1)
    80. WMTS: OGC Web Map Tile Service
    81. SENTINEL2: Sentinel 2
    82. MRF: Meta Raster Format
    83. PNM: Portable Pixmap Format (netpbm)
    84. DOQ1: USGS DOQ (Old Style)
    85. DOQ2: USGS DOQ (New Style)
    86. PAux: PCI .aux Labelled
    87. MFF: Vexcel MFF Raster
    88. MFF2: Vexcel MFF2 (HKV) Raster
    89. FujiBAS: Fuji BAS Scanner Image
    90. GSC: GSC Geogrid
    91. FAST: EOSAT FAST Format
    92. BT: VTP .bt (Binary Terrain) 1.3 Format
    93. LAN: Erdas .LAN/.GIS
    94. CPG: Convair PolGASP
    95. IDA: Image Data and Analysis
    96. NDF: NLAPS Data Format
    97. EIR: Erdas Imagine Raw
    98. DIPEx: DIPEx
    99. LCP: FARSITE v.4 Landscape File (.lcp)
    100. GTX: NOAA Vertical Datum .GTX
    101. LOSLAS: NADCON .los/.las Datum Grid Shift
    102. NTv1: NTv1 Datum Grid Shift
    103. NTv2: NTv2 Datum Grid Shift
    104. CTable2: CTable2 Datum Grid Shift
    105. ACE2: ACE2
    106. SNODAS: Snow Data Assimilation System
    107. KRO: KOLOR Raw
    108. ROI_PAC: ROI_PAC raster
    109. RRASTER: R Raster
    110. BYN: Natural Resources Canada's Geoid
    111. ARG: Azavea Raster Grid format
    112. RIK: Swedish Grid RIK (.rik)
    113. USGSDEM: USGS Optional ASCII DEM (and CDED)
    114. GXF: GeoSoft Grid Exchange Format
    115. DODS: DAP 3.x servers
    116. BAG: Bathymetry Attributed Grid
    117. HDF5: Hierarchical Data Format Release 5
    118. HDF5Image: HDF5 Dataset
    119. NWT_GRD: Northwood Numeric Grid Format .grd/.tab
    120. NWT_GRC: Northwood Classified Grid Format .grc/.tab
    121. ADRG: ARC Digitized Raster Graphics
    122. SRP: Standard Raster Product (ASRP/USRP)
    123. BLX: Magellan topo (.blx)
    124. EPSILON: Epsilon wavelets
    125. PostGISRaster: PostGIS Raster driver
    126. SAGA: SAGA GIS Binary Grid (.sdat, .sg-grd-z)
    127. XYZ: ASCII Gridded XYZ
    128. HF2: HF2/HFZ heightfield raster
    129. JPEGLS: JPEGLS
    130. OZI: OziExplorer Image File
    131. CTG: USGS LULC Composite Theme Grid
    132. E00GRID: Arc/Info Export E00 GRID
    133. ZMap: ZMap Plus Grid
    134. NGSGEOID: NOAA NGS Geoid Height Grids
    135. IRIS: IRIS data (.PPI, .CAPPi etc)
    136. PRF: Racurs PHOTOMOD PRF
    137. RDA: DigitalGlobe Raster Data Access driver
    138. EEDAI: Earth Engine Data API Image
    139. EEDA: Earth Engine Data API
    140. SIGDEM: Scaled Integer Gridded DEM .sigdem
    141. IGNFHeightASCIIGrid: IGN France height correction ASCII Grid
    142. GNMFile: Geographic Network generic file based model
    143. GNMDatabase: Geographic Network generic DB based model
    144. ESRI Shapefile: ESRI Shapefile
    145. MapInfo File: MapInfo File
    146. UK .NTF: UK .NTF
    147. OGR_SDTS: SDTS
    148. S57: IHO S-57 (ENC)
    149. DGN: Microstation DGN
    150. OGR_VRT: VRT - Virtual Datasource
    151. REC: EPIInfo .REC
    152. Memory: Memory
    153. BNA: Atlas BNA
    154. CSV: Comma Separated Value (.csv)
    155. NAS: NAS - ALKIS
    156. GML: Geography Markup Language (GML)
    157. GPX: GPX
    158. LIBKML: Keyhole Markup Language (LIBKML)
    159. KML: Keyhole Markup Language (KML)
    160. GeoJSON: GeoJSON
    161. GeoJSONSeq: GeoJSON Sequence
    162. ESRIJSON: ESRIJSON
    163. TopoJSON: TopoJSON
    164. Interlis 1: Interlis 1
    165. Interlis 2: Interlis 2
    166. OGR_GMT: GMT ASCII Vectors (.gmt)
    167. GPKG: GeoPackage
    168. SQLite: SQLite / Spatialite
    169. OGR_DODS: OGR_DODS
    170. ODBC: ODBC
    171. WAsP: WAsP .map format
    172. PGeo: ESRI Personal GeoDatabase
    173. MSSQLSpatial: Microsoft SQL Server Spatial Database
    174. OGR_OGDI: OGDI Vectors (VPF, VMAP, DCW)
    175. PostgreSQL: PostgreSQL/PostGIS
    176. MySQL: MySQL
    177. OpenFileGDB: ESRI FileGDB
    178. XPlane: X-Plane/Flightgear aeronautical data
    179. DXF: AutoCAD DXF
    180. CAD: AutoCAD Driver
    181. Geoconcept: Geoconcept
    182. GeoRSS: GeoRSS
    183. GPSTrackMaker: GPSTrackMaker
    184. VFK: Czech Cadastral Exchange Data Format
    185. PGDUMP: PostgreSQL SQL dump
    186. OSM: OpenStreetMap XML and PBF
    187. GPSBabel: GPSBabel
    188. SUA: Tim Newport-Peace's Special Use Airspace Format
    189. OpenAir: OpenAir
    190. OGR_PDS: Planetary Data Systems TABLE
    191. WFS: OGC WFS (Web Feature Service)
    192. WFS3: OGC WFS 3 client (Web Feature Service)
    193. SOSI: Norwegian SOSI Standard
    194. HTF: Hydrographic Transfer Vector
    195. AeronavFAA: Aeronav FAA
    196. Geomedia: Geomedia .mdb
    197. EDIGEO: French EDIGEO exchange format
    198. GFT: Google Fusion Tables
    199. SVG: Scalable Vector Graphics
    200. CouchDB: CouchDB / GeoCouch
    201. Cloudant: Cloudant / CouchDB
    202. Idrisi: Idrisi Vector (.vct)
    203. ARCGEN: Arc/Info Generate
    204. SEGUKOOA: SEG-P1 / UKOOA P1/90
    205. SEGY: SEG-Y
    206. XLS: MS Excel format
    207. ODS: Open Document/ LibreOffice / OpenOffice Spreadsheet
    208. XLSX: MS Office Open XML spreadsheet
    209. ElasticSearch: Elastic Search
    210. Walk: Walk
    211. Carto: Carto
    212. AmigoCloud: AmigoCloud
    213. SXF: Storage and eXchange Format
    214. Selafin: Selafin
    215. JML: OpenJUMP JML
    216. PLSCENES: Planet Labs Scenes API
    217. CSW: OGC CSW (Catalog Service for the Web)
    218. VDV: VDV-451/VDV-452/INTREST Data Format
    219. GMLAS: Geography Markup Language (GML) driven by application schemas
    220. MVT: Mapbox Vector Tiles
    221. TIGER: U.S. Census TIGER/Line
    222. AVCBin: Arc/Info Binary Coverage
    223. AVCE00: Arc/Info E00 (ASCII) Coverage
    224. NGW: NextGIS Web
    225. GenBin: Generic Binary (.hdr Labelled)
    226. ENVI: ENVI .hdr Labelled
    227. EHdr: ESRI .hdr Labelled
    228. ISCE: ISCE raster
    229. HTTP: HTTP Fetching Wrapper

    上面第4行,直接使用了索引值来获得驱动,而在第5行则打印了驱动的名称。注意到驱动有ShortName与LongName。ShortName与栅格数据格式在GDAL中定义的编码是一致的,而LongName则可以看成是描述性的文字。 对于不同的Linux发行版,以及安装的GDAL的版本与编译选项的不同,上面程序的结果是不一样的。所以一般情况下要避免使用gdal.GetDriver()这个函数来获取驱动。 我使用的系统是Debian Squeeze,返回的驱动的个数是88。

     这些程序员职场“潜规则”,让你少走5年弯路_【官方推荐】唐城的博客-CSDN博客


       Ã¥Â®Â«Ã¥Â´Ã©ÂªÃ©Â¾Ã§Â«Ã¨Â¡Â¨Ã¦Ã¥|é¾ç«gifå¾è¡¨æåä¸è½½å¾ç一边赶路,一边寻找出路,希望大家在每个幸福的日子里,都能快乐前行。


  • 相关阅读:
    Mybatis-plus快速入门
    speedoffice(PPT)如何添加项目编号
    电脑硬件——CPU散热器
    华为云云耀云服务器L实例使用教学 | 访问控制-安全组配置规则 实例教学
    ubuntu 22.04 截图工具 shutter
    Kubernetes:(四)常用命令
    ​力扣解法汇总1624-两个相同字符之间的最长子字符串
    前端vue实现圣杯布局【flex布局、浮动布局】
    基于Algolia实现网站全文搜索
    【高等数学】常用函数的n阶导数
  • 原文地址:https://blog.csdn.net/qq_41570658/article/details/127692802