?? mitab_coordsys.cpp
字號:
poSR->SetLocalCS( "Nonearth" );
break;
/*--------------------------------------------------------------
* lat/long .. just add the GEOGCS later.
*-------------------------------------------------------------*/
case 1:
break;
/*--------------------------------------------------------------
* Cylindrical Equal Area
*-------------------------------------------------------------*/
case 2:
poSR->SetCEA( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ) );
break;
/*--------------------------------------------------------------
* Lambert Conic Conformal
*-------------------------------------------------------------*/
case 3:
poSR->SetLCC( GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ),
GetMIFParm( papszNextField, 5, 0.0 ) );
break;
/*--------------------------------------------------------------
* Lambert Azimuthal Equal Area
*-------------------------------------------------------------*/
case 4:
case 29:
poSR->SetLAEA( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Azimuthal Equidistant
*-------------------------------------------------------------*/
case 5: /* polar aspect only */
case 28: /* all aspects */
poSR->SetAE( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Equidistant Conic
*-------------------------------------------------------------*/
case 6:
poSR->SetEC( GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ),
GetMIFParm( papszNextField, 5, 0.0 ) );
break;
/*--------------------------------------------------------------
* Hotine Oblique Mercator
*-------------------------------------------------------------*/
case 7:
poSR->SetHOM( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
90.0,
GetMIFParm( papszNextField, 3, 1.0 ),
GetMIFParm( papszNextField, 4, 0.0 ),
GetMIFParm( papszNextField, 5, 0.0 ) );
break;
/*--------------------------------------------------------------
* Transverse Mercator
*-------------------------------------------------------------*/
case 8:
poSR->SetTM( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ) );
break;
/*----------------------------------------------------------------
* Transverse Mercator,(modified for Danish System 34 Jylland-Fyn)
*---------------------------------------------------------------*/
case 21:
poSR->SetTMVariant( SRS_PT_TRANSVERSE_MERCATOR_MI_21,
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ));
break;
/*--------------------------------------------------------------
* Transverse Mercator,(modified for Danish System 34 Sjaelland)
*-------------------------------------------------------------*/
case 22:
poSR->SetTMVariant( SRS_PT_TRANSVERSE_MERCATOR_MI_22,
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ));
break;
/*----------------------------------------------------------------
* Transverse Mercator,(modified for Danish System 34/45 Bornholm)
*---------------------------------------------------------------*/
case 23:
poSR->SetTMVariant( SRS_PT_TRANSVERSE_MERCATOR_MI_23,
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ));
break;
/*--------------------------------------------------------------
* Transverse Mercator,(modified for Finnish KKJ)
*-------------------------------------------------------------*/
case 24:
poSR->SetTMVariant( SRS_PT_TRANSVERSE_MERCATOR_MI_24,
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ));
break;
/*--------------------------------------------------------------
* Albers Conic Equal Area
*-------------------------------------------------------------*/
case 9:
poSR->SetACEA( GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ),
GetMIFParm( papszNextField, 5, 0.0 ) );
break;
/*--------------------------------------------------------------
* Mercator
*-------------------------------------------------------------*/
case 10:
poSR->SetMercator( 0.0, GetMIFParm( papszNextField, 0, 0.0 ),
1.0, 0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Miller Cylindrical
*-------------------------------------------------------------*/
case 11:
poSR->SetMC( 0.0, GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Robinson
*-------------------------------------------------------------*/
case 12:
poSR->SetRobinson( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Mollweide
*-------------------------------------------------------------*/
case 13:
poSR->SetMollweide( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
/*--------------------------------------------------------------
* Eckert IV
*-------------------------------------------------------------*/
case 14:
poSR->SetEckertIV( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Eckert VI
*-------------------------------------------------------------*/
case 15:
poSR->SetEckertVI( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Sinusoidal
*-------------------------------------------------------------*/
case 16:
poSR->SetSinusoidal( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Gall
*-------------------------------------------------------------*/
case 17:
poSR->SetGS( GetMIFParm( papszNextField, 0, 0.0 ),
0.0, 0.0 );
break;
/*--------------------------------------------------------------
* New Zealand Map Grid
*-------------------------------------------------------------*/
case 18:
poSR->SetNZMG( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ) );
break;
/*--------------------------------------------------------------
* Lambert Conic Conformal (Belgium)
*-------------------------------------------------------------*/
case 19:
poSR->SetLCCB( GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ),
GetMIFParm( papszNextField, 5, 0.0 ) );
break;
/*--------------------------------------------------------------
* Stereographic
*-------------------------------------------------------------*/
case 20:
case 31: /* double stereographic */
poSR->SetStereographic(
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 1.0 ),
GetMIFParm( papszNextField, 3, 0.0 ),
GetMIFParm( papszNextField, 4, 0.0 ) );
break;
/*--------------------------------------------------------------
* Swiss Oblique Mercator / Cylindrical
*-------------------------------------------------------------*/
case 25:
poSR->SetSOC( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ) );
break;
/*--------------------------------------------------------------
* Regional Mercator
*-------------------------------------------------------------*/
case 26:
poSR->SetMercator( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
1.0, 0.0, 0.0 );
break;
/*--------------------------------------------------------------
* Polygonic
*-------------------------------------------------------------*/
case 27:
poSR->SetPolyconic( GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ) );
break;
/*--------------------------------------------------------------
* CassiniSoldner
*-------------------------------------------------------------*/
case 30:
poSR->SetCS(
GetMIFParm( papszNextField, 1, 0.0 ),
GetMIFParm( papszNextField, 0, 0.0 ),
GetMIFParm( papszNextField, 2, 0.0 ),
GetMIFParm( papszNextField, 3, 0.0 ) );
break;
default:
break;
}
/* -------------------------------------------------------------------- */
/* Set linear units. */
/* -------------------------------------------------------------------- */
if( pszUnitsName != NULL )
poSR->SetLinearUnits( pszUnitsName, dfUnitsConv );
/* -------------------------------------------------------------------- */
/* For Non-Earth projection, we're done at this point. */
/* -------------------------------------------------------------------- */
if (nProjection == 0)
{
CSLDestroy(papszFields);
return poSR;
}
/* ==================================================================== */
/* Establish the GeogCS */
/* ==================================================================== */
const char *pszGeogName = "unnamed";
const char *pszSpheroidName = "GRS_1980";
double dfSemiMajor = 6378137.0;
double dfInvFlattening = 298.257222101;
const char *pszPrimeM = "Greenwich";
double dfPMLongToGreenwich = 0.0;
/* -------------------------------------------------------------------- */
/* Find the datum, and collect it's parameters if possible. */
/* -------------------------------------------------------------------- */
int iDatum;
MapInfoDatumInfo *psDatumInfo = NULL;
for( iDatum = 0; asDatumInfoList[iDatum].nMapInfoDatumID != -1; iDatum++ )
{
if( asDatumInfoList[iDatum].nMapInfoDatumID == nDatum )
{
psDatumInfo = asDatumInfoList + iDatum;
break;
}
}
if( asDatumInfoList[iDatum].nMapInfoDatumID == -1
&& nDatum != 999 && nDatum != 9999 )
{
/* use WGS84 */
psDatumInfo = asDatumInfoList + 0;
}
if( psDatumInfo != NULL )
{
nEllipsoid = psDatumInfo->nEllipsoid;
adfDatumParm[0] = psDatumInfo->dfShiftX;
adfDatumParm[1] = psDatumInfo->dfShiftY;
adfDatumParm[2] = psDatumInfo->dfShiftZ;
adfDatumParm[3] = psDatumInfo->dfDatumParm0;
adfDatumParm[4] = psDatumInfo->dfDatumParm1;
adfDatumParm[5] = psDatumInfo->dfDatumParm2;
adfDatumParm[6] = psDatumInfo->dfDatumParm3;
adfDatumParm[7] = psDatumInfo->dfDatumParm4;
}
/* -------------------------------------------------------------------- */
/* Set the spheroid if it is known from the table. */
/* -------------------------------------------------------------------- */
for( int i = 0; asSpheroidInfoList[i].nMapInfoId != -1; i++ )
{
if( asSpheroidInfoList[i].nMapInfoId == nEllipsoid )
{
dfSemiMajor = asSpheroidInfoList[i].dfA;
dfInvFlattening = asSpheroidInfoList[i].dfInvFlattening;
pszSpheroidName = asSpheroidInfoList[i].pszMapinfoName;
break;
}
}
/* -------------------------------------------------------------------- */
/* apply datum parameters. */
/* -------------------------------------------------------------------- */
char szDatumName[128];
if( nDatum == 999 )
{
sprintf( szDatumName,
"MIF 9999,%d,%.15g,%.15g,%.15g",
nEllipsoid,
adfDatumParm[0],
adfDatumParm[1],
adfDatumParm[2] );
}
else if( nDatum == 9999 )
{
sprintf( szDatumName,
"MIF 9999,%d,%.15g,%.15g,%.15g,%.15g,%.15g,%.15g,%.15g,%.15g",
nEllipsoid,
adfDatumParm[0],
adfDatumParm[1],
adfDatumParm[2],
adfDatumParm[3],
adfDatumParm[4],
adfDatumParm[5],
adfDatumParm[6],
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -