4 votos

Contando líneas en polígonos en PostGIS

Tengo una red capa de polígonos y una capa de línea.

Una vez importados en PostGIS (vamos a llamar a las tablas poly y line), ¿cómo se puede crear una consulta (con ST_Intersect , por ejemplo) que cuenta el número de intersecciones con polígonos (el mismo que el de QGIS herramienta: MMQGIS > Spatial Join > Intersects > First)

y devuelve el poly tabla con una columna adicional que contiene la suma de las intersecciones por polígono?

En algunos casos, la misma línea se cruzará con el mismo polígono más de una vez, y en ese caso, no sólo se cuentan una vez.

Hasta el momento, tengo esto:

 CREATE TABLE sp_join AS
 SELECT polygons.* COUNT (l.*)
 FROM  polygons as p
 JOIN lines l ON  ST_Intersects(p.wkb_geometry, lines.wkb_geometry)

2voto

M. B. Altaie Puntos 11

Con el fin de crear una nueva tabla con todas las columnas y filas con un recuento de la superposición de figuras, es necesario utilizar un LEFT OUTER JOIN a rellenar las filas en las que no hay datos:

CREATE TABLE sp_join AS
    SELECT polygons.*, count(l.idcol) as line_count
    FROM  polygons p
    LEFT OUTER JOIN lines l ON
        ST_Intersects(p.wkb_geometry, l.wkb_geometry)
    GROUP BY p.idcol

Esto supone que una columna de clave principal nombre idcol existe en cada tabla.

El comportamiento predeterminado es sólo devolver una fila de una vez donde hay múltiples intersecciones, así que no hay nada especial que se requiere en este sentido.

Tenga en cuenta que es confuso nombre de una columna de "geometría" tipo "wkb_geometry", porque no es el almacenamiento de los datos en formato WKB -- "geom" o "punto"/"línea"/"poli" describir mejor la columna. La mejor práctica sería explícitamente lista de cada columna en la SELECT lista, pero que no proporcionan los nombres de columna.

1voto

Xavier Nodet Puntos 2498

Suponiendo que ambas tablas tienen una clave primaria denominada gid.

Yo no lo puedo probar ahora pero podría funcionar algo como esto:

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