View a markdown version of this page

Räumliche Daten - Amazon Neptune

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

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 eine Rolle spielen. Verwenden Sie diese Funktion, um Fragen wie „Welche Geschäfte befinden sich im Umkreis von 8 Meilen von diesem Kunden?“ zu beantworten. , „Finden Sie alle Lieferwege, die sich mit diesem Servicebereich kreuzen“ oder „Welche Komponenten in diesem Grundriss überschneiden sich mit der HLK-Zone?“ Neptune implementiert die räumliche Unterstützung mithilfe branchenüblicher Funktionen für räumliche Typen, die mit Punkten, Polygonen und anderen geometrischen Formen funktionieren. Sie können räumliche Daten als Eigenschaften auf Knoten und Kanten speichern und dann mithilfe räumlicher Funktionen Entfernungen berechnen, überprüfen, ob Punkte innerhalb von Grenzen liegen, oder überlappende Regionen finden — alles innerhalb Ihrer OpenCypher-Abfragen.

Häufige Anwendungsfälle:

  • Geografische Anwendungen: Location-based Empfehlungen, Geofencing, Routenplanung und Gebietsanalyse

  • Anlagen- und Raummanagement: Grundrisse, Platzierung der Ausrüstung und Zonenabdeckung

  • Netzwerktopologie: Kartierung der physischen Infrastruktur, Versorgungsbereiche und Servicegrenzen

  • Design und CAD: Komponentenpositionierung, Kollisionserkennung und räumliche Beziehungen in 2D-Konstruktionen

  • Spieleentwicklung: Charakterpositionierung, Kollisionserkennung und Berechnung des Wirkungsbereichs

Die Implementierung von Spatial Types in Amazon Neptune folgt wie andere Datenbanken den Richtlinien ISO/IEC 13249-3:2016. Die Geofunktionen sind in der OpenCypher-Abfragesprache verfügbar.

Koordinatensystem

Neptun 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 Neptune-Implementierung von SRID 0 ist mit Längen- und Breitengradwerten kompatibel. Wird verwendetST_DistanceSpheroid, um Entfernungen auf der Grundlage von 4326 zu berechnen. WGS84/SRID

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

Speichern von Standortdaten

Speichern Sie Positionsdaten auf Knoten und Kanten mithilfe des Eigenschaftstyps Geometry. Erstellen Sie Geometriewerte aus dem Well-Known Textformat (WKT), 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 folgt der in räumlichen Datenbanken verwendeten Standardkoordinatenreihenfolge und dem ISO-19125-Standard.

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 für räumliche Typen zu verbessern. ST_ContainsWird beispielsweise zum Auffinden der Punkte innerhalb eines Polygons verwendet, durch den speziellen räumlichen Index beschleunigt.

Wikipedia-Seite zur Well-Known Textdarstellung von Geometrie

Laden räumlicher Daten in großen Mengen

Geben Sie beim Massenladen von Daten den Geometrietyp in Ihrem CSV-Header an. Neptune analysiert WKT-Zeichenfolgen 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-Massenladeformat.

Abfrage von Geodaten

In den folgenden Abfragebeispielen wird anhand des Airroute-Datasets veranschaulicht, wie räumliche Funktionen in Neptune verwendet werden.

Wenn Ihre Daten separate Eigenschaften für Breitengrad und Längengrad anstelle einer Geometrieeigenschaft haben, können Sie sie bei der Abfrage in Punkte umwandeln. Finden Sie die 10 Flughäfen, die einem bestimmten Standort am nächsten sind:

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 als 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 + ')')
  2. Abfrage mit ST_Distance:

    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

Mit dem Bolt-Treiber

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 Binär) 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); }