ArcGIS Pro SDK (九)几何 7 多点

ArcGIS Pro SDK (九)几何 7 多点

文章目录

  • ArcGIS Pro SDK (九)几何 7 多点
    • 1 构造多点 - 从映射点的枚举
    • 2 构造多点 - 使用 MultipointBuilderEx
    • 3 修改多点的点
    • 4 从多点检索点、2D 坐标、3D 坐标

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

1 构造多点 - 从映射点的枚举

// 使用 builderEx 的便捷方法或者使用 builderEx 构造函数。List<MapPoint> list = new List<MapPoint>();
list.Add(MapPointBuilderEx.CreateMapPoint(1.0, 1.0));
list.Add(MapPointBuilderEx.CreateMapPoint(1.0, 2.0));
list.Add(MapPointBuilderEx.CreateMapPoint(2.0, 2.0));
list.Add(MapPointBuilderEx.CreateMapPoint(2.0, 1.0));// 使用 builderEx 构造函数 - 不需要在 MCT 上运行。
// 使用 AttributeFlags.NoAttributes - 我们在列表中有 2d 点
MultipointBuilderEx builderEx = new MultipointBuilderEx(list, AttributeFlags.None);
Multipoint multiPoint = builderEx.ToGeometry() as Multipoint;
int ptCount = builderEx.PointCount;// builderEx 便捷方法不需要在 MCT 上运行
multiPoint = MultipointBuilderEx.CreateMultipoint(list);
// multiPoint.HasZ, HasM, HasID 将为 false - 属性是根据列表中点的属性状态确定的// 或者具体设置状态
multiPoint = MultipointBuilderEx.CreateMultipoint(list, AttributeFlags.None);
// multiPoint.HasM = falsemultiPoint = MultipointBuilderEx.CreateMultipoint(list, AttributeFlags.HasM);
// multiPoint.HasM = trueptCount = multiPoint.PointCount;

2 构造多点 - 使用 MultipointBuilderEx

Coordinate2D[] coordinate2Ds = new Coordinate2D[] { new Coordinate2D(1, 2), new Coordinate2D(-1, -2) };
SpatialReference sr = SpatialReferences.WGS84;MultipointBuilderEx builder = new MultipointBuilderEx(coordinate2Ds, sr);// builder.PointCount = 2builder.HasZ = true;
// builder.Zs.Count = 2
// builder.Zs[0] = 0
// builder.Zs[1] = 0builder.HasM = true;
// builder.Ms.Count = 2
// builder.Ms[0] = NaN
// builder.Ms[1] = NaNbuilder.HasID = true;
// builder.IDs.Count = 2
// builder.IDs[0] = 0
// builder.IDs[1] = 0// 设置为空
builder.SetEmpty();
// builder.Coords.Count = 0
// builder.Zs.Count = 0
// builder.Ms.Count = 0
// builder.IDs.Count = 0// 重置坐标
List<Coordinate2D> inCoords = new List<Coordinate2D>() { new Coordinate2D(1, 2), new Coordinate2D(3, 4), new Coordinate2D(5, 6) };
builder.Coordinate2Ds = inCoords;
// builder.Coords.Count = 3
// builder.HasZ = true
// builder.HasM = true
// builder.HasID = truedouble[] zs = new double[] { 1, 2, 1, 2, 1, 2 };
builder.Zs = zs;   
// builder.Zs.Count = 6double[] ms = new double[] { 0, 1 };
builder.Ms = ms;   
// builder.Ms.Count = 2// 坐标现在为   (x, y, z, m, id)
//  (1, 2, 1, 0, 0), (3, 4, 2, 1, 0) (5, 6, 1, NaN, 0)MapPoint mapPoint = builder.GetPoint(2);
// mapPoint.HasZ = true
// mapPoint.HasM = true
// mapPoint.HasID = true
// mapPoint.Z  = 1
// mapPoint.M = NaN
// mapPoint.ID = 0// 添加一个 M 到列表
builder.Ms.Add(2);
// builder.Ms.count = 3// 坐标现在为   (x, y, z, m, id)
//  (1, 2, 1, 0, 0), (3, 4, 2, 1, 0) (5, 6, 1, 2, 0)// 现在再次获取第二个点;它现在将有一个 M 值
mapPoint = builder.GetPoint(2);
// mapPoint.M = 2int[] ids = new int[] { -1, -2, -3 };
// 分配 ID 值
builder.IDs = ids;// 坐标现在为   (x, y, z, m, id)
//  (1, 2, 1, 0, -1), (3, 4, 2, 1, -2) (5, 6, 1, 2, -3)// 创建一个新点
MapPoint point = MapPointBuilderEx.CreateMapPoint(-300, 400, 4);
builder.SetPoint(2, point);// 坐标现在为   (x, y, z, m, id)
//  (1, 2, 1, 0, -1), (3, 4, 2, 1, -2) (-300, 400, 4, NaN, 0)builder.RemovePoints(1, 3);
// builder.PointCount = 1

3 修改多点的点

// 假设一个多点是由 4 个点构成的
// 修改后的多点将移除第一个点并移动最后一个点// 使用 builderEx 构造函数 = 不需要在 MCT 上运行。
MultipointBuilderEx builderEx = new MultipointBuilderEx(multipoint);
// 移除第一个点
builderEx.RemovePoint(0);
// 修改最后一个点的坐标
var ptEx = builderEx.GetPoint(builderEx.PointCount - 1);
builderEx.RemovePoint(builderEx.PointCount - 1);var newPtEx = MapPointBuilderEx.CreateMapPoint(ptEx.X + 1.0, ptEx.Y + 2.0);
builderEx.AddPoint(newPtEx);
Multipoint modifiedMultiPointEx = builderEx.ToGeometry() as Multipoint;

4 从多点检索点、2D 坐标、3D 坐标

ReadOnlyPointCollection points = multipoint.Points;
IReadOnlyList<Coordinate2D> coords2d = multipoint.Copy2DCoordinatesToList();
IReadOnlyList<Coordinate3D> coords3d = multipoint.Copy3DCoordinatesToList();

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

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

相关文章

Golang | Leetcode Golang题解之第263题丑数

题目&#xff1a; 题解&#xff1a; var factors []int{2, 3, 5}func isUgly(n int) bool {if n < 0 {return false}for _, f : range factors {for n%f 0 {n / f}}return n 1 }

Linux云计算 |【第一阶段】SERVICES-DAY4

主要内容&#xff1a; DHCP概述、PXE批量装机、配置PXE引导、Kickstart自动应答、Cobbler装机平台 一、DHCP服务概述及原理 DHCP动态主机配置协议&#xff08;Dynamic Host Configuration Protocol&#xff09;&#xff0c;由IETF&#xff08;Internet网络工程师任务小组&…

Ruby教程

Ruby是一种动态的、面向对象的、解释型的脚本语言&#xff0c;以其简洁和易读性而闻名。Ruby的设计哲学强调程序员的生产力和代码的可读性&#xff0c;同时也融合了功能性和面向对象编程的特性。 以下是一个基础的Ruby教程&#xff0c;涵盖了一些基本概念和语法&#xff1a; …

IMU提升相机清晰度

近期&#xff0c;一项来自北京理工大学和北京师范大学的团队公布了一项创新性的研究成果&#xff0c;他们将惯性测量单元&#xff08;IMU&#xff09;和图像处理算法相结合&#xff0c;显著提升了非均匀相机抖动下图像去模糊的准确性。 研究团队利用IMU捕捉相机的运动数据&…

通过 EMR Serverless Spark 提交 PySpark 流任务

在大数据快速发展的时代&#xff0c;流式处理技术对于实时数据分析至关重要。EMR Serverless Spark提供了一个强大而可扩展的平台&#xff0c;它不仅简化了实时数据处理流程&#xff0c;还免去了服务器管理的烦恼&#xff0c;提升了效率。本文将指导您使用EMR Serverless Spark…

巧用Vue3 composition api的计算属性实现扁平化tree连线

本示例节选自vue3最新开源组件实战教程大纲&#xff08;持续更新中&#xff09;的tree组件开发部分。将进一步把基于Vue3 composition api的computed计算属性特性应用到组件开发实战中&#xff0c;继续以最佳实践的方式呈现给大家。 下面我们要实现的是扁平化的dom结构所呈现的…

我去,怎么http全变https了

项目场景&#xff1a; 在公司做的一个某地可视化项目。 部署采用的是前后端分离部署&#xff0c;图片等静态资源请求一台minio服务器。 项目平台用的是http 图片资源的服务器用的是https 问题描述 在以https请求图片资源时&#xff0c;图片请求成功报200。 【现象1】: 继图…

IDEA性能优化方法解决卡顿

文章目录 前言一、可以采取以下措施&#xff1a;二、VM Options的参数解释1. 内存设置2. 性能调优3. GC&#xff08;垃圾回收&#xff09;调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤&#xff1a; 总结 前言 我们在使用 IntelliJ IDEA的时候有时候会觉得卡顿&#x…

苹果电脑pdf合并软件 苹果电脑合并pdf 苹果电脑pdf怎么合并

在数字化办公日益普及的今天&#xff0c;pdf文件因其跨平台兼容性强、格式稳定等特点&#xff0c;已经成为工作、学习和生活中不可或缺的文件格式。然而&#xff0c;我们常常面临一个问题&#xff1a;如何将多个pdf文件合并为一个&#xff1f;这不仅有助于文件的整理和管理&…

Go解析JSON字符串到map或结构体

Go解析JSON字符串到map或结构体 解析JSON字符串到Go的map解析JSON字符串到Go的结构体 解析JSON字符串到Go的map package main import ( "encoding/json" "fmt" "log" ) func main() { // 假设这是你要解析的JSON字符串 jsonStr : {&qu…

阿里云服务器 篇三:提交搜索引擎收录

文章目录 系列文章推荐:为网站注册域名判断网站是否已被搜索引擎收录主动提交搜索引擎收录未查询到收录结果时,根据提示进行提交网站提交网站时一般需要登录账号主动提交网站可缩短爬虫发现网站链接时间,但不保证一定能够收录所提交的网站百度提交地址360搜索提交地址搜狗提…

最新!CSSCI(2023-2024)期刊目录公布!

【SciencePub学术】据鲁迅美术学院7月16日消息&#xff0c;近日&#xff0c;南京大学中国社会科学研究评价中心公布了中文社会科学引文索引&#xff08;CSSCI&#xff09;&#xff08;2023—2024&#xff09;数据库最新入选目录。 C刊一般指CSSCI来源期刊&#xff0c;即南大核心…

Python的列表操作有哪些

Python的列表操作非常丰富&#xff0c;包括列表的创建、元素的访问、修改、添加、删除、切片、排序等多个方面。以下是具体的列表操作&#xff1a; 一、列表的创建 使用方括号[]直接创建&#xff1a;可以直接在方括号中列出元素&#xff0c;元素之间用逗号分隔。例如&#xf…

Python 合并两个有序数组

Python 合并两个有序数组 正文 正文 题目说明如下&#xff1a; 这里我们直接让 nums1 的后 n 个数等于 nums2 数组&#xff0c;然后对 nums1 数组整体进行排序即可。 class Solution:def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:"…

​数据结构之初始二叉树(3)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 二叉树的基本操作 通过上篇文章的学习&#xff0c;我们简单的了解了二叉树的相关操作。接下来就是有…

uniapp上传功能用uni-file-picker实现

文章目录 html代码功能实现css样式代码 html代码 <uni-file-pickerselect"onFileSelected"cancel"onFilePickerCancel"limit"1"class"weightPage-upload-but"file-mediatype"image"></uni-file-picker><imag…

Java中的JDK、JRE、JVM

JDK&#xff08;Java Development kit&#xff09;&#xff1a;Java开发工具包 JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a;Java虚拟机&#xff0c;真正运行Java程序的地方 核心类库&#xff1a;Java已经写好的东西&#xff0c;可以直接用 开发工具&#xff…

docker 操作

# 停止 Docker 服务 sudo systemctl stop docker # 删除所有容器 sudo docker rm -f $(sudo docker ps -aq) # 删除所有镜像 sudo docker rmi -f $(sudo docker images -aq) # 删除所有卷 sudo rm -rf /var/lib/docker/volumes # 重新创建 Docker 数据目录 sudo mkdir …

Linux 之 grep命令详解

Linux命令详解&#xff1a;深入理解grep命令的强大功能 在日常的Linux操作中&#xff0c;处理和分析文本文件是非常常见的任务。grep命令是一个强大的工具&#xff0c;用于在文件中搜索指定的模式&#xff08;字符串或正则表达式&#xff09;。今天&#xff0c;我们将深入探讨…

【C语言】 作业11 链表+实现函数封装

递归实现链表数据互换&#xff0c;纯不会&#xff0c;明天再说 1、链表实现以下功能 链表&#xff0c;创建链表&#xff0c;申请节点&#xff0c;判空&#xff0c;头插&#xff0c;遍历输出&#xff0c;通过位置查找节点&#xff0c;任意位置插入&#xff0c;头删&#xff0c;…