Problema directo-inverso de la Geodesia con PostGIS

Con la incorporación de los métodos ST_Project y ST_Azimuth más el ya estudiado ST_Distance es posible resolver el problema directo e inverso de la Geodesia de forma sencilla con PostGIS.

With the incorporation of the ST_Project and ST_Azimuth methods plus the already studied ST_Distance it is possible to solve the direct and inverse Geodesy problem in a simple way with PostGIS.

A partir de la versión 2.2.-2.4, PostGIS utiliza la biblioteca GeographicLib [1]  para los cálculos sobre el esferoide en algunos de sus métodos como: ST_Area, ST_Project, ST_Azimuth, ST_Distance, etc. Esta biblioteca aporta más precisión y fiabilidad a PostGIS en este tipo de cálculos sobre el esferoide.

As of version 2.2.-2.4, PostGIS uses the GeographicLib library [1] for calculations on the spheroid in some of its methods such as ST_Area, ST_Project, ST_Azimuth, ST_Distance, etc. This library provides more precision and reliability to PostGIS in this type of calculations on the spheroid.

Resuelve el problema directo de la Geodesia. A partir de un punto A de coordenadas Longitud = 40.5º y Latitud = -60.4º en el esferoide WGS84, calcula las coordenadas de un punto B situado a 500000 m de distancia del A y con un azimut (AB) de 24.6º.

Solve the direct problem of Geodesy. From a point A of coordinates Longitude = 40.5º and Latitude = -60.4º on the spheroid WGS84, calculate the coordinates of a point B located at 500000m distance from A and with an azimuth (AB) of 24.6º.

s1=# select st_astext(st_project ('SRID=4326;POINT (-60.4 40.5)'::geography, 500000, radians (24.6)));
-----------------------------------------
 POINT(-57.78175880527 44.5639942127339)

 

El problema inverso de la geodesia vendría dado por el cálculo del azimut (AB y BA) y la distancia sobre el esferoide entre dos puntos A y B.

The inverse problem of geodesy would be given by the calculation of the azimuth (AB and BA) and the distance on the spheroid between two points A and B.

s1=# select st_distance (g1, g2),
       degrees(st_azimuth (g1,g2)) azab, degrees(st_azimuth (g2,g1)) azba 
  from (select
    'SRID=4326;POINT (-60.4 40.5)'::geography as g1,
    'SRID=4326;POINT (-57.78175880527 44.5639942127339)'::geography as g2
  ) as tabla;
 st_distance |     dazab         |      azba
-------------+------------------+-------------------
      500000 | 24.5999999999998 | -153.628779967326

 

[1] La biblioteca GeographicLib ( https://geographiclib.sourceforge.io/ ) implementa cálculos fiables sobre el esferoide. El autor Charles Karney aporta versiones en C, Python, Java, Matlab, etc. así como ejemplos y una buena documentación. Además el sitio web incorpora herramientas online como una muy buena calculadora geodésica: https://geographiclib.sourceforge.io/cgi-bin/GeoConvert

 [1] The GeographicLib library (https://geographiclib.sourceforge.io/) implements reliable calculations on the spheroid. The author Charles Karney provides versions in C, Python, Java, Matlab, etc. as well as examples and good documentation. In addition, the website incorporates online tools such as a very good geodetic calculator: https://geographiclib.sourceforge.io/cgi-bin/GeoConvert

Este artículo ha sido extraido de libro del cual soy autor: PostGIS: Análisis Espacial Avanzado 

Nueva edición del libro de PostGIS (segunda edición, 2018)

libro_postgis_ed2

Os quiero presentar la edición actualizada (segunda edición) publicada hoy mismo del libro de «PostGIS: Análisis Espacial Avanzado«.

Más información aquí

Aproximadamente un 20% del libro es material nuevo (572 páginas), y un 30-40% son modificaciones, actualizaciones y pequeñas mejoras debido a las nuevas versiones de PostgreSQL/PostGIS utilizadas, así como a diferentes correcciones y/o ampliaciones realizadas.

Si ya dispones de la primera edición del libro te apunto las novedades principales para valorar si necesitas adquirir esta nueva edición:

  • Análisis espacial 3D con SFCGAL.
  • Tratamietno de geometrías superficiales.
  • Ampliación de geometrías curvas.
  • Subcontulas correladas y laterales espaciales.
  • Consultas espaciales paralelas.
  • Herencias de tablas y particiones. Particiones declarativas.
  • Índices KNN (subconsultas correladas), BRIN.
  • Actualizaciones de pgrouting y pgversion, y algebra de mapas ráster.
  • Definiciones algebraicas de las reglas de topología.
  • Actualizaciones debido a las nuevas versiones de PostgreSQL/PostGIS.