¿Cómo se calcula la latitud y la longitud de un punto de la tierra utilizando el acimut y la elevación vistos desde un satélite geoestacionario?

Me dan la longitud de un satélite geoestacionario y un vector apuntador del satélite en forma de ángulos de azimut y elevación mirando desde el satélite hacia la tierra (donde el azimut cero y la elevación es la dirección desde el satélite hasta el punto del subsatélite y donde el acimut es positivo al este de esa dirección, la elevación es positiva al norte de esa dirección). ¿Existe una forma generalmente aceptada de calcular la latitud y la longitud de la ubicación donde el vector apuntando golpea una tierra con forma WGS 84?

Esto podría ser algo con lo que el kit de herramientas SPICE puede ayudar. Creo que @PearsonArtPhoto tiene algo de experiencia con ese software.
@JCRM en mi experiencia, personas que no son Cualquier usuario que tenga un comentario visible (no eliminado) en la publicación. no será notificado por el @.

Respuestas (1)

nota: creo que las coordenadas terrestres deben escribirse con mayúsculas ( X , Y , Z ) pero las citas de la otra respuesta usan minúsculas ( X , y , z ) . Teniendo en cuenta que el término radical apenas encaja con las letras pequeñas, he mantenido las minúsculas en la mayoría de los lugares. Para esta respuesta, las mayúsculas y minúsculas representan las mismas coordenadas.

tl; dr: conecte la posición de su satélite ( X , y , z )

X 0 = X X ^ + y y ^ + z z ^
y la normal del vector ( tu , v , w )
norte ^ = tu X ^ + v y ^ + w z ^
Llegar t la longitud del vector desde el satélite hasta el elipsoide, luego use
X i norte t mi r s mi C t = X 0 + t norte ^
para obtener las coordenadas de la intersección con el elipsoide de referencia.

Luego use la solución analítica en la segunda sección a continuación, o una de las soluciones iterativas a las que se hace referencia allí para convertirlas a latitud y longitud.


Matemáticas de intersección para obtener (x, y, z)

De esta práctica respuesta en GIS SE:

El elipsoide de referencia WGS84 es un elipsoide biaxial (y achatado). Es más corto en los polos que el ecuador, y el ecuador es un círculo.

La ecuación para ello es:

X 2 a 2 + y 2 a 2 + z 2 b 2 1 = 0

dónde X , y , z es un punto en la superficie del elipsoide, y

dónde a es el semieje mayor (6.378.137 metros) y b es el semieje menor del elipsoide WGS84 (6.356.752,3142 metros).

Continuaré usando las matemáticas de esta respuesta y formatearé en MathJax y Python posterior:

La posición de su satélite es X , y , z y la dirección normal es tu , v , w . La longitud del vector desde el satélite hasta la primera y más cercana intersección (asumiendo, por supuesto, que su satélite está fuera de la Tierra ):

t = -(1/(b^2 (u^2 + v^2) +  a^2 w^2)) * (b^2 (u x + v y) + a^2 w z + 1/2 Sqrt[
     4 (b^2 (u x + v y) + a^2 w z)^2 - 
     4 (b^2 (u^2 + v^2) + a^2 w^2) (b^2 (-a^2 + x^2 + y^2) + a^2 z^2)])

En MathJax:

A = 1 b 2 ( tu 2 + v 2 ) + a 2 w 2

B = b 2 ( tu X + v y ) + a 2 w z

C = ( b 2 ( tu X + v y ) + a 2 w z ) 2 ( b 2 ( tu 2 + v 2 ) + a 2 w 2 ) ( b 2 ( a 2 + X 2 + y 2 ) + a 2 z 2 )

t = A ( B + C )

que es más fácil de leer que la forma en que MathJax lo muestra todo en una sola línea:

t = 1 b 2 ( tu 2 + v 2 ) + a 2 w 2 ( b 2 ( tu X + v y ) + a 2 w z + ( b 2 ( tu X + v y ) + a 2 w z ) 2 ( b 2 ( tu 2 + v 2 ) + a 2 w 2 ) ( b 2 ( a 2 + X 2 + y 2 ) + a 2 z 2 ) )

Implementado en Python:

import numpy as np
a, b = 0.9, 1.1
asq, bsq = a**2, b**2
x, y, z = 5.0, 0.0, 0.0
u, v, w = -np.sqrt(1 - 0.1**2 - 0.1**2), 0.1, 0.1
xsq, ysq, zsq = x**2, y**2, z**2
usq, vsq, wsq = u**2, v**2, w**2

A = -(1/(bsq*(usq + vsq) +  asq*wsq))
B = bsq*(u*x + v*y) + asq*w*z
C = 0.5*np.sqrt(4*(bsq*(u*x + v*y) + asq*w*z)**2 -
                      4*(bsq*(usq + vsq) + asq*wsq) *
                      (bsq*(-asq + xsq + ysq) + asq*zsq))
t = A * (B + C)
print "t: ", t
xyz, uvw   = np.array([x, y, z]), np.array([u, v, w])
xyzi       = xyz + t*uvw
xi, yi, zi = xyzi
print "point of intersection: ", xyzi
print "check, is it zero within roundoff? ", xi**2/asq + yi**2/asq + zi**2/bsq - 1

cede:

t:  4.33961998769
point of intersection:  [ 0.70399539  0.433962    0.433962  ]
check, is it zero?  -8.54871728961e-15

De hecho, la solución cae en el elipsoide.

Convertir (x, y, z) a latitud y longitud

Necesitamos invertir las ecuaciones (que se muestran en esta respuesta ) para obtener la latitud y la longitud en el elipsoide WSG84 correspondiente a estas coordenadas.

Según [Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates][1] de Wikipedia

Las coordenadas cartesianas 3D X , Y , Z en coordenadas centradas en la Tierra y fijas en la Tierra asumiendo una forma elipsoidal viene dada por:

X = ( norte ( ϕ ) + h ) porque ϕ porque λ

Y = ( norte ( ϕ ) + h ) porque ϕ pecado λ

Z = ( b 2 a 2 norte ( ϕ ) + h ) pecado ϕ

dónde ϕ , λ , h son latitud, longitud y altitud, y a , b son los radios ecuatorial y polar del elipsoide utilizado, y

norte ( ϕ ) = a 2 a 2 porque 2 ϕ + b 2 pecado 2 ϕ .

La inversión se trata en Transformaciones de Datum de Posiciones GPS; Nota de aplicación que se encuentra en esta pregunta GIS , así como en este enlace en los comentarios.

De la nota de aplicación mostraré la solución analítica .

Definiciones:

a = 6378137
b = a ( 1 F ) = 6356752.31424518
F = 1 298.257223563
mi = a 2 b 2 a 2
mi = a 2 b 2 b 2 .

Resolver para la longitud es trivial. La nota de aplicación da:

λ = arcán ( y X ) ,

sin embargo, en la práctica, no puede usar arctan a ciegas porque no puede distinguir los cuatro cuadrantes. Así que en su lugar usa

λ = arcán 2 ( y , X ) .

Resolviendo analíticamente para la latitud, la nota de aplicación da

ϕ = arcán ( z + mi 2 b pecado 3 ( θ ) pag mi 2 a porque 3 ( θ ) )

dónde

pag = X 2 + y 2
θ = arcán ( z a pag b ) .

Nuevamente, probablemente deberías usar a r C t a norte 2 ( ) en lugar de cuidar los cuadrantes.

También puede encontrar soluciones iterativas en esta referencia y en la otra (ya mencionada anteriormente). Las soluciones iterativas probablemente fueron significativamente más rápidas en el pasado (y podrían serlo también ahora), lo que sería importante si estuviera haciendo un trazado de rayos para millones de puntos, por ejemplo, generando una imagen de la superficie de la Tierra desde el punto de vista de los satélites con una precisa representación.

@Federico normalmente no me meto con las ecuaciones citadas, pero los tiempos desesperados que luchan con MathJax requieren medidas desesperadas. Hice el cambio y nada explotó. ¡Gracias! actualización: ahora también extraje la estrella fea , gracias 2 !
@Federico efectivamente lo hubo, gracias 3 ! Es la hora de cenar. Después volveré y verificaré dos veces, y luego haré Python también.