Connexion aux données spatiales dans une base de données

Vous pouvez utiliser des colonnes de données spatiales stockées dans votre base de données pour créer des visualisations de cartes dans Tableau. Vous pouvez vous connecter aux sources de données spatiales prises en charge et créer des visualisations avec celles-ci pour analyser les données spatiales, ou vous pouvez vous connecter à des requêtes SQL ou RAWSQL personnalisées pour effectuer une analyse spatiale avancée.

Tableau supporte les connexions directes aux données spatiales à l’aide de ces connecteurs :

  • Amazon Redshift
  • Microsoft SQL Server
  • PostgreSQL + PostGIS
  • Pivotal Greenplum + PostGIS
  • Oracle
  • Snowflake

Pour en savoir plus sur l’utilisation de ces connecteurs, consultez les exemples de connecteurs Microsoft SQL Server, PostgreSQL, Pivotal Greenplum Database, Oracle ouSnowflake.

Données spatiales prises en charge et SRID

Pour Microsoft SQL Server, seules les données spatiales de type Géographie sont prises en charge.

PostgreSQL + PostGIS, Oracle et Pivotal Greenplum + PostGIS prennent en charge les champs de type géographique et géométrique. Les champs de géométrie doivent spécifier le type Géo (par exemple POINT, LINESTRING) et SRID pour être reconnus comme champ spatial. Les champs de géographie doivent spécifier le type Géo pour pouvoir être reconnus.

Remarque : Dans PostgreSQL + PostGIS, vous pouvez vous connecter aux tables comportant des types de géométrie mixtes (points, lignes et polygones), mais Tableau n’effectuera pas de rendu simultané.

Les SRID suivants sont pris en charge par ces connecteurs :

  • NAD83 (EPSG :4269)

  • ETRS89 (EPSG :4258)

  • WGS84 (EPSG :4326)

Dans PostgreSQL + PostGIS, SRID est toujours WGS84 (EPSG :4326) par défaut.

Tableau prend à la fois en charge les connexions en direct et à un extrait avec ces connecteurs.

Se connecter à des colonnes de données spatiales

  1. Ouvrez Tableau et connectez-vous aux données.
    Pour plus d’information sur la connexion aux données à l’aide de connecteurs pris en charge, consultez les exemples de connecteurs Microsoft SQL Server, PostgreSQL, Oracle, Pivotal Greenplum Database ou Snowflake.
  2. Dans la page Source de données, dans le volet gauche sous Table, faites glisser une table comportant des données spatiales sur l’espace de travail.

    Les colonnes de données spatiales affichent le même nom que celui figurant dans votre base de données.

    Vous êtes maintenant prêt à créer une carte dans Tableau à l’aide des données spatiales. Pour plus d’information sur la création de cartes depuis des fichiers spatiaux, consultez Créer une vue de carte à partir de données spatiales.

Utiliser SQL personnalisé et RAWSQL pour effectuer des analyses avancées de données spatiales

Se connecter à une requête SQL personnalisée

  1. Ouvrez Tableau et connectez-vous à votre base de données.
  2. Dans la page Source de données, volet de gauche, faites glisser Nouvelle requête SQL personnalisée sur l’espace de travail.

  3. Entrez ou collez votre requête dans la boîte de dialogue Modifier SQL personnalisé qui s’affiche. Pour des exemples de SQL personnalisé que vous pouvez utiliser les données spatiales, consultez Exemples de requêtes SQL personnalisées.

  4. Lorsque vous avez terminé, cliquez sur OK.

Pour plus d’informations, consultez Se connecter à une requête SQL personnalisée.

Exemples de requêtes SQL personnalisées

Les requêtes suivantes sont des exemples. Notez que les requêtes SQL personnalisées varient selon les sources de données.

Si vos données comportent deux ensembles de points, tels que des écoles et des parcs, et que vous souhaitez montrer leurs points d’intersection :

SÉLECTIONNEZ S.[nom] comme SchoolName, P.[nom] comme PubSpaceName, S.geog_schools.STBuffer(<Parameters.Radius> ) comme Geog_School, P.geog_pub_space as Geog_Pub_Space DEPUIS TestSpatial.dbo.seattle_public_schools JOINTURE GAUCHE S TestSpatial.dbo.seattle_pub_space P SUR S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 1

Cet exemple de requête produit une ligne pour chaque cas où un polygone d’espace public se situe dans le rayon (mètres) d’une école. Le résultat de la requête se présente ainsi dans la grille de données :

Remarque : cet exemple référence un paramètre appelé « Rayon ». Il mesure la distance (en mètres) et inclut les paramètres suivants :

  • Type de données : Flottant
  • Valeur actuelle : 600
  • Valeurs autorisées : Plage
  • Minimum : 100
  • Maximum : 2000
  • Taille de pas : 50

À l’aide du paramètre, vous pouvez ajuster dynamiquement la relation entre les écoles et les espaces publics.

Pour plus d’information, consultez Utiliser des paramètres dans une requête SQL personnalisée.

Si vous souhaitez des données autour d’un certain point seulement

SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C WHERE C.geom.STIntersects(geography::STGeomFromText('POINT(-122.344706 47.650388)', 4326).STBuffer(1000))=1

Cet exemple de requête limite les données à 1000 mètres autour du POINT. Le rayon peut être un paramètre, par exemple le paramètre utilisé dans le premier exemple.

Ou, plutôt qu’un point ou un rayon, un rectangle peut être utilisé. Par exemple :

SELECT * FROM [Test_spatial_<username>].[dbo].[SDOT_Collisions] C
WHERE C.geom.STIntersects(geography::STGeomFromText('POLYGON ((-122.3625 47.6642,-122.3625 47.6493,-122.3427 47.6493,-122.3422 47.6642,-122.3625 47.6642))', 4326))=1

L’ordre de déroulement des points de polygone (sens horaire contre sens anti-horaire) détermine l’ensemble de points que vous obtenez. Vous pouvez inverser l’ordre de déroulement avec la fonction ReorientObject() de SQL Server.

Si vous obtenez une erreur relative aux types de données mixtes

SELECT *, F.geom.STGeometryType() as geomtype FROM [Test_spatial_<username>].[dbo].[us_historic_fire_perimeters_dd83] F
WHERE F.geom.STGeometryType() = 'MultiPolygon' OR F.geom.STGeometryType() = 'Polygon'

Cet exemple de requête filtre les données spatiales de type géométrie puisque Tableau ne peut effectuer un rendu de données spatiales de type géométrie pour les connexions Microsoft SQL Server. Vous pouvez également sélectionner d’autres types de données spatiales.

Si le rendu de vos données est trop lent dans Tableau

SELECT [Id], [OBJECTID], [fire_num], [year_], [acres], [fire_name], [unit_id], [Shape_Leng], [Shape_Area], [geom].Reduce(500) as SimpleGeom
FROM [Test_spatial_<username>].[dbo].[us_historic_fire_perimeters_dd83]
WHERE [geom].Reduce(500).STGeometryType() = 'MultiPolygon' OR [geom].Reduce(500).STGeometryType() = 'Polygon'

Cet exemple de requête peut considérablement réduire la taille des données. (Certains objets sont réduits à des Points, et ceux-ci sont ignorés.)

Utiliser RAWSQL

Pour utiliser RAWSQL avec des données spatiales, vous pouvez créer un champ calculé à l’aide de la fonction RAWSQL_SPATIAL ou RAWSQLAGG_SPATIAL. Par exemple : 

RAWSQL_SPATIAL("Select %1.STIntersection(%2.STBuffer(200))",[school_geom], [park_geom])

Cette formule retourne des données spatiales basées sur l’intersection de deux valeurs.

RAWSQLAGG_SPATIAL("ST_ConvexHull(ST_Collect(%1))", [Geog])

RAWSQLAGG_SPATIAL("ST_ConcaveHull(ST_Collect(%1), %2, false)", [Geog], [ParameterValue])

Chacune d’entre elles renvoie une zone de délimitation autour des points de données fournis. ConcaveHull est une zone de délimitation minimale basée sur la précision, qui, dans cette fonction, est la valeur du paramètre.

Pour plus d’information sur l’utilisation de RAWSQL avec des données spatiales, consultez Fonctions de passage direct (RAWSQL). Pour plus d’information sur la création de champs calculés, consultez Créer un champ calculé.

Remarque : Les fonctions spatiales RAWSQL ne sont pas disponibles en cas de connexion à Oracle.

Remarque : des erreurs peuvent se produire en cas d’utilisation de RAWSQL spécifique aux fonctions PostGIS avec PostgreSQL + PostGIS.

Résolution des problèmes de connexion aux données spatiales

Problèmes de performances

Lorsque vous utilisez des colonnes de données spatiales liées avec un grand nombre d’enregistrements, une duplication de repères peut se produire. Il en résulte généralement des performances lentes.

Pour améliorer les performances, extrayez la source de données liée. Pour plus d’informations, consultez Extraire vos données.

Messages d’erreur et solutions Microsoft SQL Server

Lorsque la table de données spatiales utilise une référence de données spatiales non prise en charge

Message d’erreur :

Une erreur s’est produite lors de la communication avec la source de données Microsoft SQL Server ’<data source name>’.​
Connexion de mauvaise qualité : Tableau n’a pas pu se connecter à la source de données.
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash : géométrie incompatible avec la géographie
[Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Impossible de préparer la/les instruction(s).​

Solution :

  • Exportez les données spatiales depuis Microsoft SQL Server vers un fichier de formes et connectez-vous à ce fichier dans Tableau. Les connexions aux fichiers de données spatiales passent par un processus de transformation des données qui prend en charge des milliers de projections.

  • Exportez les données depuis Microsoft SQL Server et transformez les données à l’aide d’un outil GIS tel que QGIS ou ArcGIS. Rechargez ensuite la table dans Microsoft SQL Server. ​​

Lorsque la table de données spatiales inclut plusieurs types d’objets spatiaux

Message d’erreur :

Impossible de terminer l’action​
L’opération spatiale a entraîné un MixedGeometry ou MixedGeography, que Tableau ne prend pas encore en charge.​
L’opération spatiale a entraîné un MixedGeometry ou MixedGeography, que Tableau ne prend pas encore en charge.​

Solution :

Utilisez SQL personnalisé pour filtrer les données. Pour plus d’informations, consultez l’exemple SQL personnalisé Si vous obtenez une erreur relative aux types de données mixtes.

Si les mesures sont agrégées dans la visualisation

Message d’erreur :

An error occurred while communicating with the Microsoft SQL Server data source ’<data source name>’ (Une erreur s’est produite lors de la communication avec la source de données Microsoft SQL Server ’<data source name>’)
Bad Connection : Tableau could not connect to the data source. (Connexion de mauvaise qualité : Tableau n’a pas pu se connecter à la source de données.)
Cannot perform an aggregate function on an expression containing an aggregate or a subquery. (Impossible d’exécuter une fonctions d’agrégation sur une expression contenant une agrégation ou une sou-requête.)

Solution :

Désagrégez les mesures dans la visualisation : sélectionnez Analyse, puis désélectionnez Agréger les mesures.

Messages d’erreur et solutions pour PostgreSQL + PostGIS, Oracle et Pivotal Greenplum + PostGIS

Si vous utilisez des SRID mixtes et que l’un des SRID n’est pas pris en charge

Message d’erreur :

An error occurred while communicating with the PostgreSQL data source ’<data source name>’ (Une erreur s’est produite lors de la communication avec la source de données PostgreSQL ’<data source name>’).
Bad Connection : Tableau could not connect to the data source. (Connexion de mauvaise qualité : Tableau n’a pas pu se connecter à la source de données.)
Erreur : Opération sur des SRID mixtes;
Erreur lors de l’exécution de la requête
<query> depuis <datasource>
ERREUR : Opération sur des SRID mixtes;
Erreur lors de l’exécution de la requête
SELECT ST_ForceCollection(ST_Collect("mixed_SRID_geography"."location" : :geometry)) AS "clct :location :nk"
FROM "public"."mixed_SRID_geography" "mixed_SRID_geography"HAVING (COUNT(1) > 0)

Solution :

Désagrégez les mesures dans la visualisation : sélectionnez Analyse, puis désélectionnez Agréger les mesures. Cette opération élimine le message d’erreur et les données sur lesquelles le SRID n’est pas pris en charge.

Lorsque la table de données spatiales utilise une référence de données spatiales non prise en charge

Dans PostgreSQL + PostGIS, vous pouvez vous connecter à une table avec des SRID non pris en charge, mais la colonne Géométrie s’affichera comme « Inconnu ».

Solution :

  • Exportez les données spatiales depuis PostgreSQL + PostGIS vers un fichier de formes et connectez-vous à ce fichier dans Tableau. Les connexions aux fichiers de données spatiales passent par un processus de transformation des données qui prend en charge des milliers de projections.

  • Exportez les données depuis PostgreSQL + PostGIS et transformez les données à l’aide d’un outil GIS tel que QGIS ou ArcGIS. Rechargez ensuite la table à nouveau dans PostgreSQL + PostGIS. ​​

Si le résultat d’une requête dépasse la limite de 1 Go

Message d’erreur :

ERROR : array size exceeds the maximum allowed (1073741823); Error while executing the query" (ERREUR : la taille de la table dépasse le maximum autorisé (1073741823); Erreur lors de l’exécution de la requête)
SELECT ST_Collect(geom) FROM <data source>

Solution :

Réécrivez le calcul afin de le rendre plus efficace. Consultez Meilleures pratiques pour la création de calculs dans Tableau ou Créer des calculs efficaces.

 

Exemple - Créer une carte à partir de données spatiales Microsoft SQL Server

L’exemple suivant montre comment créer la carte ci-dessous qui présente les écoles dans un rayon de 600 mètres des parcs à Seattle, Washington.

Cet exemple utilise une connexion Microsoft SQL Server à une base de données appelée TestSpatial. Les tables suivantes de cette base de donnée sont utilisées :

  • seattle_schools
  • seattle_public_space

Étape 1 : Connexion

  1. Ouvrez Tableau Desktop et connectez-vous à Microsoft SQL Server.

  2. Dans la page Source de données, volet de gauche, faites glisser Nouvelle requête SQL personnalisée sur l’espace de travail.

  3. Entrez ou collez une requête dans la boîte de dialogue Modifier SQL personnalisé qui s’affiche.

    Pour cet exemple, la requête suivante est utilisée :

    SÉLECTIONNEZ S.[nom] comme SchoolName, P.[nom] comme PubSpaceName, S.geog_schools.STBuffer(<Parameters.Radius> ) comme Geog_School, P.geog_pub_space as Geog_Pub_Space DEPUIS TestSpatial.dbo.seattle_public_schools JOINTURE COMPLÈTE S TestSpatial.dbo.seattle_public_space P SUR S.geog_schools.STBuffer(<Parameters.Radius>). STIntersects(P.geog_pub_space) = 1

    Remarque : cet exemple référence un paramètre appelé « Rayon ». Pour plus d’information, consultez Utiliser des paramètres dans une requête SQL personnalisée.

    Le résultat de cette requête se présente comme suit :

Étape 2 : Créer la carte

  1. Accédez à une nouvelle feuille de calcul.

  2. Dans le volet Données, double-cliquez sur un champ spatial.

    Dans cet exemple, Geog_School est utilisé. Lorsque vous double-cliquez dessus, il est automatiquement ajouté à Détails dans la fiche Repères et une vue de carte est créée.

  3. Dans le volet Données, faites glisser une dimension vers Étiquette sur la fiche Repères. Dans cet exemple, School Name est utilisé.

  4. Sélectionnez Analyse > Créer un champ calculés.

  5. Dans l’éditeur de calcul qui s’ouvre, procédez comme suit :

    • Nommez le champ calculé. Dans cet exemple, le champ calculé est appelé Intersection.

    • Entrez une formule RAWSQL. Cet exemple utilise la formule suivante :

      RAWSQL_SPATIAL ("Sélectionner %1.STIntersection(%2)", [Geog_School], [Geog_Pub_Space])

      Cette formule retourne des données spatiales basées sur l’intersection de deux géométries.

    • Lorsque vous avez terminé, cliquez sur OK.

  6. Cliquez sur Analyse, puis désélectionnez Agréger les mesures.

  7. Dans le volet Données, faites glisser le nouveau champ calculé (dans ce cas, IIntersection) vers une nouvelle couche de la feuille de calcul.


    La fiche se met à jour avec une nouvelle couche de polygones du champ Intersection. Les repères sont des formes spatiales uniques en raison de la formule RAWSQL.

  8. Dans le volet Données, faites glisser une dimension vers Détails sur la fiche Repères. Ceci désagrège les repères.

    Pour cet exemple, la dimension PubSpaceName est utilisée.

  9. Dans le volet Données, faites glisser la même dimension vers Couleur dans la fiche Repères.

    Dans cet exemple, une couleur est maintenant affectée à chaque espace public.

  1. Mettez en forme la carte. Pour plus d’informations consultez Personnaliser l’aspect de votre carte.

    Dans cet exemple, la mise en forme suivante est utilisée :

    • Les repères School Buffer (Geog_School) sont colorés en gris.

    • Les étiquettes de repère School Name sont colorées en orange.

    • Le style de la carte d’arrière-plan est défini sur Foncé.

    • La couche Rues et autoroutes s’affiche dans la carte d’arrière-plan.

    La carte est maintenant terminée.

Voir également

Créer des cartes Tableau à partir de fichiers de données spatiales

Se connecter à une requête SQL personnalisée

Fonctions de passage direct (RAWSQL)

Démarrer avec les calculs dans Tableau

Lenteur dans la jointure de données spatiale, qui renvoie des résultats inversés en utilisant des données spatiales KML ou SQL importées depuis un fichier Shapefile ou GeoJSON

 

Merci de vos commentaires!Votre commentaire s été envoyé avec succès. Merci!