Hallo,
ich habe eine Tabelle mit vielen Polygonen (bis zu 80 000 Stück). Ich möchte wissen, welche davon überlappen.
Dazu habe ich folgende Query:
Der Operator '&&' passt soweit.
Range Functions and Operators
Ich muss nur das ganze ein wenig formatieren, weil bei mir die Geometrie in jsonb vorliegt und ich auf das Array mit den Koordinaten per ->> zugreife und die eckigen Klammern durch runde ersetze.
Geometric Types
Die Abfrage dauert leider schon bei etwa 1600 Objekten schon etwa 3 Minuten. Leider finde ich auch keine Möglichkeit das Ergebnis so einzuschränken, dass ich nur die Polygone erhalte, wo die Fläche einen bestimmten Schwellenwert übersteigt, weil bei mir fast alle Polygone sich minimal überschneiden, ich möchte jedoch welche, die sich signifikant überlappen.
Es gibt wohl eine Art Plugin für Postgres: Postgis. Jedoch kann ich das nicht einfach auf die schnelle installieren. Die Funktionen von Postgres scheinen ja irgendwie die selben zu sein.
Mache ich da etwas grundsätzlich falsch? Unterscheiden sich die Algorithmen bei Postgres und Postgis?
ich habe eine Tabelle mit vielen Polygonen (bis zu 80 000 Stück). Ich möchte wissen, welche davon überlappen.
Dazu habe ich folgende Query:
Code:
SELECT
distinct t1.id, t2.id
FROM
objekt AS t1, objekt AS t2
WHERE
polygon(replace(replace(t1.shape ->> 'coordinates', '[', '('), ']', ')')) && polygon(replace(replace(t2.shape ->> 'coordinates', '[', '('), ']', ')')) AND
t1.id <> t2.id;
Der Operator '&&' passt soweit.
Range Functions and Operators
Ich muss nur das ganze ein wenig formatieren, weil bei mir die Geometrie in jsonb vorliegt und ich auf das Array mit den Koordinaten per ->> zugreife und die eckigen Klammern durch runde ersetze.
Geometric Types
Die Abfrage dauert leider schon bei etwa 1600 Objekten schon etwa 3 Minuten. Leider finde ich auch keine Möglichkeit das Ergebnis so einzuschränken, dass ich nur die Polygone erhalte, wo die Fläche einen bestimmten Schwellenwert übersteigt, weil bei mir fast alle Polygone sich minimal überschneiden, ich möchte jedoch welche, die sich signifikant überlappen.
Es gibt wohl eine Art Plugin für Postgres: Postgis. Jedoch kann ich das nicht einfach auf die schnelle installieren. Die Funktionen von Postgres scheinen ja irgendwie die selben zu sein.
Mache ich da etwas grundsätzlich falsch? Unterscheiden sich die Algorithmen bei Postgres und Postgis?