Polygon Überschneidungen verhindern

Probleme, Fragen die mit der Installation und Anwendung der PostGIS-Erweiterung zu tun haben.
Antworten
bernd.laskowski
Neuer Benutzer
Beiträge: 14
Registriert: Di 27. Jan 2009, 17:46

Polygon Überschneidungen verhindern

Beitrag von bernd.laskowski » Fr 13. Jan 2017, 10:15

Hallo liebe Forums-Mitglieder,

ich würde gerne mittels check constraint verhindern, dass User einen Datensatz abspeichern können, dessen Flächen andere bereits vorhandene Flächen überschneiden/überlagern würde.
Ist das irgendwie möglich?

Mein Ansatz wäre so in der Art:
CHECK (st_overlaps(the_geom, the_geom????) = true)
Mir fehlt nur jegliche Idee, wie man die erforderliche zweite Geometrie (die benachbarten Flächen) bekommen kann.
Oder gibt es da bessere Möglichkeiten?

Wäre für diesen Zweck eigentlich st_overlaps() oder st_interersects() (deren Unterschied mir nicht ganz klar ist) oder was sonst die bessere Wahl?

Gruß
Bernd

akretschmer
Erfahrener Benutzer
Beiträge: 7410
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Polygon Überschneidungen verhindern

Beitrag von akretschmer » Fr 13. Jan 2017, 10:28

Du meinst, es sollen sich innerhalb der Tabelle keine Flächen überschneiden?

Ich bin mir jetzt nicht sicher, bin kein PostGIS-Experte, aber das könnte über einen Exclusion Constraint gehen, wie folgt:

Code: Alles auswählen

test=*# create table demo(id int primary key, flaeche geometry, exclude using gist (flaeche with &&));
CREATE TABLE
Dies sollte verhindern, daß sich 2 Flächen überschneiden, aber ohne Garantie ...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Gisman
Erfahrener Benutzer
Beiträge: 1094
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Re: Polygon Überschneidungen verhindern

Beitrag von Gisman » So 15. Jan 2017, 18:00

Bei st_overlaps müssen mindestens 1 Punkte des Polygons im anderen liegen, bei st_intersects reicht es, wenn sie sich am Rand berühren WIMRE.

Gruß Uwe

akretschmer
Erfahrener Benutzer
Beiträge: 7410
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Polygon Überschneidungen verhindern

Beitrag von akretschmer » So 15. Jan 2017, 18:03

Hi Gisman,

klappt das mit dem Exclusion Constraint wie von mir vorgeschlagen?
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

bernd.laskowski
Neuer Benutzer
Beiträge: 14
Registriert: Di 27. Jan 2009, 17:46

Re: Polygon Überschneidungen verhindern

Beitrag von bernd.laskowski » Mo 16. Jan 2017, 15:40

Nein, mit dem Exclude Constraint funktioniert es leider nicht.
Das liegt sicherlich am &&-Operator, da sich dieser lediglich auf die Bounding-Boxen (Äußerer rechteckiger Rahmen eines Objektes) bezieht.

Wenn ich nur eine Idee hätte, wie ich die Nachbargrundstücke herausfinde und in der Funktion st_intersects verwenden kann.

Gruß
Bernd

bernd.laskowski
Neuer Benutzer
Beiträge: 14
Registriert: Di 27. Jan 2009, 17:46

Re: Polygon Überschneidungen verhindern

Beitrag von bernd.laskowski » Mo 16. Jan 2017, 15:44

ups....
ich meinte natürlich st_overlaps, nicht st_intersects (wie ich von Gisman gelernt habe).
Gruß
Bernd

Antworten