Compter des points dans un polygone avec Postgis


16

J'ai un problème simple: je veux compter le nombre de points dans un ensemble de polygones.

J'ai déjà un SQL mais il ne donne que le gid du polygone qui contient réellement des points.

Mes tables: une couche polygonale avec 19 000 lignes et une couche ponctuelle avec 450 lignes.

Le SQL suivant

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

ne renvoient que 320 polygones qui contiennent réellement des points. Mais je veux que tous les polygones soient retournés, même si le nombre de points est 0.

Bien sûr, cela a à voir avec ma clause WHERE. Où dois-je mettre mes st_contains?

Merci Carsten



merci, mais ils ont tous une clause WHERE. Je ne sais pas si j'en ai besoin. Comment le réécririez-vous?
hoge6b01

Réponses:


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;

Salut Nicklas, a obtenu cette réponse de la liste de diffusion, non? Merci à tous
hoge6b01

2
Non, désolé, est-ce similaire? Eh bien, une jointure externe n'est pas
sorcière

1
:-) J'ai dû vérifier la liste. Regardez le timing. Ma réponse ici était avant la liste - réponse, mais comme vous l'avez dit, très similaire :-)
Nicklas Avén

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.