📄 mitab_spatialref.cpp
字号:
char *pszLinearUnits;
double dfLinearConv;
dfLinearConv = poSpatialRef->GetLinearUnits( &pszLinearUnits );
if( dfLinearConv == 0.0 )
dfLinearConv = 1.0;
/*-----------------------------------------------------------------
* Transform the projection and projection parameters.
*----------------------------------------------------------------*/
const char *pszProjection = poSpatialRef->GetAttrValue("PROJECTION");
double *parms = sTABProj.adProjParams;
if( pszProjection == NULL && poSpatialRef->GetAttrNode("LOCAL_CS") != NULL)
{
/* nonearth */
sTABProj.nProjId = 0;
}
else if( pszProjection == NULL )
{
sTABProj.nProjId = 1;
}
else if( EQUAL(pszProjection,SRS_PT_ALBERS_CONIC_EQUAL_AREA) )
{
sTABProj.nProjId = 9;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_AZIMUTHAL_EQUIDISTANT) )
{
sTABProj.nProjId = 5;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);
parms[2] = 90.0;
if( ABS((ABS(parms[1]) - 90)) > 0.001 )
sTABProj.nProjId = 28;
}
else if( EQUAL(pszProjection,SRS_PT_CYLINDRICAL_EQUAL_AREA) )
{
sTABProj.nProjId = 2;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_ECKERT_IV) )
{
sTABProj.nProjId = 14;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_ECKERT_VI) )
{
sTABProj.nProjId = 15;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_EQUIDISTANT_CONIC) )
{
sTABProj.nProjId = 6;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_GALL_STEREOGRAPHIC) )
{
sTABProj.nProjId = 17;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_HOTINE_OBLIQUE_MERCATOR) )
{
sTABProj.nProjId = 7;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_AZIMUTH,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_LAMBERT_AZIMUTHAL_EQUAL_AREA) )
{
sTABProj.nProjId = 4;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_CENTER,0.0);
parms[2] = 90.0;
if( ABS((ABS(parms[1]) - 90)) > 0.001 )
sTABProj.nProjId = 28;
}
else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP) )
{
sTABProj.nProjId = 3;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_LAMBERT_CONFORMAL_CONIC_2SP_BELGIUM) )
{
sTABProj.nProjId = 19;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_1,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_STANDARD_PARALLEL_2,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[5] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_MERCATOR_1SP) )
{
sTABProj.nProjId = 10;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
if( parms[1] != 0.0 )
sTABProj.nProjId = 26;
}
else if( EQUAL(pszProjection,SRS_PT_MILLER_CYLINDRICAL) )
{
sTABProj.nProjId = 11;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_LONGITUDE_OF_CENTER,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_MOLLWEIDE) )
{
sTABProj.nProjId = 13;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_NEW_ZEALAND_MAP_GRID) )
{
sTABProj.nProjId = 18;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_SWISS_OBLIQUE_CYLINDRICAL) )
{
sTABProj.nProjId = 25;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_ROBINSON) )
{
sTABProj.nProjId = 12;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_SINUSOIDAL) )
{
sTABProj.nProjId = 16;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_STEREOGRAPHIC) )
{
sTABProj.nProjId = 20;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR) )
{
sTABProj.nProjId = 8;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_21) ) // Encom 2003
{
sTABProj.nProjId = 21;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_22) ) // Encom 2003
{
sTABProj.nProjId = 22;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_23) ) // Encom 2003
{
sTABProj.nProjId = 23;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_TRANSVERSE_MERCATOR_MI_24) ) // Encom 2003
{
sTABProj.nProjId = 24;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_SCALE_FACTOR,1.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[4] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_CASSINI_SOLDNER) )
{
sTABProj.nProjId = 30;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_NEW_ZEALAND_MAP_GRID) )
{
sTABProj.nProjId = 18;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
else if( EQUAL(pszProjection,SRS_PT_POLYCONIC) )
{
sTABProj.nProjId = 27;
parms[0] = poSpatialRef->GetProjParm(SRS_PP_CENTRAL_MERIDIAN,0.0);
parms[1] = poSpatialRef->GetProjParm(SRS_PP_LATITUDE_OF_ORIGIN,0.0);
parms[2] = poSpatialRef->GetProjParm(SRS_PP_FALSE_EASTING,0.0);
parms[3] = poSpatialRef->GetProjParm(SRS_PP_FALSE_NORTHING,0.0);
}
/* ==============================================================
* Translate Datum and Ellipsoid
* ============================================================== */
const char *pszWKTDatum = poSpatialRef->GetAttrValue("DATUM");
MapInfoDatumInfo *psDatumInfo = NULL;
/*-----------------------------------------------------------------
* Default to WGS83 if we have no datum at all.
*----------------------------------------------------------------*/
if( pszWKTDatum == NULL )
{
psDatumInfo = as
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -