# Point

class Point : Geometry

A location defined by x and y (and optionally z) coordinates. Point geometries represent discrete locations or entities, such as a geocoded house address, the location of a water meter in a water utility network, or a moving vehicle. Larger geographic entities (such as cities) are often represented as points on small-scale maps. Points can be used as the geometry of features and graphics and are often used to construct more complex geometries. They are also used in a Viewpoint to define the center of the display.

Points store a single set of x,y coordinates that define a location (longitude and latitude, for example), and a SpatialReference. Points can optionally have a z-value (commonly used to describe elevation or altitude) and an m-value (commonly used for measurement relative to the geometry).

For points defined with a geographic spatial reference, the x-coordinate is the longitude (east or west), and the y-coordinate is the latitude (north or south). When geographic coordinates are represented in strings, points are generally written using the form "(latitude, longitude)", where the y-coordinate comes before the x-coordinate. Latitude values south of the equator and longitude values west of the prime meridian are expressed as negative numbers.

Use CoordinateFormatter to convert a latitude and longitude formatted string directly to a Point. The coordinate formatter can also return a latitude and longitude formatted string from an existing Point. Other coordinate notations, such as Military Grid Reference System (MGRS) and United States National Grid (USNG) are also supported.

Points 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. If you need to modify a point once it has been created, use the PointBuilder class instead. The GeometryBuilder.toGeometry() method provides you with the point object.

## Constructors

fun Point(    x: Double,     y: Double,     z: Double,     spatialReference: SpatialReference? = null)

Creates a point with an x, y, z and spatial reference. The minimum z-value is -6,356,752 meters, which is the approximate radius of the earth (the WGS 84 datum semi-minor axis). The maximum z-value is 55,000,000 meters.

fun Point(    x: Double,     y: Double,     spatialReference: SpatialReference? = null)

Creates a point with an x, y and a spatial reference. Creates a point with x, y for the coordinates and a spatial reference.

fun Point(    x: Double,     y: Double,     z: Double? = null,     m: Double? = null,     spatialReference: SpatialReference? = null)

Creates a point with an x, y, z, m and spatial reference. The minimum z-value is -6,356,752 meters, which is the approximate radius of the earth (the WGS 84 datum semi-minor axis). The maximum z-value is 55,000,000 meters.

object Companion

## Functions

open operator override fun equals(other: Any?): Boolean

fun equals(right: Geometry, tolerance: Double): Boolean

Check if two geometries are equal to within some tolerance. This function performs a lightweight comparison of two geometries, such as might be useful when writing test code. It uses the tolerance to compare each of x, y, and any other values the geometries possess (such as z or m) independently in the manner: abs(value1 - value2) <= tolerance. Returns true if the difference of each is within the tolerance and all other properties of the geometries are exactly equal (spatial reference, vertex count, etc.). A single tolerance is used even if the units for the horizontal coordinates and other values differ, e.g horizontal coordinates in degrees and vertical coordinates in meters. This function does not respect modular arithmetic of spatial references which wrap around, so longitudes of -180 and +180 degrees are considered to differ by 360 degrees. Returns false if an error occurs. For topological equality, use relational operators instead of this function. See GeometryEngine.equals(Geometry, Geometry).

open override fun hashCode(): Int
open override fun toJson(): String

Convert an object to JSON string.

## Properties

val dimension: GeometryDimension

The number of dimensions for the geometry. Returns GeometryDimension.Unknown if an error occurs.

val extent: Envelope
val hasCurves: Boolean

True if this geometry contains curve segments; false otherwise. The ArcGIS Platform supports polygon and polyline geometries that contain curve segments (where Segment.getIsCurve() is true, 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[ArcGISFeatureServiceInfo.getSupportsTrueCurve()], ArcGIS Maps API retrieves densified versions of curve feature geometries by default.

val hasM: Boolean

A value indicating if the geometry has M. If an error occurs false is returned. M is a vertex value that is stored with the geometry.

val hasZ: Boolean

A value indicating if the geometry has Z. If an error occurs false is returned. Z typically represent elevations or heights.

val isEmpty: Boolean

Check if a geometry is empty or not. Only check the geometry to see if it is empty. Does not check the spatial reference. Returns true if an error occurs.

val m: Double?

An optional coordinate to define a measure value for the point.

val spatialReference: SpatialReference?
open override val unknownJson: Map<String, Any>

Unknown data from the source JSON. Unknown JSON is a dictionary of values that was in the source JSON but was unparsed by this API.

open override val unsupportedJson: Map<String, Any>

Unsupported data from the source JSON. Unsupported JSON is a dictionary of values that are supported by web maps, but not exposed through this API.