Defining projections

ArcGIS Image Server allows clients to retrieve data from published image service sources in any desired coordinate system. To do this, the required transformation from source spatial reference system to the client requested spatial reference system must be valid. This can be done using the Service Properties dialog box available in the client DLL.

Additionally, users can create custom rotated coordinate system definitions and request the service for rotated data based on these definitions. These newly created rotated coordinate systems are known as Adjusted Horizontal Coordinate Systems (ADJHCS) within ArcGIS Image Server framework.

You need to first create a definition string to access published data in this newly created coordinate system. Then you need to set the client spatial reference system to the newly created spatial reference system definition on the image service being accessed by the client. After this place a request for data covering the desired area of interest.

Below is an example of a custom rotated coordinate system projection string. This string can either be added programmatically or to a text file with a .prj extension.

ADJHCS["User_Provided_CoordinateSystem_Name",PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1]],HTMETHOD["Affine_Parametric"],ARRAY["Coefficients",6,A,B,C,D,E,F],UNIT["Meter",1.0]]

The above example can be broken down into five parts. Each part is explained below.

1. ADJHCS["User_Provided_CoordinateSystem_Name",
"ADJHCS[" is the start node of the custom projection engine string.
"*_Name" is the user provided name for the rotated coordinate system.
2. PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]], PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],PARAMETER["Standard_Parallel_1",0],UNIT["Meter",1]],
"PROJCS[..." is a valid projection engine definition string used to define the coordinate system on which this newly created rotated coordinate system is based.
3. HTMETHOD["Affine_Parametric"],
This is for internal use only and must be contained within the string.

4. ARRAY["Coefficients",6,A,B,C,D,E,F],

A,B,C,D,E,F are the affine parameters computed as,

    - A = Scaling of x axis * cos(Rotation angle)

    - B = Scaling of y axis * sin(Skew angle - Rotation angle)/cos(Skew angle)

    - C = Translation in X

    - D = Scaling of x axis * sin(Rotation angle)

    - E = Scaling of y axis * cos(Skew angle - Rotation angle)/cos(Skew angle)

    - F = Translation in Y

5. UNIT["Meter",1.0]]
This is the end node of the custom projection engine string.

For more details on projections, refer to What are map projections.

Handling the projection transformations in ArcGIS Image Server

ArcGIS Image Server allows the raster datasets, the service definition and the requests from client applications to be in different coordinate systems. Each of the coordinate systems is defined by Projection files (.PRJ) that fully define the projection.

 

The coordinate system of the raster dataset is defined when the raster is added.

The coordinate system of the service definition is defined when the service is created.

The coordinate system of the client request is defined by the application that makes the request. If this is ArcMap, then it is defined as the projection of the data frame.

 

The following coordinate transformations take place with ArcGIS Image Server:

-When rasters are added, the footprints are computed by transforming the footprint of the raster dataset to that of the service definition.
-When a client makes a request for an area of interest, the client bounding box is converted to the service projection to search for the appropriate rasters.
-The raster dataset is also transformed to the projection of client request.

 

When transforming data between projections that are in different datums, a transformation is required. Typically in ArcMap, when data is added to a data frame that may require a transformation, ArcMap provides a list of possible transforms to select from the option that can be defined by the users. The selected transformation is then saved as part of the map document. These transformations take place on the service editor and on the service provider level.

 

Within ArcGIS Image Server, a single request for an image may involve a number of different projections: the projection of the client request, the projection that is used to define the service and the one or more projection of the original raster datasets. It is not possible for ArcGIS Image Server to request the exact transformation method that should be used for each of the re-projections, from the client. ArcGIS Image Server resolves this by using a table of defined transformations and when a transformation is required the table is searched for the first matching transformation.  In most cases, the default transformation is most appropriate, but there may be cases where a specific transformation is to be used. The list of transformations is defined within the AISDatums file.

Customizing projections using AISDatums file

You can manipulate the projection transformations within the ArcGIS Image Server framework using an AISDatums.txt file. This file contains a list of datum transformations that ArcGIS Image Server can use. You can edit this file, which is available at ..\Program Files\ArcGIS\ImageServer10.0\pedata\AISDatums.txt, in any text editor.

 

The format of the AISDatums file is as follows:

One datum transformation definition (either the code or description) per line.
Consists of a factory code and description of the datum transform, semicolon delimited.
A valid line should contain at least a code or description string. For example:
oCODE;DESC
o;DESC
oCODE;
A line starting with # is treated as a commented line.

The Description string has the following structure:

 

       GEOGTRAN[“Transformation name”,

       GEOGCS["Coordinate system name",..]

       GEOGCS["Coordinate system name",..]

       METHOD[“Method”,…]

 

In case where a datum transformation is required, ArcGIS Image Server searches for an appropriate transformation sequentially in the AISDatums file. It uses the first transformation where the two coordinate system name matches, and caches it for using later on. Afterwards, whenever ArcGIS Image Server searches for an appropriate datum transformation, the cache is searched before searching the datum file.

 

Any line starting with a CODE should not be modified, but its position in the file can be modified. The location of the line in the file can be modified so as to change its priority. There are a number of records that contain the same GEOGCS values, but have different methods. In some cases, the preferred transform can be prioritized by moving it up in the list.

 

Whenever the file is modified, users must restart the service provider to reflect the changes. Restarting the service provider clears the cache.

 

The AISDatums file is used by the service provider and service editor. In cases where the service editor and the service providers are on different machines, the AISDatums file must be manually copied or synchronized between machines.

 

If a user defines a projection that contains a datum that is unknown or the transformation between two datums is undefined then no transformation is applied. It is therefore important that if new datums are being used that the transformations are defined.

Adding customized projections to AISDatums file

The Create Custom Geographic Transformation tool in the Projections and Transformations toolset can be used to define a transformation method that converts data between two geographic coordinate systems or datums.

You can add customized projections to an AISDatums file by performing the following steps:

To create a transformation method:

1.Open the Create Custom Geographic Transformation tool in the Projections and Transformations toolset under the Data Management Tools.
2.Provide the fields with relevant information. For more details on creating a custom geographic transformation, refer to Create Custom Geographic Transformation (Data Management).
3.Click OK.

The Create Custom Geographic Transformation reporter window will display the result. Click Close.

4.The transformation method is saved as a .gtf file in \\Documents and Settings\<user>\ApplicationData\ESRI\ArcToolbox\CustomTransformations.

To add the customized projection to AISDatums.txt file:

5.Open the .gtf file with a text editor and copy the transformation string starting from GEOTRAN till the end. Do not copy the unwanted symbols that appear at the beginning of the string.
6.Open the AISDatums.txt file with a text editor and paste the transformation string at the beginning of the AISDatums.txt file as the first transformation method after the comments. Begin the transformation with a semicolon. The AISDatums.txt file is available in ..\Program files\ArcGIS\ImageServer10.0\pedata\AISDatums.txt file.

Example:

;GEOGTRAN["Geo",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_Abidjan_1987",DATUM["D_Abidjan_1987",SPHEROID["Clarke_1880_RGS",6378249.145,293.465]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],METHOD["Geocentric_Translation"],PARAMETER["X_Axis_Translation",0.0],PARAMETER["Y_Axis_Translation",0.0],PARAMETER["Z_Axis_Translation",0.0]]

7.Save the file.
8.Restart the service provider to reflect the changes.