ArcGIS Runtime SDK for iOS
100.15
|
A multipart shape used to represent an area.
Polygon geometries represent the shape and location of areas, for example, a country, island, or a lake. A polygon can be used as the geometry of features and graphics, or as input or output of tasks or geoprocessing operations, such as the output of a drive-time analysis or an AGSGeometryEngine::bufferWithGeometry:distance:
operation.
Each part of a multipart polygon is a series of connected AGSSegment
objects forming a closed ring. Each part must not cross any other part, but may lie completely inside or outside another part. For example, a polygon representing the state of Hawaii would comprise eight disjoint parts, one representing each island. A polygon representing the country of South Africa, which completely surrounds the enclave of Lesotho, would comprise two parts, one contained inside the other.
Like polyline, the polygon class is an AGSMultipart
, which provides members for iterating the segments and points of each part in a polygon. Unlike parts in a polyline, however, each part of a polygon defines a closed area, so the end point of the last segment in the part is always in the same location as the start point of the first segment, forming a closed boundary.
When defining a polygon part, there is no need to explicitly close it by repeating the start point as the last point. Polygons parts are always interpreted as enclosed areas by ArcGIS Runtime.
Interior rings to make donut polygons should be counter-clockwise in direction to have the correct topology.
If there is ever a doubt about the topological correctness of a polygon, call the AGSGeometryEngine::simplifyWithGeometry:
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 or to rectify polygons that may be self-intersecting, have rings which are partially contained in each other, or contain incorrect ring orientations.
Polygons are based upon the parent AGSGeometry
class. The geometry object is immutable which means that you can not change its shape once it is created. If you need to create a new polygon or modify it once it has been created, use the AGSPolygonBuilder
class.
A polygon can be used as the geometry of an AGSFeature
or AGSGraphic
. To obtain the geometry on these objects, use AGSGeoElement::geometry
.
AGSPolygonBuilder
to construct or modify polygons programmatically. AGSSketchEditor
to construct or modify geometries interactively by sketching on a map. AGSGeometryEngine
to perform operations on geometries. Instance Methods | |
(BOOL) | - isEqualToGeometry: |
(BOOL) | - isEqualToGeometry: |
(BOOL) | - isEqualToGeometry:tolerance: |
(AGSPolygonBuilder *) | - toBuilder |
(nullable id) | - toJSON: |
(AGSPolyline *) | - toPolyline |
Class Methods | |
(nullable id< AGSJSONSerializable >) | + fromJSON:error: |
(instancetype) | + polygonWithPoints: |
Properties | |
AGSGeometryDimension | dimension |
BOOL | empty |
AGSEnvelope * | extent |
AGSGeometryType | geometryType |
BOOL | hasCurves |
BOOL | hasM |
BOOL | hasZ |
AGSPartCollection * | parts |
AGSSpatialReference * | spatialReference |
NSDictionary< NSString *, id > * | unknownJSON |
NSDictionary< NSString *, id > * | unsupportedJSON |
|
staticrequiredinherited |
Initializes and returns an object from its JSON representation.
JSONObject | NSDictionary or NSArray containing the JSON. |
error | encountered during the operation, if any. |
- (BOOL) isEqualToGeometry: | (AGSGeometry *) | other |
Compares whether two geometries are equal.
other | The other geometry object to compare this geometry object to. |
YES
if the geometries are equal. - (BOOL) isEqualToGeometry: | (AGSPolygon *) | other |
Compares whether two polygon geometries are equal.
other | polygon to compare this polygon to |
- (BOOL) isEqualToGeometry: | (AGSGeometry *) | other | |
tolerance: | (double) | tolerance | |
Compares two geometry objects for equality to within some tolerance.
other | The other geometry object to compare this geometry object to. |
tolerance | The tolerance. |
YES
if the geometries are equal within the given tolerance, otherwise NO
. + (instancetype) polygonWithPoints: | (NSArray< AGSPoint * > *) | points |
Initializes a polygon.
points | for the geometry to be constructed |
- (AGSPolygonBuilder*) toBuilder |
Returns a builder using a copy of this geometry as a starting off point. The builder can then be modified to produce a new geometry.
Implements AGSGeometry.
|
requiredinherited |
Returns JSON representation for this object.
error | encountered during the operation, if any. |
NSDictionary
or NSArray
containing the JSON. Reimplemented in AGSPortalItem.
- (AGSPolyline*) toPolyline |
|
readnonatomicassigninherited |
The dimension of this geometry object.
AGSGeometryDimension::AGSGeometryDimensionUnknown
if an error occurs.
|
readnonatomicassigninherited |
Indicates whether this geometry has any vertices.
|
readnonatomicstronginherited |
Smallest, rectangular bounding-box that covers the geometry.
|
readnonatomicassigninherited |
The type of this geometry.
|
readnonatomicassigninherited |
YES
if this geometry contains curve segments, NO
otherwise.
The ArcGIS Platform supports polygon and polyline geometries that contain curve segments (where AGSSegment::curve
is YES
, sometimes known as true curves or nonlinear segments). Curves may be present in certain types of data - for example Mobile Map Packages (MMPK) or geometry JSON. When connecting to ArcGIS feature services that support curves (AGSArcGISFeatureServiceInfo::supportsTrueCurve
), ArcGIS Runtime retrieves densified versions of curve feature geometries by default.
If a polygon or polyline geometry contains curve segments, this property is YES
. Prior to v100.12, it was not possible to access curve segments, and only AGSLineSegment
instances would be returned when iterating through the segments in an AGSPolygon
or AGSPolyline
object, irrespective of this property.
From v100.12, you can use curve segments when using an AGSMultipartBuilder
to create or edit polygon and polyline geometries, and also get curve segments when iterating through the segments of existing AGSMultipart
geometries when this property returns YES
. You can also choose to return true curves from feature services by using AGSArcGISRuntimeEnvironment::serviceCurveGeometryMode
.
AGSGeometryBuilder::hasCurves
, AGSPart::hasCurves
, AGSSegment::curve
, AGSCubicBezierSegment
, AGSEllipticArcSegment
|
readnonatomicassigninherited |
Indicates whether this geometry contains m (measure) values.
|
readnonatomicassigninherited |
Indicates whether this geometry contains z coordinate values. Only 3D geometries contain z values.
|
readnonatomicstronginherited |
The parts of this geometry.
Can be iterated through a for-in loop.
|
readnonatomicstronginherited |
The spatial reference associated with the gometry. It specifies the coordinate system for the geometry's x, y, and z coordinate values.
|
readrequirednonatomiccopyinherited |
A dictionary of values that was in the source JSON but was unparsed by API.
NSDictionary
containing the unknown JSON.
|
readnonatomiccopyinherited |
A dictionary of values that are supported by the REST API, but not exposed through the SDK API.
NSDictionary
containing the unsupported JSON.