⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geotrans_base.cpp

📁 这是一个GPS相关的程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{}
		break;

	//-----------------------------------------------------
	case Geodetic:	// case height type
		sIdentifier.Append(SG_T("GEODETIC"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(
				NULL, "TYPE"	, _TL("Projection"),
				_TL(""),
				_TL("Geodetic")
			);

			pParameters->Add_Choice(
				NULL, "HEIGHT"	, _TL("Height"),
				_TL(""),

				CSG_String::Format(SG_T("%s|%s|%s|"),
					_TL("No Height"),
					_TL("Ellipsoid Height [m]"),
					_TL("MSL Height [m]")
				), 0
			);
		}
		break;

	//-----------------------------------------------------
	case GEOREF:						// Layout: 0*0*1
		break;

	//-----------------------------------------------------
	case Gnomonic:
		sIdentifier.Append(SG_T("GNOMONIC"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Gnomonic"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Lambert_Conformal_Conic:
		sIdentifier.Append(SG_T("LAMBERT"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Lambert Conformal Conic"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 45.0);
			pParameters->Add_Value		(NULL, "PARALLEL_1"		, _TL("1st Std. Parallel")	, _TL(""), PARAMETER_TYPE_Degree, 40.0);
			pParameters->Add_Value		(NULL, "PARALLEL_2"		, _TL("2nd Std. Parallel")	, _TL(""), PARAMETER_TYPE_Degree, 50.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Local_Cartesian:
		sIdentifier.Append(SG_T("LOCALCARTES"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Local Cartesian"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "HEIGHT"			, _TL("Origin Height")		, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "ORIENT"			, _TL("Orientation"	)		, _TL(""), PARAMETER_TYPE_Degree, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Mercator:
		sIdentifier.Append(SG_T("MERCATOR"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Mercator"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "SCALE"			, _TL("Scale Factor")		, _TL(""), PARAMETER_TYPE_Double, 1.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Miller_Cylindrical:
		sIdentifier.Append(SG_T("MILLER"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection"	)		, _TL(""), _TL("Miller Cylindrical"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Mollweide:
		sIdentifier.Append(SG_T("MOLLWEIDE"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Mollweide"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Neys:
		sIdentifier.Append(SG_T("NEYS"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Neys (Modified Lambert Conformal Conic)"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 80.0);
			pParameters->Add_Choice		(NULL, "PARALLEL_1"		, _TL("1st Std. Parallel")	, _TL(""), SG_T(" 71 | 74 |"), 0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case NZMG:							// Layout:0*0*2
		sIdentifier.Append(SG_T("NZMG"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{}
		break;

	//-----------------------------------------------------
	case Oblique_Mercator:
		sIdentifier.Append(SG_T("OBLIQUE_MERCATOR"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Oblique Mercator"));
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude")	, _TL(""), PARAMETER_TYPE_Degree, 45.0);
			pParameters->Add_Value		(NULL, "SCALE"			, _TL("Scale Factor")		, _TL(""), PARAMETER_TYPE_Double, 1.0);
			pParameters->Add_Value		(NULL, "LONGITUDE_1"	, _TL("Longitude 1"	)		, _TL(""), PARAMETER_TYPE_Degree, -5.0);
			pParameters->Add_Value		(NULL, "LATITUDE_1"		, _TL("Latitude 1"	)		, _TL(""), PARAMETER_TYPE_Degree, 40.0);
			pParameters->Add_Value		(NULL, "LONGITUDE_2"	, _TL("Longitude 2"	)		, _TL(""), PARAMETER_TYPE_Degree, 5.0);
			pParameters->Add_Value		(NULL, "LATITUDE_2"		, _TL("Latitude 2"	)		, _TL(""), PARAMETER_TYPE_Degree, 50.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Orthographic:
		sIdentifier.Append(SG_T("ORTHOGRAPH"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection"	)		, _TL(""), _TL("Orthographic"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Polar_Stereo:
		sIdentifier.Append(SG_T("POLARSTEREO"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Polar Stereographic"));
			pParameters->Add_Value		(NULL, "LONGITUDE"		, _TL("Lon. Down")			, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Lat. of True Scale")	, _TL(""), PARAMETER_TYPE_Degree, 90.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Polyconic:
		sIdentifier.Append(SG_T("POLYCONIC"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Polyconic"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Sinusoidal:
		sIdentifier.Append(SG_T("SINUSOIDAL"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Sinusoidal"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Stereographic:
		sIdentifier.Append(SG_T("STEREOGRAPH"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Stereographic"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Transverse_Cylindrical_Equal_Area:
		sIdentifier.Append(SG_T("TRNSVCYLIND"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Transverse Cylindrical Equal Area"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "SCALE"			, _TL("Scale Factor")		, _TL(""), PARAMETER_TYPE_Double, 1.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case Transverse_Mercator:
		sIdentifier.Append(SG_T("TRNSVMERCAT"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection"	)		, _TL(""), _TL("Transverse Mercator"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "LATITUDE"		, _TL("Origin Latitude"	)	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "SCALE"			, _TL("Scale Factor")		, _TL(""), PARAMETER_TYPE_Double, 1.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;

	//-----------------------------------------------------
	case UPS:		//					case Layout:0*0*2		case Hemisphere
		sIdentifier.Append(SG_T("UPS"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Choice		(NULL, "HEMISPHERE"		, _TL("Hemisphere")			, _TL(""), _TL("North|South|"), 0);
		}
		break;

	//-----------------------------------------------------
	case UTM:	// case Hemisphere		case Zone
		sIdentifier.Append(SG_T("UTM"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection")			, _TL(""), _TL("Universal Transvers Mercator (UTM)"));
			pParameters->Add_Value		(NULL, "TOGCHECK"		, _TL("Override")			, _TL(""), PARAMETER_TYPE_Bool, true);
			pParameters->Add_Choice		(NULL, "HEMISPHERE"		, _TL("Hemisphere")			, _TL(""),_TL( "North|South|"), 0);
			pParameters->Add_Value		(NULL, "ZONE"			, _TL("Zone")				, _TL(""), PARAMETER_TYPE_Int, 1, 1, true , 60, true);
		}
		break;

	//-----------------------------------------------------
	case Van_der_Grinten:				//Layout: 1*2*2
		sIdentifier.Append(SG_T("VANGRINTEN"));

		if( (pParameters = Get_Parameters(sIdentifier))				== NULL
		&&	(pParameters = Add_Parameters(sIdentifier, sName, _TL("")))	!= NULL )
		{
			pParameters->Add_Info_String(NULL, "TYPE"			, _TL("Projection"	)		, _TL(""), _TL("Van der Grinten"));
			pParameters->Add_Value		(NULL, "MERIDIAN"		, _TL("Central Meridian")	, _TL(""), PARAMETER_TYPE_Degree, 0.0);
			pParameters->Add_Value		(NULL, "EASTING"		, _TL("False Easting [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
			pParameters->Add_Value		(NULL, "NORTHING"		, _TL("False Northing [m]")	, _TL(""), PARAMETER_TYPE_Double, 0.0);
		}
		break;
	}

	//-----------------------------------------------------
	if( pParameters )
	{
		if( !bShow_Dialog || pParameters->Get_Count() <= 0 )
		{
			return( pParameters );
		}
		else if( Dlg_Parameters(sIdentifier) )
		{
			return( pParameters );
		}
	}

	//-----------------------------------------------------
	return( NULL );
}


///////////////////////////////////////////////////////////
//														 //
//														 //
//														 //
///////////////////////////////////////////////////////////

//---------------------------------------------------------
bool CGEOTRANS_Base::On_Execute(void)
{
	if( !Initialize() )
	{
		Message_Add(_TL("The GeoTRANS engine could not be initialized !!\n\n"));
		Message_Add(_TL("Make sure that the files\n"));
		Message_Add(_TL("Projection_GeoTRANS_Ellipsoid.dat,\n"));
		Message_Add(_TL("Projection_GeoTRANS_Datum_3.dat,\n"));
		Message_Add(_TL("Projection_GeoTRANS_Geoid_EGM96.dat,\n"));
		Message_Add(_TL("Projection_GeoTRANS_Datum_7.dat,\n\n"));
		Message_Add(_TL("are in the specified directory.\n"));

		return( false );
	}

	if( !Dlg_Parameters("PROJECTION") )
	{
		return( false );
	}

	if( Set_Transformation(true) )
	{
		return( On_Execute_Conversion() );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -