Zähle Punkte im Polygon mit Postgis


16

Ich habe ein einfaches Problem: Ich möchte die Anzahl der Punkte innerhalb eines Satzes von Polygonen zählen.

Ich habe bereits eine SQL, aber sie gibt nur die GID des Polygons zurück, das tatsächlich Punkte enthält.

Meine Tabellen: eine Polygonebene mit 19.000 Zeilen und eine Punktebene mit 450 Zeilen.

Die folgende SQL

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

Es werden nur 320 Polygone zurückgegeben, die tatsächlich Punkte enthalten. Aber ich möchte, dass alle Polygone zurückgegeben werden, auch wenn die Anzahl der Punkte 0 ist.

Das hat natürlich mit meiner WHERE-Klausel zu tun. Wo muss ich meine st_contains ablegen?

Vielen Dank Carsten



Danke, aber alle haben eine WHERE-Klausel. Ich weiß nicht, ob ich einen brauche. Wie würden Sie es neu schreiben?
Hoge6b01

Antworten:


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;

Hallo Nicklas, hast du diese Antwort von der Mailingliste? Vielen Dank an alle
hoge6b01

2
Nein, tut mir leid, ist es ähnlich? Nun, eine äußere Verbindung ist keine
Hexerei im

1
:-) Ich musste die Liste überprüfen. Schau dir das Timing an. Meine Antwort hier war vor der Liste-Antwort, aber wie Sie sagten, sehr ähnlich :-)
Nicklas Avén

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.