Changeset 13546

Show
Ignore:
Timestamp:
01/18/08 15:47:15 (6 months ago)
Author:
warmerdam
Message:

added projection reading (from Gillian Walter)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/gdal/frmts/rs2/rs2dataset.cpp

    r13406 r13546  
    3030#include "gdal_pam.h" 
    3131#include "cpl_minixml.h" 
     32#include "ogr_spatialref.h" 
    3233 
    3334CPL_CVSID("$Id$"); 
     
    5859    GDAL_GCP      *pasGCPList; 
    5960    char          *pszGCPProjection; 
     61 
    6062  public: 
    6163            RS2Dataset(); 
     
    857859 
    858860/* -------------------------------------------------------------------- */ 
     861/*      Collect Projection String Information                           */ 
     862/* -------------------------------------------------------------------- */ 
     863    CPLXMLNode *psEllipsoid =  
     864        CPLGetXMLNode( psImageAttributes, 
     865                       "geographicInformation.referenceEllipsoidParameters" ); 
     866 
     867    if ( psEllipsoid != NULL ) 
     868    { 
     869        const char *pszEllipsoidName; 
     870        double minor_axis, major_axis, inv_flattening; 
     871        OGRSpatialReference oLL; 
     872 
     873        pszEllipsoidName = CPLGetXMLValue( psEllipsoid, "ellipsoidName", "" ); 
     874        minor_axis = atof(CPLGetXMLValue( psEllipsoid, "semiMinorAxis", "0.0" )); 
     875        major_axis = atof(CPLGetXMLValue( psEllipsoid, "semiMajorAxis", "0.0" )); 
     876 
     877        if ( EQUAL(pszEllipsoidName, "") || ( minor_axis == 0.0 ) || ( major_axis == 0.0 ) ) 
     878        { 
     879            CPLError(CE_Warning,CPLE_AppDefined,"Warning- incomplete ellipsoid information.  Using wgs-84 parameters.\n"); 
     880            oLL.SetWellKnownGeogCS( "WGS84" ); 
     881        } 
     882        else if ( EQUAL( pszEllipsoidName, "WGS84" ) ) 
     883        { 
     884            oLL.SetWellKnownGeogCS( "WGS84" ); 
     885        } 
     886        else 
     887        { 
     888            inv_flattening = major_axis/(major_axis - minor_axis); 
     889            oLL.SetGeogCS( "","",pszEllipsoidName, major_axis, inv_flattening); 
     890        } 
     891        
     892         
     893        CPLFree( poDS->pszGCPProjection ); 
     894        poDS->pszGCPProjection = NULL; 
     895        oLL.exportToWkt( &(poDS->pszGCPProjection) ); 
     896 
     897    } 
     898 
     899/* -------------------------------------------------------------------- */ 
    859900/*      Collect GCPs.                                                   */ 
    860901/* -------------------------------------------------------------------- */