Problem mit ST_CONTAINS

Probleme, Fragen die mit der Installation und Anwendung der PostGIS-Erweiterung zu tun haben.
Antworten
Sevi
Neuer Benutzer
Beiträge: 1
Registriert: Do 16. Jan 2020, 15:45

Problem mit ST_CONTAINS

Beitrag von Sevi »

Hallo zusammen,

ich bin noch sehr unerfahren mit Datenbanken und arbeite mich erst seit kurzer Zeit ein und komme nun bei einem Problem nicht mehr weiter:
Für ein kleines GIS-Projekt habe ich nun einen quadratischen Buffer um vorhandene Punktkoordinaten erstellt (Statement N°1) und möchte weiter eine VIEW ertellen in welcher mir die Punkte der Arealstatistik Schweiz (ein "Punktgitter" wobei alle 100m in x- und y-Richtung ein Punkt liegt), welche innerhalb des entsprechenden Buffers sind, ausgespuckt werden (Statement N°2).

- Die VIEW wird ohne Fehlermeldung erstellt, jedoch sind, ausser den gewünschten Spaltennamen, keine Daten da.

Ich versuchte dann noch einfach eine Abfrage mit ST_CONTAINS zu erstellen (Statement N°3). Das Statement scheint korrekt zu sein und eigentlich das gleiche machen wie beim erstellen der VIEW (?), jedoch läuft die Abfrage nach 15min. immer noch.

Vielleicht spielt es auch noch eine Rolle, dass die Bufferquadrate sich teilweise überlappen?
Wenn mich da irgendwer aufklären kann, was ich falsch mache, bin ich sehr dankbar für eure Hilfe!

Liebe Grüsse,
Sevi




Statement N°1:
ALTER TABLE public.Koordinaten_fallen_2056

ADD COLUMN Buffer_100m geometry,
ADD COLUMN Buffer_200m geometry,
ADD COLUMN Fitting_rectangle_400m2 geometry,
ADD COLUMN Fitting_rectangle_1600m2 geometry;

UPDATE public.Koordinaten_fallen_2056
SET Buffer_100m = ST_BUFFER (geom,100);

UPDATE public.Koordinaten_fallen_2056
SET Buffer_200m = ST_BUFFER (geom,200);

UPDATE public.Koordinaten_fallen_2056
SET Fitting_rectangle_400m2 = ST_ENVELOPE (Buffer_100m);

UPDATE public.Koordinaten_fallen_2056
SET Fitting_rectangle_1600m2 = ST_ENVELOPE (Buffer_200m);


Statement N°2:
CREATE VIEW Fallenstandorte_mit_Arealstatistik AS

SELECT
public.Koordinaten_fallen_2056.survyear,
public.Koordinaten_fallen_2056.x,
public.Koordinaten_fallen_2056.y,
public.Koordinaten_fallen_2056.fitting_rectangle_400m2,
public.area_noas04_2056.as85r_72,
public.area_noas04_2056.as97r_72,
public.area_noas04_2056.as09_72

FROM
public.area_noas04_2056,
public.Koordinaten_fallen_2056

WHERE ST_CONTAINS (public.Koordinaten_fallen_2056.fitting_rectangle_400m2, public.area_noas04_2056.geom)


Statement N°3:
SELECT ST_CONTAINS (public.Koordinaten_fallen_2056.fitting_rectangle_400m2, public.area_noas04_2056.geom) AS Arealstatistik,
public.Koordinaten_fallen_2056.fitting_rectangle_400m2,
public.area_noas04_2056.geom

FROM
public.area_noas04_2056,
public.Koordinaten_fallen_2056

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

Re: Problem mit ST_CONTAINS

Beitrag von akretschmer »

auf dem ersten Blick habe ich den Eindruck, daß Du mit Deinem 'select ... from tablea, tableb' ein Crossjoin produzierst...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten