Premiers pas avec les données GEOMETRY

Premiers pas avec les données GEOMETRY


Dans partie 1 de cette série de blogs, nous avons examiné comment Snowflake prend en charge le type de données géospatiales GEOGRAPHY, qui fonctionne avec la Terre comme un ellipsoïde, mesurant des distances sur une courbure et traçant des objets à l’aide du dernier système géodésique mondial, WGS84. Nous avons également expliqué que lorsque vous regardez la trajectoire de vol d’un avion sur un avion en deux dimensions, il ne semble pas que l’avion vole en ligne droite en raison de la courbure de la trajectoire de vol par rapport à la carte en deux dimensions vue à partir de laquelle vous le regardez. Mais que se passe-t-il si votre analyse géospatiale a besoin de cette représentation bidimensionnelle ? Que se passe-t-il si nous ne voulons pas représenter une partie de la terre sous la forme d’un ellipsoïde lors de nos calculs géospatiaux ? Entrez le type de données GEOMETRY, qui a été annoncé comme une fonctionnalité d’aperçu privé lors de notre 2022 Sommet du flocon de neige.

Les bases de la GÉOMÉTRIE (c’est-à-dire, quand une carte est plus qu’une carte)

Si la GÉOGRAPHIE est un globe posé sur le bureau de notre professeur, alors la GÉOMÉTRIE est le livre de cartes que vous gardiez dans votre voiture avant l’époque du GPS et des téléphones portables. Lorsque vous utilisez ce livre pour déterminer les directions, vous n’avez probablement jamais réfléchi au fait qu’une carte du livre que vous consultez peut sembler différente selon le système de référence spatiale à partir duquel elle a été construite. « Attendez une minute, » dites-vous, « est-ce qu’une carte n’est pas juste une carte? » Considérez les deux cartes ci-dessous :

Screen Shot 2022 09 07 at 9.14.51 AM

Celui de gauche peut vous sembler « normal », tandis que celui de droite peut sembler déformé, presque comme si quelqu’un avait pris l’image de la carte de gauche et étiré la largeur horizontale sans changer la hauteur. Mais regardez de plus près – remarquez-vous sur la carte de gauche comment l’Alaska se courbe vers le nord et comment les îles canadiennes vers l’océan Arctique pointent tout droit vers le nord ? Et comment l’Alaska pointe vers l’ouest et les îles canadiennes s’étendent plus vers l’est sur la carte de droite ? Une carte n’est pas une distorsion de l’autre ; au lieu de cela, ils utilisent chacun des projections mathématiques différentes pour transformer la terre courbée en un plan bidimensionnel.

Les mesures et les relations fonctionneraient également différemment sur chaque carte. Les mesures est-ouest seraient certainement plus longues sur la carte de droite, et remarquez comment les îles de l’Alaska seraient à peu près sur la même longitude du sud du Canada, alors qu’elles seraient plus alignées avec le nord du Canada sur la carte de gauche ? Beaucoup de choses à propos de ces deux cartes seraient différentes si nous effectuions la même analyse géospatiale sur chacune, mais l’une n’est pas plus correcte que l’autre. Au lieu de cela, votre cas d’utilisation déterminera quelle carte vous devez utiliser.

Croyez-le ou non, il existe de nombreuses «cartes» différentes et elles sont cataloguées par quelque chose appelé un système de référence spatiale. Chaque projection unique de la Terre reçoit un identifiant appelé identifiant de référence spatiale, ou SRID. Un SRID aura souvent plusieurs caractéristiques uniques :

  • Un système de coordonnées, qui peut être différent de la longitude et de la latitude standard
  • Une donnée, qui lie des points sur la terre sphérique au système de coordonnées
  • Une projection, qui transforme toutes les coordonnées d’une sphère en un plan
  • Une unité de mesure pour ce système de coordonnées, qui peut être autre chose que des mètres

En prenant nos cartes ci-dessus et en en ajoutant deux autres, nous pouvons voir l’application visuelle des différents SRID ci-dessous (cliquez sur les liens pour obtenir plus d’informations sur chaque SRID) :

IDSR : 2163 « Aire égale de l’Atlas national des États-Unis »

Screen Shot 2022 09 07 at 9.23.28 AM

IDSR : 2955 « UTM Zone 11N »

Screen Shot 2022 09 07 at 9.23.54 AM

IDSR : 4326« WGS84 »

Screen Shot 2022 09 07 at 9.31.06 AM

IDSR : 3395« Mercator »

Screen Shot 2022 09 07 at 9.31.35 AM

Mais comment cela est-il utile en pratique dans l’analyse géospatiale ? Pour répondre à cela, nous devons considérer certaines des raisons spécifiques d’utiliser le type de données GEOMETRY plutôt que GEOGRAPHY. Par exemple, lorsque nous concentrons notre analyse sur une zone plus petite et plus locale, nous ne souhaitons peut-être pas utiliser un système de coordonnées basé sur la longitude et la latitude. Ou nous pourrions avoir besoin d’une autre unité de mesure. Pensez aux progrès de l’analyse sportive : si nous mesurons où un ballon est botté sur un terrain de football/soccer, ou où une balle de tennis est frappée sur un court de tennis, ou d’où un ballon de basket est tiré sur un terrain de basket, il Cela n’aurait aucun sens de tracer ces emplacements sous forme de coordonnées de longitude et de latitude, et nous pourrions avoir besoin d’une unité de mesure différente des mètres en fonction de la précision dont nous avons besoin. Ou pensez à la circulation piétonnière dans un centre commercial, à la plantation de cultures dans un champ, à la gestion de l’énergie dans une installation ou aux efforts de reboisement – tous ces éléments traitent de la compréhension des mesures et des relations spatiales à une échelle plus ciblée que « la terre entière » et peut donc bénéficier de l’utilisation de GEOMETRY over GEOGRAPHY.

L’orientation est également importante. Il existe des différences entre le vrai nord, le nord de la grille et le nord magnétique, et chacun sera applicable dans différentes situations, ce qui est l’une des raisons pour lesquelles vous voyez certaines des cartes ci-dessus « se pencher » un peu dans une direction ou une autre. Tous ces exemples s’ajoutent aux raisons pour lesquelles nous avons besoin de la GÉOMÉTRIE en plus de la GÉOGRAPHIE.

Exemples de différences entre la GÉOMÉTRIE et la GÉOGRAPHIE

Voyons maintenant comment la GÉOMÉTRIE fonctionne dans Snowflake et en quoi elle diffère de la GÉOGRAPHIE. Examinons une image de partie 1 de la série de blogs :

Screen Shot 2022 09 07 at 9.38.05 AM

L’instruction SQL qui produit l’image ci-dessus est la suivante :

SELECT * FROM WORLD_COUNTRIES_GEOM
WHERE ST_INTERSECTS(BORDER, TO_GEOMETRY('LINESTRING(13.4814 52.5015, -121.8212 36.8252)'));

Il y a deux éléments remarquables dans cette instruction SQL :

  • TO_GEOMETRY est une fonction unique au type de données GEOMETRY. Comme TO_GEOGRAPHY, il convertit une entrée d’une chaîne en un type de données GEOMETRY.
  • ST_INTERSECTS est la même fonction que nous avons vue avec le type de données GEOGRAPHY et elle effectue la même comparaison de relations, quel que soit le type de données géospatiales que vous utilisez. De nombreuses fonctions géospatiales peuvent fonctionner de manière interchangeable avec GEOGRAPHY et GEOMETRY dans Snowflake et ne nécessitent aucune distinction de dénomination particulière.
Extraction SRID
Screen Shot 2022 09 07 at 9.42.15 AM

Comme mentionné ci-dessus, l’introduction de GEOMETRY signifie que nous devons maintenant nous soucier du SRID utilisé par nos données. Dans la requête ci-dessus, nous pouvons utiliser le ST_SRID pour extraire le SRID d’une colonne géospatiale donnée, quel que soit son type. GEOGRAPHY sera toujours SRID 4326, tandis qu’une colonne GEOMETRY peut varier en fonction de l’ensemble de données. Dans ce cas, nous avons un OSM_BAY_AREA table contenant une colonne GEOGRAPHY et une colonne GEOMETRY pour le même objet. Le SRID de la colonne GEOMETRY est 3493.

Toujours définir le SRID pour les objets non définis
Screen Shot 2022 09 07 at 9.42.57 AM

Mais l’introduction d’une prise en charge SRID alternative signifie que nous devons toujours savoir quel SRID une fonction donnée utilise, car à ce stade, Snowflake ne prend pas encore en charge la possibilité de convertir d’un SRID à un autre. Ainsi, dans l’exemple ci-dessus, la requête sur les lignes 17-18 échouera car la chaîne POLYGON n’a pas de SRID défini pour elle. Snowflake suppose un SRID de 0 dans ce cas, et parce que le GÉOM colonne est dans SRID 3493, Snowflake ne peut pas résoudre la fonction et émettra une erreur.

Nous pouvons résoudre cette erreur en utilisant l’une des deux approches des lignes 21-22 ou 25-26. La première approche dans les lignes 21-22 utilise la syntaxe EWKT pour définir le SRID du POLYGONE à droite dans la chaîne. La deuxième approche dans les lignes 25-26 utilise ST_SETSRID pour définir le SRID de la sortie TO_GEOMETRY sur 3493 à l’aide d’un argument supplémentaire.

L’impact sur les mesures
Screen Shot 2022 09 07 at 9.44.24 AM

Passage aux fonctions de mesure ST_AREA et ST_PERIMETER, qui peut à nouveau être utilisé de manière interchangeable avec GEOGRAPHY et GEOMETRY, montre comment les mesures peuvent produire des résultats légèrement différents entre les deux types de données, toutes choses étant égales par ailleurs. SRID 4326 et SRID 3493 utilisent tous deux des mètres comme unité de mesure, nous pouvons donc voir comment les mesures de surface et de périmètre du comté de Santa Clara en Californie dans la requête ci-dessus produisent des résultats légèrement différents lors du calcul des mesures sur une courbure (GEOGRAPHY) par rapport à un SRID 3493 Géométrie plane).

Travailler avec différents systèmes de coordonnées
Screen Shot 2022 09 07 at 9.45.00 AM

La conversation passe des similitudes à de grandes différences lorsque l’on considère le système de coordonnées. En utilisant le ST_YMIN et ST_YMAX fonctions dans la requête ci-dessus, nous pouvons extraire des exemples des systèmes de coordonnées utilisés dans chaque SRID. Comme vous pouvez le voir ci-dessus, la colonne GEOGRAPHY utilise la longitude et la latitude standard comme système de coordonnées, mais SRID 3493 (GEOMETRY) utilise un système de coordonnées très différent, avec des nombres beaucoup plus grands. Cela montre à quel point les systèmes de coordonnées peuvent être très différents entre les SRID et comment l’utilisation de GEOGRAPHY n’est pas appropriée pour tous les cas d’utilisation géospatiaux.

Respect des systèmes de coordonnées dans les constructeurs
Screen Shot 2022 09 07 at 9.46.05 AM

Le système de coordonnées défini dans une colonne GEOMETRY est également respecté par les fonctions constructeurs, comme indiqué ci-dessus avec ST_MAKEPOLYGONE. Dans les résultats ci-dessus, vous pouvez voir comment GEOMETRY_POLYGON créé pour le même bâtiment que GEOGRAPHY_POLYGON utilise les valeurs de système de coordonnées beaucoup plus grandes dans la définition du polygone au lieu de la longitude et de la latitude. Toutes les fonctions de construction et de transformation respecteront toujours le système de coordonnées utilisé dans le SRID d’une colonne GEOMETRY.

L’engagement de Snowflake envers le support géospatial

Au cours de l’année dernière, Snowflake a réalisé d’importants investissements pour prendre en charge une analyse géospatiale plus approfondie dans le Data Cloud, en commençant par la prise en charge GEOGRAPHY et en poursuivant avec l’introduction lors de notre sommet Snowflake de juin 2022 de la prise en charge GEOMETRY, dont nous sommes heureux d’annoncer qu’elle est désormais publique. Aperçu. Nous continuerons d’améliorer la prise en charge géospatiale dans les mois à venir en simplifiant l’ingestion de données en prenant en charge davantage de formats de données et de stockage, en ajoutant de nouvelles fonctions, en ajoutant la conversion d’un SRID à un autre et en permettant l’intelligence spatiale en fournissant des capacités de visualisation.

J’espère que ces deux articles de blog vous ont donné un bon aperçu de ce que sont les données géospatiales, de leur fonctionnement et de la façon dont vous pouvez les utiliser dans Snowflake. Maintenant que la prise en charge de GEOGRAPHY est généralement disponible et que la prise en charge de GEOMETRY est en préversion publique, vous êtes libre d’aller tester ces nouvelles fonctionnalités par vous-même !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.