Changeset 12074

Show
Ignore:
Timestamp:
09/05/07 05:38:34 (1 year ago)
Author:
dron
Message:

Proprly handle the case of empty datum.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/gdal/ogr/ogr_srs_panorama.cpp

    r12018 r12074  
    4242/************************************************************************/ 
    4343 
    44 #define NONE    -1L 
    45 #define TM      1L      // Gauss-Kruger (Transverse Mercator) 
    46 #define LAEA    4L      // Lambert Azimuthal Equal Area 
    47 #define STEREO  5L      // Stereographic 
    48 #define AE      6L      // Azimuthal Equidistant (Postel) 
    49 #define MERCAT  8L      // Mercator 
    50 #define POLYC   11L     // Polyconic 
    51 #define PS      13L     // Polar Stereographic 
    52 #define GNOMON  15L     // Gnomonic 
    53 #define UTM     17L     // Universal Transverse Mercator (UTM) 
    54 #define MOLL    19L     // Mollweide 
    55 #define EC      20L     // Equidistant Conic 
    56  
     44#define PAN_PROJ_NONE   -1L 
     45#define PAN_PROJ_TM     1L      // Gauss-Kruger (Transverse Mercator) 
     46#define PAN_PROJ_LAEA   4L      // Lambert Azimuthal Equal Area 
     47#define PAN_PROJ_STEREO 5L      // Stereographic 
     48#define PAN_PROJ_AE     6L      // Azimuthal Equidistant (Postel) 
     49#define PAN_PROJ_MERCAT 8L      // Mercator 
     50#define PAN_PROJ_POLYC  11L     // Polyconic 
     51#define PAN_PROJ_PS     13L     // Polar Stereographic 
     52#define PAN_PROJ_GNOMON 15L     // Gnomonic 
     53#define PAN_PROJ_UTM    17L     // Universal Transverse Mercator (PAN_PROJ_UTM) 
     54#define PAN_PROJ_MOLL   19L     // Mollweide 
     55#define PAN_PROJ_EC     20L     // Equidistant Conic 
     56 
     57 
     58/************************************************************************/ 
     59/*  "Panorama" datum codes.                                             */ 
     60/************************************************************************/ 
     61 
     62#define PAN_DATUM_NONE      -1L 
     63#define PAN_DATUM_PULKOVO42 1L  // Pulkovo 1942 
     64#define PAN_DATUM_WGS84     2L  // WGS84 
    5765 
    5866/************************************************************************/ 
     
    281289 *      13: Polar Stereographic 
    282290 *      15: Gnomonic 
    283  *      17: Universal Transverse Mercator (UTM) 
     291 *      17: Universal Transverse Mercator (PAN_PROJ_UTM) 
    284292 *      19: Mollweide 
    285293 *      20: Equidistant Conic 
     
    309317 * </pre> 
    310318 * 
    311  * @param iZone Input zone for UTM projection system. 
     319 * @param iZone Input zone for PAN_PROJ_UTM projection system. 
    312320 * 
    313321 * @param padfPrjParams Array of 7 coordinate system parameters: 
     
    355363    switch ( iProjSys ) 
    356364    { 
    357         case NONE: 
    358             break; 
    359  
    360         case UTM: 
     365        case PAN_PROJ_NONE: 
     366            break; 
     367 
     368        case PAN_PROJ_UTM: 
    361369            if ( iZone >= 0 ) 
    362370                SetUTM( iZone, TRUE ); 
     
    365373            break; 
    366374 
    367         case MERCAT: 
     375        case PAN_PROJ_MERCAT: 
    368376            SetMercator( TO_DEGREES * padfPrjParams[2], 
    369377                         TO_DEGREES * padfPrjParams[3], 
     
    372380            break; 
    373381 
    374         case PS: 
     382        case PAN_PROJ_PS: 
    375383            SetPS( TO_DEGREES * padfPrjParams[2], 
    376384                   TO_DEGREES * padfPrjParams[3], 
     
    379387            break; 
    380388 
    381         case POLYC: 
     389        case PAN_PROJ_POLYC: 
    382390            SetPolyconic( TO_DEGREES * padfPrjParams[2], 
    383391                          TO_DEGREES * padfPrjParams[3], 
     
    385393            break; 
    386394 
    387         case EC: 
     395        case PAN_PROJ_EC: 
    388396            SetEC( TO_DEGREES * padfPrjParams[0], 
    389397                   TO_DEGREES * padfPrjParams[1], 
     
    393401            break; 
    394402 
    395         case TM: 
     403        case PAN_PROJ_TM: 
    396404            SetTM( TO_DEGREES * padfPrjParams[2], 
    397405                   TO_DEGREES * padfPrjParams[3], 
     
    400408            break; 
    401409 
    402         case STEREO: 
     410        case PAN_PROJ_STEREO: 
    403411            SetStereographic( TO_DEGREES * padfPrjParams[2], 
    404412                              TO_DEGREES * padfPrjParams[3], 
     
    407415            break; 
    408416 
    409         case LAEA: 
     417        case PAN_PROJ_LAEA: 
    410418            SetLAEA( TO_DEGREES * padfPrjParams[2], 
    411419                     TO_DEGREES * padfPrjParams[3], 
     
    413421            break; 
    414422 
    415         case AE: 
     423        case PAN_PROJ_AE: 
    416424            SetAE( TO_DEGREES * padfPrjParams[2], 
    417425                   TO_DEGREES * padfPrjParams[3], 
     
    419427            break; 
    420428 
    421         case GNOMON: 
     429        case PAN_PROJ_GNOMON: 
    422430            SetGnomonic( TO_DEGREES * padfPrjParams[2], 
    423431                         TO_DEGREES * padfPrjParams[3], 
     
    425433            break; 
    426434 
    427         case MOLL: 
     435        case PAN_PROJ_MOLL: 
    428436            SetMollweide( TO_DEGREES * padfPrjParams[3], 
    429437                          padfPrjParams[5], padfPrjParams[6] ); 
     
    540548 * returned. 
    541549 *  
    542  * @param piZone Pointer to variable, where the zone for UTM projection 
     550 * @param piZone Pointer to variable, where the zone for PAN_PROJ_UTM projection 
    543551 * system will be returned. 
    544552 * 
     
    574582/* ==================================================================== */ 
    575583    if( IsLocal() ) 
    576         *piProjSys = NONE; 
     584        *piProjSys = PAN_PROJ_NONE; 
    577585 
    578586    else if( pszProjection == NULL ) 
     
    582590                  "Empty projection definition, considered as Geographic" ); 
    583591#endif 
    584         *piProjSys = NONE; 
     592        *piProjSys = PAN_PROJ_NONE; 
    585593    } 
    586594 
    587595    else if( EQUAL(pszProjection, SRS_PT_MERCATOR_1SP) ) 
    588596    { 
    589         *piProjSys = MERCAT; 
     597        *piProjSys = PAN_PROJ_MERCAT; 
    590598        padfPrjParams[3] = 
    591599            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    599607    else if( EQUAL(pszProjection, SRS_PT_POLAR_STEREOGRAPHIC) ) 
    600608    { 
    601         *piProjSys = PS; 
     609        *piProjSys = PAN_PROJ_PS; 
    602610        padfPrjParams[3] = 
    603611            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    611619    else if( EQUAL(pszProjection, SRS_PT_POLYCONIC) ) 
    612620    { 
    613         *piProjSys = POLYC; 
     621        *piProjSys = PAN_PROJ_POLYC; 
    614622        padfPrjParams[3] = 
    615623            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    622630    else if( EQUAL(pszProjection, SRS_PT_EQUIDISTANT_CONIC) ) 
    623631    { 
    624         *piProjSys = EC; 
     632        *piProjSys = PAN_PROJ_EC; 
    625633        padfPrjParams[0] = 
    626634            TO_RADIANS * GetNormProjParm( SRS_PP_STANDARD_PARALLEL_1, 0.0 ); 
     
    643651        if( *piZone != 0 ) 
    644652        { 
    645             *piProjSys = UTM; 
     653            *piProjSys = PAN_PROJ_UTM; 
    646654            if( !bNorth ) 
    647655                *piZone = - *piZone; 
     
    649657        else 
    650658        { 
    651             *piProjSys = TM; 
     659            *piProjSys = PAN_PROJ_TM; 
    652660            padfPrjParams[3] = 
    653661                TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    665673    else if( EQUAL(pszProjection, SRS_PT_STEREOGRAPHIC) ) 
    666674    { 
    667         *piProjSys = STEREO; 
     675        *piProjSys = PAN_PROJ_STEREO; 
    668676        padfPrjParams[3] = 
    669677            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    677685    else if( EQUAL(pszProjection, SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA) ) 
    678686    { 
    679         *piProjSys = LAEA; 
     687        *piProjSys = PAN_PROJ_LAEA; 
    680688        padfPrjParams[3] = 
    681689            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    688696    else if( EQUAL(pszProjection, SRS_PT_AZIMUTHAL_EQUIDISTANT) ) 
    689697    { 
    690         *piProjSys = AE; 
     698        *piProjSys = PAN_PROJ_AE; 
    691699        padfPrjParams[3] = 
    692700            TO_RADIANS * GetNormProjParm( SRS_PP_LONGITUDE_OF_CENTER, 0.0 ); 
     
    699707    else if( EQUAL(pszProjection, SRS_PT_GNOMONIC) ) 
    700708    { 
    701         *piProjSys = GNOMON; 
     709        *piProjSys = PAN_PROJ_GNOMON; 
    702710        padfPrjParams[3] = 
    703711            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    710718    else if( EQUAL(pszProjection, SRS_PT_MOLLWEIDE) ) 
    711719    { 
    712         *piProjSys = MOLL; 
     720        *piProjSys = PAN_PROJ_MOLL; 
    713721        padfPrjParams[3] = 
    714722            TO_RADIANS * GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0 ); 
     
    723731                  "Projection \"%s\" unsupported by \"Panorama\" GIS. " 
    724732                  "Geographic system will be used.", pszProjection ); 
    725         *piProjSys = NONE; 
     733        *piProjSys = PAN_PROJ_NONE; 
    726734    } 
    727735  
     
    731739    const char  *pszDatum = GetAttrValue( "DATUM" ); 
    732740 
    733     if ( EQUAL( pszDatum, "Pulkovo_1942" ) ) 
    734         *piDatum = 1L; 
    735     if( EQUAL( pszDatum, SRS_DN_WGS84 ) ) 
    736         *piDatum = 2L; 
     741    if ( pszDatum == NULL ) 
     742        *piDatum = PAN_DATUM_NONE; 
     743    else if ( EQUAL( pszDatum, "Pulkovo_1942" ) ) 
     744        *piDatum = PAN_DATUM_PULKOVO42; 
     745    else if( EQUAL( pszDatum, SRS_DN_WGS84 ) ) 
     746        *piDatum = PAN_DATUM_WGS84; 
    737747 
    738748    // If not found well known datum, translate ellipsoid