| | 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 | /* -------------------------------------------------------------------- */ |
|---|