

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. Durch die Homogenität des Koordinatensystems werden Benutzerfehler bei Abfragen reduziert und die Datenbankleistung verbessert. 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 basierend auf /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);
}
```