Project

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

ParameterDetails

f

The response format. The default response format is html. Values: html | json

geometries

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:

Use dark colors for code blocksCopy
1
2
3
4
{
  "geometryType" : "<esriGeometryPoint | esriGeometryMultipoint | esriGeometryPolyline | esriGeometryPolygon>"
  "geometries" : [ <geometry1>, <geometry1>, ..., <geometryN> ]
}

The geometries parameter is an array of input geometries. All geometries in this array should be of the type defined by geometryType.

Example:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
  "geometryType" : "esriGeometryPolyline",
    "geometries" :
  [
    {
      "paths" :
      [
        [[-117,34],[-116,34],[-117,33]],
        [[-115,44],[-114,43],[-115,43]]
      ]
    },
    {
      "paths" :
      [
        [[32,17],[31,17],[30,17],[30,16]]
      ]
    }
  ]
}

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: geometries=x1, y1, x2, y2, ..., xn, yn Example: geometries=-104.53, 34.74, -63.53, 10.23

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: geometries={ "url" : "<URL to file>" } Example: geometries={ "url" : "http://myserver/mygeometries/afile.txt" }

inSR

The well-known ID (WKID) of the spatial reference or a spatial reference JSON object for the input geometries. For a list of valid WKID values, see Using spatial references.

outSR

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.

transformation

(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 wkid, name, or wkt.

The following examples all specify the same geographic transformation:

WKID

Use dark colors for code blocksCopy
1
15851

WKID in JSON format:

Use dark colors for code blocksCopy
1
{"wkid" : 15851 }

Well-known text (WKT):

Use dark colors for code blocksCopy
1
{"wkt" : "GEOGTRAN[\"NAD_1927_To_WGS_1984_79_CONUS\",GEOGCS[\"GCS_North_American_1927\",DATUM[\"D_North_American_1927\",SPHEROID[\"Clarke_1866\",6378206.4,294.9786982]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],METHOD[\"NADCON\"],PARAMETER[\"Dataset_conus\",0.0]]"}

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 geoTransforms and has an array of two transformations. You should also specify whether to transform forward or backward.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
{
  "geoTransforms": [
    {
      "wkid": "1241",
      "transformForward": false
    },
    {
      "wkid": "15851",
      "transformForward": true
    }
  ]
}

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 hvTransforms and has an array of one transformation.

Use dark colors for code blocksCopy
1
{"hvTransforms": [{"wkid": 4453}]}

To find the best transformation based on your data and the input and output spatial references, use FindTransformations.

Invalid transformation JSON object:

Use dark colors for code blocksCopy
1
{"name" : "NAD_1927_To_WGS_1984_79_CONUS"}

If transformation is not specified, a search is made through the gtdefaults.json file in the pedata folder for an applicable transformation. If Vertical is set to true, a search is made through the hvtdefaults.json file in the pedata folder for an applicable horizontal or vertical transformation. The pedata folder, the gtdefaults.json, and the hvtdefaults.json files are installed automatically in your server directory when you install ArcGIS Server. If an appropriate transformation is not found in the gtdefaults.json or the hvtdefaults.json file, or if the appropriate file does not exist, the server chooses the best transformation to use based on the input data and spatial references.

transformForward

(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 transformation is specified, a value for the transformForward parameter must also be specified. The default value is false.

Values: true | false

vertical

(Optional) Specifies whether to project vertical coordinates. The default value is false. If vertical is set to true, both inSR and outSR must have a vertical coordinate system.

Values: true | false

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.

Use dark colors for code blocksCopy
1
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.

Use dark colors for code blocksCopy
1
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

Use dark colors for code blocksCopy
1
2
3
{
  "geometries" : [ <geometry1>, <geometry1>, ..., <geometryN> ]
}

JSON Response example

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
{
  "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 FindTransformations and copying the result.

Use dark colors for code blocksCopy
1
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:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "geometries": [
    {
      "x": 165.00001795095102,
      "y": -20.00001475789611,
      "z": 57.0102771227982
    },
    {
      "x": 174.00001812880745,
      "y": -11.000011492727607,
      "z": 65.60194478425002
    }
  ]
}

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.