Processing math: 100%

4 votos

QGIS: Seleccionar punto(s) en otra capa con valor de fecha similar de la selección

Para la interpretación de las observaciones de aves, necesito identificar la posición en una pista GPS (archivos gpx), a partir de la cual se registró la posición de una observación de aves (otra capa gpx-waypoint).

Las pistas se graban en un dispositivo Android con la aplicación Locus. Cuando se observa un ave, se crea un nuevo punto en el mapa en una capa de puntos diferente.

Para la interpretación posterior de los resultados, sería bueno poder identificar la posición desde la que se tomó la observación.

Estoy buscando la forma de desarrollar una herramienta en la que uno pueda seleccionar un punto en la capa de aves, hacer clic en un botón, y los puntos de pista correspondientes se resaltan de alguna manera.

Para empezar, necesito averiguar en general, cómo puedo hacer una consulta de selección a través de dos capas con el valor tomado de una característica seleccionada en la primera capa. enter image description here El siguiente problema sería entonces, que las marcas de tiempo de ambas capas nunca son completamente iguales, como se puede ver en el ejemplo, por lo que en la mayoría de los casos, la hora exacta de la observación estará entre dos puntos de pista, por lo que una comparación dura de las dos capas no es posible.

2voto

He jugado un poco con las funciones agregadas y he conseguido algo que puede ser útil. No hace todo lo que quieres, pero tal vez será de alguna utilidad.

Hice dos capas: una para las aves llamada "Avistamientos", con una columna llamada "Tiempo de observación";

y otro para los waypoints llamado "Tracks" con una columna llamada "PositionTime"

Utilicé la calculadora de campos para añadir una columna calculada a la capa de avistamientos con la expresión:

aggregate('Tracks','max',PositionTime,
          PositionTime<=attribute(,'ObservationTime'))

La función busca en las capas de Tracks y recupera el PositionTime máximo que es Menor o igual que el Tiempo de Observación.

Estoy asumiendo que todos los valores de tiempo para los waypoints serán únicos y por lo tanto el PositionTime sería una buena manera de identificar una fila en particular.

También asumí que el PositionTime debe ser menor que el ObservationTime porque la observación no podría haber sido hecha desde una posición antes de haber sido alcanzada. En realidad supongo que los waypoints son muestras a lo largo de un camino que cambia constantemente y una posición con un tiempo ligeramente posterior a la observación puede, en algunos casos, ser una aproximación más cercana a la verdadera posición. Si eso realmente importa, podrías añadir una segunda columna calculada que seleccione la PosiciónTiempo mínima que sea mayor que la ObservaciónTiempo, de modo que hayas identificado las dos posiciones más cercanas. Podría combinar ambas en una expresión complicada con una sentencia if que elija si la hora más temprana o la más tardía está más cerca de la ObservationTime.

Espero que esto ayude.

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