ArcGIS Pro SDK (九)几何 11 几何包

ArcGIS Pro SDK (九)几何 11 几何包

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

1 构造几何包

MapPoint point = MapPointBuilderEx.CreateMapPoint(1, 2, SpatialReferences.WebMercator);

List<Coordinate2D> coords2D = new List<Coordinate2D>()
{
  new Coordinate2D(0, 0),
  new Coordinate2D(0, 1),
  new Coordinate2D(1, 1),
  new Coordinate2D(1, 0)
};

Multipoint multipoint = MultipointBuilderEx.CreateMultipoint(coords2D, SpatialReferences.WGS84);
Polyline polyline = PolylineBuilderEx.CreatePolyline(coords2D, SpatialReferences.WebMercator);

GeometryBagBuilderEx builder = new GeometryBagBuilderEx(SpatialReferences.WGS84);

GeometryBag emptyBag = builder.ToGeometry();
// emptyBag.IsEmpty = true 空几何包

builder.AddGeometry(point);
// builder.GeometryCount = 1 几何数量为 1

GeometryBag geometryBag = builder.ToGeometry();
// geometryBag.PartCount = 1 部分数量为 1
// geometryBag.PointCount = 1 点数量为 1
// geometryBag.IsEmpty = false 几何包不为空

IReadOnlyList<Geometry> geometries = geometryBag.Geometries;
// geometries.Count = 1 几何数量为 1
// geometries[0] 是一个 MapPoint,空间参考为 WGS84

bool isEqual = geometryBag.IsEqual(emptyBag);   // isEqual = false 不相等

builder.InsertGeometry(0, multipoint);
geometryBag = builder.ToGeometry();
// geometryBag.PartCount = 2 部分数量为 2

geometries = geometryBag.Geometries;
// geometries.Count = 2 几何数量为 2
// geometries[0] 是 Multipoint
// geometries[1] 是 MapPoint

builder.AddGeometry(polyline);
builder.RemoveGeometry(1);
geometryBag = builder.ToGeometry();
// geometryBag.PartCount = 2 部分数量为 2

geometries = geometryBag.Geometries;
// geometries.Count = 2 几何数量为 2
// geometries[0] 是 Multipoint
// geometries[1] 是 Polyline          

2 构造几何包 - 从几何枚举

// 使用 builder 的便捷方法或使用 builder 构造函数。

MapPoint point = MapPointBuilderEx.CreateMapPoint(10, 20);
List<Coordinate2D> coords = new List<Coordinate2D>() { new Coordinate2D(50, 60), new Coordinate2D(-120, -70), new Coordinate2D(40, 60) };
Multipoint multipoint = MultipointBuilderEx.CreateMultipoint(coords, SpatialReferences.WebMercator);
Polyline polyline = PolylineBuilderEx.CreatePolyline(coords);

string json = "{\"rings\":[[[0,0],[0,1],[1,1],[1,0],[0,0]],[[3,0],[3,1],[4,1],[4,0],[3,0]]]}";
Polygon polygon = PolygonBuilderEx.FromJson(json);

var geometries = new List<Geometry>() { point, multipoint, polyline, polygon };

// Builder 的便捷方法不需要在 MCT 上运行。
// 在 2.x 版本中 - GeometryBag bag = GeometryBagBuilder.CreateGeometryBag(geometries, SpatialReferences.WGS84);
var bag = GeometryBagBuilderEx.CreateGeometryBag(geometries, SpatialReferences.WGS84);

// 在 2.x 版本中 - using (var builder = new GeometryBagBuilder(geometries, SpatialReferences.WGS84)) 
var builder = new GeometryBagBuilderEx(geometries, SpatialReferences.WGS84);
// 使用生成器执行操作
bag = builder.ToGeometry();

3 构造几何包 - 来自 JSON、Xml

const string jsonString = "{\"geometries\":[{\"x\":1,\"y\":2},{\"rings\":[[[0,0],[0,4],[3,4],[3,0],[0,0]]]}],\"spatialReference\":{\"wkid\":4326,\"latestWkid\":4326}}";
// 在 2.x 版本中 - GeometryBag geometryBag = GeometryBagBuilder.FromJson(jsonString);
var geometryBag = GeometryBagBuilderEx.FromJson(jsonString);

string xml = geometryBag.ToXml();
// 在 2.x 版本中 - GeometryBag xmlString = GeometryBagBuilder.FromXML(xml);
var xmlString = GeometryBagBuilderEx.FromXml(xml);

4 构造几何包 - 添加或插入几何枚举

MapPoint point = MapPointBuilderEx.CreateMapPoint(10, 20);
List<Coordinate2D> coords = new List<Coordinate2D>() { new Coordinate2D(50, 60), new Coordinate2D(-120, -70), new Coordinate2D(40, 60) };
Multipoint multipoint = MultipointBuilderEx.CreateMultipoint(coords, SpatialReferences.WebMercator);
Polyline polyline = PolylineBuilderEx.CreatePolyline(coords);

string json = "{\"rings\":[[[0,0],[0,1],[1,1],[1,0],[0,0]],[[3,0],[3,1],[4,1],[4,0],[3,0]]]}";
Polygon polygon = PolygonBuilderEx.FromJson(json);

var geometries = new List<Geometry>() { point, multipoint, polyline, polygon };

// 在 2.x 版本中 - using (var builder = new GeometryBagBuilder(SpatialReferences.WGS84))
var builder = new GeometryBagBuilderEx(SpatialReferences.WGS84);
builder.AddGeometries(geometries);

GeometryBag geomBag = builder.ToGeometry();
// geomBag.PartCount == 4    (point, multipoint, polyline, polygon)

geometries = new List<Geometry>() { point, polyline };
builder.InsertGeometries(1, geometries);
// builder.GeometryCount == 6
geomBag = builder.ToGeometry();
// geomBag.PartCount == 6    (point, point, polyline, multipoint, polyline, polygon)

相关推荐

  1. ArcGIS Pro SDK (几何 11 几何

    2024-07-20 05:14:01       16 阅读
  2. ArcGIS Pro SDK (几何 10

    2024-07-20 05:14:01       16 阅读
  3. ArcGIS Pro SDK (几何 12 多面体

    2024-07-20 05:14:01       13 阅读
  4. ArcGIS Pro SDK (几何 2 坐标

    2024-07-20 05:14:01       19 阅读
  5. ArcGIS Pro SDK (几何 3 点

    2024-07-20 05:14:01       18 阅读
  6. ArcGIS Pro SDK (几何 4 折线

    2024-07-20 05:14:01       18 阅读
  7. ArcGIS Pro SDK (几何 5 多边形

    2024-07-20 05:14:01       16 阅读
  8. ArcGIS Pro SDK (几何 8 线段

    2024-07-20 05:14:01       14 阅读

最近更新

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

    2024-07-20 05:14:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 05:14:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 05:14:01       45 阅读
  4. Python语言-面向对象

    2024-07-20 05:14:01       55 阅读

热门阅读

  1. vue3前端开发-小兔鲜项目-一级页面banner图渲染

    2024-07-20 05:14:01       17 阅读
  2. day04.03.python中的for循环

    2024-07-20 05:14:01       17 阅读
  3. Apple Vision Pro 开发资源大全

    2024-07-20 05:14:01       15 阅读
  4. mysql 浮点数类型

    2024-07-20 05:14:01       16 阅读
  5. stack

    2024-07-20 05:14:01       17 阅读
  6. DGPU共享内存的问题

    2024-07-20 05:14:01       18 阅读
  7. 阿里云服务器 篇三:提交搜索引擎收录

    2024-07-20 05:14:01       19 阅读
  8. python 打包工具 nuitka 使用笔记

    2024-07-20 05:14:01       17 阅读
  9. 【XSS】

    【XSS】

    2024-07-20 05:14:01      19 阅读
  10. PyTorch张量运算函数

    2024-07-20 05:14:01       20 阅读