1 votos

SQL: detectar puntos inválidos fuera de una característica superpuesta

Estoy usando el último software de QGIS. Estoy trabajando en este script para la selección básica de puntos de geometría inválida más allá del contexto de superposición, ¿cómo podría terminar de escribirlo en la cláusula WHERE utilizando los comandos postGIS?

SELECT *
FROM cougar_sample_points, NM_GMU

WHERE (NOT st_intersection(NM_GMU.geometry, cougar_sample_points.geometry))

El script actual parece hacer lo contrario de lo que dice, encuentra 154 puntos de 160, los que están dentro del límite en lugar de los 6 que están fuera de él. Si quito el "not", obtengo más de 1000 registros, como haría una consulta de tabla cruzada.

¿Qué sugieres?

Querré eliminar esos registros después de resaltar la selección.

Descubrí cómo hacer esto en la tabla de atributos muy bien, pero quiero aprender el SQL.

¿Alguien sabe dónde encontrar documentación de calidad sobre SQL en estos comandos?

1voto

Braiam Puntos 120

El problema es que si un punto está dentro del polígono A, también está fuera del polígono B. Para superar esto, puedes usar una cláusula where exists para ignorar puntos que estén dentro de cualquier polígono.

Ten en cuenta que no necesitamos calcular la intersección (st_intersection) en sí, solo necesitamos saber si se intersectan o no (st_intersects)

SELECT *
FROM cougar_sample_points
WHERE NOT EXISTS (
   SELECT 1 
   FROM NM_GMU
   WHERE st_intersects(NM_GMU.geometry, cougar_sample_points.geometry)
)

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