Utiliser des données Géospatiales dans SAP HANA

SAP HANA intègre des fonctionnalités permettant de stocker, traiter, partager et manipuler le traitement de données géospatiales.

Pour y parvenir, SAP HANA intègre un moteur de calcul dédié et permet de traiter les données sous forme de vecteurs 2D/3D, de points, et ensembles de points (ligne), ou encore de polygones simples et composés.

Dans cet article, nous prendrons pour exemple une société souhaitant représenter graphiquement les zones géographiques pour lesquelles les ventes sont les plus importantes.

Types de données

Pour pouvoir manipuler les données géospatiales, de nouveaux types de données ont été créés :

Types de données géo-spatiales
TypeDescription
ST_GEOMETRYIl s’agit du « super-type » pour tous les types de données spatiales
ST_POINTDésigne un seul point de localisation dans l’espace. Ce point a toujours deux coordonnées : X,Y
ST_POLYGONReprésente un espace. Dans les SIG, les polygones représente généralement des territoires (régions, départements…)
ST_LINESTRINGGéométrie avec une longueur mais pas d’air. Utilisé généralement pour représenter une route, une rivière…
ST_MULTILINECollection de linestrings. Utilisé par exemple pour représenter un réseau routier
ST_MULTIPOINTSEnsemble de points
ST_MULTIPOLYGONCollection de polygones. Utilisé par exemple pour représenter un pays et ses régions
ST_CIRCULARSTRINGEnsemble d’arcs de cercle composé de trois points, un début, un intermédiaire et une fin.

Fonctions SQL pour les données géospatiales

Des fonctions SQL spécialisées sont disponibles pour manipuler ces types de données. Nous pouvons notamment citer celles-ci :

FonctionDescription
[geo1].ST_EQUALS([geo2])Test si une géométrie est égale à une autre (au niveau spatial)
[geo1].ST_CONTAINS([geo2])Renvoie 1 (true) si une les valeurs d’une géométrie contiennent celles d’une autre. A utiliser dans un système de références « Flat-Earth »*.
[geo1].ST_COVERS([geo2])Renvoie 1 (true) si une des valeurs d’une géométrie contient celle d’une autre. A utiliser dans un système de références « Round-Earth »**.
[geo1].ST_WITHIN([geo2])Renvoie 1 (true) si une les valeurs d’une géométrie sont contenues dans celles d’une autre. A utiliser dans un système de références « Flat-Earth »*.
[geo1].ST_COVEREDBY([geo2])Renvoie 1 (true) si une les valeurs d’une géométrie sont contenues celles d’une autre. A utiliser dans un système de références « Round-Earth »**.
[geo1].ST_WITHINDISTANCE([geo2], distance)Test si deux géométries sont à une certaine distance l’une de l’autre
[geo1].ST_DISTANCE([geo2])Retourne la plus petite distance entre deux géométries
ST_AreaCalcul l’air d’un polygone ou d’un multi-polygone
ST_AsGeoJSONRetourne un string représentant la géométrie dans un format JSON
ST_AsTextRetourne la représentation textuelle d’une valeur ST_GEOMETRY
ST_BufferRetourne une valeur ST_GEOMETRY qui représente tous les points qui sont à une distance définie d’un point donné.
ST_ConvexHullRetourne l’enveloppe convexe d’un point ST_GEOMETRY
ST_IntersectionRetourne la valeur qui représente l’intersection de deux géométries
ST_IsEmptyDétermine si une géométrie représente un ensemble vide.

*Flat earth: représentation 2D de la terre
**Round earth: représentation 3D de la terre

En complément, d’autres fonctions nous permettent de faire du clustering via des requêtes SQL.

Le clustering est une méthode qui vise à regrouper des points en clusters en fonction de certains critères. Un cluster constitue un sous ensemble des données d’origine.

Pour illustrer cette définition, voici trois exemples d’algorithme couramment utilisés en clustering :

Algorithmes utilisés en clustering

Sur la plateforme HANA, il est possible d’utiliser ces algorithmes avec de simples requêtes SQL.

En reprenant notre exemple, nous pouvons utiliser l’algorithme K-means pour déterminer les zones (clusters) où les ventes sont plus importantes :

Table utilisée :

CREATE COLUMN TABLE « SAPHANADB ». »FORMATION_GEOMETRIE » (
id_magasin INTEGER,
nom_magasin NVARCHAR(50),
ventes_magasin INTEGER,
localisation_magasin ST_POINT);

On notera l’utilisation du type ST_POINT (qui correspond au champ qui contient les coordonnées géospatiales, latitude longitude, de nos magasins dans notre exemple)

En exécutant un algorithme K-MEANS sur les données, nous obtenons les résultats suivants :

Algorithme K-Means

L’algorithme est paramétré pour grouper les magasins en 6 clusters (nos zones de ventes) d’après leurs coordonnées (ST_POINT) et calculer la moyenne des ventes et le nombre de magasin par cluster. Le centroid, correspond au point représentant le centre du cluster.

Vous pouvez également inclure une clause de type HAVING COUNT(*) > 5 pour que l’algorithme ne créé que des clusters d’au moins 5 magasins.

Il est aussi possible de récupérer l’enveloppe du cluster via la commande ST_ClusterEnvelope() :

Récupération de l'enveloppe du cluster

Cette fonctionnalité nous permet de récupérer le « contour » de nos clusters et avoir une représentation graphique de nos zones de ventes sous forme de polygone.

Ces données, stockées sous forme de ST_PYLYGON, peuvent être transformées en XML pour générer une forme « graphique ».

Pour ce faire nous utiliserons la fonction .ST_AsSVG() :

SELECT « SHAPE ».ST_AsSVG() from « departements-20170102 » where « code_insee » = ’29’ ;

Transformation des données en XML

Note : le fichier utilisé est un shapefile téléchargé sur le site de l’insee. Puis chargé dans une table «  departements-20170102 » de la base HANA. Le résultat aurait été identique si nous avions utilisé la fonction ST.AsSVG sur nos contours de clusters.

Cette fonction vous génère une figure représentant une géométrie sous forme de XML.

Ce XML peut être exporté vers un fichier HTML pour obtenir une visualisation graphique :

Exemple d'export de visualisation graphique

Cette manipulation peut bien entendu être automatisée via un script xsjs sur la plateforme HANA.

Vous pouvez trouver la liste complète des fonctions spatiales à cette adresse :

https://help.sap.com/viewer/cbbbfc20871e4559abfd45a78ad58c02/2.0.00/en-us/ef447b3e0a964cd5bbe82074f4225f84.html

Modélisation spatiale

Il est aussi possible de créer des modèles (vues HANA) géo-spatiaux grâce à de nouveaux types de jointures. Ces jointures se comportent comme des fonctions spatiales.

Créez une vue de calcul, ajoutez-y des tables contenant des types de données spatiale et créez une jointure :

Création de modèles géo-spatiaux

De nouveaux prédicats vous sont proposés : Contains, Covered By, Covers, Crosses, Disjoint, Equals, Intersects, Overlaps, Relate, Touches, Within et Within Distance.

Si vous choisissez le prédicat « Within Distance » vous pouvez paramétrer la distance voulue, soit de manière fixe, soit par « input parameter » :

Paramétrage de la distance voulue

En revanche, si vous choisissez le prédicat « Relate », il vous faudra renseigner manuellement (ou via input parameters) une matrice d’intersection :

Matrice d'intersection de la partie Relate

CONCLUSION DE L’EXPERT

La plateforme SAP HANA propose de nombreuses fonctionnalités dédiées au traitement et à l’analyse des données géospatiales. Elles permettent de réaliser de nouvelles analyses, peu courantes dans le monde de la BI, la plupart du temps, on retrouve ces fonctions dans les SIG.

Avec un peu de développement, il est même possible, via les services XS, de créer un SIG maison temps-réel, qui repose sur les données stockées dans votre base HANA et ainsi enrichir vos outils d’analyse de données.



Laisser un commentaire

Enter your text here...




Formez-vous à SAP HANA !

Nous proposons plusieurs formations sur les solutions SAP HANA : Modélisation, CDS Views, Embedded Analytics...