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 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 sind in der OpenCypher-Abfragesprache verfügbar.

Koordinatensystem

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 verwendetST_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

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

Räumliche Daten werden in großen Mengen geladen

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.

Abfrage von Geodaten

In den folgenden Abfragebeispielen wird anhand des Datasets air-routes 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 + ')')
  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

Den Bolt-Treiber verwenden

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); }