Más

¿Cómo recalcular la longitud de una cadena de líneas de geografía desde un punto geográfico cercano en POSTGIS?

¿Cómo recalcular la longitud de una cadena de líneas de geografía desde un punto geográfico cercano en POSTGIS?


Tengo una cadena de líneas de tipo geografía * route_geography geography (LineString, 4326) *, es una ruta desde el punto A hasta el punto B. Ahora tengo un punto C cerca de esa línea. Quiero encontrar el punto más cercano en esa línea, llamémoslo D. Y luego calcular la distancia entre D y B.

¿Debo usar * ST_Line_Locate_Point () * para encontrar el punto D?

Y si encuentro el punto D, ¿debo usar * ST_Line_Substring () * para dividir la cadena de líneas AB para hacer una nueva cadena de líneas DB?

Estas dos funciones son para el tipo de geometría, no para la geografía en la que se encuentran mis datos, entonces, ¿qué debo hacer?


Solo necesita multiplicar el valor de retorno de ST_Line_Locate_Point por la longitud de la ruta para obtener la longitud de A a D, ya que

ST_Line_Locate_Point: devuelve un flotante entre 0 y 1 que representa la ubicación del punto más cercano en LineString al punto dado, como una fracción de la longitud total de la línea 2d.

Para uso de D a B

(1 - ST_Line_Locate_Point) * longitudA-B

Sí, necesita una combinación de ST_Line_Interpolate_Point y ST_Line_Locate_Point, utilizando los términos de su ejemplo y asumiendo que ya tiene una cadena de líneas de su ruta de A a B,

ST_Distance_Sphere (ST_Line_Interpolate_Point (lineAtoB, ST_Line_Locate_Point (lineAtoB, pointC)), pointB)

Ver el vídeo: Ubicar un punto exacto en el mapa Latitud y Longitud