How to add your knowledge

Projection Parameters

    Table of contents
    No headers

    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
    MgCoordinateSystem cs = csDict.GetCoordinateSystem("CANADA-ALBERS");
    // 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 quadrant topic
    bool usingQuadrant = projectionInformation.IsUsingQuadrant(projectionCode);
    if (usingQuadrant)
    {
    	int quadrant = cs.GetQuadrant();
    }
    // 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.

    N=NSTDPLL; S=SSTDPLL; P1G=P1LNG; P1T=P1LAT; P2G=P2LNG; P2T=P2LAT; P1P2=ADP1P2; SP1=ADSP1; SP2=ADSP2; PG=POLELNG; PT=POLELAT; OP=OSTDPLL; AE=AELEV; CM=CNTMER; GH=GHGT;
    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
    Angular DistanceAdp1p2 Adsp1 Adsp2
    AzimuthGcazm Nrthrot Skwazm Yaxisaz
    Complex CoefficientCmplxan Cmplxbn
    ElevationAelev
    Geoid HeightGhgt
    Hemisphere SelectionHsns
    LatitudeGcp1lat Gcp2lat Gcplat Nparall Nrmlpll Nstdpll Ostdpll P1lat P2lat Polelat Sparall Sstdpll Stdcir Stdpll
    LongitudeCntmer Eastll Estdmer Gcp1lng Gcp2lng Gcplng P1lng P2lng Polelng Westll
    UTM Zone NumberUtmzn