Esta pregunta Calcular el campo de visión/ángulo de un punto a un shapefile intentaba conseguir un resultado similar a mi necesidad (calcular el ángulo de visión entre las ubicaciones de los observadores y un polígono). La imagen de la pregunta se muestra a continuación para facilitar, con el ángulo de interés es alfa:
Mi solución es utilizar una capa virtual para calcular el rumbo entre cada punto de vista y cada uno de los nodos de la capa de polígonos y luego utilizar expresiones agregadas para darme la información que necesito.
Actualmente tengo el siguiente código pero al probarlo arroja un error de sintaxis (1 - cerca de ".": error de sintaxis) que no puedo solucionar (puede haber otros errores y no estoy convencido de que sea el código más óptimo pero me gustaría utilizar una capa virtual).
SELECT
vp_union.*,
minimum(vp_union.bearing) AS bearing_min,
median(vp_union.bearing) AS bearing_med,
maximum(vp_union.bearing) AS bearing_max,
range(vp_union.bearing) AS bearing_range,
distance(
vp_union.geometry,
closest_point(
st_union(redline_outer.geometry),
vp_union.geometry
),
vp_union.geometry
) AS distance
FROM
(SELECT
vp.*,
degrees(
azimuth(
vp.geometry,
redline_nodes.geometry
)
) AS vp.bearing
FROM
"Viewpoint Layer 2D" AS vp
UNION
(SELECT
nodes_to_points(
st_union(redline.geometry)
) AS geometry
FROM
"Redline" AS redline
) AS redline_nodes
) AS vp_union,
"Redline" AS redline_outer
GROUP BY
vp_union.name