GDAL C++ API 学习之路 OGRGeometry 点类 OGRPoint

Class OGRPoint        <ogr_geometry.h>

public OGRGeometry

OGRPoint 是 OGR(OpenGIS Simple Features Reference Implementation)库中的一个类,用于表示一个点几何对象。OGR 是一个开源的GIS(地理信息系统)库,用于读写和处理矢量数据。OGRPoint 是其中一个基本的几何类型,用于表示一个二维或三维空间中的点

Public Functions

OGRPoint

OGRPoint()

创建一个空点

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

OGRPointconst OGRPoint &other)

复制构造函数

WkbSize

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;

importFromWkb

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);

exportToWkb

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);

importFromWkt

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);

exportToWkt

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)

getDimension

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;

clone

virtual OGRPoint *clone() const override

创建此对象的副本

返回: 具有与原始对象相同的几何和空间参考系统的新对象实例

empty

virtual void empty() override

清空几何信息        这会在构造后和实际几何分配之前将几何图形恢复到其初始状态

getEnvelope

virtual void getEnvelope(OGREnvelope *psEnvelope) const override

计算并返回传递的 psEnvelope 结构中此几何图形的边界包络

参数:

psEnvelope -- 放置结果的结构

getEnvelope

virtual void getEnvelope(OGREnvelope3D *psEnvelope) const override

计算并返回传递的 psEnvelope 结构中此几何图形的边界包络 (3D)

参数:

psEnvelope -- 放置结果的结构

IsEmpty

inline virtual OGRBoolean IsEmpty() const override

如果对象没有点,则返回 TRUE(非零)

返回:  如果对象为空,则为 TRUE,否则为 FALSE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

场主不吃鍋巴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值