Represents a geometry service resource exposed by the ArcGIS REST API. It is used to perform various operations on geometries such as project, simplify, buffer, and relationships.
It is recommended that you create a geometry service for use within your applications. View the About the geometry service help topic in the Server Resource Center for details. Esri hosts a geometry service on sampleserver6.arcgisonline.com to support samples published in the Resource Center. However, we do not guarantee that the service will be available 24/7.
Many of the functions in GeometryService are available for use client-side using GeometryEngine. See GeometryEngine for more details.
Constructors
new GeometryService(properties)
properties Object See the properties for a list of all the properties that may be passed into the constructor. |
Property Overview
Name | Type | Summary | |
---|---|---|---|
String | The name of the class. more details | more details | |
Object | The options to be used for data requests. more details | more details | |
String | The ArcGIS Server REST service URL of a GeometryService. more details | more details |
Property Details
declaredClassStringreadonly
The name of the class. The declared class name is formatted as
esri.folder.className
.requestOptionsObject
The options to be used for data requests. These options can also be controlled through the
requestOptions
method parameter.urlString
The ArcGIS Server REST service URL of a GeometryService. Esri hosts a geometry service on sampleserver6.arcgisonline.com for development and testing purposes.
Method Overview
Name | Return Type | Summary | |
---|---|---|---|
Promise | Computes the area and length for the input polygons. more details | more details | |
Promise | The Auto Complete operation is performed on a geometry service resource. more details | more details | |
Promise | Creates buffer polygons at a specified distance around the given geometries. more details | more details | |
Promise | The convexHull operation is performed on a geometry service resource. more details | more details | |
Promise | The cut operation is performed on a geometry service resource. more details | more details | |
Promise | The densify operation is performed on a geometry service resource. more details | more details | |
Promise | The difference operation is performed on a geometry service resource. more details | more details | |
Promise | Measures the planar or geodesic distance between geometries. more details | more details | |
Promise | Converts an array of well-known strings into xy-coordinates based on the conversion type and spatial reference supplied by the user. more details | more details | |
Promise | Generalizes the input geometries using the Douglas-Peucker algorithm. more details | more details | |
Promise | The intersect operation is performed on a geometry service resource. more details | more details | |
Promise | Calculates an interior point for each polygon specified. more details | more details | |
Promise | Gets the lengths for a Geometry when the geometry type is Polyline. more details | more details | |
Promise | Constructs the offset of the input geometries. more details | more details | |
Promise | Projects a set of geometries to a new spatial reference. more details | more details | |
Promise | Computes the set of pairs of geometries from the input geometry arrays that belong to the specified relation. more details | more details | |
Promise | The reshape operation is performed on a geometry service resource. more details | more details | |
Promise | Alters the given geometries to make their definitions topologically legal with respect to their geometry type. more details | more details | |
Promise | Converts an array of XY-coordinates into well-known strings based on the conversion type and spatial reference supplied by the user. more details | more details | |
Promise | Trims or extends the input polylines using the user specified guide polyline. more details | more details | |
Promise | The union operation is performed on a geometry service resource. more details | more details |
Method Details
areasAndLengths(areasAndLengthsParameters, requestOptions){Promise}
Computes the area and length for the input polygons.
Parameters:areasAndLengthsParameters AreasAndLengthsParametersSpecify the input polygons and optionally the linear and area units.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an object with the following specification: { areas: <Number[]>, lengths: <Number[]> }
Example:geometryService.simplify([polygon]).then(function(simplifiedGeometries){ var areasAndLengthParams = new AreasAndLengthsParameters({ areaUnit: "square-kilometers", lengthUnit: "kilometers", polygons: [simplifiedGeometries] }); geometryService.areasAndLengths(areasAndLengthParams).then(function(results){ console.log("area: ", results.areas[0]); console.log("length: ", results.lengths[0]); }); });
autoComplete(polygons, polylines, requestOptions){Promise}
The Auto Complete operation is performed on a geometry service resource. The AutoComplete operation simplifies the process of constructing new polygons that are adjacent to other polygons. It constructs polygons that fill in the gaps between existing polygons and a set of polylines.
Parameters:polygons Polygon[]The array of polygons that will provide boundaries for new polygons.
polylines Polyline[]An array of polylines that will provide the remaining boundaries for new polygons.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of Polygon geometries containing polygons with the gaps filled with a set of polylines. buffer(bufferParameters, requestOptions){Promise}
Creates buffer polygons at a specified distance around the given geometries.
Parameters:bufferParameters BufferParametersSpecifies the input geometries, buffer distances, and other options.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise Returns an array of Polygon geometries representing the buffered areas of the input. - See also:
Example:var webMerPoint = webMercatorUtils.geographicToWebMercator(point); params.distances = [560]; params.unit = "kilometers"; params.geodesic = true; params.bufferSpatialReference = new SpatialReference({wkid: 3857}); params.outSpatialReference = view2d.spatialReference; params.geometries = [webMerPoint]; geometryService.buffer(params).then(function(results){ bufferLayer.add(new Graphic({ geometry: results[0] })); });
convexHull(geometries, requestOptions){Promise}
The convexHull operation is performed on a geometry service resource. It returns the convex hull of the input geometry. The input geometry can be a point, multipoint, polyline or polygon. The hull is typically a polygon but can also be a polyline or point in degenerate cases.
Parameters:geometries Geometry[]The geometries whose convex hull is to be created.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns a Geometry representing the convex hull of the input. Example:var geoms = pointLayer.graphics.map(function(item, i){ return webMercatorUtils.geographicToWebMercator(item.geometry); }); geometryService.convexHull(geoms.toArray()).then(function(result){ convexLayer.add(new Graphic({ geometry: result })); },function(error){ console.log("error occured", error) });
cut(geometries, cutter, requestOptions){Promise}
The cut operation is performed on a geometry service resource. This operation splits the input polyline or polygon where it crosses a cutting polyline.
Parameters:geometries Geometry[]The polylines or polygons to be cut.
cutter PolylineThe polyline that will be used to divide the target into pieces where it crosses the target.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an object with the following specification: { cutIndexes: <Number[]>, geometries: <Geometry[]> }
densify(densifyParameters, requestOptions){Promise}
The densify operation is performed on a geometry service resource. This operation densifies geometries by plotting points between existing vertices.
Parameters:densifyParameters DensifyParametersThe DensifyParameters objects contains
geometries
,geodesic
,lengthUnit
, andmaxSegmentLength
properties.optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of geometries defining the denisfied input features. Example:var params = new DensifyParameters(); params.geodesic = true; params.lengthUnit = "meters"; params.maxSegmentLength = 30; params.geometries = [polygon]; geometryService.densify(params).then(function(results){ layer.add(new Graphic({ geometry: results[0] })); },function(error){ console.log("error occured", error) });
difference(geometries, geometry, requestOptions){Promise}
The difference operation is performed on a geometry service resource. This operation constructs the set-theoretic difference between an array of geometries and another geometry.
Parameters:geometries Geometry[]An array of points, multipoints, polylines or polygons.
geometry GeometryA single geometry of any type, with a dimension equal to or greater than the items in geometries.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of geometries defining the difference of the input features. distance(params, requestOptions){Promise}
Measures the planar or geodesic distance between geometries.
Parameters:params DistanceParametersSets the input geometries to measure, distance units, and other parameters.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns a number representing the distance between the input geometries. fromGeoCoordinateString(params, requestOptions){Promise}
Converts an array of well-known strings into xy-coordinates based on the conversion type and spatial reference supplied by the user. Only available with ArcGIS Server 10.3 or above.
Parameters:params ObjectSee the object specifications table below for the structure of the
params
object.Specification:strings String[]An array of formatted strings as specified by
conversionType
. Example:["01N AA 66021 00000" , "11S NT 00000 62155" , "31U BT 94071 65288"]
sr SpatialReference | StringThe spatial reference or well-known ID to convert the input string coordinates to.
conversionType StringThe converstion type of the input strings. The default value is
mrgs
.Possible Values: mrgs | usng | utm | geo-ref | gars | dms | ddm | dd
optionalconversionMode StringConversion options for mrgs, utm and gars conversion types. See the ArcGIS REST API documentation for valid values and their descriptions.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of XY-coordinate pairs. Example:params = { conversionType: "geo-ref", sr: "4326", strings: ["ZGQA5999999900000000","EJCE3864000012728040","NKBH1196052000273924" ] }; geometryService.fromGeoCoordinateString(params).then(function(results){ console.log("results", results); }, function(error){ console.log(error); });
generalize(params, requestOptions){Promise}
Generalizes the input geometries using the Douglas-Peucker algorithm.
Parameters:params GeneralizeParametersAn array of geometries to generalize and a maximum deviation. Optionally set the deviation units.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of geometries defining the generalized geometries of the input. intersect(geometries, intersector, requestOptions){Promise}
The intersect operation is performed on a geometry service resource. This operation constructs the set-theoretic intersection between an array of geometries and another geometry.
Parameters:geometries Geometry[]An array of points, multipoints, polylines, or polygons.
intersector GeometryA single geometry of any type, of dimension equal to or greater than the dimension of the items in
geometries
.optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of geometries defining the intersection of the input features. labelPoints(polygons, requestOptions){Promise}
Calculates an interior point for each polygon specified. These interior points can be used by clients for labeling the polygons.
Parameters:polygons Polygon[]The polygon graphics to process.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of Point geometries defining the interior points of the input polygons that may be used for labeling. Example:if (geometries[0].rings.length > 0) { geometryService.labelPoints(geometries).then(function(labelPoints) { var graphics = labelPoints.map(function(labelPoint, i){ var textSymbol = new TextSymbol({ color: "white", haloColor: "black", haloSize: "1px", text: "X: " + number.format(labelPoint.x) + ", Y: " + number.format(labelPoint.y), xoffset: 3, yoffset: 3, font: { // autocast as esri/symbols/Font size: 12, family: "sans-serif", weight: "bolder" } }); var labelPointGraphic = new Graphic({ geometry: labelPoint, symbol: textSymbol }); return labelPointGraphic; }); // add the labels to the map view.graphics.addMany(graphics); }); }
lengths(params, requestOptions){Promise}
- Parameters:params LengthsParameters
Specify the polylines and optionally the length unit and the geodesic length option.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an object containing a lengths
property, which is an array of numbers, each representing the length of an input line. See object specification below:{ lengths: <Number[]> }
offset(params, requestOptions){Promise}
Constructs the offset of the input geometries. If the offsetDistance is positive the constructed offset will be on the right side of the geometry. Left side offsets are constructed with negative values.
Parameters:params OffsetParametersSet the geometries to offset, distance, and units.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of geometries offset at the specified distance from the input. project(params, requestOptions){Promise}
Projects a set of geometries to a new spatial reference.
Parameters:params ProjectParametersThe input projection parameters.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of projected geometries. Example:var geomSer = new GeometryService( ... ); var params = new ProjectParameters(); params.geometries = [point]; params.outSR = outSR; params.transformation = transformation; geomSer.project(params).then( ... );
relation(params, requestOptions){Promise}
Computes the set of pairs of geometries from the input geometry arrays that belong to the specified relation. Both arrays are assumed to be in the same spatial reference. The relations are evaluated in 2D. Z-coordinates are not used. Geometry types cannot be mixed within an array.
Parameters:params RelationParametersThe set of parameters required to perform the comparison.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of Polygon geometries that meet the relation. Example:var geometryService = new GeometryService( ... ); var relationParams = new RelationParameters(); relationParams.geometries1 = geometries[0]; relationParams.geometries2 = geometries[1]; relationParams.relation = "within"; geometryService.relation(relationParams).then( ... );
reshape(targetGeometry, reshaper, requestOptions){Promise}
The reshape operation is performed on a geometry service resource. It reshapes a Polyline or a part of a Polygon using a reshaping line.
Parameters:targetGeometry GeometryThe Polyline or Polygon to be reshaped.
reshaper GeometryThe single-part polyline that performs the reshaping.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns the Geometry defining the reshaped input feature. simplify(geometries, requestOptions){Promise}
Alters the given geometries to make their definitions topologically legal with respect to their geometry type.
Parameters:geometries Geometry[]The geometries to simplify.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of the simplified geometries. Example:geometryService.simplify([polygonGraphic.geometry]).then( ... );
toGeoCoordinateString(params, requestOptions){Promise}
Converts an array of XY-coordinates into well-known strings based on the conversion type and spatial reference supplied by the user. Only available with ArcGIS Server 10.3 or above.
Parameters:params ObjectSee the object specifications table below for the structure of the
params
object.Specification:sr SpatialReference | StringThe spatial reference (or WKID of the spatial reference) of the XY-coordinates to be converted.
coordinates Number[][]An array of XY-coordinates (in JSON format) to be converted.
conversionType StringThe conversion type of the input strings.
Possible values: mgrs | usng | utm | geo-ref | gars | dms | ddm | dd
optionalconversionMode StringConversion options for mgrs and utm conversion types. See the ArcGIS REST API documentation for valid coversion modes and their descriptions.
optionalnumOfDigits NumberThe number of digits to output for each of the numerical portions in the string. The default value depends of
conversionType
. See the ArcGIS REST API documentation for default values.optionalrounding BooleanIf
true
, then numeric portions of the string are rounded to the nearest whole magnitude as specified bynumOfDigits
. Otherwise, numeric portions of the string are truncated. The rounding parameter applies only to conversion typesmgrs
,usng
andgeo-ref
. The default value istrue
.optionaladdSpaces BooleanIf
true
, then spaces are added between components of the string. TheaddSpaces
parameter applies only to conversion typesmgrs
,usng
andutm
. The default value formgrs
isfalse
, while the default value for bothusng
andutm
istrue
.optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of well-known strings. Example:var geomSer = new GeometryService( ... ); var params = {}; params.sr = "4326"; params.coordinates = [ [180,0] , [-117,34] , [0,52] ]; params.conversionType = "mgrs"; params.conversionMode = "mgrsNewWith180InZone01"; params.numOfDigits = 8; geomSer.toGeoCoordinateString(params).then(function(response){ // When resolved, these strings are stored in response object // response.strings[0] = "01N AA 66021443 00000000" // response.strings[1] = "11S NT 00000000 62155978" // response.strings[2] = "31U BT 94071081 65288255" });
trimExtend(params, requestOptions){Promise}
Trims or extends the input polylines using the user specified guide polyline. When trimming features, the portion to the left of the cutting line is preserved in the output and the rest is discarded. If the input polyline is not cut or extended then an empty polyline is added to the output array.
Parameters:params TrimExtendParametersInput parameters for the
trimExtend
operation.optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns an array of the trimmmed or extended geometries. union(geometries, requestOptions){Promise}
The union operation is performed on a geometry service resource. This operation constructs the set-theoretic union of the geometries in the input array. All inputs must be of the same type.
Parameters:geometries Geometry[]An array of the geometries to be unioned.
optionalrequestOptions ObjectAdditional options to be used for the data request (will override requestOptions defined during construction).
Returns:Type Description Promise When resolved, returns a Geometry representing the union of the input freatures.