GeographicCalculator

Módulo: digi3d

Realiza cálculos geográficos (áreas, perímetros, distancias y azimuts) en el sistema de coordenadas de la ventana de dibujo. Se obtiene de DrawingView.geographic_calculator.

Métodos

Método Devuelve Descripción
calculate_area(coordinates) float Área del polígono formado por las coordenadas.
perimeter_2d(coordinates) float Perímetro 2D del conjunto de coordenadas.
perimeter_3d(coordinates) float Perímetro 3D del conjunto de coordenadas.
calculate_distance_azimuth(point_a, point_b) tuple (azimut_ab, azimut_ba, distancia_2d, distancia_3d).
calculate_distance_2d(point_a, point_b) float Distancia 2D entre dos puntos.
calculate_distance_3d(point_a, point_b) float Distancia 3D entre dos puntos.
calculate_trigonometric_angle(point_a, point_b) float Ángulo trigonométrico de la recta que va de point_a a point_b, en grados sexagesimales, en sentido antihorario desde el eje X. Es la unidad de rotation en Point y Text.

Las coordenadas se pasan como listas de tuplas (x, y, z); los puntos, como tuplas (x, y, z).

Si el sistema de referencia de coordenadas horizontal de la ventana de dibujo es geográfico, x es la longitud y y es la latitud, en la unidad angular del sistema (por ejemplo, grados centesimales en el sistema Nouvelle triangulation de la France (NTF), con meridiano de París, código 4807 del registro del grupo European Petroleum Survey Group, EPSG). Las distancias 2D, los perímetros 2D y los acimuts se calculan con la geodésica sobre el elipsoide del sistema. La distancia 3D de cada segmento es la raíz cuadrada de la suma del cuadrado de la distancia geodésica y del cuadrado de la diferencia de z entre los extremos del segmento, y el perímetro 3D suma las distancias 3D de los segmentos. El área se calcula proyectando los vértices con la proyección de Lambert azimutal equivalente centrada en el primer vértice.

Ejemplo

import digi3d

calc = digi3d.current_view().geographic_calculator

area = calc.calculate_area([(0, 0, 0), (100, 0, 0), (100, 100, 0), (0, 100, 0)])
az_ab, az_ba, d2d, d3d = calc.calculate_distance_azimuth((0, 0, 0), (100, 50, 10))

Véase también