6 votos

¿Cómo se suma el área de polígonos por valores que ocurren en varios campos?

Los datos de mi cuenta con 2 campos de la celebración de tipos de uso de la tierra, que tanto describir lo que está dentro del polígono. Por ejemplo, el polígono puede tener Tipo1=Minorista, Tipo2=Zona de Ocio= 1 pero de otro polígono tiene Tipo1=Ocio, Tipo2=Área de la Piscina=3

Quiero descubrir el área total de polígonos con un Minorista de atributo, de Ocio atributo etc.. para construir una tabla como:

Retail 1
Leisure 4
Swimming Pool  3

etc. Por supuesto, algunos polígonos será contado en varias categorías, pero esto está bien para lo que estoy trabajando.

En algunos casos el polígono puede tener Tipo1= Minorista, Tipo2= Retail. En este caso, el área debe ser sólo se cuentan una vez.

Puedo pedir PostGIS a la suma de las áreas de todos los valores que encuentra en los campos, sin que yo tenga que escribir/ejecutar una consulta para cada uno de los tipos (hay un montón)?

2voto

Symmetric Puntos 158

Yo no soy experto en SQL, pero esto funciona para mí.

Mi definición de la tabla se parece a esto:

CREATE TABLE test(id integer PRIMARY KEY, type1 varchar(32), type2 varchar(32), area double precision);

Y puedo crear estas entradas:

 id |   type1   |     type2     | area
----+-----------+---------------+------
  0 | Retail    | Leisure       |    1
  1 | Leisure   | Swimming Pool |    3
  2 | Retail    | Computers     |    5
  3 | Municipal | Municipal     |   50

Lo que he hecho es hacer una UNION en los dos tipos de columnas de la misma tabla, entonces la suma de las áreas resultantes:

SELECT f.type, SUM(f.area) FROM (
SELECT type1 AS type, area
FROM test
UNION
SELECT type2 AS type, area
FROM test
) AS f
GROUP BY f.type;

Lo que me da el resultado:

     type      | sum
---------------+-----
 Swimming Pool |   3
 Leisure       |   4
 Municipal     |  50
 Retail        |   6
 Computers     |   5

Nota cómo Municipal tiene una superficie de 50, en lugar de 100. Si yo hubiera hecho un UNION ALL habría contado ambas columnas y se suman a ellos juntos.

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