

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Räumliche Daten
<a name="access-graph-opencypher-22-spatial-data"></a>

Amazon Neptune unterstützt jetzt räumliche Abfragen, sodass Sie geometrische Daten in Ihrem Diagramm speichern und analysieren können. Räumliche Merkmale werden zwar häufig für geografische Standorte (wie Koordinaten auf einer Karte) verwendet, funktionieren aber mit allen zweidimensionalen Daten, bei denen Position und Nähe wichtig sind. Verwenden Sie diese Funktion, um Fragen wie „Welche Geschäfte befinden sich im Umkreis von 5 Meilen von diesem Kunden?“ zu beantworten. , „Finden Sie alle Lieferwege, die sich mit diesem Servicebereich überschneiden“ oder „Welche Komponenten in diesem Grundriss überschneiden sich mit der HLK-Zone?“ Neptune implementiert räumliche Unterstützung mithilfe von branchenüblichen Spatial Types-Funktionen, die mit Punkten, Polygonen und anderen geometrischen Formen funktionieren. Sie können räumliche Daten als Eigenschaften auf Knoten und Kanten speichern und dann räumliche Funktionen verwenden, um Entfernungen zu berechnen, zu überprüfen, ob Punkte innerhalb von Grenzen liegen, oder überlappende Regionen zu finden — alles innerhalb Ihrer OpenCypher-Abfragen.

**Häufige Anwendungsfälle:**
+ **Geografische Anwendungen**: Standortbezogene Empfehlungen, Geofencing, Routenplanung und Gebietsanalyse
+ **Anlagen- und Raummanagement**: Grundrisse, Platzierung der Ausrüstung und Zonenabdeckung
+ **Netzwerktopologie**: Kartierung der physischen Infrastruktur, Versorgungsbereiche und Dienstgrenzen
+ **Design und CAD**: Positionierung von Komponenten, Kollisionserkennung und räumliche Beziehungen in 2D-Entwürfen
+ **Spieleentwicklung**: Positionierung der Charaktere, Kollisionserkennung und area-of-effect Berechnungen

Die Implementierung von Spatial Types in Amazon Neptune folgt wie andere Datenbanken den ISO/IEC 13249-3:2016-Richtlinien. Sie [Geofunktionen](access-graph-opencypher-22-spatial-functions.md) sind in der OpenCypher-Abfragesprache verfügbar.

## Koordinatensystem
<a name="access-graph-opencypher-22-spatial-data-coordinate-system"></a>

Neptune hat einen Spatial Reference Identifier (SRID) für eine gesamte Datenbank. Die Homogenität des Koordinatensystems reduziert Benutzerfehler bei Abfragen und verbessert die Datenbankleistung. Die erste Version (1.4.7.0) unterstützt das kartesische Koordinatensystem, das auch als SRID 0 bezeichnet wird.

Die Neptun-Implementierung von SRID 0 ist mit Längen- und Breitengradwerten kompatibel. Wird verwendet`ST_DistanceSpheroid`, um Entfernungen auf der Grundlage von /SRID 4326 zu WGS84 berechnen.

Die aktuelle Implementierung unterstützt das Speichern von dreidimensionalen Koordinaten. Die Spatial Functions unterstützen derzeit nur die Verwendung der Koordinaten der X- und Y-Achse (2-dimensional). Die Koordinaten der Z-Achse werden derzeit von den verfügbaren räumlichen Funktionen nicht unterstützt.

## Speichern von Standortdaten
<a name="storing-spatial-data"></a>

Speichern Sie Positionsdaten auf Knoten und Kanten mithilfe des Eigenschaftstyps Geometrie. Erstellen Sie Geometriewerte im WKT-Format (Well-known Text), einer Standardmethode zur Darstellung geografischer Formen als Text. Um beispielsweise eine Punktposition zu speichern:

```
CREATE (n:airport {code: 'ATL', location: ST_GeomFromText('POINT (-84.4281 33.6367)')})
```

Bei der Arbeit mit geographischen Koordinaten steht das erste Argument (x) für den Längengrad und das zweite Argument (y) für den Breitengrad. Dies entspricht der in Geodatenbanken verwendeten Standardkoordinatenreihenfolge und der Norm ISO 19125.

**Anmerkung**  
 Neptune unterstützt jetzt einen neuen Datentyp namens „Geometrie“. Die Geometrieeigenschaft eines Knotens oder einer Kante kann mithilfe der Funktion aus einer WKT-Zeichenfolge erstellt werden. `ST_GeomFromText`  
Neptune speichert Punktdaten automatisch in einem speziellen räumlichen Index, um die Leistung der Funktionen Räumliche Typen zu verbessern. Wird beispielsweise `ST_Contains` verwendet, um die Punkte innerhalb eines Polygons zu finden, und wird durch den speziellen räumlichen Index beschleunigt.  
[Wikipedia-Seite für die Darstellung von Geometrie in bekanntem Text](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry)

## Räumliche Daten werden in großen Mengen geladen
<a name="loading-spatial-data-bulk"></a>

Geben Sie beim Massenladen von Daten den Geometrietyp in Ihrem CSV-Header an. Neptune analysiert WKT-Strings und erstellt die entsprechenden Geometrieeigenschaften:

```
:ID,:LABEL,code:String,city:String,location:Geometry
21,airport,ATL,Atlanta,POINT (-84.42810059 33.63669968)
32,airport,ANC,Anchorage,POINT (-149.9960022 61.17440033)
43,airport,AUS,Austin,POINT (-97.66989899 30.19449997)
```

Vollständige Informationen zum CSV-Format finden Sie unter [OpenCypher-Bulk-Load-Format](bulk-load-tutorial-format-opencypher.md).

## Abfrage von Geodaten
<a name="querying-spatial-data"></a>

In den folgenden Abfragebeispielen wird anhand des [Datasets air-routes](https://github.com/krlawrence/graph/tree/main/sample-data) veranschaulicht, wie Spatial Functions in Neptune verwendet werden kann.

Wenn Ihre Daten nicht über eine Geometrieeigenschaft, sondern über separate Eigenschaften für Breitengrad und Längengrad verfügen, können Sie sie bei der Abfrage in Punkte konvertieren. Finden Sie die 10 Flughäfen, die einem bestimmten Ort am nächsten liegen:

```
MATCH (a:airport)
WITH a, ST_GeomFromText('POINT (' + a.lon + ' ' + a.lat + ')') AS airportLocation
WITH a, airportLocation, ST_Distance(ST_GeomFromText('POINT (-84.4281 33.6367)'), airportLocation) AS distance
WHERE distance IS NOT NULL
RETURN a.code, a.city, distance
ORDER BY distance ASC
LIMIT 10
```

Wenn Sie bereits Standorte gespeichert haben, können `ST_Point` Sie diese Standortwerte direkt verwenden:

1. Festlegen der -Eigenschaft

   ```
   MATCH (a:airport)
   SET a.location = ST_GeomFromText('POINT (' + a.lon + ' ' + a.lat + ')')
   ```

1. Abfrage mit ST\$1Distance:

   ```
   MATCH (a:airport)
   WHERE a.location IS NOT NULL
   WITH a, ST_Distance(ST_GeomFromText('POINT (-84.4281 33.6367)'), a.location) AS distance
   RETURN a.code, a.city, distance
   ORDER BY distance ASC
   LIMIT 10
   ```

### Den Bolt-Treiber verwenden
<a name="querying-spatial-data-bolt"></a>

Die meisten Abfragemethoden geben Geometriewerte als WKT-Zeichenfolgen zurück, die für Menschen lesbar sind. Wenn Sie den Bolt-Treiber verwenden, werden Geometriewerte aus Effizienzgründen im WKB-Format (Well-known Binary) zurückgegeben. Konvertieren Sie WKB in Ihrer Anwendung in ein Geometrieobjekt:

```
try (Session session = driver.session()) {
    Result result = session.run("MATCH (n:airport {code: 'ATL'}) RETURN n.location as geom");
    
    Record record = result.single();
    byte[] wkbBytes = record.get("geom").asByteArray();
    
    // Convert WKB to Geometry object using JTS library
    WKBReader wkbReader = new WKBReader();
    Geometry geom = wkbReader.read(wkbBytes);
}
```

# Geofunktionen
<a name="access-graph-opencypher-22-spatial-functions"></a>

Die folgenden räumlichen Funktionen sind in Neptune OpenCypher für die Arbeit mit Geometriedatentypen verfügbar:
+ [ST\$1Point](access-graph-opencypher-22-spatial-functions-st-point.md)
+ [ST\$1 GeomFromText](access-graph-opencypher-22-spatial-functions-st-geomfromtext.md)
+ [ST\$1 AsText](access-graph-opencypher-22-spatial-functions-st-astext.md)
+ [ST\$1 GeometryType](access-graph-opencypher-22-spatial-functions-st-geometrytype.md)
+ [ST\$1Equals](access-graph-opencypher-22-spatial-functions-st-equals.md)
+ [ST\$1Contains](access-graph-opencypher-22-spatial-functions-st-contains.md)
+ [ST\$1Intersects](access-graph-opencypher-22-spatial-functions-st-intersect.md)
+ [ST\$1Distance](access-graph-opencypher-22-spatial-functions-st-distance.md)
+ [ST\$1 DistanceSpheroid](access-graph-opencypher-22-spatial-functions-st-distancespheroid.md)
+ [ST\$1Envelope](access-graph-opencypher-22-spatial-functions-st-envelope.md)
+ [ST\$1Buffer](access-graph-opencypher-22-spatial-functions-st-buffer.md)

# ST\$1Point
<a name="access-graph-opencypher-22-spatial-functions-st-point"></a>

ST\$1Point gibt einen Punkt aus den eingegebenen Koordinatenwerten zurück.

**Syntax**

```
ST_Point(x, y, z)
```

**Argumente**
+ `x`- Ein Wert vom Datentyp DOUBLE PRECISION, der eine erste Koordinate darstellt.
+ `y`- Ein Wert vom Datentyp DOUBLE PRECISION, der eine zweite Koordinate darstellt.
+ `z`- (optional)

**Reihenfolge koordinieren**

Bei der Arbeit mit geographischen Koordinaten steht das erste Argument (`x`) für den **Längengrad** und das zweite Argument (`y`) für den **Breitengrad**. Dies entspricht der Standardkoordinatenreihenfolge, die in räumlichen Datenbanken verwendet wird, und dem Standard ISO 19125.

```
// Correct: longitude first, latitude second
ST_Point(-84.4281, 33.6367)  // Atlanta airport

// Incorrect: latitude first, longitude second
ST_Point(33.6367, -84.4281)  // This will return NaN in distance calculations
```

**Gültige Koordinatenbereiche**

Stellen Sie bei geographischen Daten sicher, dass die Koordinaten innerhalb gültiger Bereiche liegen:
+ Längengrad (`x`): -180 bis 180
+ Breitengrad (`y`): -90 bis 90

Koordinaten außerhalb dieser Bereiche werden zurückgegeben `NaN` (keine Zahl), wenn sie mit Entfernungsberechnungsfunktionen wie `ST_DistanceSpheroid` verwendet werden.

**Rückgabetyp**

GEOMETRIE des Subtyps PUNKT

Wenn x oder y null ist, wird null zurückgegeben.

**Beispiele**

Im Folgenden wird eine Punktgeometrie aus den Eingabekoordinaten konstruiert.

```
RETURN ST_Point(5.0, 7.0); 
POINT(5 7)
```

# ST\$1 GeomFromText
<a name="access-graph-opencypher-22-spatial-functions-st-geomfromtext"></a>

ST\$1 GeomFromText konstruiert ein Geometrieobjekt aus einer WKT-Darstellung (Wellknown Text) einer Eingabegeometrie.

**Syntax**

```
ST_GeomFromText(wkt_string)
```

**Argumente**
+ `wkt_string`— Ein Wert vom Datentyp STRING, bei dem es sich um eine WKT-Darstellung einer Geometrie handelt.

**Rückgabetyp**

GEOMETRY

Wenn wkt\$1string null ist, wird null zurückgegeben.

Wenn wkt\$1string nicht gültig ist, wird a zurückgegeben. BadRequestException 

**Beispiele**

```
RETURN ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))')             
POLYGON((0 0,0 1,1 1,1 0,0 0))
```

# ST\$1 AsText
<a name="access-graph-opencypher-22-spatial-functions-st-astext"></a>

ST\$1 AsText gibt die WKT-Darstellung (Wellknown Text) einer Eingabegeometrie zurück.

**Syntax**

```
ST_AsText(geo)
```

**Argumente**
+ `geo`— Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der als GEOMETRY ausgewertet wird.

**Rückgabetyp**

STRING

Wenn geo null ist, wird null zurückgegeben.

Wenn der Eingabeparameter keine Geometrie ist, BadRequestException wird a zurückgegeben.

Wenn das Ergebnis größer als eine 64-KB-ZEICHENFOLGE ist, wird ein Fehler zurückgegeben.

**Beispiele**

```
RETURN ST_AsText(ST_GeomFromText('POLYGON((0 0,0 1,1 1,1 0,0 0))'))             
POLYGON((0 0,0 1,1 1,1 0,0 0))
```

# ST\$1 GeometryType
<a name="access-graph-opencypher-22-spatial-functions-st-geometrytype"></a>

ST\$1 GeometryType gibt den Typ der Geometrie als Zeichenfolge zurück.

**Syntax**

```
ST_GeometryType(geom)
```

**Argumente**
+ `geom`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.

**Rückgabetyp**

STRING

Wenn geom null ist, wird null zurückgegeben.

Wenn der Eingabeparameter keine Geometrie ist, BadRequestException wird a zurückgegeben.

**Beispiele**

```
RETURN ST_GeometryType(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));
ST_LineString
```

# ST\$1Equals
<a name="access-graph-opencypher-22-spatial-functions-st-equals"></a>

ST\$1Equals gibt true zurück, wenn die 2D-Projektionen der Eingabegeometrien topologisch identisch sind. Geometrien gelten als topologisch gleich, wenn sie gleiche Punktsätze haben. Bei topologisch gleichen Geometrien kann die Reihenfolge der Scheitelpunkte unter Beibehaltung dieser Gleichheit unterschiedlich sein.

**Syntax**

```
ST_Equals(geom1, geom2)
```

**Argumente**
+ `geom1`— Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `geom2`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird. Dieser Wert wird mit geom1 verglichen, um festzustellen, ob er gleich geom1 ist.

**Rückgabetyp**

BOOLEAN

Wenn geom1 oder geom2 null ist, wird null zurückgegeben.

Wenn geom1 oder geom2 keine Geometrien sind, wird a zurückgegeben. BadRequestException 

**Beispiele**

```
RETURN ST_Equals(
    ST_GeomFromText('POLYGON ((0 2,1 1,0 -1,0 2))'), 
    ST_GeomFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'));
false
```

Im Folgenden wird geprüft, ob die beiden Linienfolgen geometrisch identisch sind.

```
RETURN ST_Equals(
    ST_GeomFromText('LINESTRING (1 0, 10 0)'), 
    ST_GeomFromText('LINESTRING(1 0,5 0,10 0)'));
true
```

# ST\$1Contains
<a name="access-graph-opencypher-22-spatial-functions-st-contains"></a>

ST\$1Contains gibt true zurück, wenn die 2D-Projektion der ersten Eingabegeometrie die 2D-Projektion der zweiten Eingabegeometrie enthält. Geometrie A enthält Geometrie B, wenn jeder Punkt in B ein Punkt in A ist und ihre Innenräume einen nicht leeren Schnittpunkt haben. ST\$1Contains (A, B) entspricht ST\$1Within (B, A).

**Syntax**

```
ST_Contains(geom1, geom2)
```

**Argumente**
+ `geom1`— Ein Wert vom Typ GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `geom2`- Ein Wert vom Typ GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird. Dieser Wert wird mit geom1 verglichen, um festzustellen, ob er in geom1 enthalten ist.

**Rückgabetyp**

BOOLEAN

Wenn geom1 oder geom2 null ist, wird null zurückgegeben.

Wenn der Eingabeparameter keine Geometrie ist, BadRequestException wird a zurückgegeben.

**Beispiele**

```
RETURN ST_Contains(
    ST_GeomFromText('POLYGON((0 2,1 1,0 -1,0 2))'), 
    ST_GeomFromText('POLYGON((-1 3,2 1,0 -3,-1 3))'));
false
```

# ST\$1Intersects
<a name="access-graph-opencypher-22-spatial-functions-st-intersect"></a>

ST\$1Intersects gibt true zurück, wenn die 2D-Projektionen der beiden Eingabegeometrien mindestens einen gemeinsamen Punkt haben.

**Syntax**

```
ST_Intersects(geom1, geom2)
```

**Argumente**
+ `geom1`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `geom2`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.

**Rückgabetyp**

BOOLEAN

Wenn geom1 oder geom2 null ist, wird null zurückgegeben.

Wenn der Eingabeparameter keine Geometrie ist, BadRequestException wird a zurückgegeben.

**Beispiele**

```
RETURN ST_Intersects(
    ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))'), 
    ST_GeomFromText('MULTIPOINT((4 4),(6 6))'));
true
```

# ST\$1Distance
<a name="access-graph-opencypher-22-spatial-functions-st-distance"></a>

Bei Eingabegeometrien gibt ST\$1Distance den minimalen euklidischen Abstand zwischen den 2D-Projektionen der beiden Eingabegeometriewerte zurück.

**Syntax**

```
ST_Distance(geo1, geo2)
```

**Argumente**
+ `geo1`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `geo2`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der als GEOMETRY ausgewertet wird.

**Rückgabetyp**

DOPPELTE GENAUIGKEIT in denselben Einheiten wie die Eingabegeometrien.

Wenn geo1 oder geo2 Null ist, wird Null zurückgegeben.

Wenn der Eingabeparameter keine Geometrie ist, BadRequestException wird a zurückgegeben.

**Beispiele**

```
RETURN ST_Distance(
    ST_GeomFromText('POLYGON((0 2,1 1,0 -1,0 2))'), 
    ST_GeomFromText('POLYGON((-1 -3,-2 -1,0 -3,-1 -3))'));
1.4142135623731
```

# ST\$1 DistanceSpheroid
<a name="access-graph-opencypher-22-spatial-functions-st-distancespheroid"></a>

Gibt den Mindestabstand in Metern zwischen zwei lon/lat Geometrien zurück. Das Sphäroid ist WGS84 /SRID 4326.

**Syntax**

```
ST_DistanceSpheroid(geom1, geom2);
```

**Argumente**
+ `geom1`— Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `geom2`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.

**Rückgabetyp**

FLOAT

Wenn geom null ist, wird null zurückgegeben.

**Beispiele**

```
RETURN ST_DistanceSpheroid(
    ST_GeomFromText('POINT(-110 42)'),
    ST_GeomFromText('POINT(-118 38)'))
814278.77
```

# ST\$1Envelope
<a name="access-graph-opencypher-22-spatial-functions-st-envelope"></a>

ST\$1Envelope gibt den minimalen Begrenzungsrahmen der Eingabegeometrie wie folgt zurück:
+ Wenn die Eingabegeometrie leer ist, ist die zurückgegebene Geometrie POINT EMPTY.
+ Wenn der minimale Begrenzungsrahmen der Eingabegeometrie zu einem Punkt degeneriert wird, ist die zurückgegebene Geometrie ein Punkt.
+ Wenn keine der obigen Bedingungen zutrifft, gibt die Funktion ein counter-clockwise-oriented Polygon zurück, dessen Scheitelpunkte die Ecken des minimalen Begrenzungsrahmens sind.

Bei allen nicht leeren Eingaben wird die Funktion auf der 2D-Projektion der Eingabegeometrie ausgeführt.

**Syntax**

```
ST_Envelope(geom)
```

**Argumente**
+ `geom`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.

**Rückgabetyp**

GEOMETRY

Wenn geom null ist, wird null zurückgegeben.

**Beispiele**

```
RETURN ST_Envelope(ST_GeomFromText("POLYGON ((2 1, 4 3, 6 1, 5 5, 3 4, 2 1))"))
POLYGON ((2 1, 6 1, 6 5, 2 5, 2 1))
```

# ST\$1Buffer
<a name="access-graph-opencypher-22-spatial-functions-st-buffer"></a>

ST\$1Buffer gibt 2D-Geometrie zurück, die alle Punkte darstellt, deren Abstand von der auf die XY-kartesische Ebene projizierten Eingabegeometrie kleiner oder gleich dem Eingabeabstand ist.

**Syntax**

```
ST_Buffer(geom, distance, number_of_segments_per_quarter_circle)
```

**Argumente**
+ `geom`- Ein Wert vom Datentyp GEOMETRY oder ein Ausdruck, der zu einem GEOMETRY-Typ ausgewertet wird.
+ `distance`— Ein Wert vom Datentyp DOUBLE PRECISION, der die Entfernung (oder den Radius) des Puffers darstellt.
+ `number_of_segments_per_quarter_circle`- Ein Wert vom Datentyp INTEGER (sollte größer oder gleich 0 sein). Dieser Wert bestimmt die Anzahl der Punkte, die einem Viertelkreis um jeden Scheitelpunkt der Eingabegeometrie annähern sollen. Negative Werte sind standardmäßig auf null. Der Standardwert ist 8.

**Rückgabetyp**

GEOMETRY

Die Funktion ST\$1Buffer gibt zweidimensionale (2D) Geometrie in der xy-kartesischen Ebene zurück.

**Beispiele**

```
RETURN ST_Buffer(ST_GeomFromText('LINESTRING (1 2,5 2,5 8)'), 2, 4);
POLYGON ((3 4, 3 8, 3.1522409349774265 8.76536686473018,
         3.585786437626905 9.414213562373096, 4.234633135269821 9.847759065022574,
         5 10, 5.765366864730179 9.847759065022574,
         6.414213562373095 9.414213562373096, 6.847759065022574 8.76536686473018,
         7 8, 7 2, 6.847759065022574 1.2346331352698203,
         6.414213562373095 0.5857864376269051, 5.765366864730179 0.1522409349774265,
         5 0, 1 0, 0.2346331352698193 0.152240934977427,
         -0.4142135623730954 0.5857864376269051,
         -0.8477590650225737 1.2346331352698208, -1 2.0000000000000004,
         -0.8477590650225735 2.7653668647301797,
         -0.4142135623730949 3.414213562373095,
         0.2346331352698206 3.8477590650225735, 1 4, 3 4))
```

Im Folgenden wird der Puffer der Eingabepunktgeometrie zurückgegeben, der sich einem Kreis annähert. Da der Befehl 3 als Anzahl der Segmente pro Viertelkreis angibt, verwendet die Funktion drei Segmente, um den Viertelkreis anzunähern.

```
RETURN ST_Buffer(ST_GeomFromText('POINT (1 1)'), 1.0, 8));
POLYGON ((2 1, 1.9807852804032304 0.8049096779838718,
     1.9238795325112867 0.6173165676349102, 1.8314696123025453 0.4444297669803978,
     1.7071067811865475 0.2928932188134525, 1.5555702330196022 0.1685303876974548,
     1.3826834323650898 0.0761204674887133, 1.1950903220161284 0.0192147195967696,
     1 0, 0.8049096779838718 0.0192147195967696, 0.6173165676349103 0.0761204674887133,
    0.444429766980398 0.1685303876974545, 0.2928932188134525 0.2928932188134524,
     0.1685303876974546 0.4444297669803978, 0.0761204674887133 0.6173165676349102,
     0.0192147195967696 0.8049096779838714, 0 0.9999999999999999,
     0.0192147195967696 1.1950903220161284, 0.0761204674887132 1.3826834323650896,
     0.1685303876974545 1.555570233019602, 0.2928932188134523 1.7071067811865475,
     0.4444297669803978 1.8314696123025453, 0.6173165676349097 1.9238795325112865,
     0.8049096779838714 1.9807852804032304, 0.9999999999999998 2,
     1.1950903220161284 1.9807852804032304, 1.38268343236509 1.9238795325112865,
     1.5555702330196017 1.8314696123025453, 1.7071067811865475 1.7071067811865477,
     1.8314696123025453 1.5555702330196022, 1.9238795325112865 1.3826834323650905,
     1.9807852804032304 1.1950903220161286, 2 1))
```