官方文档:
当使用GDAL库进行栅格数据集的处理和操作时,需要使用驱动程序(不同的栅格数据格式、数据库、遥感数据源等都需要不同的驱动程序)。在使用GDAL之前,需要通过GDALDriver函数将库中现有的驱动程序注册到当前进程中,这样才能在打开栅格数据集时使用这些驱动程序。
注意
我们学习的是C++的函数,但是C++也可调用C的函数,所以我会在对应函数后添加C的等效函数,具体的使用分析可以看:传送门
栅格接口
注册驱动程序的意义
gdal的数据类型驱动注册的主要目的是让gdal能够识别和处理各种数据格式。每个驱动程序都指定了如何读写特定格式所需的算法和参数。通过注册这些驱动程序,gdal就能够识别和处理这些格式的数据,从而使用户能够方便地读写和转换各种地理空间数据格式。
注册驱动程序的意义在于扩展gdal的功能,支持更多种类的地理空间数据格式,从而满足不同用户的需求和应用场景。此外,注册驱动程序还可以提高gdal的性能和稳定性,确保它能够正常地读写和转换各种数据格式。
GDALDataset
GDALDataset它描述了一个图像数据集,包含一个或多个 GDALDriver 对象。在使用 GDAL 库进行图像数据处理时,GDALDataset 对象是最重要的对象之一,它代表了图像数据集,包含了图像的像素数据和其他相关信息
GDALDriver 和 GDALDataset的关系
GDALDriver 对象对于 GDALDataset 类的作用是打开和关闭图像处理设备,以便读取和修改图像文件的内容。如果没有 GDALDriver 对象,GDALDataset 对象将无法访问图像文件,也无法进行任何修改
GDALDriver提供了各种函数和工具,用于读取、修改、创建和管理图像文件。通过 GDALDataset 对象和 GDALDriver 对象的组合使用,可以方便地进行图像数据的处理和分析
GDALDriverManager:
GDALDataset:
GDALRasterBand:
矢量接口
- OGRFeature是表示矢量数据中的要素(Feature)的对象,每个要素包含一个或多个属性和几何形状。OGRFeature可以从OGRLayer中读取或创建。
- OGRLayer是表示矢量数据集中的图层(Layer)的对象,每个图层包含多个要素。OGRLayer可以从矢量数据集中读取或创建。
- OGRGeometry是表示几何形状的对象,可以是点、线、面等。每个OGRFeature都有一个对应的OGRGeometry对象。
- OGRFeatureStyle是表示要素样式的对象,包括线型、颜色、填充等信息。可以通过OGRLayer设置默认样式,也可以在OGRFeature中设置自定义样式。
GDALDataset和OGRLayer之间的关系
- GDALDataset可以包含一个或多个OGRLayer对象,每个OGRLayer对象代表一个矢量图层。
- OGRLayer对象保存在GDALDataset对象中,可以通过GDALDataset对象进行读取和编辑。
但要注意的是,GDALDataset和OGRLayer虽然都是用于处理矢量数据的对象,但它们处理的数据类型不同。GDALDataset主要处理栅格数据,而OGRLayer主要处理矢量数据。
OGRFeature与OGRGeometry的关系
如果一个 OGRFeature 对象表示一个点,则它可能包含一个 OGRGeometry 对象,该对象描述了该点的经纬度坐标
OGRFeature与OGRFeatureStyle的关系
OGRFeature 是 OGRFeatureStyle 的基础。每个 OGRFeatureStyle 都包含一个或多个 OGRFeature 对象,这些对象根据样式信息被格式化并绘制在地图上。OGRFeatureStyle 是一个模板,它定义了如何绘制地理对象。它包含一个或多个 OGRFeature 对象,以及颜色、边框、字体等样式信息。可以使用 OGRFeatureStyle 来定义和格式化地理数据绘图
OGRLayer:
OGRFeatureStyle:
OGRStyleTable OGRStyleMgr OGRStyleTool
OGRFeature
OGRFieldDomain
OGRFieldDomain 是 OpenGIS 库中的一个函数库,用于定义字段的范围和格式。它提供了多种方式来指定字段的数据类型、字符集、大小、默认值等信息,以便在创建 OGRFeature 对象时进行设置
关于范围的定义
虽然 OGRRangeFieldDomain 和 OGRCodedFieldDomain 都可以用于定义范围,但它们的应用场景略有不同。使用 OGRRangeFieldDomain 可以定义范围字段,例如日期范围或时间范围等;而使用 OGRCodedFieldDomain 可以定义编码字段的范围和格式,例如 SQL 编码的日期字段或 UTF-8 编码的字符串字段等。
OGRFeature:
第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章
OGRField: 传送门
OGRFieldDomain: 传送门
OGRCodedFieldDomain: 传送门
OGRRangeFieldDomain: 传送门
OGRGlobFieldDomain: 传送门
OGRFeatureDefn:
OGRFieldDefn:
OGRGeomFiedlDefn: 传送门
几何类OGRGeometry:
所有几何类的抽象基类OGRGeometry
OGRGeometryFactory【1】 OGRGeometryFactory【2】
OGRGeometry【1】 OGRGeometry【2】 OGRGeometry 【3】 OGRGeometry 【4】 OGRGeometry【5】 OGRGeometry【6】
下面所有的几何类都是在OGRGeometry的基础上增加和重写了一小部分与图形特征要素相关的方法,就不一一进行代码举例,可以直接进入官方文档进行查看详细介绍和源代码
OGRCurve 类
抽象曲线基类 OGRCurve GDAL: OGRCurve Class Reference
OGRCompoundCurve:用于存储曲线集合的实用程序类 GDAL: OGRCompoundCurve Class Reference
OGRSimpleCurve:OGRLineString和 OGRCircularString 的抽象曲线基类 GDAL: OGRSimpleCurve Class Reference
OGRCircularString:圆绳的具体表示,即由一个或多个弧圆组成的曲线 OGRCircularString GDAL:OGRCircularString 类引用
OGRLineString:多顶点线的具体表示 OGRLineString GDAL: OGRLineString Class Reference
OGRLinearRing:闭环的具体表示 OGRLinearRing GDAL: OGRLinearRing Class Reference
OGRGeometryCollection 类
1 个或多个几何对象的集合 GDAL:OGRGeometryCollection 类参考
OGRMultiCurve:OGRCurve的集合 GDAL: OGRMultiCurve Class Reference
OGRMultiLineString: OGRLineString 的集合 GDAL: OGRMultiLineString Class Reference
OGRMultiPoint:OGRPoint的集合 GDAL: OGRMultiPoint Class Reference
OGRMultiSurface:非重叠 OGRSurface 的集合 GDAL: OGRMultiSurface Class Reference
OGRMultiPolygon:非重叠的 OGRPolygon 的集合 GDAL: OGRMultiPolygon Class Reference
OGRPoint 类
OGRIteratedPoint:文档里有这个类,但是接口程序中没有 GDAL:OGRIteratedPoint 类引用
OGRSurface类
二维对象(如多边形或曲线多边形)的抽象基类 GDAL: OGRSurface Class Reference
OGRCurvePolygon:表示曲线多边形的具体类 GDAL:OGRCurvePolygon 类参考
OGRPolygon:表示多边形的具体类 GDAL: OGRPolygon Class Reference
OGRTriangle:三角类 GDAL: OGRTriangle Class Reference
OGRPolyhedralSurface:多面体面类 GDAL:OGRPolyhedralSurface 类参考
OGRTriangulatedSurface:三角形曲面类 GDAL: OGRTriangulatedSurface Class Reference
空间参考系统 接口
Spatial Reference System类
在 GDAL/OGR 中,空间参考系统由 OGRSpatialReference
类来表示。OGRSpatialReference
类提供了一系列的成员函数,用于导入、导出和操作空间参考系统。该类支持各种常见的地理和投影坐标系统,包括经纬度坐标系(如WGS 84)、UTM投影、墨卡托投影等
OGRSpatialReference子类