Interrogation des données spatiales dans Amazon Redshift - Amazon Redshift

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.

Interrogation des données spatiales dans Amazon Redshift

Les données spatiales décrivent la position et la forme d’une géométrie dans un espace défini (un système de référence spatial). Amazon Redshift prend en charge les données spatiales avec les types de données GEOMETRY et GEOGRAPHY, qui contiennent des données spatiales et éventuellement l’identifiant de système de référence spatiale (SRID) des données.

Les données spatiales contiennent des données géométriques qui peuvent être utilisées pour représenter des fonctions géographiques. Les rapports météo, les indications de direction, les tweets intégrant des lieux géographiques, les emplacements de magasins et les lignes aériennes sont des exemples de ce type de données. Les données spatiales jouent un rôle important dans les analyses métier, la création de rapports et les prévisions.

Vous pouvez interroger des données spatiales avec les fonctions SQL Amazon Redshift. Les données spatiales contiennent des valeurs géométriques pour un objet.

Les opérations de type de données GEOMETRY fonctionnent sur le plan cartésien. Bien que l’identifiant du système de référence spatiale (SRID) soit stocké à l’intérieur de l’objet, ce SRID n’est qu’un identifiant du système de coordonnées et ne joue aucun rôle dans les algorithmes utilisés pour traiter les objets GEOMETRY. À l’inverse, les opérations sur le type de données GEOGRAPHY traitent les coordonnées à l’intérieur des objets comme des coordonnées sphériques sur un sphéroïde. Ce sphéroïde est défini par le SRID, qui fait référence à un système de référence spatiale géographique. Par défaut, les types de données GEOGRAPHY sont créés avec la référence spatiale (SRID) 4326, faisant référence au système géodésique mondial (WGS) 84. Pour plus d'informations SRIDs, voir Système de référence spatiale sur Wikipedia.

Vous pouvez utiliser la fonction ST_Transform pour transformer les coordonnées de différents systèmes de référence spatiale. Une fois la transformation des coordonnées terminée, vous pouvez également utiliser une simple distribution entre les deux, à condition que l’entrée GEOMETRY soit codée avec le SRID géographique. Cette conversion copie simplement les coordonnées sans aucune autre transformation. Par exemple :

SELECT ST_AsEWKT(ST_GeomFromEWKT('SRID=4326;POINT(10 20)')::geography);
st_asewkt ------------------------ SRID=4326;POINT(10 20)

Pour mieux comprendre la différence entre les types de données GEOMETRY et GEOGRAPHY, envisagez de calculer la distance entre l’aéroport de Berlin (BER) et l’aéroport de San Francisco (SFO) à l’aide du système géodésique mondial (WGS) 84. En utilisant le type de données GEOGRAPHY, le résultat est exprimé en mètres. Lorsque vous utilisez le type de données GEOMETRY avec SRID 4326, le résultat est exprimé en degrés, qui ne peuvent pas être convertis en mètres, car la distance d’un degré dépend de l’emplacement des géométries du globe.

Les calculs sur les types de données GEOGRAPHY sont principalement utilisés pour des calculs réalistes de terre ronde, tels que la zone précise d’un pays sans distorsion. Cependant, leur calcul coûte beaucoup plus cher. Par conséquent, ST_Transform peut transformer vos coordonnées en un système de coordonnées projetées local approprié et effectuer le calcul sur le type de données GEOMETRY plus rapidement.

À l’aide des données spatiales, vous pouvez exécuter des requêtes afin d’effectuer les opérations suivantes :

  • Trouver la distance entre deux points.

  • Vérifier si une zone (polygone) en contient une autre.

  • Vérifier si une linestring coupe une autre linestring ou un polygone.

Vous pouvez utiliser le type de données GEOMETRY pour contenir les valeurs des données spatiales. Une valeur GEOMETRY dans Amazon Redshift peut définir des types de données primitifs de géométrie bidimensionnelle (2D), tridimensionnelle (3DZ), bidimensionnelle avec une mesure (3DM) et quadridimensionnelle (4D) :

  • Une géométrie bidimensionnelle (2D) est spécifiée par deux coordonnées cartésiennes (x, y) dans un plan.

  • Une géométrie tridimensionnelle (3DZ) est spécifiée par trois coordonnées cartésiennes (x, y, z) dans l’espace.

  • Une géométrie bidimensionnelle avec mesure (3DM) est spécifiée par trois coordonnées (x, y, m), où les deux premières sont des coordonnées cartésiennes dans un plan et la troisième est une mesure.

  • Une géométrie quadridimensionnelle (4D) est spécifiée par quatre coordonnées (x, y, z, m), où les trois premières sont des coordonnées cartésiennes dans un espace et la quatrième est une mesure.

Pour plus d’informations sur les types de données primitives géométriques, consultez Well-known text dans Wikipedia.

Vous pouvez utiliser le type de données GEOGRAPHY pour contenir les valeurs des données spatiales. Une valeur GEOGRAPHY dans Amazon Redshift peut définir des types de données primitifs de géométrie bidimensionnelle (2D), tridimensionnelle (3DZ), bidimensionnelle avec une mesure (3DM) et quadridimensionnelle (4D) :

  • Une géométrie bidimensionnelle (2D) est spécifiée par des coordonnées de longitude et de latitude sur un sphéroïde.

  • Une géométrie tridimensionnelle (3DZ) est spécifiée par des coordonnées de longitude, de latitude et d’altitude sur un sphéroïde.

  • Une géométrie bidimensionnelle avec mesure (3DM) est spécifiée par trois coordonnées (longitude, latitude et mesure), où les deux premières sont des coordonnées angulaires sur une sphère et la troisième est une mesure.

  • Une géométrie quadridimensionnelle (4D) est spécifiée par quatre coordonnées (longitude, latitude, altitude, mesure), où les trois premières sont la longitude, la latitude et l’altitude, et la quatrième est une mesure.

Pour plus d’informations sur les systèmes de coordonnées géographiques, consultez Coordonnées géographiques et Coordonnées sphériques sur Wikipédia.

Les types de données GEOMETRY et GEOGRAPHY ont les sous-types suivants :

  • POINT

  • LINESTRING

  • POLYGON

  • MULTIPOINT

  • MULTILINESTRING

  • MULTIPOLYGON

  • GEOMETRYCOLLECTION

Des fonctions SQL Amazon Redshift prennent en charge les représentations suivantes des données géométriques :

  • GeoJSON

  • Well-known text (WKT)

  • Extended well-known text (EWKT)

  • Représentation WKB (Well-known binary)

  • Extended well-known binary (EWKB)

Vous pouvez effectuer une conversion entre les types de données GEOMETRY et GEOGRAPHY.

Le code SQL suivant convertit une linestring à partir d’une GEOMETRY en une GEOGRAPHY.

SELECT ST_AsEWKT(ST_GeomFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geography);
st_asewkt ---------------------------------------------- SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)

Le code SQL suivant convertit une linestring à partir d’une GEOGRAPHY en une GEOMETRY.

SELECT ST_AsEWKT(ST_GeogFromText('LINESTRING(110 40, 2 3, -10 80, -7 9)')::geometry);
st_asewkt ---------------------------------------------- SRID=4326;LINESTRING(110 40,2 3,-10 80,-7 9)

Amazon Redshift fournit de nombreuses fonctions SQL pour interroger les données spatiales. À l’exception de la fonction ST_IsValid, les fonctions spatiales qui acceptent un objet GEOMETRY comme argument s’attendent à ce que cet objet GEOMETRY soit une géométrie valide. Si l’objet GEOMETRY ou GEOGRAPHY n’est pas valide, le comportement de la fonction spatiale n’est pas défini. Pour plus d’informations sur la validité, consultez Validité géométrique.

Pour plus d’informations sur les fonctions SQL permettant d’interroger les données spatiales, consultez Fonctions spatiales.

Pour plus d’informations sur le chargement des données spatiales, consultez Chargement d’une colonne avec le type de données GEOMETRY ou GEOGRAPHY.