getEnvelope
virtual void getEnvelope(OGREnvelope *psEnvelope) const = 0
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络
参数:
psEnvelope -- 放置结果的结构
获取几何对象的包围盒的算法通常取决于几何对象的类型。不同类型的几何对象可能需要不同的计算方法。以下是一些常见的几何对象的包围盒计算算法示例:
- 点(OGRPoint):点的包围盒就是点本身,最小坐标值和最大坐标值都是点的坐标。
- 线段(OGRLineString):线段的包围盒由线段的起点和终点确定,最小坐标值和最大坐标值分别是起点和终点的坐标。
- 多边形(OGRPolygon):多边形的包围盒由多边形的外环(exterior ring)的所有点确定,最小坐标值和最大坐标值分别是外环中所有点的最小和最大坐标值。
- 多点(OGRMultiPoint):多点的包围盒由所有点的坐标确定,最小坐标值和最大坐标值分别是所有点的最小和最大坐标值。
- 多线段(OGRMultiLineString):多线段的包围盒由所有线段的起点和终点确定,最小坐标值和最大坐标值分别是所有线段的起点和终点的最小和最大坐标值。
- 多多边形(OGRMultiPolygon):多多边形的包围盒由所有多边形的包围盒合并而成,最小坐标值和最大坐标值分别是所有多边形包围盒的最小和最大坐标值。
getEnvelope
virtual void getEnvelope(OGREnvelope3D *psEnvelope) const = 0
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络 (3D)
参数:
psEnvelope -- 放置结果的结构
WkbSize
virtual size_t WkbSize() const = 0
返回相关二进制表示形式的大小
返回: 二进制表示形式的大小(以字节为单位)
importFromWkb
OGRErr importFromWkb(const GByte*, size_t = static_cast<size_t>(-1), OGRwkbVariant = wkbVariantOldOgc)
从已知的二进制数据中指定几何图形
参数:
-
pabyData -- 二进制输入数据。
-
nSize -- pabyData 的大小(以字节为单位),如果不知道,则为 -1。
-
eWkbVariant -- 如果 wkbVariantPostGIS1,则对曲线几何代码进行特殊解释
返回: OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回
// 定义包含 WKB 数据的字节数组
GByte wkbData[] = {
0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
size_t wkbSize = sizeof(wkbData);
// 创建一个 OGRGeometry 对象
OGRGeometry* geom = nullptr;
// 使用 importFromWkb 导入几何对象
OGRErr err = geom->importFromWkb(wkbData, wkbSize);
importFromWkb
virtual OGRErr importFromWkb(const unsigned char*, size_t, OGRwkbVariant, size_t &nBytesConsumptiondOut) = 0
参数:
-
pabyData -- 二进制输入数据。
-
nSize -- pabyData 的大小(以字节为单位),如果不知道,则为 -1。
-
eWkbVariant -- 如果 wkbVariantPostGIS1,则对曲线几何代码进行特殊解释
-
nBytesConsumptiondOut -- 输出参数。消耗的字节数。
返回: OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回
exportToWkb
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char*, OGRwkbVariant = wkbVariantOldOgc) const = 0
将几何图形转换为众所周知的二进制格式
参数:
-
eByteOrder -- wkbXDR 或 wkbNDR 之一,分别表示 MSB 或 LSB 字节顺序。
-
pabyData -- 写入二进制表示的缓冲区。此缓冲区的大小必须至少为 OGRGeometry::WkbSize() 字节。
-
eWkbVariant -- 导出三维(或更多)几何图形时使用什么标准。默认的 wkbVariantOldOgc 是历史的 OGR 变体。wkbVariantIso 是 ISO SQL/MM 中定义的变体,并被 OGC 用于 SFSQL 1.2。
返回: 当前始终返回OGRERR_NONE
importFromWkt
virtual OGRErr importFromWkt(const char **ppszInput) = 0
从已知文本数据中指定几何图形
参数:
ppszInput -- 指向源文本指针的指针。指针将更新为已使用文本之后的指针。
返回: OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回
exportToWkt
OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant = wkbVariantOldOgc) const
将几何图形转换为众所周知的文本格式
-
参数:
-
ppszDstText -- 文本缓冲区由程序分配,并分配给传递的指针。使用后,*ppszDstText 应该使用 CPLFree() 释放。
-
变体 -- 也必须符合的规范:
-
wkb变体 Ogc 用于旧式 99-402 扩展尺寸 (Z) WKB 类型
-
wkbVariantIso for SFSQL 1.2 和 ISO SQL/MM 第 3 部分
-
返回:当前始终返回OGRERR_NONE
// 创建一个 OGRGeometry 对象(示例中以 OGRPoint 为例)
OGRPoint point(1.0, 2.0);
// 导出为 WKT 字符串
char* wktString = nullptr;
OGRErr err = point.exportToWkt(&wktString);
if (err == OGRERR_NONE) {
// 导出成功
// 打印导出的 WKT 字符串
if (wktString != nullptr) {
printf("WKT: %s\n", wktString);
// 使用完毕后需要释放内存
OGRFree(wktString);
}
} else {
// 导出失败或出现错误
// 处理错误情况
}
exportToWkt
virtual std::string exportToWkt(const OGRWktOptions &opts = OGRWktOptions(), OGRErr *err = nullptr) const = 0
导出 WKT 几何图形
参数:
-
选项 -- 输出选项。
-
err -- 指向错误代码的指针(如果需要)。
返回: 表示此几何图形的 WKT 字符串
getGeometryType
virtual OGRwkbGeometryType getGeometryType() const = 0
获取几何类型
返回: 几何类型代码
getIsoGeometryType
OGRwkbGeometryType getIsoGeometryType() const
获取符合 ISO SQL/MM 第 3 部分的几何类型。
返回: 符合 ISO SQL/MM 第 3 部分的几何类型
// 创建一个 OGRGeometry 对象(示例中以 OGRPoint 为例)
OGRPoint point(1.0, 2.0);
// 获取几何类型
OGRwkbGeometryType geometryType = point.getIsoGeometryType();
// 打印几何类型枚举值
printf("Geometry Type: %d\n", geometryType);
getGeometryName
virtual const char *getGeometryName() const = 0
获取几何类型的 WKT 名称
返回: 用于此几何类型的名称,采用众所周知的文本格式。返回的指针指向静态内部字符串,不应修改或释放
dumpReadable
void dumpReadable(FILE*, const char* = nullptr, CSLConstList papszOptions = NULLPTR) const
将已知文本格式的几何图形转储到指示的输出文件
可以定义几个选项来更改默认转储:
DISPLAY_GEOMETRY=NO :隐藏几何图形的转储
DISPLAY_GEOMETRY=WKT 或 YES(默认):将几何图形转储为 WKT
DISPLAY_GEOMETRY=摘要:仅获取几何图形的摘要
参数:
-
FP -- 要将几何图形写入的文本文件。
-
pszPrefix -- 要放在每行输出上的前缀。
-
papszOptions -- NULL 终止的选项列表(可能为 NULL)
// 创建一个指向要写入的文件的 FILE 指针
FILE* fpOut = fopen("output.txt", "w");
// 创建一个几何图形对象
OGRGeometry* geometry = new OGRPoint(1.0, 2.0);
// 定义前缀字符串
const char* pszPrefix = "Prefix: ";
// 定义选项列表(以 NULL 终止的字符串数组)
const char* papszOptions[] = {
"option1",
"option2",
NULL // 列表的最后一个元素必须是 NULL
};
// 调用 dumpReadable 函数,将几何图形写入文件
geometry->dumpReadable(fpOut, pszPrefix, papszOptions);
dumpReadable
std::string dumpReadable(const char* = nullptr, CSLConstList papszOptions = NULLPTR) const
将已知文本格式的几何图形转储到指示的输出文件
可以定义几个选项来更改默认转储:
DISPLAY_GEOMETRY=NO :隐藏几何图形的转储
DISPLAY_GEOMETRY=WKT 或 YES(默认):将几何图形转储为 WKT
DISPLAY_GEOMETRY=摘要:仅获取几何图形的摘要
参数:
-
pszPrefix -- 要放在每行输出上的前缀。
-
papszOptions -- NULL 终止的选项列表(可能为 NULL)
返回: 带有几何表示形式的字符串
// 创建一个几何图形对象
OGRGeometry* geometry = new OGRPoint(1.0, 2.0);
// 定义前缀字符串
const char* pszPrefix = "Prefix: ";
// 定义选项列表(以 NULL 终止的字符串数组)
const char* papszOptions[] = {
"option1",
"option2",
NULL // 列表的最后一个元素必须是 NULL
};
// 调用 dumpReadable 函数,获取几何图形的可读文本表示
std::string readableText = geometry->dumpReadable(pszPrefix, papszOptions);
// 打印可读文本表示
std::cout << readableText << std::endl;