- Kategorien:
ST_BUFFER¶
Gibt ein GEOMETRY-Objekt zurück, das ein MultiPolygon repräsentiert, das die Punkte innerhalb einer angegebenen Entfernung vom GEOMETRY-Eingabeobjekt enthält. Das zurückgegebene Objekt repräsentiert im Endeffekt einen „Puffer“ um das Eingabeobjekt.
Sie können das Eingabeobjekt auch „schrumpfen“, indem Sie einen negativen Wert für die Entfernung angeben.
Syntax¶
ST_BUFFER( <geometry_expression> , <distance> )
Argumente¶
geometry_expression
Das Argument muss ein Ausdruck vom Typ GEOMETRY sein.
distance
Die Entfernung vom GEOMETRY-Objekt. Um das Objekt zu „schrumpfen“, können Sie einen negativen Wert für die Entfernung angeben.
Rückgabewerte¶
Gibt ein GEOMETRY-Objekt zurück.
Nutzungshinweise¶
ST_BUFFER verwendet acht Segmente, um sich einem Viertelkreis anzunähern.
Wenn
distance
ein negativer Wert ist, ist das zurückgegebene Objekt kleiner als das Eingabeobjekt. Damit können Sie kleine Unregelmäßigkeiten aus der Form entfernen.Bei LineStrings sind die Endkappen- und Verbindungsstile immer rund.
LineStings werden immer beidseitig gepuffert.
Beispiele¶
Das folgende Beispiel gibt ein Polygon um einen Punkt mit einem Radius von 1 zurück:
SELECT ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1);
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ST_BUFFER(TO_GEOMETRY('POINT(0 0)'), 1) |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1 0,0.9807852804 -0.195090322,0.9238795325 -0.3826834324,0.8314696123 -0.555570233,0.7071067812 -0.7071067812,0.555570233 -0.8314696123,0.3826834324 -0.9238795325,0.195090322 -0.9807852804,6.123233996e-17 -1,-0.195090322 -0.9807852804,-0.3826834324 -0.9238795325,-0.555570233 -0.8314696123,-0.7071067812 -0.7071067812,-0.8314696123 -0.555570233,-0.9238795325 -0.3826834324,-0.9807852804 -0.195090322,-1 7.657137398e-16,-0.9807852804 0.195090322,-0.9238795325 0.3826834324,-0.8314696123 0.555570233,-0.7071067812 0.7071067812,-0.555570233 0.8314696123,-0.3826834324 0.9238795325,-0.195090322 0.9807852804,2.480838239e-15 1,0.195090322 0.9807852804,0.3826834324 0.9238795325,0.555570233 0.8314696123,0.7071067812 0.7071067812,0.8314696123 0.555570233,0.9238795325 0.3826834324,0.9807852804 0.195090322,1 0))) |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Im folgenden Beispiel wird ein negativer Wert für distance
verwendet, um kleine Unregelmäßigkeiten (z. B. Zacken) aus der Form zu entfernen. Beachten Sie, dass der TO_GEOMETRY-Aufruf als zweites Argument TRUE übergibt, wodurch die Funktion ein GEOMETRY-Objekt für eine ungültige Form erstellen kann.
SELECT ST_BUFFER(TO_GEOMETRY('SRID=2261;POLYGON((1540792.21541900 290472.63529214, 1547018.61770388 302537.02285369, 1546965.96550151 302752.51514772, 1547018.61770388 302537.02285369,
1549532.42729914 301257.07398027, 1543327.42218339 289322.60923536, 1540792.21541900 290472.63529214))', True), -1e-08) AS geom;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GEOM |
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MULTIPOLYGON(((1543327.42218339 289322.609235373,1540792.21541901 290472.635292145,1547018.61770388 302537.022853677,1549532.42729913 301257.073980266,1543327.42218339 289322.609235373))) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+