Processing math: 100%

4 votos

La matriz de distancia de QGIS 3.4 devuelve el punto equivocado

Estoy utilizando la Matriz de Distancia para encontrar el punto más cercano entre un conjunto (4 puntos) y otro conjunto (4 puntos), detallado a continuación. Todos los resultados se ven bien, excepto uno, donde el punto devuelto no es el más cercano. ¿Alguna idea de qué es lo que estoy haciendo mal?

Conjunto 1 (entrada)

Set 1 (input)

Conjunto 2 (objetivo)

Set 2 (target)

La capa de salida muestra lo siguiente. Sin embargo, TargetID para 1 debería ser 3, y no 2. Por cierto, hice otra capa de matriz de distancia donde la opción "Usar sólo el punto objetivo más cercano (k)" era 0, dando una salida de todas las distancias entre todos los puntos, y efectivamente la distancia entre 1 (bilbao) y 3 (oviedo) era menor que la distancia entre 1 (bilbao) y 2 (alcala de henares), lo que sugiere que qgis conoce la distancia correcta entre puntos pero devolvió una incorrecta cuando estoy buscando sólo el punto más cercano.

Capa de la matriz de distancia

Distance Matrix layer

2voto

Braiam Puntos 120

Parece un error y/o una proyección incorrecta.

Utilizando las distancias en grados largos (que no significan mucho), el resultado es el adecuado. Utilizando las distancias reales al suelo (en metros), las distancias reportadas son las adecuadas.

with src as (select 1 as id, st_makepoint(-2.92391,43.25722) as geom),
dest (id, geom) as (values (2, st_makePoint(-3.36708, 40.48227)),(3,st_makePoint(-5.84372, 43.36232)))
SELECT src.id, dest.id, 
       ST_Distance(src.geom,dest.geom) d_degrees, 
       ST_Distance(src.geom::geography,dest.geom::geography) d_meters
from src, dest;

 id | id |    d_degrees     |    d_meters
----+----+------------------+-----------------
  1 |  2 | 2.81011514913535 | 310402.55232612
  1 |  3 | 2.92170095083326 | 237160.04795382

Mirando el código En el caso de la función de cálculo del vecino más cercano, vemos que se utilizan dos funciones diferentes para obtener el vecino más cercano (utilizando el índice espacial) y para calcular la distancia. Mi opinión es que la función que calcula el vecino más cercano no tiene en cuenta la unidad ni se ajusta a la geografía.

Yo recomendaría proyectar sus datos a un CRS que utilice metros, como UTM.

También puedes rellenar un informe de errores.

0 votos

Muchas gracias. Tengo curiosidad. Si mis resultados estaban en metros, ¿no significa que mi CRS también utiliza metros? El CRS que utilicé era ETRS89 / zona UTM 30N.

0 votos

@GeoTrip No, las distancias reportadas siempre estarán en metros, aunque la capa no esté proyectada. Las coordenadas que se muestran en la pregunta no están en UTM sino en lat-long. Asegúrate de que la capa está proyectada en UTM, que no estás haciendo la proyección sobre la marcha poniendo el CRS del proyecto en UTM

0 votos

Bien, lo tengo. He podido solucionar este problema. Aparentemente, estaba haciendo la proyección sobre la marcha, así que guardé mis archivos de puntos como archivos de forma con el CRS establecido en UTM, y utilicé los archivos guardados. No estoy 100% seguro de que eso es lo que tenía que hacer en primer lugar, pero de todos modos, ahora la matriz de distancia devuelve la distancia más corta correcta para todos los puntos. Gracias de nuevo @JGH. ¡Tu ayuda es muy apreciada!

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X