Wann sollte ich ST_Buffer verwenden?

8

Ich würde gerne wissen, wie es ist, die Operation st_buffer zu verwenden. Im PostGIS-Referenzhandbuch gibt es nur die Syntax und eine kurze Beschreibung dieses Vorgangs.

Können Sie einige Beispiele nennen, um die Vorteile dieser Operation zu verstehen?

fabrizio
quelle

Antworten:

12

Wie @Underdark kommentiert, ist ST_Dwithin die empfohlene Methode, um Geometrien aus der Ferne zu finden. In vielen anderen GIS-Systemen ist die Puffermethode der einzige Weg, aber das Erstellen von Puffern ist ziemlich kostspielig.

Es gibt jedoch auch andere Anwendungsfälle, in denen Sie puffern müssen. Ein Grund kann sein, einen Puffer zu visualisieren. Wenn Sie beispielsweise den Bereich näher als 100 Meter von einer Autobahn anzeigen möchten, können Sie einen Puffer erstellen.

Ein anderer Fall ist, wenn Sie möchten, dass das Gebiet 100 Meter von der Autobahn entfernt aus einer anderen Karte herausgeschnitten wird. Angenommen, Sie haben eine Karte mit der Flächennutzung und möchten analysieren, wie viel von dem Gebiet, das näher als 100 Meter von der Autobahn entfernt ist, Wald und wie viel Landwirtschaftsfläche ist. Dann erstellen Sie einen Puffer und erstellen einen Schnittpunkt mit der Flächennutzungskarte.

Auf Seite 8-10 finden Sie ein Beispiel für dieses Lernprogramm:
http://postgisonline.org/map.php?tutorial=mixed_examples.html

Nicklas Avén
quelle
1
Der letzte Link scheint tot zu sein.
Aaron
6

OpenGeo bietet eine ziemlich gute Zusammenfassung von ST_Buffer. Beachten Sie die Möglichkeit, einen negativen Pufferradius zu übergeben.

Die Pufferfunktion ist manchmal auch eine nützliche Lösung. Durch Übergeben eines Pufferradius von Null können Sie einen Footprint einer Sammlung von Geometrien erstellen oder eine ungültige Polygongeometrie "reparieren".

rec.thegeom
quelle
2

ummm einen Puffer zu machen? Das ist alles was es wirklich tut.

Ich würde das nicht wirklich eine kurze Beschreibung nennen http://www.postgis.org/documentation/manual-svn/ST_Buffer.html

Ein Anwendungsfall ist, wenn Sie alle Objekte in einer Tabelle auswählen möchten, die sich innerhalb von 20 m von jedem Objekt in einer anderen Tabelle befinden.

Nathan W.
quelle
4
Ich denke, es wird empfohlen, ST_Distance für diesen Anwendungsfall zu verwenden.
Underdark
1
Nein, es wird empfohlen, ST_DWithin wie von Nicklas erwähnt zu verwenden. ST_Distance ist langsam, da kein Index verwendet wird. ST_DWithin verwendet einen Index und verfügt über eine Kurzschlusslogik, sodass die Entfernung nicht vollständig berechnet werden muss, um herauszufinden, ob zwei Dinge innerhalb der von Ihnen angegebenen Entfernung liegen. ST_Buffer sollte eigentlich nur zur Visualisierung verwendet werden
LR1234567
Ich habe gelesen, was ich erwartet hatte, nicht was geschrieben wurde :-)
Nicklas Avén