[FOSSGIS-Talk] ST_Difference ohne Eingabegeometrien

R. Reiterer r.reiterer at posteo.at
Do Sep 15 20:46:24 CEST 2016


Hallo Bernhard,

ja, das ist mir weitgehend bewusst. Ich melde mich wieder, sobald die 
Abfrage funktioniert wie sie soll.

Schöne Grüße,

Reinhard

Am 15.09.2016 08:07 schrieb Bernhard Ströbl:
> Hallo Reinhard,
> 
> ich meinte nicht, dass Du GROUP BY weglassen solltest, sondern, warum
> es nicht in der Klammer steht.
> COALESCE gibt den ersten NOT NULL-Wert in einer Reihe von Werten
> zurück, deshalb meine Frage, ob es sich um eine NULL oder eine leere
> Geometrie handelt.
> 
> Grüße
> 
> Bernhard
> 
> Am 14.09.2016 um 22:09 schrieb R. Reiterer:
>> Hallo Bernhard,
>> 
>> vielen Dank für deine Antwort. ST_Dump nutze ich um Multipolygone in
>> Einzelpolygone zu zerlegen, etwa wenn eine Gewässergeometrie eine
>> Grünlandgeometrie in mehrere Teile zerteilt. Ohne GROUP BY erhalte ich
>> eine Fehlermeldung:
>> 
>> column "gruenland.geom" must appear in the GROUP BY clause or be used 
>> in
>> an aggregate function
>> LINE 7:   (ST_Dump(ST_Difference(gruenland.geom, 
>> ST_Union(gewaeser.geom...
>> 
>> Zu COALESCE habe ich mir leider keine Notizen beim Erstellen der 
>> Abfrage
>> gemacht :/ Ich bin davon ausgegangen, dass COALESCE nötig ist, um die
>> Grünlandgeometrien zu erhalten, wenn keine räumliche Überschneidung 
>> mit
>> bestehenden Gewässergeometrien vorliegt. Anscheinend ist dies aber - 
>> wie
>> soeben getestet - nicht der Fall. Näheres möchte ich mir in den 
>> nächsten
>> Tagen ansehen.
>> 
>> Schöne Grüße,
>> 
>> Reinhard
>> 
>> Am 14.09.2016 07:52 schrieb Bernhard Ströbl:
>>> Hallo Reinhard,
>>> 
>>> ich bin jetzt nicht sicher aber ich vermute, dass COALESCE da nicht
>>> richtig ist. Hast Du es schon mal mit ST_IsEmpty() probiert
>>> Ich würde mich der Sache folgendermassen annähren:
>>> Erst mal sehen (ich mache das immer mit ST_AsText()), was
>>> ST_Difference in den Fällen, in denen gewaesser.geom keine Geometrie
>>> hat, zurück gibt. Ist der Rückgabewert wirklich NULL oder eine leere
>>> Geometrie?
>>> 
>>> Nochwas: ST_Dump habe ich noch nie benutzt aber die Dokumentation 
>>> sagt
>>> "ST_Dump is useful for expanding geometries. It is the reverse of a
>>> GROUP BY in that it creates new rows." Deshalb wundere ich mich, dass
>>> Deine GROUP BY-Klausel hinter der Klammer steht, in der ST_Dump 
>>> steht.
>>> Ich würde es auf der selben Klammerebene erwarten wie das ST_Union,
>>> also eher sowas:
>>> ST_Dump(
>>>   COALESCE(
>>>     ST_Difference(gruenland.geom, ST_Union(gewaesser.geom)
>>>     ),
>>>   gruenland.geom
>>>   )
>>>   FROM public.gruenland, public.gewaesser
>>>   GROUP BY gruenland.gid
>>> ).geom::geometry(Polygon, 31256) AS geom
>>> 
>>> viel Erfolg
>>> 
>>> Bernhard
>>> 
>>> Am 13.09.2016 um 20:10 schrieb R. Reiterer:
>>>> Geehrte PostGIS Enthusiasten,
>>>> 
>>>> ich nutze in QGIS nachfolgende SQL Abfrage um aus dem Layer 
>>>> "gruenland"
>>>> (Polygone) den Layer 'gewaesser' (ebenfalls Polygone) gewissermaßen
>>>> auszustechen.
>>>> 
>>>> CREATE VIEW public.gruenland_differenz AS
>>>> SELECT
>>>>    row_number() over() AS gid,
>>>>    unterabfrage.geom
>>>> FROM
>>>> (SELECT
>>>>    (ST_Dump(COALESCE(ST_Difference(gruenland.geom,
>>>> ST_Union(gewaesser.geom)), gruenland.geom))).geom::geometry(Polygon,
>>>> 31256) AS geom
>>>>    FROM public.gruenland, public.gewaesser
>>>>    GROUP BY gruenland.gid
>>>> ) AS unterabfrage;
>>>> 
>>>> Einige Datensätze beinhalten für den Layer 'gewaesser' jedoch keine
>>>> Geometrien. Die Abfrage gibt in solchen Fällen kein Ergebnis zurück,
>>>> gewünscht sind jedoch die unbearbeiteten 'gruenland' Polygone. Kann 
>>>> mir
>>>> diesbezüglich jemand bei der Adaptierung der Abfrage helfen?
>>>> 
>>>> Vielen Dank und schöne Grüße,
>>>> 
>>>> Reinhard
>>>> 
>>>> --
>>>> ....................................................................
>>>> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
>>>> GIS-Bereich und Freier Geodaten!
>>>> http://www.fossgis.de/             https://twitter.com/fossgis_eV
>>>> 
>>>> ____________________________________________________________________
>>>> FOSSGIS-Talk-Liste mailing list
>>>> FOSSGIS-Talk-Liste at fossgis.de
>>>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>>>> 
>>>> 
>>>> __________ Information from ESET Mail Security, version of virus
>>>> signature database 14115 (20160913) __________
>>>> 
>>>> The message was checked by ESET Mail Security.
>>>> http://www.eset.com
>>>> 
>>>> 
>>> 
>>> 
>>> __________ Information from ESET Mail Security, version of virus
>>> signature database 14118 (20160914) __________
>>> 
>>> The message was checked by ESET Mail Security.
>>> http://www.eset.com
>>> 
>>> 
>>> --
>>> ....................................................................
>>> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
>>> GIS-Bereich und Freier Geodaten!
>>> http://www.fossgis.de/             https://twitter.com/fossgis_eV
>>> 
>>> ____________________________________________________________________
>>> FOSSGIS-Talk-Liste mailing list
>>> FOSSGIS-Talk-Liste at fossgis.de
>>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>> --
>> ....................................................................
>> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
>> GIS-Bereich und Freier Geodaten!
>> http://www.fossgis.de/             https://twitter.com/fossgis_eV
>> 
>> ____________________________________________________________________
>> FOSSGIS-Talk-Liste mailing list
>> FOSSGIS-Talk-Liste at fossgis.de
>> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste
>> 
>> 
>> __________ Information from ESET Mail Security, version of virus
>> signature database 14122 (20160914) __________
>> 
>> The message was checked by ESET Mail Security.
>> http://www.eset.com
>> 
>> 
> 
> 
> 
> 
> __________ Information from ESET Mail Security, version of virus
> signature database 14124 (20160915) __________
> 
> The message was checked by ESET Mail Security.
> http://www.eset.com
> 
> 
> --
> ....................................................................
> FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem
> GIS-Bereich und Freier Geodaten!
> http://www.fossgis.de/             https://twitter.com/fossgis_eV
> 
> ____________________________________________________________________
> FOSSGIS-Talk-Liste mailing list
> FOSSGIS-Talk-Liste at fossgis.de
> https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste