ArcGIS Pro SDK (九)几何 6 包络

ArcGIS Pro SDK (九)几何 6 包络

文章目录

  • ArcGIS Pro SDK (九)几何 6 包络
    • 1 构造包络
    • 2 构造包络 - 从 JSON 字符串
    • 3 合并两个包络
    • 4 与两个包络相交
    • 5 展开包络
    • 6 更新包络的坐标

环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0

1 构造包络

// 使用 builderEx 的便捷方法或者使用 builderEx 构造函数。MapPoint minPt = MapPointBuilderEx.CreateMapPoint(1.0, 1.0);
MapPoint maxPt = MapPointBuilderEx.CreateMapPoint(2.0, 2.0);Envelope envelope = EnvelopeBuilderEx.CreateEnvelope(minPt, maxPt);EnvelopeBuilderEx builderEx = new EnvelopeBuilderEx(minPt, maxPt);
envelope = builderEx.ToGeometry() as Envelope;

2 构造包络 - 从 JSON 字符串

string jsonString = "{ \"xmin\" : 1, \"ymin\" : 2,\"xmax\":3,\"ymax\":4,\"spatialReference\":{\"wkid\":4326}}";
Envelope envFromJson = EnvelopeBuilderEx.FromJson(jsonString);

3 合并两个包络

// 使用便利构建器
Envelope env1 = EnvelopeBuilderEx.CreateEnvelope(0, 0, 1, 1, SpatialReferences.WGS84);
Envelope env2 = EnvelopeBuilderEx.CreateEnvelope(0.5, 0.5, 1.5, 1.5, SpatialReferences.WGS84);Envelope env3 = env1.Union(env2);double area = env3.Area;
double depth = env3.Depth;
double height = env3.Height;
double width = env3.Width;
double len = env3.Length;MapPoint centerPt = env3.Center;
Coordinate2D coord = env3.CenterCoordinate;bool isEmpty = env3.IsEmpty;
int pointCount = env3.PointCount;// 坐标
//env3.XMin, env3.XMax, env3.YMin, env3.YMax
//env3.ZMin, env3.ZMax, env3.MMin, env3.MMaxbool isEqual = env1.IsEqual(env2);    // false// 或者使用 builderEx 构造函数,不需要在 MCT 上运行。
EnvelopeBuilderEx builderEx = new EnvelopeBuilderEx(0, 0, 1, 1, SpatialReferences.WGS84);
builderEx.Union(env2);      // 更新 builder 为结果depth = builderEx.Depth;
height = builderEx.Height;
width = builderEx.Width;centerPt = builderEx.Center;
coord = builderEx.CenterCoordinate;isEmpty = builderEx.IsEmpty;env3 = builderEx.ToGeometry() as Envelope;

4 与两个包络相交

// 使用便捷的 builder 方法
Envelope env1 = EnvelopeBuilderEx.CreateEnvelope(0, 0, 1, 1, SpatialReferences.WGS84);
Envelope env2 = EnvelopeBuilderEx.CreateEnvelope(0.5, 0.5, 1.5, 1.5, SpatialReferences.WGS84);bool intersects = env1.Intersects(env2); // true
Envelope env3 = env1.Intersection(env2);// 或者使用 builderEx 构造函数 = 不需要在 MCT 上运行。
EnvelopeBuilderEx builderEx = new EnvelopeBuilderEx(0, 0, 1, 1, SpatialReferences.WGS84);
intersects = builderEx.Intersects(env2);
builderEx.Intersection(env2);   // 注意这会将 builder 设置为相交的结果
env3 = builderEx.ToGeometry() as Envelope;

5 展开包络

// 使用 builderEx 的便捷方法或者使用 builderEx 构造函数。// 便捷方法不需要在 MCT 上运行。
Envelope envelope = EnvelopeBuilderEx.CreateEnvelope(100.0, 100.0, 500.0, 500.0);// 缩小封套大小 50%
Envelope result = envelope.Expand(0.5, 0.5, true);// builderEx 构造函数不需要在 MCT 上运行。
EnvelopeBuilderEx builderEx = new EnvelopeBuilderEx(100.0, 100.0, 500.0, 500.0);
builderEx.Expand(0.5, 0.5, true);
envelope = builderEx.ToGeometry() as Envelope;

6 更新包络的坐标

Coordinate2D minCoord = new Coordinate2D(1, 3);
Coordinate2D maxCoord = new Coordinate2D(2, 4);Coordinate2D c1 = new Coordinate2D(0, 5);
Coordinate2D c2 = new Coordinate2D(1, 3);// 使用 EnvelopeBuilderEx。这个构造函数不需要在 MCT 上运行。EnvelopeBuilderEx builderEx = new EnvelopeBuilderEx(minCoord, maxCoord);
// builderEx.XMin, YMin, Zmin, MMin  = 1, 3, 0, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 2, 4, 0, double.Nan// 设置 XMin。如果 XMin > XMax,则同时更改 XMin 和 XMax
builderEx.XMin = 6;
// builderEx.XMin, YMin, ZMin, MMin  = 6, 3, 0, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 6, 4, 0, double.Nan// 设置 XMax
builderEx.XMax = 8;
// builderEx.XMin, YMin, ZMin, MMin  = 6, 3, 0, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 8, 4, 0, double.Nan// 设置 XMax。如果 XMax < XMin,则同时更改 XMin 和 XMax
builderEx.XMax = 3;
// builderEx.XMin, YMin, ZMin, MMin  = 3, 3, 0, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 3, 4, 0, double.Nan// 设置 YMin
builderEx.YMin = 2;
// builderEx.XMin, YMin, ZMin, MMin  = 3, 2, 0, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 3, 4, 0, double.Nan// 设置 ZMin。如果 ZMin > ZMax,则同时更改 ZMin 和 ZMax
builderEx.ZMin = 3;
// builderEx.XMin, YMin, ZMin, MMin  = 3, 2, 3, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 3, 4, 3, double.Nan// 设置 ZMax。如果 ZMax < ZMin,则同时更改 ZMin 和 ZMax
builderEx.ZMax = -1;
// builderEx.XMin, YMin, ZMin, MMin  = 3, 2, -1, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 3, 4, -1, double.NanbuilderEx.SetZCoords(8, -5);
// builderEx.XMin, YMin, ZMin, MMin  = 3, 2, -5, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 3, 4, 8, double.NanbuilderEx.SetXYCoords(c1, c2);
// builderEx.XMin, YMin, ZMin, MMin  = 0, 3, -5, double.Nan
// builderEx.XMax, YMax, ZMax, MMax = 1, 5, 8, double.NanbuilderEx.HasM = true;
builderEx.SetMCoords(2, 5);var geomEx = builderEx.ToGeometry();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/873435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

加油卡APP系统开发:在线优惠加油,拓展市场

目前&#xff0c;我国汽车行业发展迅速&#xff0c;用车群体逐年扩大&#xff0c;因此&#xff0c;汽车加油市场规模呈现出了快速增长趋势。不过近年来&#xff0c;油价不断上涨&#xff0c;增加了居民的生活成本&#xff0c;为了节省汽车加油的支出&#xff0c;很多人都开始选…

使用idea创建Javaweb项目(步骤)

第一步创建Javaweb项目 File>New>Project 第二步 勾选Web Application >Next 然后就是进行起名&#xff0c;完成。 完成创建项目&#xff0c;检查是否文件齐全 配置tomcat 配置好&#xff0c;就能启动tomcat&#xff0c;显示首页 导入jar包。导入进项目&#xf…

【力扣】最小栈

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 设计一个支持 push…

数仓工具—Hive语法之替换函数和示例

Hive 替换函数和示例 默认情况下,并没有可用的 Hive 替换函数。如果在处理字符串时需要替换特定值,例如垃圾值,字符串操作函数替换是非常需要的。在本文中,我们将检查 Hive 替换函数 的替代方法,以便在需要时使用。 如前所述,Apache Hive 不提供替换函数的支持。但是,…

信息系统是一个社会技术系统

一.管理信息系统定义 (1) 技术视角 信息系统是&#xff1a; ——由若干相互连接的部件组成的&#xff1b; ——对组织中的信息进行收集、处理、储存和传递的系统&#xff1b; ——用以支持组织制定决策和管理控制&#xff1b; ——还可以协助管理者与员工分析问题、可视…

PLC中的高低字节如何理解?

双字&#xff08;Double Word&#xff0c;通常是32位整数&#xff09;的高低字节定义可能会因具体的PLC型号和通信协议而有所不同。通常&#xff0c;双字可以被划分为两个16位字&#xff0c;每个16位字又分为高字节和低字节。 以下是一般定义&#xff1a; 双字&#xff08;32…

【异常解决】Unable to start embedded Tomcat Nacos 启动报错

Unable to start embedded Tomcat Nacos 启动报错解决方案 一、背景描述二、原因分析三、解决方案 一、背景描述 Windows 本地启动 Nacos&#xff08;2.2.0&#xff09; 服务&#xff0c;控制台报错 Unable to start embedded Tomcat。 报错信息&#xff1a;Unable to start …

《JavaScript语言精粹》学习笔记——数组

JavaScript中并没有像数组一样的数据结构。而是提供了一种拥有一些类数组特性的对象。 数组字面量 var numbers[one,two,three,four,izero,seven,eight]//对象字面量 var numbers object{1:"one",2:"two" };numbers继承自Array.prototype&#xff0c;而n…

HarmonyOS Next原生应用开发-从TS到ArkTS的适配规则(六)

一、仅支持一个静态块 规则&#xff1a;arkts-no-multiple-static-blocks 级别&#xff1a;错误 ArkTS不允许类中有多个静态块&#xff0c;如果存在多个静态块语句&#xff0c;请合并到一个静态块中。 TypeScript class C {static s: stringstatic {C.s aa}static {C.s C.s …

nginx负载均衡实例

实现效果 浏览器输入地址http://nginx服务器ip(:80)/edu/a.html&#xff0c;实现负债均衡效果&#xff0c;平均分配到 服务器ip:8080和 服务器ip:8081进程中。 准备工作 准备两个tomcat&#xff0c;一个监听在8080端口&#xff0c;一个监听在8081端口。也可以准备多个tomcat。…

数据结构小测试:排序算法

目录 1、请简述数据结构八大排序算法的思路。 2、常用排序算法手写 冒泡排序&#xff1a; 选择排序&#xff1a; 快速排序&#xff1a; 归并排序&#xff1a; 堆排序&#xff1a; 3、额外再加一个二分查找吧 1、请简述数据结构八大排序算法的思路。 冒泡排序&#xff…

c# DI构造函数注入

构造函数注入&#xff08;Constructor Injection&#xff09;是依赖注入&#xff08;DI&#xff09;的一种形式&#xff0c;是指通过类的构造函数将依赖项&#xff08;通常是其他类或接口的实例&#xff09;传递给类的实例。 这种方式可以让类在实例化时就具备所需的依赖项&am…

Linux——多路复用之select

目录 前言 一、select的认识 二、select的接口 三、select的使用 四、select的优缺点 前言 在前面&#xff0c;我们学习了五种IO模型&#xff0c;对IO有了基本的认识&#xff0c;知道了select效率很高&#xff0c;可以等待多个文件描述符&#xff0c;那他是如何等待的呢&a…

Dubbo 的泛化调用

在分布式系统中&#xff0c;有时我们需要调用一些未知的服务接口&#xff0c;这些接口可能在编译时并不存在&#xff0c;或者由于版本问题而发生变化。为了应对这种情况&#xff0c;Apache Dubbo 提供了泛化调用&#xff08;Generic Invocation&#xff09;功能&#xff0c;使得…

易保全参与起草的两项区块链全国团体标准正式发布

在数字化转型浪潮席卷全球的今天&#xff0c;区块链技术以其去中心化、透明性、不可篡改等独特优势&#xff0c;正逐步成为重塑各行各业信任机制与业务流程的关键力量。 近日&#xff0c;中国通信工业协会正式发布了《区块链服务 基于区块链的去中心化标识符技术要求》与《区块…

python--实验14 并发编程(多线程)

知识点 1 并发编程 1.1程序提速手段 1.2多任务 并发 在一个CPU一段时间内交替去执行任务。在各个任务之间快速地切换&#xff0c;给人的感觉就是多个任务在“同时进行”。 并行 对于多核CPU处理多任务&#xff0c;操作系统会给CPU的每个内核安排一个执行的软件&#xff0c;多…

[论文笔记] CT数据配比方法论——1、Motivation

我正在写这方面的论文,感兴趣的可以和我一起讨论!!!!!! Motivation 1、探测原有模型的配比: 配比 与 ppl, loss, bpw, benchmark等指标 之间的关系。 2、效果稳定的配比:配比 与 模型效果 之间的规律。 Experiments 1、主语言(什么语言作为主语言,几种主语言?…

【笔记-软考】软件架构风格

Author&#xff1a;赵志乾 Date&#xff1a;2024-07-18 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 概念 架构风格是描述某一特定应用领域中系统组织方式的惯用模式&#xff0c;其反映了领域中众多系统所共有的结构和语义特性&#x…

web前端 Vue 框架面试120题(五)

面试题 81 . 请简述Vue更新数组时触发视图更新的方法&#xff1f; 参考回答&#xff1a; push()&#xff1b;pop()&#xff1b;shift()&#xff1b;unshift()&#xff1b;splice()&#xff1b;sort()&#xff1b;reverse()面试题 82 . 简述如何使用Vue-router实现懒加载的方式…

Vue 给表格单元格加省略号和hover提示

基于antd vue的a-popover封装一下即可 <template><a-popoverv-model"visible"trigger"none"><template #content>{{ text }}</template><divclass"ellipsis"mouseenter"onMouseenter"mouseleave"onM…