Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Données spatiales
Amazon Neptune prend désormais en charge les requêtes spatiales, ce qui vous permet de stocker et d'analyser des données géométriques dans votre graphique. Bien qu'elles soient couramment utilisées pour les emplacements géographiques (comme les coordonnées sur une carte), les entités spatiales fonctionnent avec toutes les données bidimensionnelles où la position et la proximité sont importantes. Utilisez cette fonctionnalité pour répondre à des questions telles que « Quels magasins se trouvent dans un rayon de 8 km de ce client ? » , « Trouvez tous les itinéraires de livraison qui recoupent cette zone de service » ou « Quels éléments de ce plan d'étage chevauchent la zone CVC ? » Neptune implémente la prise en charge spatiale à l'aide de fonctions de types spatiaux standard qui fonctionnent avec des points, des polygones et d'autres formes géométriques. Vous pouvez stocker des données spatiales sous forme de propriétés sur des nœuds et des arêtes, puis utiliser des fonctions spatiales pour calculer des distances, vérifier si des points se situent dans des limites ou rechercher des régions qui se chevauchent, le tout dans vos requêtes OpenCypher.
Cas d’utilisation courants :
-
Applications géographiques : Location-based recommandations, géorepérage, planification d'itinéraires et analyse du territoire
-
Gestion des installations et de l'espace : disposition des plans d'étage, placement des équipements et couverture des zones
-
Topologie du réseau : cartographie de l'infrastructure physique, zones de couverture et limites de service
-
Conception et CAO : positionnement des composants, détection des collisions et relations spatiales dans les conceptions 2D
-
Développement de jeux : positionnement des personnages, détection des collisions et calculs de la zone d'effet
L'implémentation des types spatiaux dans Amazon Neptune suit les directives ISO/IEC 13249-3:2016, comme les autres bases de données. Ils Fonctions spatiales sont disponibles dans le langage de requête OpenCypher.
Système de coordonnées
Neptune possède un identifiant de référence spatiale (SRID) pour l'ensemble d'une base de données. L'homogénéité du système de coordonnées réduit les erreurs des utilisateurs lors des requêtes et améliore les performances de la base de données. La première version (1.4.7.0) prend en charge le système de coordonnées cartésien, également appelé SRID 0.
L'implémentation Neptune du SRID 0 est compatible avec les valeurs de longitude et de latitude. Utilisez-le ST_DistanceSpheroid pour calculer les distances en fonction de WGS84/SRID 4326.
L'implémentation actuelle prend en charge le stockage de coordonnées tridimensionnelles. Les fonctions spatiales ne prennent actuellement en charge que l'utilisation des coordonnées des axes x et y (bidimensionnels). Les coordonnées de l'axe Z ne sont actuellement pas prises en charge par les fonctions spatiales disponibles.
Stockage des données de localisation
Stockez les données de position sur les nœuds et les arêtes à l'aide du type de propriété Geometry. Créez des valeurs de géométrie à partir du format Well-Known Texte (WKT), une méthode standard pour représenter des formes géographiques sous forme de texte. Par exemple, pour stocker la position d'un point :
CREATE (n:airport {code: 'ATL', location: ST_GeomFromText('POINT (-84.4281 33.6367)')})
Lorsque vous utilisez des coordonnées géographiques, le premier argument (x) représente la longitude et le second argument (y) représente la latitude. Cela suit l'ordre de coordonnées standard utilisé dans les bases de données spatiales et la norme ISO 19125.
Note
Neptune prend désormais en charge un nouveau type de données appelé « Géométrie ». La propriété Geometry d'un nœud ou d'une arête peut être créée à partir d'une chaîne WKT à l'aide de la ST_GeomFromText fonction.
Neptune stockera automatiquement les données relatives aux points dans un index spatial spécialisé afin d'améliorer les performances des fonctions de types spatiaux. Par exemple, la ST_Contains méthode utilisée pour trouver les points d'un polygone est accélérée par l'indice spatial spécialisé.
Page Wikipedia pour la représentation Well-Known textuelle de la géométrie
Chargement de données spatiales en masse
Lorsque vous chargez des données en masse, spécifiez le type de géométrie dans votre en-tête CSV. Neptune analysera les chaînes WKT et créera les propriétés de géométrie appropriées :
: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)
Pour plus de détails sur le format CSV, consultez la section Format de chargement groupé OpenCypher.
Interrogation des données spatiales
Les exemples de requêtes suivants utilisent le jeu de données des routes aériennes
Si vos données possèdent des propriétés de latitude et de longitude distinctes au lieu d'une propriété de géométrie, vous pouvez les convertir en points au moment de la requête. Trouvez les 10 aéroports les plus proches d'un lieu donné :
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
Si vous avez déjà enregistré des localisationsST_Point, vous pouvez utiliser ces valeurs de localisation directement :
-
Définition de la propriété
MATCH (a:airport) SET a.location = ST_GeomFromText('POINT (' + a.lon + ' ' + a.lat + ')') -
Requête à l'aide de 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
Utilisation du pilote Bolt
La plupart des méthodes de requête renvoient des valeurs de géométrie sous forme de chaînes WKT, lisibles par l'homme. Si vous utilisez le pilote Bolt, les valeurs de géométrie sont renvoyées au format WKB (Well-Known binaire) pour plus d'efficacité. Convertissez WKB en objet Geometry dans votre application :
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); }