

#If x86 Then '编译是 x86 平台,按 4 字节结构体参数 '条件编译语句,根据选择的编译平台,选择结构体的对齐方式
''' 椭球转换参数
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=4)>'编译为X86,采用Pack=4。编译为X64,Pack=8或默认。
Public Structure SevenParam
Dim dX As Double 'X平移
Dim dY As Double 'Y平移
Dim dZ As Double 'Z平移
Dim rX As Double 'X旋转
Dim rY As Double 'Y旋转
Dim rZ As Double 'Z旋转
Dim K As Double '尺度
End Structure
''' 定义椭球投影参数
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=4)> '编译为X86,采用Pack=4。编译为X64,Pack=8或默认。
Public Structure ProjectionParam
''' 中央子午线
Dim CentralMeridian As Double
''' 是否采用自动计算中央子午线或输入中央子午线的布尔值
Dim CentBool As Boolean
''' 投影尺度
Dim ProjectionScale As Double
''' 是否自动椭球参数的布尔值
Dim eTwoBool As Boolean
''' 北向常数
Dim NorthwardConstant As Double
''' 是否北向或南向坐标的布尔值
Dim NortBool As Boolean
''' 东向常数
Dim EasterlyConstant As Double
''' 是否东向或西向坐标的布尔值
Dim EastBool As Boolean
End Structure
#Else '编译不是 x86 平台,按 8 字节结构体参数
''' 椭球转换七参数
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=8)>'编译为X86,采用Pack=4。编译为X64,Pack=8或默认。
Public Structure SevenParam
Dim dX As Double 'X平移
Dim dY As Double 'Y平移
Dim dZ As Double 'Z平移
Dim rX As Double 'X旋转
Dim rY As Double 'Y旋转
Dim rZ As Double 'Z旋转
Dim K As Double '尺度
End Structure
''' 定义椭球投影参数
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi, Pack:=8)> '编译为X86,采用Pack=4。编译为X64,Pack=8或默认。
Public Structure ProjectionParam
''' 中央子午线
Dim CentralMeridian As Double
''' 是否采用自动计算中央子午线或输入中央子午线的布尔值
Dim CentBool As Boolean
''' 投影尺度
Dim ProjectionScale As Double
''' 是否自动椭球参数的布尔值
Dim eTwoBool As Boolean
''' 北向常数
Dim NorthwardConstant As Double
''' 是否北向或南向坐标的布尔值
Dim NortBool As Boolean
''' 东向常数
Dim EasterlyConstant As Double
''' 是否东向或西向坐标的布尔值
Dim EastBool As Boolean
End Structure
#End If
#if x86 //编译是 x86 平台,按 4 字节结构体参数 '条件编译语句,根据选择的编译平台,选择结构体的对齐方式
/// 椭球转换参数
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=4)]
public struct SevenParam
{
public double dX; //X平移
public double dY; //Y平移
public double dZ; //Z平移
public double rX; //X旋转
public double rY; //Y旋转
public double rZ; //Z旋转
public double K; //尺度
}
/// 定义椭球投影参数
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=4)]
public struct ProjectionParam
{
/// 中央子午线
public double CentralMeridian;
/// 是否采用自动计算中央子午线或输入中央子午线的布尔值
public bool CentBool;
/// 投影尺度
public double ProjectionScale;
/// 是否自动椭球参数的布尔值
public bool eTwoBool;
/// 北向常数
public double NorthwardConstant;
/// 是否北向或南向坐标的布尔值
public bool NortBool;
/// 东向常数
public double EasterlyConstant;
/// 是否东向或西向坐标的布尔值
public bool EastBool;
}
#else //编译不是 x86 平台,按 8 字节结构体参数
/// 椭球转换七参数
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=8)]
public struct SevenParam
{
public double dX; //X平移
public double dY; //Y平移
public double dZ; //Z平移
public double rX; //X旋转
public double rY; //Y旋转
public double rZ; //Z旋转
public double K; //尺度
}
/// 定义椭球投影参数
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=8)]
public struct ProjectionParam
{
/// 中央子午线
public double CentralMeridian;
/// 是否采用自动计算中央子午线或输入中央子午线的布尔值
public bool CentBool;
/// 投影尺度
public double ProjectionScale;
/// 是否自动椭球参数的布尔值
public bool eTwoBool;
/// 北向常数
public double NorthwardConstant;
/// 是否北向或南向坐标的布尔值
public bool NortBool;
/// 东向常数
public double EasterlyConstant;
/// 是否东向或西向坐标的布尔值
public bool EastBool;
}
#endif


#ifdef _M_IX86 //编译是 x86 平台,按 4 字节结构体参数 '条件编译语句,根据选择的编译平台,选择结构体的对齐方式(或 _WIN32)
/// 椭球转换参数
#pragma pack(4)/按4字节对齐
public struct SevenParam
{
public double dX; //X平移
public double dY; //Y平移
public double dZ; //Z平移
public double rX; //X旋转
public double rY; //Y旋转
public double rZ; //Z旋转
public double K; //尺度
}
/// 定义椭球投影参数
public struct ProjectionParam
{
/// 中央子午线
public double CentralMeridian;
/// 是否采用自动计算中央子午线或输入中央子午线的布尔值
public bool CentBool;
/// 投影尺度
public double ProjectionScale;
/// 是否自动椭球参数的布尔值
public bool eTwoBool;
/// 北向常数
public double NorthwardConstant;
/// 是否北向或南向坐标的布尔值
public bool NortBool;
/// 东向常数
public double EasterlyConstant;
/// 是否东向或西向坐标的布尔值
public bool EastBool;
}
#pragma pack()//恢复默认对齐
#else // _M_X64 //编译不是 x86 平台,按 8 字节结构体参数 (或 _WIN64)
/// 椭球转换七参数
#pragma pack(8)//按8字节对齐
public struct SevenParam
{
public double dX; //X平移
public double dY; //Y平移
public double dZ; //Z平移
public double rX; //X旋转
public double rY; //Y旋转
public double rZ; //Z旋转
public double K; //尺度
}
/// 定义椭球投影参数
public struct ProjectionParam
{
/// 中央子午线
public double CentralMeridian;
/// 是否采用自动计算中央子午线或输入中央子午线的布尔值
public bool CentBool;
/// 投影尺度
public double ProjectionScale;
/// 是否自动椭球参数的布尔值
public bool eTwoBool;
/// 北向常数
public double NorthwardConstant;
/// 是否北向或南向坐标的布尔值
public bool NortBool;
/// 东向常数
public double EasterlyConstant;
/// 是否东向或西向坐标的布尔值
public bool EastBool;
}
#pragma pack()//恢复默认对齐
#endif