sábado, 25 de marzo de 2017

Calcular orientación o dirección de líneas en QGIS

Al hacer adqusición de datos geofísicos en el mar, la embarcación debe realizar una serie de "líneas de adquisición" las cuáles por lo general son un conjunto de rutas paralelas entre si y otras perpendículares. En muchos casos se planifican para que sean norte-sur y este-oeste. Cada una de estas líneas es indentificada para facilitar el acceso a los datos asociados a ellas.

Recientemente recibí unas líneas de adqusición que formaban una cuadrícula, con variaciones debido a que las embarcaciones no pueden mantener un rumbo exacto durante su navegación. Estas líneas tenían un inconveniente, en realidad eran un conjunto muy grande de segmentos, cada segmento era un objeto espacial. La tarea que debía hacer era que cada línea se convirtiera en un objeto único en lugar de un conjunto de objetos. La primero que se me ocurrió hacer fue seleccionar las líneas de acuerdo a su orientación para luego unirlas. Sin embargo, primero debía saber la dirección de cada línea o segmenteo. Esto lo pude hacer incorporando un campo nuevo en el que se introdujo automáticamente el valor de la orientación o dirección de las líneas. La solución la obtuve aquí y a continuación les dejo la expresión que deben usar en el campo nuevo para optener la dirección de las líneas.
case
when yat(-1)-yat(0) < 0 or yat(-1)-yat(0) > 0 then 
(atan((xat(-1)-xat(0))/(yat(-1)-yat(0)))) * 180/3.14159 + 
(180 *
(((yat(-1)-yat(0)) < 0) + 
(((xat(-1)-xat(0)) < 0 AND (yat(-1) - yat(0)) >0)*2)
))
when ((yat(-1)-yat(0)) = 0 and (xat(-1) - xat(0)) >0) then 90
when ((yat(-1)-yat(0)) = 0 and (xat(-1) - xat(0)) <0) then 270
end
 Posteriormente publicaré el resto del procedimiento con el que solucioné mi problema.