GDAL 简介

前言

GDAL 是一个用于转换处理栅格和矢量地理空间数据格式的库,其基于MIT开源许可。

1. GDAL 简介

GDAL 英文全称Geospatial Data Abstraction Library,也就是地理空间数据抽象库。

GDAL 由开源地理空间基金会发布。作为一个库,它向调用应用程序提供了一个单一的光栅抽象数据模型和一个单一矢量抽象数据模型,用于所有支持的格式。并且还具有各种用于数据转换和处理的命令行程序。

GDAL 主要使用面向对象编程语言C++编写,具有较高的执行效率。并且支持大量编程语言调用程序,如C、C++、Java、Python等。它还具有广泛的数据格式支持,达到上百种之多。

由于其强大的数据处理能力,作为GIS领域事实上的标准底层库,被誉为地理空间数据的"瑞士军刀"

2. GDAL 的发展历史

GDAL诞生于1998年,最初由Frank Warmerdam教授个人发起并开发。当时,Frank 在处理各种不同格式的栅格数据时,深感缺乏一个统一的抽象库来简化读写操作。他的目标是创建一个能够为多种栅格数据格式提供统一抽象数据模型的 C++ 库,这也就是GDAL库的起源。

在当时,GDAL的名字其实是"GRASS Data Abstraction Library"的缩写,因为其早期开发与GRASS GIS有关。后来,它的范围就扩展到了 GRASS 之外,名称被重新定义为现在的 "Geospatial Data Abstraction Library",但缩写得以保留。

值得注意的是,因为那时的GDAL只专注于处理栅格数据,缺少对矢量数据的支持,而矢量数据在GIS开发中的地位与栅格数据同等重要,所以Frank教授启动了OGR项目,并且作为GDAL的兄弟库进行管理。

由于GDAL的稳定性与强大的功能,从诞生之初开始就被被众多开源和商业 GIS 软件(如 GRASS GIS, QGIS, ArcGIS, FME 等)选为底层数据支持库,确立了其行业基石的地位。

到了2006年,GDAL/OGR 项目与其他多个重要的开源地理空间项目(如 MapServer、PostGIS 等)共同发起成立了开源地理空间基金会(OSGeo ),也就是Open Source Geospatial Foundation。GDAL/OGR 作为基金会的创始项目之一,被确立为地理空间开源软件的核心数据互操作基石。这一地位极大地提升了其知名度和影响力,获得了更多的资金、代码和文档贡献,从而进入了发展的快车道。

以下是GDAL发展阶段事件。

时间阶段 核心事件 主要推动者 特点
1998年前 个人项目起源 Frank Warmerdam 雏形诞生,解决特定需求
1998-2006 开源传播 Frank 和早期社区 功能扩充,被广泛采用,成为行业标准
2006-2013 OSGeo 孵化 OSGeo 社区 & PMC 项目治理规范化,质量全面提升
2013-2020 现代化改造 Even Rouault 性能优化,支持云计算和大数据
2020至今 商业化资助与创新 Even Rouault & 赞助商 可持续发展,重大功能更新(坐标系、多维数据)

3. GDAL 支持数据格式

矢量数据格式

统计了一下,当前的稳定版本支持矢量数据多达84种。

  1. ADBC -- Arrow Database Connectivity
  2. Artificial intelligence powered vector driver
  3. AmigoCloud
  4. (Geo)Arrow IPC File Format / Stream
  5. Arc/Info Binary Coverage
  6. Arc/Info E00 (ASCII) Coverage
  7. CAD -- AutoCAD DWG
  8. Carto
  9. Comma Separated Value (.csv)
  10. CSW - OGC CSW (Catalog Service for the Web)
  11. Microstation DGN
  12. Microstation DGN v8
  13. AutoCAD DWG
  14. AutoCAD DXF
  15. Google Earth Engine Data API
  16. EDIGEO
  17. Elasticsearch: Geographically Encoded Objects for Elasticsearch
  18. ESRIJSON / FeatureService driver
  19. ESRI File Geodatabase (FileGDB)
  20. FlatGeobuf
  21. GDALG: GDAL Streamed Algorithm
  22. GeoJSON
  23. GeoJSONSeq: sequence of GeoJSON features
  24. GeoRSS : Geographically Encoded Objects for RSS feeds
  25. GML - Geography Markup Language
  26. GMLAS - Geography Markup Language (GML) driven by application schemas
  27. GMT ASCII Vectors (.gmt)
  28. GPKG -- GeoPackage vector
  29. GPSBabel
  30. GPX - GPS Exchange Format
  31. GRASS Vector Format
  32. GTFS - General Transit Feed Specification
  33. SAP HANA
  34. IDB
  35. Idrisi Vector (.VCT)
  36. "INTERLIS 1" and "INTERLIS 2" drivers
  37. JML: OpenJUMP JML format
  38. JSONFG -- OGC Features and Geometries JSON
  39. KML - Keyhole Markup Language
  40. LIBKML Driver (.kml .kmz)
  41. Dutch Kadaster LV BAG 2.0 Extract
  42. MapML
  43. MEM -- In Memory datasets
  44. Memory (deprecated)
  45. MiraMon Vector
  46. MapInfo TAB and MIF/MID
  47. MongoDBv3
  48. MSSQLSpatial - Microsoft SQL Server Spatial Database
  49. MVT: Mapbox Vector Tiles
  50. MySQL
  51. NAS - ALKIS
  52. NetCDF: Network Common Data Form - Vector
  53. NGW -- NextGIS Web
  54. OGC API - Features
  55. Oracle Spatial
  56. ODBC RDBMS
  57. ODS - Open Document Spreadsheet
  58. ESRI File Geodatabase vector (OpenFileGDB)
  59. OSM - OpenStreetMap XML and PBF
  60. (Geo)Parquet
  61. PDF -- Geospatial PDF
  62. PDS - Planetary Data Systems TABLE
  63. PostgreSQL SQL Dump
  64. ESRI Personal GeoDatabase
  65. PostgreSQL / PostGIS
  66. PLScenes (Planet Labs Scenes/Catalog API)
  67. PMTiles
  68. IHO S-57 (ENC)
  69. Selafin files
  70. ESRI Shapefile / DBF
  71. Norwegian SOSI Standard
  72. SQLite / Spatialite RDBMS
  73. Storage and eXchange Format - SXF
  74. TileDB -- TileDB vector
  75. TopoJSON driver
  76. VDV - VDV-451/VDV-452/INTREST Data Format
  77. VFK - Czech Cadastral Exchange Data Format
  78. VRT -- Virtual Format
  79. WAsP - WAsP .map format
  80. WFS - OGC WFS service
  81. XLS - MS Excel format
  82. XLSX - MS Office Open XML spreadsheet
  83. XODR -- OpenDRIVE Road Description Format

栅格数据格式

栅格数据的格式种类则更多,当前的稳定版本支持栅格数据高达155种。

  1. AAIGrid -- Arc/Info ASCII Grid
  2. ACE2 -- ACE2
  3. ADRG -- ADRG/ARC Digitized Raster Graphics (.gen/.thf)
  4. AIG -- Arc/Info Binary Grid
  5. AIRSAR -- AIRSAR Polarimetric Format
  6. AVIF -- AV1 Image File Format
  7. BAG -- Bathymetry Attributed Grid
  8. BASISU -- Basis Universal
  9. BMP -- Microsoft Windows Device Independent Bitmap
  10. BSB -- Maptech/NOAA BSB Nautical Chart Format
  11. BT -- VTP .bt Binary Terrain Format
  12. BYN - Natural Resources Canada's Geoid file format (.byn)
  13. CAD -- AutoCAD DWG raster layer
  14. CALS -- CALS Type 1
  15. CEOS -- CEOS Image
  16. COASP -- DRDC COASP SAR Processor Raster
  17. COG -- Cloud Optimized GeoTIFF generator
  18. COSAR -- TerraSAR-X Complex SAR Data Product
  19. CPG -- Convair PolGASP data
  20. CTG -- USGS LULC Composite Theme Grid
  21. DAAS (Airbus DS Intelligence Data As A Service driver)
  22. DDS -- DirectDraw Surface
  23. DERIVED -- Derived subdatasets driver
  24. DIMAP -- Spot DIMAP
  25. DOQ1 -- First Generation USGS DOQ
  26. DOQ2 -- New Labelled USGS DOQ
  27. DTED -- Military Elevation Data
  28. ECRGTOC -- ECRG Table Of Contents (TOC.xml)
  29. ECW -- Enhanced Compressed Wavelets (.ecw)
  30. EEDAI - Google Earth Engine Data API Image
  31. EHdr -- ESRI .hdr Labelled
  32. EIR -- Erdas Imagine Raw
  33. ENVI -- ENVI .hdr Labelled Raster
  34. ESAT -- Envisat Image Product
  35. ESRIC -- Esri Compact Cache
  36. ERS -- ERMapper .ERS
  37. EXR -- Extended Dynamic Range Image File Format
  38. FAST -- EOSAT FAST Format
  39. FITS -- Flexible Image Transport System
  40. GenBin -- Generic Binary (.hdr labelled)
  41. Oracle Spatial GeoRaster
  42. GFF -- Sandia National Laboratories GSAT File Format
  43. GIF -- Graphics Interchange Format
  44. GPKG -- GeoPackage raster
  45. GRASS Raster Format
  46. GRASSASCIIGrid -- GRASS ASCII Grid
  47. GRIB -- WMO General Regularly-distributed Information in Binary form
  48. GS7BG -- Golden Software Surfer 7 Binary Grid File Format
  49. GSAG -- Golden Software ASCII Grid File Format
  50. GSBG -- Golden Software Binary Grid File Format
  51. GSC -- GSC Geogrid
  52. GDALG: GDAL Streamed Algorithm
  53. GTA - Generic Tagged Arrays
  54. GTI -- GDAL Raster Tile Index
  55. GTiff -- GeoTIFF File Format
  56. GXF -- Grid eXchange File
  57. HDF4 -- Hierarchical Data Format Release 4 (HDF4)
  58. HDF5 -- Hierarchical Data Format Release 5 (HDF5)
  59. HEIF / HEIC -- ISO/IEC 23008-12 High Efficiency Image File Format
  60. HF2 -- HF2/HFZ heightfield raster
  61. HFA -- Erdas Imagine .img
  62. RST -- Idrisi Raster Format
  63. ILWIS -- Raster Map
  64. IRIS -- Vaisala's weather radar software format
  65. ISCE -- ISCE
  66. ISG -- International Service for the Geoid
  67. ISIS2 -- USGS Astrogeology ISIS Cube (Version 2)
  68. ISIS3 -- USGS Astrogeology ISIS Cube (Version 3)
  69. JDEM -- Japanese DEM (.mem)
  70. JP2ECW -- ERDAS JPEG2000 (.jp2)
  71. JP2KAK -- JPEG 2000 (based on Kakadu SDK)
  72. JP2MrSID -- JPEG2000 via MrSID SDK
  73. JP2OpenJPEG -- JPEG2000 driver based on OpenJPEG library
  74. JPEG -- JPEG JFIF File Format
  75. JPEGXL -- JPEG-XL File Format
  76. JPIPKAK - JPIP Streaming
  77. KEA
  78. KMLSuperoverlay -- KMLSuperoverlay
  79. KRO -- KOLOR Raw format
  80. KTX2
  81. LAN -- Erdas 7.x .LAN and .GIS
  82. L1B -- NOAA Polar Orbiter Level 1b Data Set (AVHRR)
  83. LCP -- FARSITE v.4 LCP Format
  84. Leveller -- Daylon Leveller Heightfield
  85. LIBERTIFF -- GeoTIFF File Format
  86. LOSLAS -- NADCON .los/.las Datum Grid Shift
  87. MAP -- OziExplorer .MAP
  88. MRF -- Meta Raster Format
  89. MBTiles
  90. MEM -- In Memory datasets
  91. MFF -- Vexcel MFF Raster
  92. MFF2 -- Vexcel MFF2 Image
  93. MrSID -- Multi-resolution Seamless Image Database
  94. MSG -- Meteosat Second Generation
  95. MSGN -- Meteosat Second Generation (MSG) Native Archive Format (.nat)
  96. NDF -- NLAPS Data Format
  97. NetCDF: Network Common Data Form
  98. NGSGEOID - NOAA NGS Geoid Height Grids
  99. NGW -- NextGIS Web
  100. NITF -- National Imagery Transmission Format
  101. NOAA_B -- NOAA GEOCON/NADCON5 .b format
  102. NSIDCbin -- National Snow and Ice Data Centre Sea Ice Concentrations
  103. NTv2 -- NTv2 Datum Grid Shift
  104. NWT_GRD/NWT_GRC -- Northwood/Vertical Mapper File Format
  105. OGCAPI -- OGC API Tiles / Maps / Coverage
  106. ESRI File Geodatabase raster (OpenFileGDB)
  107. JAXA PALSAR Processed Products
  108. PAux -- PCI .aux Labelled Raw Format
  109. PCIDSK -- PCI Geomatics Database File
  110. PCRaster -- PCRaster raster file format
  111. PDF -- Geospatial PDF
  112. PDS -- Planetary Data System v3
  113. PDS4 -- NASA Planetary Data System (Version 4)
  114. PLMosaic (Planet Labs Mosaics API)
  115. PNG -- Portable Network Graphics
  116. PNM -- Netpbm (.pgm, .ppm)
  117. PostGISRaster -- PostGIS Raster driver
  118. PHOTOMOD Raster File
  119. RasterLite2 - Rasters in SQLite DB
  120. RCM -- RADARSAT Constellation Mission Product
  121. RIK -- Swedish Grid Maps
  122. RMF -- Raster Matrix Format
  123. ROI_PAC -- ROI_PAC
  124. RPFTOC -- Raster Product Format/RPF (a.toc)
  125. RRASTER -- R Raster
  126. RS2 -- RadarSat 2 XML Product
  127. S102 -- S-102 Bathymetric Surface Product
  128. S104 -- S-104 Water Level Information for Surface Navigation Product
  129. S111 -- S-111 Surface Currents Product
  130. SAFE -- Sentinel-1 SAFE XML Product
  131. SAR_CEOS -- CEOS SAR Image
  132. SAGA -- SAGA GIS Binary Grid File Format
  133. SENTINEL2 -- Sentinel-2 Products
  134. SIGDEM -- Scaled Integer Gridded DEM
  135. SNAP_TIFF -- Sentinel Application Processing GeoTIFF
  136. SNODAS -- Snow Data Assimilation System
  137. SRP -- Standard Product Format (ASRP/USRP) (.gen)
  138. SRTMHGT -- SRTM HGT Format
  139. STACIT - Spatio-Temporal Asset Catalog Items
  140. STACTA - Spatio-Temporal Asset Catalog Tiled Assets
  141. Terragen -- Terragen****™ Terrain File
  142. TGA -- TARGA Image File Format
  143. TIL -- EarthWatch/DigitalGlobe .TIL
  144. TileDB - TileDB raster
  145. TSX -- TerraSAR-X Product
  146. USGSDEM -- USGS ASCII DEM (and CDED)
  147. VICAR -- VICAR
  148. VRT -- GDAL Virtual Format
  149. WCS -- OGC Web Coverage Service
  150. WEBP - WEBP
  151. WMS -- Web Map Services
  152. WMTS -- OGC Web Map Tile Service
  153. XYZ -- ASCII Gridded XYZ
  154. Zarr
  155. ZMap -- ZMap Plus Grid

4. GDAL 对 OGC 的支持情况

GDAL/OGR 不仅是 OGC 标准的重要支持者和实现者,其本身也深度参与了标准的制定和验证过程。

4.1. 核心数据格式标准的支持

这是 GDAL/OGR 对 OGC 支持最成熟、最彻底的部分。

  • GML (Geography Markup Language)

全面支持读写。作为 OGC 的基础XML编码标准,GDAL 提供了完整的驱动程序(GML driver)来解析和生成 GML 文件,支持多种版本的 GML 应用模式(Application Schema)。

  • KML (Keyhole Markup Language) & KMZ

全面支持读写。虽然最初由 Keyhole 公司开发(后被Google收购),但 KML 已成为 OGC 标准。GDAL 的 LIBKML 驱动程序提供了对 KML 文件及其样式、模型等元素的深度支持。

  • GPX (GPS Exchange Format)

全面支持读写。GPX 是用于交换GPS数据的XML格式,也是一个OGC标准。OGR 的 GPX 驱动程序可以处理路径、航点和轨迹。

  • GeoPackage

旗舰级支持。GeoPackage 是一个基于 SQLite 的、现代的、功能强大的 OGC 矢量与栅格数据容器标准

  • GeoJSON & JSON-FG

全面支持。虽然 GeoJSON 最初是一个社区标准(由 IETF 标准化为 RFC 7946),但它与 OGC 生态系统紧密相关,并被广泛视为事实上的Web标准。GDAL 的 GeoJSON 驱动程序支持读写。对新兴的 OGC JSON-FG (Features and Geometries JSON) 标准也开始提供实验性支持,该标准旨在弥补 GeoJSON 在3D、坐标系、时序数据等方面的不足。

4.2. 坐标参考系统的支持

GDAL 对空间坐标参考系统的处理完全构建在 OGC 标准之上。

  • WKT (Well-Known Text) CRS

核心支持。OGC WKT 是定义坐标参考系统的标准文本格式。GDAL 使用 PROJ 库(现为 PROJ),而 PROJ 完全支持 OGC WKT 1 和 WKT 2 (ISO 19162) 标准来解析和定义CRS。

  • EPSG 代码

核心支持。通过 PROJ 库,GDAL 可以识别和使用由 EPSG 注册表(其定义遵循 OGC 最佳实践)定义的数千个坐标系统。例如,EPSG:4326 (WGS84) 和 EPSG:3857 (Web Mercator)。

4.3. 简单要素访问规范 (SFA) 支持

OGR 的几何模型直接实现了 OGC 简单要素访问规范。

  • 几何类型

完全支持。OGR 几何对象(Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection 等)严格遵循 SFA 中定义的几何类型层次结构。

  • 空间谓词(空间关系)与操作

高度支持。OGR 使用 GEOS 库(GEOS 是 JTS 的 C++ 端口)来提供强大的空间分析功能,这些功能直接对应 OGC SFA 定义的操作。空间关系函数 包括Contains(), Crosses(), Disjoint(), Equals(), Intersects(), Overlaps(), Touches(), Within()空间分析操作 包括Buffer(), Intersection(), Union(), Difference(), SymDifference()几何验证与简化 包括IsValid(), Simplify(), SimplifyPreserveTopology()

4.4. 网络服务协议支持

GDAL 提供了访问 OGC Web 服务(OWS)的能力,允许用户将远程服务作为本地数据源一样使用。

  • WMS (Web Map Service) & WMTS (Web Map Tile Service)

GDAL 的 WMS 驱动程序可以连接 WMS/WMTS 服务器,获取栅格地图瓦片,并像处理本地栅格文件一样进行拼接、重投影等操作。这对于下载底图或进行大规模分析非常有用。

  • WFS (Web Feature Service)

OGR 的 WFS 驱动程序可以将远程的 WFS 服务作为一个只读的矢量数据源。可以执行查询、获取要素并将其转换为任何 OGR 支持的本地格式。

  • WCS (Web Coverage Service)

GDAL 的 WCS 驱动程序允许访问 WCS 服务,将远程覆盖数据(Coverage)作为本地栅格数据集读取。

参考地址

GDAL官网:https://gdal.org/en/stable

GDAL仓库:https://github.com/OSGeo/gdal

OSGeo官网:https://www.osgeo.org

OSGeo开源中国:https://www.osgeo.cn/pygis/index.html

相关推荐
!win !8 小时前
不定高元素动画实现方案(下)
前端·javascript·css
Song5592 天前
elpis框架抽离并发布 SDK-NPM 包
前端
Mintopia2 天前
低代码平台如何集成 AIGC 技术?核心技术衔接点解析
前端·javascript·aigc
Mintopia2 天前
Next.js + AI-SDK + DeepSeek:3 分钟建设属于你的 AI 问答 Demo
前端·javascript·next.js
anyup2 天前
历时 10 天+,速度提升 20 倍,新文档正式上线!uView Pro 开源组件库体验再升级!
前端·typescript·uni-app
_AaronWong2 天前
仿 ElementPlus 的函数式弹窗调用
前端·element
用户21411832636022 天前
AI 当 “牛马”!免费云服务器 + 开源插件,7×24 小时写小说,一晚交出 70 章长篇
前端
IT_陈寒2 天前
React 18新特性全解析:这5个隐藏API让你的性能飙升200%!
前端·人工智能·后端
朦胧之2 天前
【NestJS】项目调试
前端·node.js
!win !2 天前
不定高元素动画实现方案(中)
前端·动画