ArcGIS Pro SDK (九)几何 3 点

ArcGIS Pro SDK (九)几何 3 点

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

1 构造地图点

// 使用生成器便捷方法或使用生成器构造函数。

// 创建一个带M的3D点
MapPoint pt = MapPointBuilderEx.CreateMapPoint(1.0, 2.0, 3.0, 4.0);

// builderEx构造函数不需要在MCT上运行。
MapPointBuilderEx mb = new MapPointBuilderEx(1.0, 2.0, 3.0, 4.0);
// 对生成器做一些操作

MapPoint ptWithM = mb.ToGeometry();

MapPoint clone = ptWithM.Clone() as MapPoint;
MapPoint anotherM = MapPointBuilderEx.CreateMapPoint(ptWithM);

MapPointBuilderEx builderEx = new MapPointBuilderEx(1.0, 2.0, 3.0);
builderEx.HasM = true;
builderEx.M = 4.0;

pt = builderEx.ToGeometry() as MapPoint;

// 或者使用另一种带builderEx构造函数的方法
builderEx = new MapPointBuilderEx(1.0, 2.0, true, 3.0, true, 4.0, false, 0);
pt = builderEx.ToGeometry() as MapPoint;

// 或者使用builderEx便捷方法
pt = MapPointBuilderEx.CreateMapPoint(1.0, 2.0, 3.0, 4.0);

2 地图点生成器属性

// 使用builderEx便捷方法或builderEx构造函数。
// 这些都不需要在MCT上运行。

MapPoint point1 = null;
MapPoint point2 = null;

MapPointBuilderEx mb = new MapPointBuilderEx(1.0, 2.0, 3.0);
bool bhasZ = mb.HasZ;          // hasZ = true
bool bhasM = mb.HasM;          // hasM = false
bool bhasID = mb.HasID;        // hasID = false

// 对生成器做一些操作

point1 = mb.ToGeometry();

// 修改一些生成器属性
mb.X = 11;
mb.Y = 22;
mb.HasZ = false;
mb.HasM = true;
mb.M = 44;
// 创建另一个点
point2 = mb.ToGeometry();

double x = point1.X;                  // x = 1.0
double y = point1.Y;                  // y = 2.0
double z = point1.Z;                  // z = 3.0
double m = point1.M;                  // m = Nan
int ID = point1.ID;                   // ID = 0
bool hasZ = point1.HasZ;              // hasZ = true
bool hasM = point1.HasM;              // hasM = false
bool hasID = point1.HasID;            // hasID = false
bool isEmpty = point1.IsEmpty;        // isEmpty = false

bool isEqual = point1.IsEqual(point2);    // isEqual = false

// builderEx便捷方法
MapPoint point3 = MapPointBuilderEx.CreateMapPoint(point1);
x = point3.X;                   // x = 1.0
y = point3.Y;                   // y = 2.0
z = point3.Z;                   // z = 3.0
m = point3.M;                   // m = Nan
ID = point3.ID;                 // ID = 0
hasZ = point3.HasZ;             // hasZ = true
hasM = point3.HasM;             // hasM = false
hasID = point3.HasID;           // hasID = false

MapPointBuilderEx builderEx = new MapPointBuilderEx(point1);
x = builderEx.X;              // x = 1.0
y = builderEx.Y;              // y = 2.0
z = builderEx.Z;              // z = 3.0
m = builderEx.M;              // m = Nan
ID = builderEx.ID;            // ID = 0
hasZ = builderEx.HasZ;        // hasZ = true
hasM = builderEx.HasM;        // hasM = false
hasID = builderEx.HasID;      // hasID = false
isEmpty = builderEx.IsEmpty;     // isEmpty = false

MapPoint point4 = builderEx.ToGeometry() as MapPoint;

MapPoint point5 = MapPointBuilderEx.CreateMapPoint(point1);
x = point5.X;              // x = 1.0
y = point5.Y;              // y = 2.0
z = point5.Z;              // z = 3.0
m = point5.M;              // m = Nan
ID = point5.ID;            // ID = 0
hasZ = point5.HasZ;        // hasZ = true
hasM = point5.HasM;        // hasM = false
hasID = point5.HasID;      // hasID = false
isEmpty = point5.IsEmpty;     // isEmpty = false

3 地图点的相等性

MapPoint pt1 = MapPointBuilderEx.CreateMapPoint(1, 2, 3, 4, 5);
int ID = pt1.ID;           // ID = 5
bool hasID = pt1.HasID;     // hasID = true

MapPoint pt2 = MapPointBuilderEx.CreateMapPoint(1, 2, 3, 4, 0);
ID = pt2.ID;        // ID = 0
hasID = pt2.HasID;  // hasID = true

MapPoint pt3 = MapPointBuilderEx.CreateMapPoint(1, 2, 3, 4);
ID = pt3.ID;          // ID = 0
hasID = pt3.HasID;    // hasID = false

MapPoint pt4 = MapPointBuilderEx.CreateMapPoint(1, 2, 3, 44);
ID = pt4.ID;          // ID = 0
hasID = pt4.HasID;    // hasID = false
bool hasM = pt4.HasM; // hasM = true

MapPoint pt5 = MapPointBuilderEx.CreateMapPoint(1, 2, 3);
ID = pt5.ID;          // ID = 0
hasID = pt5.HasID;    // hasID = false
hasM = pt5.HasM;      // hasM = false

bool isEqual = pt1.IsEqual(pt2);   // isEqual = false, 不同的ID
isEqual = pt2.IsEqual(pt3);        // isEqual = false, HasID不同
isEqual = pt4.IsEqual

4 缩放至指定点

//创建一个点
var pt = MapPointBuilderEx.CreateMapPoint(x, y, 
               SpatialReferenceBuilder.CreateSpatialReference(4326));
//对其进行缓冲 - 目的是缩放
var poly = GeometryEngine.Instance.Buffer(pt, buffer_size);

//是否需要投影缓冲区多边形?
if (!MapView.Active.Map.SpatialReference.IsEqual(poly.SpatialReference))
{
  //投影多边形
  poly = GeometryEngine.Instance.Project(poly, MapView.Active.Map.SpatialReference);
}

// 必须在MCT上运行。
QueuedTask.Run(() =>
{
  //缩放 - 为动画效果添加延迟
  MapView.Active.ZoomTo(poly, new TimeSpan(0, 0, 0, 3));
});

相关推荐

  1. ArcGIS Pro SDK (几何 3

    2024-07-15 12:46:02       20 阅读
  2. ArcGIS Pro SDK (几何 7 多

    2024-07-15 12:46:02       21 阅读
  3. ArcGIS Pro SDK (几何 11 几何

    2024-07-15 12:46:02       18 阅读
  4. ArcGIS Pro SDK (几何 2 坐标

    2024-07-15 12:46:02       21 阅读
  5. ArcGIS Pro SDK (几何 4 折线

    2024-07-15 12:46:02       19 阅读
  6. ArcGIS Pro SDK (几何 5 多边形

    2024-07-15 12:46:02       20 阅读
  7. ArcGIS Pro SDK (几何 10 弧

    2024-07-15 12:46:02       18 阅读
  8. ArcGIS Pro SDK (几何 8 线段

    2024-07-15 12:46:02       20 阅读
  9. ArcGIS Pro SDK (几何 12 多面体

    2024-07-15 12:46:02       16 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 12:46:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 12:46:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 12:46:02       57 阅读
  4. Python语言-面向对象

    2024-07-15 12:46:02       68 阅读

热门阅读

  1. 服务器主板开发阶段以及测试重点

    2024-07-15 12:46:02       24 阅读
  2. Linux:解决vim打开文件默认为replace模式

    2024-07-15 12:46:02       20 阅读
  3. mysql中的if语句:case when

    2024-07-15 12:46:02       24 阅读
  4. Linux使用systemctl添加自启动程序实现步骤

    2024-07-15 12:46:02       22 阅读
  5. dockerfile配置和yml配置

    2024-07-15 12:46:02       20 阅读
  6. Github 2024-07-14 php开源项目日报 Top10

    2024-07-15 12:46:02       26 阅读
  7. QT5_C++基础

    2024-07-15 12:46:02       27 阅读
  8. 【《流畅的python》3.2-3.3节学习笔记】

    2024-07-15 12:46:02       25 阅读
  9. 科普文:Redis一问一答

    2024-07-15 12:46:02       17 阅读
  10. 加密方式种类有哪些

    2024-07-15 12:46:02       23 阅读
  11. redis高级

    2024-07-15 12:46:02       19 阅读
  12. Kotlin中let、apply、also、with、run的使用与区别

    2024-07-15 12:46:02       23 阅读
  13. MyBatis的原理?

    2024-07-15 12:46:02       22 阅读