当前位置: 首页 > news >正文

GDAL C++ API 学习之路 OGRGeometry 圆弧类 OGRCircularString

OGRCircularString Class        <ogrsf_frmts.h>

OGRCircularString 类是 OGR 几何库中的一个类,用于表示圆弧字符串(circular string)类型的几何图形。圆弧字符串是由一系列圆弧段组成的几何图形,每个圆弧段由三个点定义:起始点、中间点和终止点。这些圆弧段可以连接成一个闭合的圆弧字符串,也可以构成一个非闭合的曲线

Public Functions

OGRCircularString()

创建一个空的圆弧字符串

OGRCircularStringconst OGRCircularString &other)

复制构造函数

OGRCircularString &operator=const OGRCircularString &other)

赋值运算符

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中的任何一个都可能被退回

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

importFromWkt

virtual OGRErr importFromWkt(const char**) override

从已知文本数据中指定几何图形

参数:

ppszInput -- 指向源文本指针的指针。指针将更新为已使用文本之后的指针。

返回:  OGRERR_NONE如果一切顺利,否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回

exportToWkt

virtual std::string exportToWkt(const OGRWktOptions &opts = OGRWktOptions(), OGRErr *err = nullptr) const override

将循环字符串导出到 WKT

参数:

  • opts -- 输出选项

  • err -- 指向错误代码的指针(如果需要)。

返回:

表示此循环字符串的 WKT 字符串

IsValid

virtual OGRBoolean IsValid() const override

测试几何图形是否有效

返回:  如果几何图形没有点,则为 TRUE,否则为 FALSE

getEnvelope

virtual void getEnvelope(OGREnvelope *psEnvelope) const override

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

参数:

psEnvelope -- 放置结果的结构

// 创建一个圆弧几何对象OGRCircularString circularString;// 添加一些点到圆弧circularString.addPoint(0, 0);circularString.addPoint(1, 1);circularString.addPoint(2, 2);// 创建一个用于存储外包络矩形的结构体OGREnvelope envelope;// 获取圆弧的外包络矩形circularString.getEnvelope(&envelope);// 打印外包络矩形的坐标信息std::cout << "MinX: " << envelope.MinX << std::endl;std::cout << "MinY: " << envelope.MinY << std::endl;std::cout << "MaxX: " << envelope.MaxX << std::endl;std::cout << "MaxY: " << envelope.MaxY << std::endl;

getEnvelope

virtual void getEnvelope(OGREnvelope3D *psEnvelope) const override

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

参数:

psEnvelope -- 放置结果的结构

clone

virtual OGRCircularString *clone() const override

创建此对象的副本

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

get_Length

virtual double get_Length() const override

返回曲线的长度

返回: 曲线的长度,如果曲线尚未初始化,则为零

CurveToLine

virtual OGRLineString *CurveToLine(double dfMaxAngleStepSizeDegrees = 0, const char *const *papszOptions = nullptr) const override

参数:

  • dfMaxAngleStepSizeDegrees -- 沿弧的最大步长(以度为单位),使用默认设置为零。

  • papszOptions -- 选项作为以 null 结尾的字符串列表或 NULL。

返回:  近似曲线的线串

Value

virtual void Value(double, OGRPoint*) const override

沿曲线在给定距离处获取点

参数:

  • dfDistance -- 沿采样位置的曲线的距离。对于此曲线,此距离应介于 0 和 get_Length() 之间。

  • poPoint -- 要指定曲线位置的点

    // 创建一个OGRPoint对象表示圆弧曲线的起点OGRPoint startPoint(0.0, 0.0);// 创建一个圆弧曲线对象,构建一个圆弧OGRCircularString circularString;circularString.addPoint(&startPoint);circularString.addCircularArc(10.0, 0.0, 20.0);// 调用Value函数计算圆弧上的点double Distance = 15.0; // 假设给定一个长度OGRPoint resultPoint;circularString.Value(Distance, &resultPoint);// 打印计算得到的点坐标std::cout << "Point on circular arc at angle " << angle << ": " << resultPoint.getX() << ", " << resultPoint.getY() << std::endl;

get_Area

virtual double get_Area() const override

获取(闭合)曲线的面积

getGeometryType

virtual OGRwkbGeometryType getGeometryType() const override

获取几何类型

getGeometryName

Virtual const char *getGeometryName() const override

获取几何类型的 WKT 名称

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

segmentize

virtual void segmentize(double dfMaxLength) override

修改几何图形,使其没有比给定距离更长的线段

参数:

dfMaxLength -- 分割后 2 点之间的最大距离

// 创建一个圆弧几何对象OGRPoint point1(0, 0);OGRPoint point2(5, 0);OGRPoint point3(10, 0);OGRCircularString circularString;circularString.addPoint(&point1);circularString.addPoint(&point2);circularString.addPoint(&point3);// 打印原始的圆弧几何对象std::cout << "原始圆弧几何对象:" << std::endl;char* wkt;circularString.exportToWkt(&wkt);std::cout << wkt << std::endl;CPLFree(wkt);// 使用最大长度为2.0的线段对圆弧几何对象进行分段circularString.segmentize(2.0);// 打印分段后的圆弧几何对象std::cout << "分段后的圆弧几何对象:" << std::endl;circularString.exportToWkt(&wkt);std::cout << wkt << std::endl;CPLFree(wkt)

hasCurveGeometry

virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear = FALSE) const override

如果此几何图形是或具有曲线几何图形,则返回此几何图形

  1. 线性几何类型:

    • OGRPoint:点几何类型,表示一个点。
    • OGRLineString:线几何类型,表示一条折线,由一系列连续的线段组成。
    • OGRRing:环几何类型,是线性几何类型的特殊类型,表示闭合的线。环几何类型可以用于表示简单多边形的外环或内环。
  2. 曲线几何类型:

    • OGRCircularString:圆弧几何类型,表示一个圆弧。
    • OGRCompoundCurve:复合曲线几何类型,由多个线段和圆弧组成的复杂曲线。
    • OGRCurvePolygon:曲线多边形几何类型,表示由曲线组成的多边形。曲线多边形由外环和零个或多个内环组成,这些环可以是线性环或圆弧环。
  1. bLookForNonLinear 参数设置为 FALSE 时,表示只查找线性的子几何对象,不查找曲线类型的子几何对象(包括圆弧、复合曲线等)。
  2. bLookForNonLinear 参数设置为 TRUE 时,表示同时查找曲线类型和线性类型的子几何对象

参数:

bLookForNonLinear -- 将其设置为 TRUE 以检查几何图形是否为 CIRCULARSTRING 或包含 CIRCULARSTRING。

返回: 如果此几何图形是或具有曲线几何图形,则为 TRUE

 OGRPoint point(10.0, 20.0);//检查点是否具有曲线几何(非线性)。if (point.hasCurveGeometry()) {std::cout << "The point contains curve geometry." << std::endl;} else {std::cout << "The point does not contain curve geometry." << std::endl;}

getLinearGeometry

virtual OGRGeometry *getLinearGeometry(double dfMaxAngleStepSizeDegrees = 0, const char *const *papszOptions = nullptr) const override

返回此几何图形的非曲线版本,可能是近似值

参数:

  • dfMaxAngleStepSizeDegrees -- 沿弧的最大步长(以度为单位),使用默认设置为零。

  • papszOptions -- 选项作为以 null 结尾的字符串列表。

返回:  新的几何图形

OGRPoint p1(0, 0);
OGRPoint p2(1, 1);
OGRPoint p3(2, 0);OGRCircularString cs;
cs.addPoint(&p1);
cs.addPoint(&p2);
cs.addPoint(&p3);// 转换为线性几何对象
OGRGeometry* linearGeom = cs.getLinearGeometry();

在上面的例子中,一开始设置的点在 OGRCircularString 中表示一个圆弧段,可以用中心点、起始点、终止点和半径等信息来表示。但是当将 OGRCircularString 对象转换为线性几何对象时,圆弧段将被拆分成一组连续的直线段,这些直线段近似地组成了原始圆弧的形状。

相关文章:

GDAL C++ API 学习之路 OGRGeometry 圆弧类 OGRCircularString

OGRCircularString Class <ogrsf_frmts.h> OGRCircularString 类是 OGR 几何库中的一个类&#xff0c;用于表示圆弧字符串&#xff08;circular string&#xff09;类型的几何图形。圆弧字符串是由一系列圆弧段组成的几何图形&#xff0c;每个圆弧段由三个点定义…...

机器学习:异常检测

问题定义 anomaly&#xff0c;outlier&#xff0c; novelty&#xff0c; exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据&#xff0c;而异常的数据的范围非常广的话&#xff08;无法穷举&#xff09;&#xff0c;二分类这些不好做。另外就…...

flask中的蓝图

flask中的蓝图 在 Flask 中&#xff0c;蓝图&#xff08;Blueprint&#xff09;是一种组织路由和服务的方法&#xff0c;它允许你在应用中更灵活地组织代码。蓝图可以大致理解为应用或者应用中的一部分&#xff0c;可以在蓝图中定义路由、错误处理程序以及静态文件等。然后可以…...

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

Java版知识付费-轻松拥有知识付费平台 多种直播形式&#xff0c;全面满足直播场景需求 公开课、小班课、独立直播间等类型&#xff0c;满足讲师个性化直播场景需求&#xff1b;低延迟、双向视频&#xff0c;亲密互动&#xff0c;无论是互动、答疑&#xff0c;还是打赏、带货、…...

uniapp 瀑布流 (APP+H5+微信小程序)

WaterfallsFlow.vue <template><view class"wf-page" :class"props?.paddingC ? paddingC : "><!-- left --><view><view id"left" ref"left" v-if"leftList.length"><viewv-for…...

医疗小程序:提升服务质量与效率的智能平台

在医疗行业&#xff0c;公司小程序成为提高服务质量、优化管理流程的重要工具。通过医疗小程序&#xff0c;可以方便医疗机构进行信息传播、企业展示等作用&#xff0c;医疗机构也可以医疗小程序提供更便捷的预约服务&#xff0c;优化患者体验。 医疗小程序的好处 提升服务质量…...

ComPDFKit 转档SDK OCR表格识别功能

我们非常高兴地宣布&#xff0c;适用于 Windows、iOS、Android 和服务器的 ComPDFKit 转档SDK 1.8.0 现已发布&#xff01;在该版本中&#xff0c;OCR 功能支持了表格识别&#xff0c;优化了OCR文字识别率。PDF to HTML 优化了html 文件结构&#xff0c;使转换后的 HTML 文件容…...

华为OD机考--阿里巴巴黄金箱

题目内容 贫如洗的樵夫阿里巴巴在去砍柴的路上&#xff0c;无意中发现了强盗集团的藏宝地&#xff0c;藏宝地有编号从0~N的箱子每个箱子上面贴有一个数字箱子中可能有一个黄金宝箱。 黄金宝箱满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字之和; 一个箱子左边部分…...

mybatis-config.xml-配置文件详解

文章目录 mybatis-config.xml-配置文件详解说明文档地址:配置文件属性解析properties 属性应用实例 settings 全局参数定义应用实例 typeAliases 别名处理器举例说明 typeHandlers 类型处理器environments 环境environment 属性应用实例 mappers配置 mybatis-config.xml-配置文…...

【雕爷学编程】MicroPython动手做(18)——掌控板之声光传感器

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…...

Ribbon源码

学了feign源码之后感觉&#xff0c;这部分还是按运行流程分块学合适。核心组件什么的&#xff0c;当专业术语学妥了。序章&#xff1a;认识真正のRibbon 但只用认识一点点 之前我们学习Ribbon的简单使用时&#xff0c;都是集成了Eureka-client或者Feign等组件&#xff0c;甚至在…...

Linux下在终端输入密码隐藏方法

Linux系统中&#xff0c;如何将在终端输入密码时将密码隐藏&#xff1f; 最近做简单的登录界面时&#xff0c;不做任何操作的话&#xff0c;在终端输入密码的同时也会显示输入的密码是什么&#xff0c;这样对于隐蔽性和使用都有不好的体验。那么我就想到将密码用字符*隐藏起来…...

【ARM 常见汇编指令学习 3 -- ARM64 无符号位域提取指令 UBFX】

文章目录 ARM64 无符号位域提取指令 上篇文章&#xff1a;ARM 常见汇编指令学习 2 – 存储指令 STP 与 LDP 下篇文章&#xff1a;ARM 常见汇编指令学习 4 – ARM64 比较指令 cbnz 与 b.ne 区别 ARM64 无符号位域提取指令 在代码中如何监控寄存器的某1bit&#xff0c; 或者某几…...

求分享如何批量压缩视频的容量的方法

视频内存过大&#xff0c;不但特别占内存&#xff0c;而且还会使手机电脑出现卡顿的现象&#xff0c;除此之外&#xff0c;如果我们想发送这些视频文件可能还会因为内存太大无法发送。因此&#xff0c;我们可以批量地压缩视频文件的内存大小&#xff0c;今天小编要来分享一招&a…...

ChatGPT 是如何工作的:从预训练到 RLHF

欢迎来到人工智能的未来&#xff1a;生成式人工智能&#xff01;您是否想知道机器如何学习理解人类语言并做出相应的反应&#xff1f;让我们来看看ChatGPT ——OpenAI 开发的革命性语言模型。凭借其突破性的 GPT-3.5 架构&#xff0c;ChatGPT 席卷了世界&#xff0c;改变了我们…...

KafKa脚本操作

所有操作位于/usr/local/kafka_2.12-3.5.1/bin。 rootubuntu2203:/usr/local/kafka_2.12-3.5.1/bin# pwd /usr/local/kafka_2.12-3.5.1/bin rootubuntu2203:/usr/local/kafka_2.12-3.5.1/bin# ls connect-distributed.sh kafka-delegation-tokens.sh kafka-mirror-mak…...

【自动化运维】playbook剧本

目录 一、Ansible 的脚本 playbook 剧本1.1playbooks的组成 二、剧本编写实验2.1定义、引用变量2.2使用远程主机sudo切换用户2.3whenn条件判断2.4迭代 三、Templates 模板四、Tags模板 一、Ansible 的脚本 playbook 剧本 1.1playbooks的组成 &#xff08;1&#xff09;Tasks&…...

java中双引号和单引号的区别

起因 刷题的时候&#xff0c;有判断是否相同的情况&#xff0c;然后我发现单引号和双引号在上的表现不一样&#xff0c;所以记录一下。 解释 在Java中&#xff0c;双引号&#xff08;" "&#xff09;和单引号&#xff08;’ &#xff09;在使用上有很重要的区别&a…...

jenkinsfile指定jenkins流水线的构建号

背景 升级Jenkins过程中不小心导致流水线配置文件job目录丢失, 重新配置流水线后所有流水线构建号码都从1开始构建了, 然而我们的产品关联了jenkins构建号,重新从1 构建会导致各种问题. 解决方案 在Jenkinsfile文件中指定流水线的构建号为一个不存在的数字, 这样就不会冲突了…...

微信小程序:实现提示窗确定,取消执行不同操作(消息提示确认取消)showModal

效果 代码 wx.showModal({title: 提示,content: 是否确认退出,success: function (res) {if (res.confirm) {console.log(用户点击确定)} else if (res.cancel) {console.log(用户点击取消)}}})...

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现

深度学习论文: Q-YOLO: Efficient Inference for Real-time Object Detection及其PyTorch实现 Q-YOLO: Efficient Inference for Real-time Object Detection PDF: https://arxiv.org/pdf/2307.04816.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代…...

解读随机森林的决策树:揭示模型背后的奥秘

一、引言 随机森林[1]是一种强大的机器学习算法&#xff0c;在许多领域都取得了显著的成功。它由多个决策树组成&#xff0c;而决策树则是构建随机森林的基本组件之一。通过深入解析决策树&#xff0c;我们可以更好地理解随机森林模型的工作原理和内在机制。 决策树是一种树状结…...

OceanMind海睿思获评中国信通院“内审数字化产品评测”卓越级(最高级)!

2023年7月27日&#xff0c;由中国内部审计协会、中国通信标准化协会指导&#xff0c;中国信息通信研究院主办的第二届数字化审计论坛在北京成功召开。 大会聚焦内部审计数字化领域先进实践、研究成果、行业发展举措&#xff0c;重磅发布了多项内部审计数字化领域的最新研究和实…...

TPlink云路由器界面端口映射设置方法?快解析内网穿透能实现吗?

有很多网友在问&#xff1a;TPlink路由器端口映射怎么设置&#xff1f;因为不懂端口映射的原理&#xff0c;所以无从下手&#xff0c;下面小编就给大家分享TPlink云路由器界面端口映射设置方法&#xff0c;帮助大家快速入门TP路由器端口映射设置方法。 1.登录路由器管理界面&a…...

css3的filter图片滤镜使用

业务介绍 默认&#xff1a;第一个图标为选中状态&#xff0c;其他三个图标事未选中状态 样式&#xff1a;选中状态是深蓝&#xff0c;未选中状体是浅蓝 交互&#xff1a;鼠标放上去选中&#xff0c;其他未选中&#xff0c;鼠标离开时候保持当前选中状态 实现&#xff1a;目前…...

❤️创意网页:打造炫酷网页 - 旋转彩虹背景中的星星动画

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…...

react常用知识点

React是一个用于构建用户界面的JavaScript库。以下是React常用的知识点&#xff1a; 组件&#xff1a;React将用户界面分解成小而独立的组件&#xff0c;每个组件都有自己的状态和属性&#xff0c;并且可以通过组合这些组件来构建复杂的用户界面。 // 函数组件示例 function We…...

iOS开发-QLPreviewController与UIDocumentInteractionController显示文档

iOS开发-QLPreviewController与UIDocumentInteractionController显示文档 在应用中,我们有时想预览文件, 可以使用QLPreviewController与UIDocumentInteractionController 一、QLPreviewController与UIDocumentInteractionController QLPreviewController是一个 UIViewContr…...

八、用 ChatGPT 帮助排查生产事故

目录 一、实验介绍 二、背景 三、故障排查概述 3.1 生产环境故障排查涉及的角色...

WPF实战学习笔记25-首页汇总

注意&#xff1a;本实现与视频不一致。本实现中单独做了汇总接口&#xff0c;而视频中则合并到国todo接口当中了。 添加汇总webapi接口添加汇总数据客户端接口总数据客户端接口对接3首页数据模型 添加数据汇总字段类 新建文件MyToDo.Share.Models.SummaryDto using System;…...

安康市滴滴公司电话/快速排名优化推广价格

游戏服务器高可用负载均衡 内容精选换一换共享型负载均衡不支持&#xff0c;必须是华为云后端服务器。点击了解更多后端服务器介绍相关内容。独享型负载均衡实例支持混合负载均衡的能力&#xff0c;后端服务器组不仅支持添加云上VPC内的服务器&#xff0c;还支持添加其他VPC、其…...

先做网站还是做APP/上海短视频推广

单片机中级项目13丨矩阵按键数码管移位显示 /******************************************************************************* * 实 验 名 : 动态显示数码管实验 * 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1 * 实验效果 : 按矩阵键盘分别显示在数码…...

整合营销传播方案/阿亮seo技术

Atitit. 单点登录sso 的解决方案 总结 1. 系统应用场景and SSO模式选型 2 2. 系统应用的原则与要求 2 2.1. 开发快速简单::绝大部分系统来说&#xff0c;开发快速简单为主 2 2.2. 支持token交换&#xff0c;这样有利于集成先有的系统模块无需大改动&#xff0c;仅仅需要改动登…...

服务器被攻击怎么办/浙江seo

在sql中当表的某列存在索引时&#xff0c;及时在hint中指定parallel参数&#xff0c;其执行计划都不会采用parallel的方式&#xff0c;仍采用索引访问数据的方式&#xff0c;推测是由于访问索引的过程只能由单进程串行的方式来做。实验过程如下&#xff1a; [oracleyhdb Script…...

广东品牌网站建设多少钱/看广告赚钱的平台

如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号“ 圆圆的算法笔记”,更多算法笔记和世间万物的学习记录~ 1. 背景 CTR预估是搜索、推荐、广告等领域基础且重要的任务,主要目标是预测用户在当前上下文环境下对某一个候选(视频、商品、广告等) 发生点击的概率。C…...

区块链开发工程师招聘/360优化大师官方网站

最近我们接到一个培训&#xff0c;需要为客户录制授课视频。我的同事录制了授课视频&#xff0c;但是客户觉得声音太小。如果重新录制&#xff0c;那么需要消耗的时间太多&#xff0c;我就使用了一个免费的软件帮助视频文件提高音量。首先下载”格式工厂“这个视频转换软件。建…...