- URL:
- https://<root>/Utilities/Geometry/GeometryServer/project
- Methods:
GET
- Version Introduced:
- 9.3
Description
The project
operation is performed on a geometry service resource. This operation projects an array of input geometries from the input spatial reference to the output spatial reference.
This operation calls simplify
on the input geometries
.
You can provide arguments to the project
operation as query parameters defined in the following parameters table:
Request parameters
Parameter | Details |
---|---|
|
The response format. The default response format is html. Values: html | json |
| The array of geometries to be projected. The structure of each geometry in the array is the same as the structure of the JSON geometry objects returned by ArcGIS REST API. JSON structures: Syntax:
The Example:
Simple Syntax for point geometries: When using points, in addition to the JSON structures, you can specify the geometries with a simpler comma-separated syntax. Syntax: URL based: For a large set of geometries, you can specify a URL to the input geometries stored in a JSON structure in a file on a public server. The expected format of the file’s contents will be exactly the same as that expected if the geometries were directly embedded in the request. Syntax: |
| The well-known ID (WKID) of the spatial reference or a spatial reference JSON object for the input |
| The WKID of the spatial reference or a spatial reference JSON object for the returned geometries. For a list of valid WKID values, see Using spatial references. |
| (Optional) The WKID or a JSON object specifying the geographic transformation (also known as datum transformation) to be applied to the projected geometries. Note that a transformation is needed only if the output spatial reference contains a different geographic coordinate system than the input spatial reference or if projecting between different vertical systems. If a vertical transformation is used, it may require data files that are not installed by default. A separate setup is included to install ArcGIS Coordinate Systems Data, which contains the data files required for the GEOCON transformation method and vertical transformation files for the United States (VERTCON and GEOID12B) and the world (EGM2008). Additionally, it contains updated NTv2 files for the UK and Switzerland plus a new grid file for the Crossrail project in the greater London area. For a list of valid geographic transformation ID values and well-known text strings, see Using spatial references. The easiest way to specify a geographic transformation is by using its WKID; however, a transformation can also be specified as a JSON object. This form is especially useful if creating a custom transformation or a composite transformation. A single transformation can be specified in JSON format by using the field name The following examples all specify the same geographic transformation: WKID
WKID in JSON format:
Well-known text (WKT):
If a custom transformation is specified using a JSON object, it should use the well-known text string representation. See Example 2 below. A composite transformation chains two geographic transformations together. For example, suppose you want to project your data from NAD83 to WGS84. You can first apply a transformation from NAD83 to NAD27, and then apply a transformation from NAD27 to WGS84. Again, when specifying the individual transformation, you can use its WKID, name, or WKT. The following example of a composite transformation from NAD83 to WGS84 uses the WKID field to specify the individual transformation. The JSON object begins with the field name
If using a vertical transformation, it must be specified as a composite transformation even if it contains only one transformation. The following example is a composite transformation with one vertical transformation. The JSON object begins with the field name
To find the best transformation based on your data and the input and output spatial references, use FindTransformations. Invalid transformation JSON object:
If |
| (Optional) A Boolean value indicating whether or not to transform forward. The forward or reverse direction of the transformation is implied in the name of the transformation. If Values: |
| (Optional) Specifies whether to project vertical coordinates. The default value is Values: |
Example usage
Example 1
This example projects two polygons from WGS84 (4326) to Web Mercator (3857). A geographic transformation is not specified since the Web Mercator projection has as its underlying geographic coordinate system WGS84, which is the input coordinate system.
https://<machineName>.<domain>.com/arcgis/rest/services/Utilities/Geometry/GeometryServer/project?inSR=4326&outSR=3857&geometries={"geometryType":"esriGeometryPolygon","geometries":[{"rings":[[[-117,34],[-116,34],[-117,33],[-117,34]],[[-115,44],[-114,43],[-115,43],[-115,44]]]},{"rings":[[[32,17],[31,17],[30,17],[30,16],[32,17]]]}]}&f=pjson
Example 2
This example projects the same two polygons as in Example 1 from WGS84 (4326) to North American Equidistant Conic (102010). The output spatial reference has as its underlying geographic coordinate system NAD83 (4269), so a geographic transformation is specified. The transformation is customized, so the well-known text representation is used.
https://<machineName>.<domain>.com/arcgis/rest/services/Utilities/Geometry/GeometryServer/project?inSR=4326&outSR=102010&geometries={"geometryType":"esriGeometryPolygon","geometries":[{"rings":[[[-117,34],[-116,34],[-117,33],[-117,34]],[[-115,44],[-114,43],[-115,43],[-115,44]]]},{"rings":[[[32,17],[31,17],[30,17],[30,16],[32,17]]]}]}&transformation={"wkt":"GEOGTRAN[\"WGS_1984_(ITRF00)_To_NAD_1983_CORS96\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],GEOGCS[\"GCS_NAD_1983_CORS96\",DATUM[\"D_NAD_1983_CORS96\",SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],METHOD[\"Coordinate_Frame\"],PARAMETER[\"X_Axis_Translation\",0.0],PARAMETER[\"Y_Axis_Translation\",0.0],PARAMETER[\"Z_Axis_Translation\",0.0],PARAMETER[\"X_Axis_Rotation\",0.05],PARAMETER[\"Y_Axis_Rotation\",0.05],PARAMETER[\"Z_Axis_Rotation\",0.05],PARAMETER[\"Scale_Difference\",0.00062]]"}&transformForward=true&f=pjson
JSON Response syntax
{
"geometries" : [ <geometry1>, <geometry1>, ..., <geometryN> ]
}
JSON Response example
{
"geometries": [
{
"rings": [
[
[
-12913060.932019727,
4028802.0261344141
],
[
-13024380.422813002,
3895303.9633939015
],
[
-13024380.422813002,
4028802.0261344141
],
[
-12913060.932019727,
4028802.0261344141
]
],
[
[
-12690421.95043318,
5311971.8469454823
],
[
-12801741.441226454,
5311971.8469454823
],
[
-12801741.441226454,
5465442.1833227612
],
[
-12690421.95043318,
5311971.8469454823
]
]
]
},
{
"rings": [
[
[
3562223.7053847606,
1920825.040377473
],
[
3339584.7237982131,
1804722.7662572993
],
[
3339584.7237982131,
1920825.040377473
],
[
3450904.2145914868,
1920825.040377473
],
[
3562223.7053847606,
1920825.040377473
]
]
]
}
]
}
Example 3
This example projects a point that has z-values from WGS84 (4236) with vertical coordinate system EGM2008 (3855) to NAD83_PA11 (6322) with vertical coordinate system NAD83_PA11 (115762). The output vertical coordinate system is different from the input vertical coordinate system, so a horizontal or vertical transformation is specified. The horizontal or vertical transformation was found by using Find
and copying the result.
https://<machineName>.<domain>.com/arcgis/rest/services/Utilities/Geometry/GeometryServer/project?inSR={"wkid": 4326, "vcsWkid": 3855}&outSR={"wkid": 6322, "vcsWkid": 115762}&geometries={"geometryType": "esriGeometryPoint", "geometries": [{"x": 165, "y": -20, "z": -1},{"x": 174, "y": -11, "z": 20}]}&transformation={"hvTransforms": [{"wkid": 110019, "latestWkid": 110019, "transformForward": False, "name": "WGS_1984_To_WGS_1984_EGM2008_2.5x2.5_Height"}, {"wkid": 108365, "latestWkid": 108365, "transformForward": True, "name": "WGS_1984_(ITRF08)_To_NAD_1983_PA11"}]}&transformForward=true&vertical=true&f=html
The output looks like the following:
{
"geometries": [
{
"x": 165.00001795095102,
"y": -20.00001475789611,
"z": 57.0102771227982
},
{
"x": 174.00001812880745,
"y": -11.000011492727607,
"z": 65.60194478425002
}
]
}