ArcGIS Pro SDK (九)几何 7 多点
文章目录
1 构造多点 - 从映射点的枚举
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));
MultipointBuilderEx builderEx = new MultipointBuilderEx(list, AttributeFlags.None);
Multipoint multiPoint = builderEx.ToGeometry() as Multipoint;
int ptCount = builderEx.PointCount;
multiPoint = MultipointBuilderEx.CreateMultipoint(list);
multiPoint = MultipointBuilderEx.CreateMultipoint(list, AttributeFlags.None);
multiPoint = MultipointBuilderEx.CreateMultipoint(list, AttributeFlags.HasM);
ptCount = 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.HasZ = true;
builder.HasM = true;
builder.HasID = true;
builder.SetEmpty();
List<Coordinate2D> inCoords = new List<Coordinate2D>() { new Coordinate2D(1, 2), new Coordinate2D(3, 4), new Coordinate2D(5, 6) };
builder.Coordinate2Ds = inCoords;
double[] zs = new double[] { 1, 2, 1, 2, 1, 2 };
builder.Zs = zs;
double[] ms = new double[] { 0, 1 };
builder.Ms = ms;
MapPoint mapPoint = builder.GetPoint(2);
builder.Ms.Add(2);
mapPoint = builder.GetPoint(2);
int[] ids = new int[] { -1, -2, -3 };
builder.IDs = ids;
MapPoint point = MapPointBuilderEx.CreateMapPoint(-300, 400, 4);
builder.SetPoint(2, point);
builder.RemovePoints(1, 3);
3 修改多点的点
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();