public OGRGeometry
OGRPoint
是 OGR(OpenGIS Simple Features Reference Implementation)库中的一个类,用于表示一个点几何对象。OGR 是一个开源的GIS(地理信息系统)库,用于读写和处理矢量数据。OGRPoint
是其中一个基本的几何类型,用于表示一个二维或三维空间中的点
Public Functions
OGRPoint()
创建一个空点
OGRPoint(double x, double y) OGRPoint(double x, double y, double z) OGRPoint(double x, double y, double z, double m)
创建一个点(二维、三维、四维)"m" 值通常用于表示与几何图形相关的测量信息 距离、高程、时间或其他定量属性
参数:
xIn -- x
yIn -- y
zIn -- z
mIn -- m
OGRPoint(const OGRPoint &other)
复制构造函数
virtual size_t WkbSize() const override
返回相关二进制表示形式的大小
此方法返回保存此几何对象的已知二进制表示形式所需的确切字节数。对于复杂的几何形状,它的计算可能略有昂贵
返回: 二进制表示形式的大小(以字节为单位)
// 创建一个 OGRPoint 对象
OGRPoint point(10.0, 20.0);
// 计算 WKB 大小
size_t wkbSize = point.WkbSize();
cout << "WKB Size: " << wkbSize << " bytes" << endl;
virtual OGRErr importFromWkb(const unsigned char*, size_t, OGRwkbVariant, size_t &nBytesConsumedOut) override
从已知的二进制数据中指定几何图形
参数:
pabyData -- 二进制输入数据。
nSize -- pabyData 的大小(以字节为单位),如果不知道,则为 -1。
eWkbVariant -- 如果 wkbVariantPostGIS1,则对曲线几何代码进行特殊解释
nBytesConsumptiondOut -- 输出参数。消耗的字节数。
返回: OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回
// 一个包含二进制 WKB 数据的 unsigned char 数组
const unsigned char wkbData[] = {
0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40
};
// WKB 数据的字节大小
size_t wkbSize = sizeof(wkbData);
// 创建一个 OGRPoint 对象
OGRPoint point;
// 导入 WKB 数据到 OGRPoint 对象
size_t bytesConsumed = 0;
OGRErr err = point.importFromWkb(wkbData, wkbSize, wkbVariantOldOgc, bytesConsumed);
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char*, OGRwkbVariant = wkbVariantOldOgc) const override
将几何图形转换为众所周知的二进制格式
参数:
eByteOrder -- wkbXDR 或 wkbNDR 之一,分别表示 MSB 或 LSB 字节顺序。
pabyData -- 写入二进制表示的缓冲区。此缓冲区的大小必须至少为 OGRGeometry::WkbSize() 字节。
eWkbVariant -- 导出三维(或更多)几何图形时使用什么标准。默认的 wkbVariantOldOgc 是历史的 OGR 变体。wkbVariantIso 是 ISO SQL/MM 中定义的变体,并被 OGC 用于 SFSQL 1.2。
返回: 当前始终返回OGRERR_NONE
// 创建一个 OGRPoint 对象
OGRPoint point(10.0, 20.0);
// 定义一个 unsigned char 数组来存储导出的 WKB 数据
unsigned char wkbData[100];
// 导出 OGRPoint 对象为 WKB 数据
OGRErr err = point.exportToWkb(wkbXDR, wkbData, wkbVariantOldOgc);
virtual OGRErr importFromWkt(const char**) override
从已知文本数据中指定几何图形
参数:
ppszInput -- 指向源文本指针的指针。指针将更新为已使用文本之后的指针。
返回: OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回
// 定义一个用于存储 WKT 数据的指针
const char* wktData = "POINT (10 20)";
// 创建一个 OGRPoint 对象
OGRPoint point;
OGRErr err = point.importFromWkt(&wktData);
virtual std::string exportToWkt(const OGRWktOptions &opts = OGRWktOptions(), OGRErr *err = nullptr) const override
将点导出到 WKT
参数:
OGRWktOptions &opts -- 输出选项。
err -- 指向错误代码的指针(如果需要)。
返回: 表示此点的 WKT 字符串
// 创建一个 OGRPoint 对象并设置坐标
OGRPoint point;
point.setX(10.0);
point.setY(20.0);
// 定义导出选项
OGRWktOptions wktOptions;
// 导出 OGRPoint 对象为 WKT 格式的字符串
string wktString = point.exportToWkt(wktOptions);
cout << "Exported WKT: " << wktString << endl;
Exported WKT: POINT (10 20)
virtual int getDimension() const override
获取此对象的维度
返回: 0 表示点,1 表示直线,2 表示曲面
OGRPoint point(10.0, 20.0, 30.0, 40.0);
int dimension = point.getDimension();
cout << "Point dimension: " << dimension << endl;
virtual OGRPoint *clone() const override
创建此对象的副本
返回: 具有与原始对象相同的几何和空间参考系统的新对象实例
virtual void empty() override
清空几何信息 这会在构造后和实际几何分配之前将几何图形恢复到其初始状态
virtual void getEnvelope(OGREnvelope *psEnvelope) const override
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络
参数:
psEnvelope -- 放置结果的结构
virtual void getEnvelope(OGREnvelope3D *psEnvelope) const override
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络 (3D)
参数:
psEnvelope -- 放置结果的结构
inline virtual OGRBoolean IsEmpty() const override
如果对象没有点,则返回 TRUE(非零)
返回: 如果对象为空,则为 TRUE,否则为 FALSE