📄 mitab_spatialref.cpp
字号:
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 = asDatumInfoList+0; /* WGS 84 */ } /*----------------------------------------------------------------- * We know the MIF datum number, and need to look it up to * translate into datum parameters. *----------------------------------------------------------------*/ else if( EQUALN(pszWKTDatum,"MIF ",4) && atoi(pszWKTDatum+4) != 999 && atoi(pszWKTDatum+4) != 9999 ) { int i; for( i = 0; asDatumInfoList[i].nMapInfoDatumID != -1; i++ ) { if( atoi(pszWKTDatum+4) == asDatumInfoList[i].nMapInfoDatumID ) { psDatumInfo = asDatumInfoList + i; break; } } if( psDatumInfo == NULL ) psDatumInfo = asDatumInfoList+0; /* WGS 84 */ } /*----------------------------------------------------------------- * We have the MIF datum parameters, and apply those directly. *----------------------------------------------------------------*/ else if( EQUALN(pszWKTDatum,"MIF ",4) && (atoi(pszWKTDatum+4) == 999 || atoi(pszWKTDatum+4) == 9999) ) { char **papszFields; papszFields = CSLTokenizeStringComplex( pszWKTDatum+4, ",", FALSE, TRUE); if( CSLCount(papszFields) >= 5 ) { sTABProj.nEllipsoidId = atoi(papszFields[1]); sTABProj.dDatumShiftX = atof(papszFields[2]); sTABProj.dDatumShiftY = atof(papszFields[3]); sTABProj.dDatumShiftZ = atof(papszFields[4]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -