[FOSSGIS-Talk] ST_Difference ohne Eingabegeometrien

Bernhard Ströbl bernhard.stroebl at jena.de
Do Sep 15 08:07:58 CEST 2016


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