Product help with community knowledge

### Page statistics

1196 views1 edit(s)44044 characters(s) Page last modified 12:22, 10 Apr 2012 by contentconnector

# Projection Parameters

A projected coordinate system may have 0 or more parameters. The projected coordinate systems in the groupings presented in the previous topic have the same properties and also the same number and kind of parameters. This topic contains two elements: a description of the parameters and the mapping of the projection groups to the parameters. The projection groups are subdivided according to the projection method used by the group: flat plane, conical, cylindrical, or other (not flat plane, conical, or cylindrical).

The MgCoordinateSystem class has a method called GetProjectionCode which returns an integer code specifying the projection group to which this coordinate system belongs. These codes are defined in MgCoordinateSystemProjectionCode. Use the MgCoordinateSystemProjectionCode object to get projection information about the projection group. Use that information to get projection information particular to the MgCoordinateSystem instance. Use the MgCoordinateSystemUnitInformation class to get information about the projection unit. The following code shows this sequence of calls.

```//csDict is defined above
// "CANADA-ALBERS" is a coordinate system in the Alber group of projections
// the unit codes identify the various linear and angular units such as meter, foot, degree, and radian
// the unit codes are integer constants defined in MgCoordinateSystemUnitCode
int unitCode = cs.GetUnitCode();
int projectionCode = cs.GetProjectionCode();
// unit type is either angular, linear, or unknown
// the unit types are integer constants defined in MgCoordinateSystemUnitType
// there are 2 ways to get the unit type
int projInfoUnitType = projectionInformation.GetUnitType(projectionCode);
int csUnitType = unitInformation.GetUnitType(unitCode);
// an example of a unit abbreviation is M for meter
string unitAbbreviation = unitInformation.GetAbbreviation(unitCode);
// an example of a unit tag string is METER
string unitTagString = unitInformation.GetTagString(unitCode);
// unit scale is relative to the meter
// if the unit is FOOT, the unit scale is 0.304800609601219
double unitScale = unitInformation.GetLinearUnitScale(unitCode);
bool usingOffset = projectionInformation.IsUsingOffset(projectionCode);
if (usingOffset)
{
// false Easting
doubl offsetX = cs.GetOffsetX();
// false Northing
doubleoffsetY = cs.GetOffsetY();
}
bool usingOriginLatitude = projectionInformation.IsUsingOriginLatitude(projectionCode);
if (usingOriginLatitude)
{
double originLatitude = cs.GetOriginLatitude();
}
bool usingOriginLongitude = projectionInformation.IsUsingOriginLongitude(projectionCode);
if (usingOriginLongitude)
{
double originLongitude = cs.GetOriginLongitude();}
{
}
// See the Secant Projection topic for a discussion of scale reduction
bool usingScaleReduction = projectionInformation.IsUsingScaleReduction(projectionCode);
if (usingScaleReduction)
{
double scaleReduction = cs.GetScaleReduction();
}
int parameterCount = projectionInformation.GetParameterCount(projectionCode);
for (int j = 1; j <= parameterCount; j++)
{
bool usingParameter = projectionInformation.IsUsingParameter(projectionCode, j);
if (!usingParameter) continue;
//Parameter types are defined in MgCoordinateSystemProjectionParameterType
int parameterType = projectionInformation.GetParameterType(projectionCode, j);
//the logical types are defined in MgCoordinateSystemProjectionLogicalType
int parameterLogicalType = projectionInformation.GetParameterLogicalType(projectionCode, j)
// the format types are defined in MgCoordinateSystemProjectionFormatType
int parameterFormatType = projectionInformation.GetParameterFormatType(projectionCode, j);
double parameterDefault = projectionInformation.GetParameterDefault(projectionCode, j);
double parameterMin = projectionInformation.GetParameterMin(projectionCode, j);
double parameterMax = projectionInformation.GetParameterMax(projectionCode, j);
double projectionParameter = cs.GetProjectionParameter(j);
}
```

The mapping of the projection code values to parameters is programmatically extracted from the CS Map file CSdataPJ.c. In CSdataPJ.c there is an array of structures called cs_PrjprmMap. Each structure maps a projection code to an array of parameter codes. The projection and parameter codes are defined in cs_map.h.

The following table describes the parameters.

ParameterDescription
0Zero parameters.
CNTMERCentral Meridian, also known as Origin Longitude. Used in projection groups Cassini, GaussK, Miller, Mndott, Modp, c Mrcat, MrcatK, Plycn, Sotrm, Tm, Trmeraf, Trmrkrg, Trmrs, and Wccst.
NSTDPLL, SSTDPLLNorthern Standard Parallel, also known as Standard Parallel 1, and Southern Standard Parallel, also known as Standard Parallel 2. Used in secant conic projections. Used in projection groups Alber, Lm2sp, Lmblg, Lmbrtaf, Mndotl, and Wccsl.
STDPLLStandard Parallel. Used in projection groups Edcyl, Mrcat, Neacyl, and Winkl. See the discussion of the Caspian Sea projection.
GCPLNG, GCPLAT, GCAZMGreat Circle Point Longitude, Great Circle Point Latitude, and Great Circle Azimuth. These are used for the oblique Mercator projections. The central geodesic can be defined by a point and an azimuth or by 2 points. In practice it is always defined by a point and an azimuth. Used in projection groups Hom1uv, Hom1xy, Rskew, Rskewc and, with the exception of GCAZM, Rskewo.
YAXISAZY Axis Azimuth. This is a non-standard parameter used in some azimuthal projections to define the direction of the Y axis. Used in projection groups Azede, Azmea, Azmed, and Sstro.
P1LNG, P1LAT, P2LNG, P2LAT, ADP1P2, ADSP1, ADSP2First Pole Longitude, First Pole Latitude, Second Pole Longitude, Second Pole Latitude, Angular Distance between the poles, Angular distance to the first standard parallel, Angular distance to the second standard parallel. These are used for the Bi-polar conformal conic projection, which was invented for the purpose of making a map of North and South America.
CMPLXAN, CMPLXBNComplex Parameter A(n), Complex Parameter B(n). There are several projections which are based on an expansion series of complex numbers. CSMap supports up to 12 terms, that is, 12 pairs of real and imaginary coefficients. Used in projection group Mstero.
UTMZNUTM Zone. For the UTM version of the transverse Mercator, you can specify a zone number instead of a central meridian. Used in the UTM projection group.
HSNSNorth/South Hemisphere. Use this number to indicate the hemisphere of a UTM zone. A positive number indicates the Northern Hemisphere, and a negative number indicates the Southern Hemisphere. 1.0 and -1.0 are used. Used in the UTM projection group.
GHGTAverage Geoid Height. Used in the Wisconsin State county coordinate systems to indicate the average geoid height (in meters) in the county. This value is used to adjust the geoid height of the underlying ellipsoid. Used in the projection groups Wccsl and Wccst.
AELEVAverage Elevation. Used in the Wisconsin and Minnesota State county coordinate systems to indicate the average orthometric height (elevation in system units) of the terrain in the county. This value is used to adjust the geoid height in the underlying ellipsoid. Used in projection groups Azede, Mndotl, Mndott, Wccsl, and Wccst.
POLELNG, POLELAT, OSTDPLLOblique Pole Longitude, Oblique Pole Latitude, Oblique Cone Standard Parallel. Used for the Krovak Oblique Conformal Conic projection. CS-Map’s parameterization is different from most other packages in that it takes the latitude of the oblique pole on the ellipsoid as a parameter rather than the co-latitude of the pole on the gaussian sphere. Used in projection groups Krovak and Krvk95.
STDCIRStandard Circle Latitude. Polar aspects of azimuthal projections, particularly the Stereographic variation, uses the concept of a standard circle, which is analogous to the standard parallel in Mercator projections. Used in the Pstrosl projection group.
NRMPLLNormal Parallel. The Oblique Cylindrical projection, also known as Rosamund, as used in Hungary, takes this additional parameter, which is used to compute the radius of the Gaussian sphere. Used in the Obqcyl projection group.
SKWAZMRectified Skew Orthomorphic, Skew. The Rectified Skew Orthomorphic, also known as RSO, projection differs from the Hotine Oblique Mercator in that the azimuth parameter is the azimuth of the central geodesic at the projection origin (rather than the projection center). Thus, the RSO takes one of these parameters rather than that described above for the Hotine Oblique Meractor. Used in the Rskewo projection group.

The following table maps the parameters of projection groups whose projection method is flat plane.

NameYAXISAZCMPLXANCMPLXBN0STDCIR
AZMEAx
AZMEDx
MSTRO   1212
NZLND       x
OSTRO       x
PSTRO       x
PSTROSL         x

The following table maps parameters of projection groups whose projection method is conical.

NameNS0P1GP1TP2GP2TP1P2SP1SP2PGPTOPAECMGH
ALBERxx
BONNE     x
BPCNC       xxxxxxx
KROVAK                     xxx
KRVK95                     xxx
LM1SP     x
LM2SPxx
LMBLGxx
LMTAN     x
MNDOTLxx                       x
PLYCN                             x
WCCSLxx                       x   x

The following table maps parameters of projection groups whose projection method is cylindrical.

CM=CNTMER; GCG=GCPLNG; GCT=GCPLAT; NP=NRMLPLL; SK=SKWAZM;
NameCMSTDPLLGCGGCTGCAZMAELEVNP0SKUTMZNHSNSGHGT
CSINIx
EDCYL   x
GAUSSKx
HOM1XY     xxx
MILLRx
MNDOTTx         x
MRCATxx
MRCATKx
OBQCYL             x
OSTN02               x
OSTN97               x
ROBIN               x
RSKEW     xxx
RSKEWC     xxx
RSKEWO     xx         x
SINUS               x
SOTRMx
SWISS               x
TRMERx
TRMRKRGx
TRMRSx
UTM                   xx
WCCSTx         x           x

The following table maps parameters of projection groups whose projection method is neither flat plane, conical, or cylindrical.

Name0STDPLL
VDGRNx
WINKL   x

The parameters are classified using the categories defined in MgCoordinateSystemLogicalType. The category to which a parameter belongs is retrieved using the GetParameterLogicalType method on the MgCoordinateSystemProjectionInformation object. The following table presents the classification.

CategoryParameters