Click or drag to resize

PolygonBuilder Class

Builder for creating Polygon instances.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.GeometryGeometryBuilderPolygon
    Esri.ArcGISRuntime.GeometryMultipartBuilderPolygon
      Esri.ArcGISRuntime.GeometryPolygonBuilder

Namespace:  Esri.ArcGISRuntime.Geometry
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.9.0
Syntax
public sealed class PolygonBuilder : MultipartBuilder<Polygon>

The PolygonBuilder type exposes the following members.

Constructors
  NameDescription
Public methodPolygonBuilder(Polygon)
Initializes a new instance of the PolygonBuilder class from a polygon.
Public methodCode examplePolygonBuilder(SpatialReference)
Initializes a new instance of the PolygonBuilder class.
Public methodPolygonBuilder(IEnumerableMapPoint, SpatialReference)
Initializes a new instance of the PolygonBuilder class.
Public methodPolygonBuilder(IEnumerableIEnumerableMapPoint, SpatialReference)
Initializes a new instance of the PolygonBuilder class.
Public methodPolygonBuilder(IEnumerableSegment, SpatialReference)
Initializes a new instance of the PolygonBuilder class.
Public methodPolygonBuilder(IEnumerableIEnumerableSegment, SpatialReference)
Initializes a new instance of the PolygonBuilder class.
Top
Properties
  NameDescription
Public propertyCode exampleExtent
Gets the extent for the geometry in the builder.
(Inherited from GeometryBuilderT.)
Public propertyHasM
Gets a value indicating if the geometry builder has M.
(Inherited from GeometryBuilderT.)
Public propertyHasZ
Gets a value indicating if the geometry builder has Z.
(Inherited from GeometryBuilderT.)
Public propertyIsEmpty
Check if a geometry builder is empty or not.
(Inherited from GeometryBuilderT.)
Public propertyIsSketchValid
Gets a flag indicating if this builder contains sufficient points to show a valid graphical sketch.
(Inherited from GeometryBuilderT.)
Public propertyParts
Gets or sets the points for the multipoint.
(Inherited from MultipartBuilderT.)
Public propertySpatialReference
Gets the SpatialReference for the geometry being built.
(Inherited from GeometryBuilderT.)
Top
Methods
  NameDescription
Public methodAddPart(IEnumerableMapPoint)
Adds a new part consisting of the given points to this polygon builder.
(Inherited from MultipartBuilderT.)
Public methodAddParts
Adds new parts to this polygon builder.
(Inherited from MultipartBuilderT.)
Public methodCode exampleAddPoint(MapPoint)
Adds a new point to the end of the last part of the multipart.
(Inherited from MultipartBuilderT.)
Public methodAddPoint(Double, Double)
Adds a new point to the end of the last part of the multipart.
(Inherited from MultipartBuilderT.)
Public methodAddPoint(Double, Double, Double)
Adds a new point to the end of the last part of the multipart.
(Inherited from MultipartBuilderT.)
Public methodAddPoints
Adds a list of new points to the end of the last part of the multipart.
(Inherited from MultipartBuilderT.)
Public methodReplaceGeometry
Replace the geometry in the builder to the new geometry.
(Inherited from MultipartBuilderT.)
Public methodCode exampleToGeometry
Returns a Geometry instance representing the current state of the builder
(Inherited from GeometryBuilderT.)
Public methodToPolyline
Creates a polyline with the values in the polygon builder.
Top
Remarks

Use the PolygonBuilder Class to to create and/or modify a Polygon shape. The builder is best suited for editing workflows where the user may be adding, inserting or removing parts of a Polygon geometry interactively. Polygons are based upon the parent Geometry Class. The Geometry Class is immutable which means that you can not change its shape once it is created. Hence the PolygonBuilder provides the way to make changes when working with a Polygon. Use the ToGeometry Method to get the Polygon geometry from the builder.

A polygon is a closed shape defined by one or more parts Parts. Each part in a polygon is a connected sequence of Segment instances that start and end at the same point (a closed ring). If a polygon has more than one ring, the rings may be separate from one another or they may nest inside one another, but they should not overlap.

Note: Interior rings to make donut polygons should be counter-clockwise in direction to be topology correct. If there is ever a doubt about the topological correctness of a polygon, call the Simplify(Geometry) method to correct any issues. This is especially true if you pass a polygon to ArcGIS Server for a geoprocessing task to avoid any ArcGIS Server errors being thrown.

Examples

WPF

Example Name: IdentifyGraphics

Display an alert message when a graphic is clicked.

Code example screen shot.

C#
// Copyright 2016 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an 
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific 
// language governing permissions and limitations under the License.

using System;
using Esri.ArcGISRuntime.Data;
using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Symbology;
using Esri.ArcGISRuntime.UI;
using Esri.ArcGISRuntime.UI.Controls;
using System.Windows;
using System.Drawing;

namespace ArcGISRuntime.WPF.Samples.IdentifyGraphics
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Identify graphics",
        category: "GraphicsOverlay",
        description: "Display an alert message when a graphic is clicked.",
        instructions: "Select a graphic to identify it. You will see an alert message displayed.",
        tags: new[] { "graphics", "identify" })]
    public partial class IdentifyGraphics
    {
        // Graphics overlay to host graphics
        private GraphicsOverlay _polygonOverlay;

        public IdentifyGraphics()
        {
            InitializeComponent();

            // Create the UI, setup the control references and execute initialization 
            Initialize();
        }

        private void Initialize()
        {
            // Create a map with 'Imagery with Labels' basemap and an initial location
            Map myMap = new Map(Basemap.CreateTopographic());

            // Create graphics overlay with graphics
            CreateOverlay();

            // Hook into tapped event
            MyMapView.GeoViewTapped += OnMapViewTapped;

            // Assign the map to the MapView
            MyMapView.Map = myMap;
        }

        private void CreateOverlay()
        {
            // Create polygon builder and add polygon corners into it
            PolygonBuilder builder = new PolygonBuilder(SpatialReferences.WebMercator);
            builder.AddPoint(new MapPoint(-20e5, 20e5));
            builder.AddPoint(new MapPoint(20e5, 20e5));
            builder.AddPoint(new MapPoint(20e5, -20e5));
            builder.AddPoint(new MapPoint(-20e5, -20e5));

            // Get geometry from the builder
            Polygon polygonGeometry = builder.ToGeometry();

            // Create symbol for the polygon
            SimpleFillSymbol polygonSymbol = new SimpleFillSymbol(
                SimpleFillSymbolStyle.Solid,
                Color.Yellow,
                null);

            // Create new graphic
            Graphic polygonGraphic = new Graphic(polygonGeometry, polygonSymbol);

            // Create overlay to where graphics are shown
            _polygonOverlay = new GraphicsOverlay();
            _polygonOverlay.Graphics.Add(polygonGraphic);

            // Add created overlay to the MapView
            MyMapView.GraphicsOverlays.Add(_polygonOverlay);
        }

        private async void OnMapViewTapped(object sender, GeoViewInputEventArgs e)
        {
            double tolerance = 10d; // Use larger tolerance for touch
            int maximumResults = 1; // Only return one graphic  
            bool onlyReturnPopups = false; // Return more than popups

            try
            {
                // Use the following method to identify graphics in a specific graphics overlay
                IdentifyGraphicsOverlayResult identifyResults = await MyMapView.IdentifyGraphicsOverlayAsync(
                    _polygonOverlay,
                    e.Position,
                    tolerance,
                    onlyReturnPopups,
                    maximumResults);

                // Check if we got results
                if (identifyResults.Graphics.Count > 0)
                {
                    //  Display to the user the identify worked.
                    MessageBox.Show("Tapped on graphic", "");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Error");
            }
        }
    }
}
XAML
<UserControl x:Class="ArcGISRuntime.WPF.Samples.IdentifyGraphics.IdentifyGraphics"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013">
    <Grid>
        <esri:MapView x:Name="MyMapView" />
        <Border Style="{StaticResource BorderStyle}">
            <TextBlock Text="Tap to identify the graphic."
                       FontWeight="SemiBold" HorizontalAlignment="Center" />
        </Border>
    </Grid>
</UserControl>
See Also
Additional Examples
Hyperlink to ExampleDescription
IdentifyGraphicsDisplay an alert message when a graphic is clicked.