Tabla de Contenidos

Biblioteca ::geodesy

La biblioteca ::geodesy permite realizar cálculos geodésicos con fines varios. La idea es ir agregando procedimientos que permitan hacer más y más cosas. Con los presentes ya es posible por ejemplo calcular la distancia en línea recta entre dos nodos. Esto es, la secante al geoide que pasa por esos dos nodos. No es la distancia sobre la superficie.

API

  • ::geodesy::deg_to_rad angle
    • Se le pasa un ángulo en grados y lo devuelve en radianes.
  • ::geodesy::semi_major_axis = 6378137.0
    • Constante con el Semieje mayor del Elipsoide que mejor aproxima al planeta tierra según el sistema de referencia WGS-84.
  • ::geodesy::semi_minor_axis = 6356752.3142
    • Constante con el Semieje menor del Elipsoide que mejor aproxima al planeta tierra según el sistema de referencia WGS-84.
  • ::geodesy::flattening = [expr ($semi_major_axis - $semi_minor_axis) / $semi_major_axis]
    • Constante con el Aplastamiento del Elipsoide que mejor aproxima al planeta tierra según el sistema de referencia WGS-84.
  • ::geodesy::eccentricity_squared = [expr 2*$flattening-$flattening*$flattening]
    • Constante con la Excentricidad al cuadrado del Elipsoide que mejor aproxima al planeta tierra según el sistema WGS-84
  • ::geodesy::earth_radius lat
    • Devuelve la distancia en metros al centro de la tierra dada una latitud.
  • ::geodesy::latlngh_to_xyz lat_rad lng_rad h
    • A latlngh_to_xyz se le pasan coordenadas polares con los parámetros lat_rad (latitud EN RADIANES), lng_rad (longitud EN RADIANTES) y h (altura con respecto al elipsoide que mejor aproxima al centro de la tierra según el sistema de referencia WGS-84), y devuelve un vector en R3 en la base ortonormal B = (v1, v2, v3) dados por:
      • v1 = vector de 1 metro de módulo con coordenadas 0°00'00.00"N, 0°00'00.00"E, (este lugar queda en el Océano Atlántico, al Oeste de África cerca del Golfo de Guinea)
      • v2 = vector de 1 metro de módulo con coordenadas 0°00'00.00"N, 90°00'00.00"E, (este lugar queda en el Océano Índico, al Sur de Bangladesh y al Oeste de Sumatra)
      • v3 = vector de 1 metro de módulo con coordenadas 90°00'00.00"N, 0°00'00.00"E, (apuntando al Polo Norte)
  • ::geodesy::distance {x1 y1 z1} {x1 y2 z2}
    • Devuelve la distancia euclídia en línea recta (en metros) entre los puntos del espacio designados por (x1, y1, z1) y (x2, y2, z2) siempre y cuando los dos vectores estén en la misma base ortonormal.

Ejemplo

Calcular la distancia en línea recta entre el nodo sirius y el nodo nodofcr:

set lat_fcr [::geodesy::deg_to_rad -34.848747]
set lng_fcr [::geodesy::deg_to_rad -56.223655]

set lat_aa  [::geodesy::deg_to_rad -34.893702]
set lng_aa  [::geodesy::deg_to_rad -56.116397]

set xyz_fcr [::geodesy::latlngh_to_xyz $lat_fcr $lng_fcr 52]; # 52m snm
set xyz_aa  [::geodesy::latlngh_to_xyz $lat_aa  $lng_aa  16]

puts "Distancia en línea recta [::geodesy::distance $xyz_fcr $xyz_aa]m"

 
chatirc/uma/geodesy.txt · Última modificación: 2008/02/28 11:31 por mauricio
 
Recent changes RSS feed Creative Commons License Powered by PHP Driven by DokuWiki