Exception | Description |
---|---|
ArcGIS.Core.CalledOnWrongThreadException | This method or property must be called within the lambda passed to QueuedTask.Run. |
// Builder constructors need to run on the MCT. ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { using (GeometryBagBuilder builder = new GeometryBagBuilder(SpatialReferences.WGS84)) { GeometryBag emptyBag = builder.ToGeometry(); // emptyBag.IsEmpty = true MapPoint point = MapPointBuilder.CreateMapPoint(1, 2, SpatialReferences.WebMercator); builder.AddGeometry(point); // builder.CountGeometries = 1 GeometryBag geometryBag = builder.ToGeometry(); // geometryBag.PartCount = 1 // geometryBag.PointCount = 1 // geometryBag.IsEmpty = false IReadOnlyList<Geometry> geometries = geometryBag.Geometries; // geometries.Count = 1 // geometries[0] is MapPoint with a sr of WGS84 bool isEqual = geometryBag.IsEqual(emptyBag); // isEqual = false List<Coordinate2D> coords2D = new List<Coordinate2D>() { new Coordinate2D(0, 0), new Coordinate2D(0, 1), new Coordinate2D(1, 1), new Coordinate2D(1, 0) }; Multipoint multipoint = MultipointBuilder.CreateMultipoint(coords2D, SpatialReferences.WGS84); builder.InsertGeometry(0, multipoint); geometryBag = builder.ToGeometry(); // geometryBag.PartCount = 2 geometries = geometryBag.Geometries; // geometries.Count = 2 // geometries[0] is Multipoint // geometries[1] is MapPoint Polyline polyline = PolylineBuilder.CreatePolyline(coords2D, SpatialReferences.WebMercator); builder.AddGeometry(polyline); builder.RemoveGeometry(1); geometryBag = builder.ToGeometry(); // geometryBag.PartCount = 2 geometries = geometryBag.Geometries; // geometries.Count = 2 // geometries[0] is Multipoint // geometries[1] is Polyline } });
MapPoint point = MapPointBuilder.CreateMapPoint(10, 20); List<Coordinate2D> coords = new List<Coordinate2D>() { new Coordinate2D(50, 60), new Coordinate2D(-120, -70), new Coordinate2D(40, 60) }; Multipoint multipoint = MultipointBuilder.CreateMultipoint(coords, SpatialReferences.WebMercator); Polyline polyline = PolylineBuilder.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 = PolygonBuilder.FromJson(json); var geometries = new List<Geometry>() { point, multipoint, polyline, polygon }; // Builder constructors need to run on the MCT. ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { using (var builder = new GeometryBagBuilder(SpatialReferences.WGS84)) { // builder.CountGeometries = 0 builder.AddGeometries(geometries); // builder.CountGeometries = 4 GeometryBag geomBag = builder.ToGeometry(); // bag.PartCount = 4 (point, multipoint, polyline, polygon) geometries = new List<Geometry>() { point, polyline }; builder.InsertGeometries(1, geometries); // builder.CountGeometries = 6 geomBag = builder.ToGeometry(); // bag.PartCount = 6 (point, point, polyline, multipoint, polyline, polygon) } });
Target Platforms: Windows 10, Windows 8.1, Windows 7