Conta i punti in poligono con Postgis


16

Ho un semplice problema: voglio contare il numero di punti all'interno di una serie di poligoni.

Ho già un SQL ma restituisce solo il gid del poligono che in realtà contiene punti.

Le mie tabelle: uno strato poligonale con 19.000 righe e uno strato punto con 450 righe.

Il seguente SQL

select grid.gid, count(*) AS totale FROM grid, kioskdhd3 WHERE 
st_contains(grid.geom,kioskdhd3.geom) GROUP BY grid.gid;

restituisce solo circa 320 poligoni che contengono effettivamente punti. Voglio che tutti i poligoni vengano restituiti, anche se il numero di punti è 0.

Naturalmente ha a che fare con la mia clausola WHERE. Dove devo inserire i miei st_contains?

Grazie Carsten



grazie, ma hanno tutti una clausola WHERE. Non so se ne ho bisogno. Come lo riscriveresti?
hoge6b01

Risposte:


23
SELECT grid.gid, count(kioskdhd3.geom) AS totale 
FROM grid LEFT JOIN kioskdhd3 
ON st_contains(grid.geom,kioskdhd3.geom) 
GROUP BY grid.gid;

Ciao Nicklas, hai ricevuto questa risposta dalla mailing list, giusto? Grazie a tutti
hoge6b01

2
No, scusa, è simile? Bene, un legame esterno non è scienza missilistica quando si tratta di database relazionali ;-)
Nicklas Avén

1
:-) Ho dovuto controllare l'elenco. Guarda i tempi. La mia risposta qui era prima della lista-risposta, ma come hai detto, molto simile :-)
Nicklas Avén

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.