Combiner plusieurs couches dans une carte

Un même visuel Icon Map Pro peut dessiner plusieurs couches de données à la fois, par exemple des magasins sous forme de cercles, des livraisons sous forme de lignes et des régions de vente sous forme de formes. Toutes proviennent d'une seule table. Cette page explique comment chaque ligne de données trouve sa couche, comment créer cette table et ce qu'il faut vérifier lorsqu'une couche ne dessine rien.

Une carte avec des régions sous forme de formes colorées, des magasins sous forme de cercles et des lignes de livraison entre eux
Des formes, des cercles et des lignes issus d'une seule table

La règle

Une ligne de données est dessinée par la couche dont elle renseigne les champs.

Il existe un seul ensemble de puits de champs, et toutes les couches de données le lisent. Le visuel examine chaque ligne de données et regarde quels champs ont une valeur :

  • Une ligne de données avec une longitude, une latitude et une taille de cercle est un cercle.
  • Une ligne de données avec une longitude, une latitude et une destination est une ligne tracée sur la carte.
  • Une ligne de données avec seulement une référence d'entité est une forme issue d'un fichier.
Une table de trois lignes. La première renseigne la longitude, la latitude et la taille et elle est dessinée par Cercles. La deuxième renseigne la longitude, la latitude et la destination et elle est dessinée par Lignes. La troisième renseigne seulement la référence d'entité et elle est dessinée par Formes depuis des fichiers
Chaque ligne de données est dessinée par la couche dont elle renseigne les champs

Deux autres conditions doivent être remplies pour qu'une ligne de données soit dessinée :

  1. Les champs des autres couches sont vides sur cette ligne de données. Une ligne de magasin qui possède aussi une destination n'est plus un cercle. Elle est traitée comme une ligne à tracer.
  2. La couche est activée. Une ligne de données qui correspond à une couche désactivée n'est pas dessinée.

Pour afficher plusieurs types de couches sur une même carte, gardez-les donc dans une seule table, donnez à chaque ligne de données uniquement les champs de sa propre couche et laissez les autres vides.

Vide et sans valeur

Un champ est vide sur une ligne de données dans les cas suivants :

  • Il est null dans les données, ou une mesure renvoie BLANK().
  • C'est une valeur de texte qui ne contient rien, ou seulement des espaces. Les tables issues de fichiers CSV, d'Excel ou de Power Query contiennent souvent du texte vide au lieu de null. Icon Map Pro traite les deux de la même manière.
  • Aucun champ n'a été ajouté à ce puits de champs.

Zéro est une valeur, pas une absence de valeur. Une ligne de données dont la Taille du cercle vaut 0 possède quand même une taille de cercle.

Les colonnes ont une valeur sur chaque ligne

Si vous ajoutez une colonne telle que Sales à Taille du cercle, chaque ligne de données qui possède une valeur Sales reçoit une taille de cercle, y compris celles que vous destiniez aux lignes ou aux formes. Utilisez une colonne vide sur ces lignes de données, ou une mesure qui renvoie une valeur vide pour elles. Consultez Des mesures vides pour les autres lignes.

Ce dont chaque couche a besoin

Toutes les couches ont besoin de ID. Dans ce tableau, « Pondération de cellule » désigne le puits de champs Pondération de cellule (H3/S2/A5/Geohash), et « Destination » désigne à la fois Longitude de destination et Latitude de destination.

Couche À renseigner À laisser vide
Cercles Longitude (X), Latitude (Y), Taille du cercle Destination, Image / WKT / GeoJSON, Référence d'entité, Pondération de la carte thermique, Pondération de cellule, Hauteur de colonne
Images et icônes Longitude (X), Latitude (Y), Image / WKT / GeoJSON Destination, Référence d'entité, Pondération de la carte thermique, Pondération de cellule, Taille du cercle
Carte thermique Longitude (X), Latitude (Y), Pondération de la carte thermique Destination, Taille du cercle, Image / WKT / GeoJSON, Référence d'entité, Pondération de cellule
Colonnes 3D Longitude (X), Latitude (Y), Hauteur de colonne Destination, Taille du cercle, Image / WKT / GeoJSON, Référence d'entité, Pondération de cellule, Pondération de la carte thermique
Cellules à partir de coordonnées Longitude (X), Latitude (Y), Pondération de cellule Destination, Taille du cercle, Pondération de la carte thermique, Image / WKT / GeoJSON, Référence d'entité
Cellules à partir d'ID de cellules Pondération de cellule (l'ID est l'ID de cellule) Longitude (X), Latitude (Y), et les champs de la ligne ci-dessus
Lignes Longitude (X), Latitude (Y), Destination Référence d'entité, Image / WKT / GeoJSON, Pondération de la carte thermique, Pondération de cellule
Formes depuis les données Image / WKT / GeoJSON Longitude (X), Latitude (Y), Destination, Pondération de la carte thermique, Pondération de cellule, Référence d'entité, Taille du cercle
Formes depuis des fichiers Référence d'entité Image / WKT / GeoJSON, Longitude (X), Latitude (Y), Destination, Pondération de la carte thermique, Pondération de cellule, Taille du cercle
Tuiles vectorielles Référence d'entité Image / WKT / GeoJSON, Pondération de la carte thermique, Pondération de cellule, Taille du cercle
Couches du catalogue Référence d'entité Rien
Couches ArcGIS Référence d'entité Rien

Points à connaître :

  • Info-bulles, Groupe de cluster, Pondération d'entité et Date et heure du terminateur jour-nuit ne déterminent jamais la couche à laquelle va une ligne de données. Renseignez-les sur n'importe quelle ligne.
  • Lignes avec cercles. Une ligne de données destinée à la couche Lignes peut avoir une Taille du cercle. Lorsque Inclure des cercles à : est défini dans les paramètres Lignes, des cercles sont dessinés aux extrémités de la ligne tracée.
  • Cercle ou colonne. Une ligne de données qui possède à la fois une Taille du cercle et une Hauteur de colonne n'est ni un cercle ni une colonne. Renseignez un seul des deux.
  • Les images et les formes partagent un puits de champs. Une ligne de données avec une image et des coordonnées est une image. Une ligne de données avec du texte WKT ou GeoJSON et sans coordonnées est une forme.
  • La référence d'entité est partagée. Les formes depuis des fichiers, les tuiles vectorielles, les couches du catalogue et les couches ArcGIS se joignent toutes sur Référence d'entité. Une ligne de données avec une référence d'entité est proposée à chacune de ces couches qui est activée : la même ligne peut donc colorer une limite dans plusieurs d'entre elles.

Un exemple détaillé : magasins et livraisons

Vous voulez des magasins sous forme de cercles dimensionnés par les ventes, et des livraisons sous forme de lignes allant d'un dépôt à chaque magasin. La table a besoin d'une ligne de données par magasin et d'une ligne de données par livraison :

ID Type Longitude Latitude Destination Longitude Destination Latitude Size
Store Leeds Store -1.549 53.801 120
Store York Store -1.081 53.959 85
Delivery 1001 Delivery -1.356 53.683 -1.549 53.801
Delivery 1002 Delivery -1.356 53.683 -1.081 53.959
  • Les lignes des magasins renseignent les coordonnées et Size, et laissent la destination vide. Cercles les dessine.
  • Les lignes des livraisons renseignent les coordonnées et la destination, et laissent Size vide. Lignes les dessine.

Ajoutez les champs au visuel, chaque colonne dans le puits de champs correspondant, avec Size dans Taille du cercle. Activez ensuite les deux couches.

Dans le volet Format, développez Couches de données et activez Cercles et Lignes.

Pour ajouter les régions de vente comme troisième couche, ajoutez pour chaque région une ligne de données qui renseigne seulement la référence d'entité, et ajoutez cette colonne à Référence d'entité :

ID Type Longitude Latitude Destination Longitude Destination Latitude Size Region code
Region North Region E12000001

Activez ensuite Formes depuis des fichiers et ajoutez le fichier des régions.

Créer la table

Dans la plupart des modèles, les magasins, les livraisons et les régions sont des tables distinctes. Power BI en a besoin sous la forme d'une seule table pour le visuel : combinez-les donc. Donnez à chaque ligne de données un ID unique : si un magasin et une livraison risquent de partager un ID, ajoutez un préfixe.

Power Query : ajouter les tables

Donnez les mêmes noms aux colonnes dans chaque requête, puis utilisez Ajouter des requêtes comme étant nouvelles. Les colonnes qu'une requête ne possède pas sont remplies avec null, ce dont la carte a besoin.

let
    StoreRows = Table.SelectColumns(Stores, {"ID", "Type", "Longitude", "Latitude", "Size"}),
    DeliveryRows = Table.SelectColumns(
        Deliveries,
        {"ID", "Type", "Longitude", "Latitude", "Destination Longitude", "Destination Latitude"}
    ),
    MapItems = Table.Combine({StoreRows, DeliveryRows})
in
    MapItems

DAX : une table calculée avec UNION

UNION empile des tables dont les colonnes sont dans le même ordre. Utilisez BLANK() pour les colonnes qu'un type de ligne n'utilise pas.

Map Items =
UNION (
    SELECTCOLUMNS (
        Stores,
        "ID", "Store " & Stores[Name],
        "Type", "Store",
        "Longitude", Stores[Longitude],
        "Latitude", Stores[Latitude],
        "Destination Longitude", BLANK (),
        "Destination Latitude", BLANK (),
        "Size", Stores[Sales]
    ),
    SELECTCOLUMNS (
        Deliveries,
        "ID", "Delivery " & Deliveries[Delivery No],
        "Type", "Delivery",
        "Longitude", Deliveries[Depot Longitude],
        "Latitude", Deliveries[Depot Latitude],
        "Destination Longitude", Deliveries[Store Longitude],
        "Destination Latitude", Deliveries[Store Latitude],
        "Size", BLANK ()
    )
)

Des mesures vides pour les autres lignes

Lorsque la valeur d'un puits de champs provient d'une colonne qui a une valeur sur chaque ligne, encapsulez-la dans une mesure qui renvoie une valeur vide pour les lignes des autres couches. IF sans troisième argument renvoie BLANK() :

Store Size =
IF (
    SELECTEDVALUE ( 'Map Items'[Type] ) = "Store",
    SUM ( 'Map Items'[Sales] )
)

Placez la mesure dans Taille du cercle à la place de la colonne. Les lignes des magasins reçoivent une taille et sont dessinées sous forme de cercles. Les lignes des livraisons reçoivent une valeur vide et sont dessinées sous forme de lignes. Le même principe fonctionne pour n'importe quel puits de champs, par exemple une destination vide sauf si la ligne de données est une livraison :

Delivery Destination Longitude =
IF (
    SELECTEDVALUE ( 'Map Items'[Type] ) = "Delivery",
    AVERAGE ( 'Map Items'[Destination Longitude] )
)

Choisir les couches avec un segment

Comme la couche découle des données, un segment peut activer et désactiver des couches pour les utilisateurs du rapport. Ajoutez un segment sur la colonne Type de la table d'exemple. Sélectionner Store affiche seulement les cercles, et sélectionner Delivery affiche seulement les lignes, car les autres lignes de données sont filtrées avant d'atteindre la carte.

Vérifier ce que chaque couche dessine

Dans le volet Format, développez Diagnostics et activez Afficher le résumé de la configuration des données. Le résumé indique combien de lignes Power BI a envoyées au visuel, combien de lignes chaque couche dessine, les lignes dont la couche n'a pas pu être déterminée, et des avertissements tels qu'une couche qui a des lignes mais qui est désactivée.

Lorsqu'aucune ligne de données n'atteint une couche activée pendant que vous modifiez le rapport, la carte affiche le guide « Quel type de carte créez-vous ? ». Il liste chaque type de couche avec les champs nécessaires et signale ceux auxquels vos champs correspondent déjà. Consultez Choisir un type de couche.

Erreurs courantes

Ce que vous voyez Cause probable Solution
Cercles est activé mais rien n'est dessiné Chaque ligne de données possède aussi une destination : ce sont donc des lignes à tracer. Laissez la destination vide sur les lignes de données des cercles, ou activez Lignes si ce sont des lignes que vous voulez.
Lignes est activé mais rien n'est dessiné Les lignes de données ont une Référence d'entité, une image ou une valeur WKT, une Pondération de la carte thermique ou une pondération de cellule. Videz ces champs sur les lignes de données destinées à la couche Lignes.
Les formes sont dessinées mais les cercles ont disparu Une colonne dans Référence d'entité a aussi une valeur sur les lignes de données des cercles. Utilisez une colonne ou une mesure vide sur les lignes de données des cercles.
Formes depuis des fichiers ne dessine rien Les lignes de données des formes ont aussi des coordonnées ou une Taille du cercle. Laissez-les vides sur les lignes de données des formes.
Un type de couche manque La couche n'est pas activée. Activez-la sous Couches de données dans le volet Format.
Une ligne de données n'est ni un cercle ni une colonne Elle possède à la fois une Taille du cercle et une Hauteur de colonne. Renseignez un seul des deux.
Des lignes de données de deux types fusionnent en une seule Deux lignes partagent un ID : Power BI les regroupe donc en une ligne qui porte les champs des deux. Rendez les ID uniques, par exemple avec un préfixe par type.
Une valeur vide était attendue mais la ligne de données a une valeur Le champ contient 0, ou une colonne qui a une valeur sur chaque ligne. Renvoyez BLANK() depuis une mesure pour ces lignes.

Conseils et limites

Voir aussi