2 votos

Unir atributos de polígonos y puntos por ubicación en QGIS

Tengo dos shapefiles....

  • puntos que contienen un campo numérico "response_time
  • una malla poligonal de polígonos cuadrados que contiene campos que incluyen "PNTCNT" con el número de puntos por polígono, calculado ya con la herramienta "puntos en polígono".

Hay entre 0 y 600 puntos dentro de los límites de cada polígono de la cuadrícula.

Quiero añadir campos a la cuadrícula de polígonos para los tiempos de respuesta medio, mínimo y máximo dentro de cada polígono, además del campo PNTCNT que ya existe.

He probado la herramienta 'Unir atributos por localización', haciendo que la capa de polígonos sea el objetivo y los puntos la capa de unión, y viceversa. He seleccionado 'tomar resumen de características interesantes'.

Pero no consigo el resultado que quiero. Todo lo que obtengo es la rejilla de polígonos de nuevo pero con un campo extra 'COUNT' que replica (o duplica) el campo 'PNTCNT'. No hay min, max y media de los valores de la capa de puntos.

¿Qué estoy haciendo mal? ¿Hay alguna forma mejor de hacerlo? He intentado esto usando QGIS 1.7 y 1.8.

3voto

Blair Conrad Puntos 56195

No tengo tiempo para probar esto, pero en mi cabeza que podría funcionar ... si usted tiene un ID único para cada cuadrado de la cuadrícula, y obtener ese ID en un campo en cada punto, entonces usted debería ser capaz de obtener todas las estadísticas que desee mediante el GroupStats QGIS plugin en la capa de puntos, agrupando por el ID. (a continuación, guardar que, se unen de nuevo a la red y que está en el negocio) Tal vez hay algo más fácil todavía ...

2voto

Michael Burr Puntos 181287

Me parece que hay un fallo en QGIS > Herramientas de gestión de datos > Unir por ubicación en QGIS v1.8.0; al menos en mis casos de prueba de unir puntos a polígonos superpuestos, o polígonos a puntos internos (con diferentes CRS). Supongo que tendrá que exportar alternativamente las formas a PostGIS y realizar consultas espaciales SQL para obtener los resultados que necesita en QGIS.

2voto

neouser99 Puntos 1203

¿Tiene PostGIS instalado? Si es así, es bastante trivial configurar una consulta de actualización una vez que importe sus shapefiles.

UPDATE polylayer SET meantime = averageist, mintime = smallest
, maxtime = biggest FROM (
    SELECT y.id, avg(points.responsetime) As averagist, min(responsetime) As smallest
    , max(responsetime) as biggest
    FROM pointlayer x, polylayer y
    WHERE ST_Intersects(pointlayer.geom, polylayer.geom)
    GROUP BY y.id
) t
WHERE polylayer.id = t.id;

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