GDAL C++ API 学习之路 OGRGeometry 环类 OGRLinearRing

这篇具有很好参考价值的文章主要介绍了GDAL C++ API 学习之路 OGRGeometry 环类 OGRLinearRing。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OGRLinearRing class        <ogrsf_frmts.h>

OGRLinearRing 是 OGR 库中的一个类,它是一个线性环(Linear Ring)的几何对象,用于表示封闭的线性路径。线性环是由一系列连续的线段组成,首尾相连形成闭合的环。线性环常用于构建多边形几何体,多边形的边界由线性环构成

Public Functions

OGRLinearRing()

构造 函数

OGRLinearRingconst OGRLinearRing &other)

复制构造函数

OGRLinearRing(OGRLinearRing*)

构造 函数

OGRLinearRing &operator=const OGRLinearRing &other)

赋值运算符

Virtual const char *getGeometryName() const override

获取几何类型的 WKT 名称

返回:  用于此几何类型的名称,采用众所周知的文本格式。返回的指针指向静态内部字符串,不应修改或释放

clone

virtual OGRLinearRing *clone() const override

创建此对象的副本

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

isPointInRing

OGRBoolean isPointInRing(const OGRPoint *pt, int bTestEnvelope = TRUE) const 

返回点是否在环内

参数:

  •  -- 点

  • bTestEnvelope -- 如果必须先检查环包络内是否存在该点,则设置为 TRUE。

返回: 对或错

    // 创建一个 OGRLinearRing 对象,表示一个线性环
    OGRLinearRing ring;
    ring.addPoint(0, 0);
    ring.addPoint(0, 1);
    ring.addPoint(1, 1);
    ring.addPoint(1, 0);
    ring.addPoint(0, 0);

    // 创建一个 OGRPoint 对象,表示要检测的点的坐标 (0.5, 0.5)
    OGRPoint point(0.5, 0.5);

    // 判断点是否在线性环的内部
    OGRBoolean isInRing = ring.isPointInRing(&point);

    if (isInRing) {
        printf("Point is inside the ring.\n");
    } else {
        printf("Point is not inside the ring.\n");
    }

isPointOnRingBoundary

OGRBoolean isPointOnRingBoundary(const OGRPoint *pt, int bTestEnvelope = TRUE) const

返回点是否在环边界上

参数:

  •  -- 点

  • bTestEnvelope -- 如果必须先检查环包络内是否存在该点,则设置为 TRUE。

返回:  对或错

// 创建一个 OGRLinearRing 对象,表示一个线性环
    OGRLinearRing ring;
    ring.addPoint(0, 0);
    ring.addPoint(0, 1);
    ring.addPoint(1, 1);
    ring.addPoint(1, 0);
    ring.addPoint(0, 0);

    // 创建一个 OGRPoint 对象,表示要检测的点的坐标 (0.5, 0.5)
    OGRPoint point(0.5, 0.5);

    // 判断点是否在线性环的边界上
    OGRBoolean isOnBoundary = ring.isPointOnRingBoundary(&point);

    if (isOnBoundary) {
        printf("Point is on the ring boundary.\n");
    } else {
        printf("Point is not on the ring boundary.\n");
    }

transform

virtual OGRErr transform(OGRCoordinateTransformation *poCT) override

对几何图形应用任意坐标变换

此方法会将几何图形的坐标从其当前空间参考系统转换为新的目标空间参考系统。通常这意味着重新投影矢量,但它可能包括基准面偏移和单位变化

参数:

poCT -- 要应用的转换。

返回:  OGRERR_NONE成功或错误代码文章来源地址https://www.toymoban.com/news/detail-622619.html

    // 创建一个 OGRPoint 对象,表示原始点的坐标 (30, 40)
    OGRPoint originalPoint(30, 40);

    // 创建源和目标的空间参考系统
    OGRSpatialReference sourceSRS;
    OGRSpatialReference targetSRS;
    sourceSRS.SetWellKnownGeogCS("WGS84"); // 使用 WGS84 作为源 CRS
    targetSRS.SetWellKnownGeogCS("EPSG:4326"); // 使用 EPSG:4326 作为目标 CRS

    // 创建坐标转换对象
    OGRCoordinateTransformation *transformer = OGRCreateCoordinateTransformation(&sourceSRS, &targetSRS);

    if (transformer) {
        // 对原始点进行坐标转换
        OGRErr err = originalPoint.transform(transformer);

        if (err == OGRERR_NONE) {
            // 打印转换后的点坐标
            double x = originalPoint.getX();
            double y = originalPoint.getY();
            printf("Transformed Point: (%f, %f)\n", x, y);
        } else {
            printf("Error during coordinate transformation!\n");
        }

        // 释放坐标转换对象
        OCTDestroyCoordinateTransformation(transformer);
    } else {
        printf("Failed to create coordinate transformation!\n");
    }

到了这里,关于GDAL C++ API 学习之路 OGRGeometry 环类 OGRLinearRing的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 调用gdal API(二)——栅格裁剪

    gdal可以说是GIS数据处理比较好的工具之一,虽然也提供了Java API,但是官方文档确实太过简单,用起来确实太难受,每次都需要去参考对应的C++api,然后在对应使用。 因此小编决定从这篇文章开始,将自己以前以及今后用到的API,都记录下,以帮助更多从事java GIS服务开发者

    2024年02月16日
    浏览(38)
  • C++学习之路(C++初阶)——类和对象(上)

    ✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️专栏 : C++初阶       🛰️欢迎关注:👍点赞🙌收藏✍️留言       🛰️友友们的支持是本博主更新的动力   本博客主要为学习C++类和对象内容做准备,开头补充

    2024年02月07日
    浏览(58)
  • c++的学习之路:22、多态(1)

    本章主要是说一些多态的开头。 目录 摘要 一、多态的概念 二、多态的定义及实现 2.1、多态的构成条件 2.2、虚函数 2.3、虚函数的重写 2.4、C++11 override 和 final  2.5、重载、覆盖(重写)、隐藏(重定义)的对比 三、思维导图 多态的概念:通俗来说,就是多种形态,具体点就是去

    2024年04月14日
    浏览(72)
  • 【C++ Core Guidelines解析】C++学习之路的一盏明灯

    前言: C++语言的功能非常丰富,表达能力非常强。 因为一种成功的通用编程语言拥有的功能必须比任何开发人员所需要的更多,任何一种有生命力且不断发展的语言都会不断积累用于表达程序员思想的替代用法。这会导致选择过载。那么,开发人员应该如何根据编程风格和

    2024年02月09日
    浏览(37)
  • 基于C++、GDAL、OpenCV的矢量数据骨架线提取算法

    基于C++、GDAL、OpenCV的矢量数据骨架线提取算法 CGAL已经实现了该功能,但由于CGAL依赖于Boost库,编译后过大,因此本文所采用的这套方式实现骨架线提取功能。 效果: 思路: 1、将导入shp按照要素逐一拆分成新的shp 2、将所有拆分后的shp分别转栅格,利用OpenCV提取骨架线 3、

    2024年02月12日
    浏览(79)
  • C++学习之路(七)C++ 实现简单的Qt界面(消息弹框、按钮点击事件监听)- 示例代码拆分讲解

    这个示例创建了一个主窗口,其中包含两个按钮。第一个按钮点击时会显示一个简单的消息框,第二个按钮点击时会执行一个特定的操作(在这个例子中,仅打印一条调试信息)。 功能描述: 创建窗口和布局: 使用 QWidget 和 QVBoxLayout 创建主窗口并设置垂直布局,将按钮放置

    2024年02月04日
    浏览(68)
  • C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组

      本文介绍基于 C++ 语言 GDAL 库, 批量读取 大量栅格遥感影像文件,并生成 各像元数值的时间序列 数组的方法。   首先,我们来明确一下本文所需实现的需求。现在有一个文件夹,其中包含了很多不同格式的文件,如下图所示。   其中,我们首先需要遍历这一文件

    2024年02月19日
    浏览(38)
  • 创建大量栅格文件并分别写入像元数据:C++ GDAL代码实现

      本文介绍基于 C++ 语言 GDAL 库, 批量创建 大量栅格遥感影像文件,并将数据批量写入其中的方法。   首先,我们来明确一下本文所需实现的需求。已知我们对 大量遥感影像 进行了批量读取与数据处理操作——具体过程可以参考文章C++ GDAL提取多时相遥感影像中像素随

    2024年02月19日
    浏览(42)
  • 在Visual Studio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)

      本文介绍在 Visual Studio 软件中配置、编译 C++ 环境下 GDAL 库、 SQLite 环境与 PROJ 库的详细方法。    GDAL 库是一个非常方便的地理数据处理库,但其在 C++ 环境下的配置与编译流程较为复杂;尤其是最新的 GDAL 3 及以上版本,其在 C++ 环境中的配置更是首先需要满足许多其

    2024年02月19日
    浏览(38)
  • C++实现K-均值算法非监督分类(opencv2.4.9、gdal2.1.2)

    算法思想及流程: 代码: 原图像(3、2、1波段):   分类后(输入分类数K=4): 代码已能实现简单的分类。但受限于本人水平,该代码仍有许多不足,初始聚类中心的选择尚需改进,存储聚类中心的方式不够简洁 注:当前代码只能读入img格式图像

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包