Red de conocimiento informático - Consumibles informáticos - Cálculo inverso de la proyección gaussiana

Cálculo inverso de la proyección gaussiana

//Cálculos hacia adelante y hacia atrás de la proyección gaussiana

/////Sistema de coordenadas de Beijing de 54 años de ancho de banda de 6 grados

//La proyección gaussiana calcula las coordenadas geodésicas (unidad: DD) desde longitud y latitud (unidad: DD) Incluyendo número de banda, unidad: metro).

void GaussProjCal(doble longitud, doble latitud, doble X, doble Y)

{

int ProjNo = 0; int area range; Ancho de banda

Doble longitud 1, latitud 1, longitud 0, latitud 0, x0, y0, xval, yval

Doble A, f, e2, ee, NN, T, C, A, M, iPI

iPI = 0.0174532925199433; ////3.1415926535898/180.0;

Ancho de región = 6; ////6 grados de ancho de banda

a = 6378245.0f = 1.0/298.3; //Parámetros del sistema de coordenadas de Beijing en 1954

////a = 6378140.0; f = 1/298.257; //Parámetros del sistema de coordenadas de Xi'an en 1980

ProjNo = (int)(longitud/rango de área);

longitud 0 = ProjNo * zona amplia+zona amplia/2;

longitud0 = longitud0 * iPI< / p>

Latitud 0 = 0;

Longitud 1 = longitud * iPI // Longitud convertida a radianes.

latitud1 = latitud * iPI // Latitud convertida a radianes

E2 = 2 * f-f * f

ee = E2 *(1.0-E2);

NN=a/sqrt(1.0-e2*sin(latitud 1)*sin(latitud 1));

T=tan(latitud 1)*tan(latitud 1) ;

C=ee*cos(latitud 1)*cos(latitud 1);

A=(longitud 1-longitud 0)*cos(latitud 1);

m = a *(1-E2/4-3 * E2 * E2/64-5 * E2 * E2 * E2/256)* latitud 1-(3 * E2/8+3 * E2 * E2/ 32+45 * E2 * E2

* E2/1024)* sin(2 *latitud 1)

+(15 * E2 * E2/256+45 * E2 * E2 * E2/1024)* sin(4*latitud 1)-(35*E2*E2*E2/3072)*sin(6*l

latitud 1));

XV al = NN *(A+(1-T+C)* A * A * A/6+(5-18 * T+T * T+72 * C-58 * ee)* A * A * A * A * A/120);

yval = M+NN * tan(latitud 1)*(A * A/2+(5-T+9 * C+4 * C * C)* A * A * A * A/24

+(61-58 * T+T * T+600 * C-330 * ee)* A * A * A * A * A * A * A/720) ;

x0 = 1000000 l *(ProjNo+1)+500000 l;

y0 = 0;

XV al = XV al+X0; yval+Y0;

* :metro) para calcular la latitud y longitud (unidad: DD).

Void Gaussprojectinvcal (doble x, doble y, doble * longitud, doble * latitud) Cadena 9.

{

int ProjNoint rango de área; ////Ancho de banda

Doble longitud 1, latitud 1, longitud 0, latitud 0, X0, Y0, xval , yval

doble e1, e2, f, a, e e, NN, T, C, M, D, R, u, fai, iPI

iPI = 0.0174532925199433; //3.1415926535898/180.0;

a = 6378245.0f = 1.0/298.3; //Parámetros del sistema de coordenadas de Beijing en 1954

////a = 6378140.0 f = 1/298.257; ; //Parámetros del sistema de coordenadas Xi'an de 80 años

Ancho de región = 6; ////ancho de banda de 6 grados

ProjNo = (int)(X/1000000 l); // Encuentra el número

longitud 0 =(ProjNo-1)* zona amplia+zona amplia/2;

longitud0 = longitud0 * iPI//meridiano central

x0 = ProjNo * 1000000 l+500000 l;

y0 = 0;

XV al = X-X0; yval = Y-Y0; // Coordenadas geodésicas dentro de la banda

E2 = 2 * f-f * f;

e 1 =(1.0-sqrt(1-E2))/(1.sqrt(1-E2));

ee = E2/(1-E2);

M = yval

u = M/(a *(1-E2/4-3 * E2 * E2/ 64-5 * E2 * E2 * E2/256));

fai = u+(3 * e 1/2-27 * e 1 * e 1 * e 1/32)* sin(2 * u)+ (21 * e 1/16-55 * e 1 * e 1 * e 1 * e 1/38

4*u)

+(151 * e 1 * e 1 * e 1/96)* sin(6 * u)+(1097 * e 1 * e 1 * e 1 * e 1 * e 1/512)* sin sin(8 * u);

c = ee * cos(fai)* cos(fai);

t = tan(fai)* tan(fai);

NN = a/sqrt(1.0 -E2 * sin(fai)* sin(fai)); cadena 1

r = a *(1-E2)/sqrt((1-E2 * sin(fai)* sin(fai)) *( 1-E2 * sin(fai)* sin(fai))*(1-E2 * sin

(fai)* sin(fai)));

d = XV al /NN;

//Calcular latitud y longitud.

Longitud 1 = Longitud (D-(1+2 * T+C)* D * D * D/6+(5-2 * C+28 * T-3 * C * C +8 * ee+24 * T * T)* D

* D * D * D * D/120)/cos(fai);

latitud 1 = fai-( NN * tan(fai)/R)*(D * D/2-(5+3 * T+10 * C-4 * C * C-9 * ee)* D * D * D * D/24

+(61+90 * T+298 * C+45 * T * T-256 * ee-3 * C * C)* D * D * D * D * D * D/720);

//Convertir a DD

*Longitude=Longitude1/iPI;

*Latitud=Latitud1/iPI;

}

NNEl radio de curvatura del círculo unitario está representado por n en la medición.

m es la longitud del arco del meridiano. En la medición, la cuerda 2 está representada por una x grande.

Fai es la latitud del punto base, que se obtiene mediante la fórmula inversa de la longitud del arco del meridiano. En mediciones, Bf se utiliza para representar la cuerda 4.

r es el radio de curvatura del punto inferior, que en la medición está representado por Nf.