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.

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.
Deux autres conditions doivent être remplies pour qu'une ligne de données soit dessinée :
- 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.
- 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.
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 Gestionnaire de couches, sélectionnez Ajouter une couche, puis Couche de données. Les vignettes Cercles et Lignes et flux affichent Champs prêts, avec le nombre de lignes de données que chacune dessinerait. Ajoutez les deux, puis sélectionnez Appliquer les modifications.
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
Le Gestionnaire de couches montre comment vos lignes de données ont été réparties. Ouvrez-le depuis Volet Format > Gestionnaire de couches > Ouvrir le Gestionnaire de couches.
- Le panneau Vos données liste les champs que vous avez ajoutés et indique si chaque ligne est dessinée, par exemple « Chaque ligne est dessinée : Cercles, Lignes et flux. » ou « 12 lignes sur 240 n'atteignent aucune couche. »
- Une couche activée qui ne dessine rien porte un avertissement sur sa ligne dans la liste. Sélectionnez Voir pourquoi pour voir des exemples de lignes de données, le champ qui les envoie ailleurs et la façon de corriger le problème.
- Lorsque deux couches se disputent les mêmes lignes de données, l'explication inclut une mesure DAX prête à l'emploi, écrite avec vos propres noms de table et de colonnes, qui est vide sur les lignes d'une des couches. Sélectionnez Copier, créez une nouvelle mesure à partir de ce texte et utilisez-la à la place du champ.

Consultez Vérifier vos données.
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
- L'ordre de dessin des couches est défini par le Z-Index de chaque couche. Consultez Vue d'ensemble des couches de données.
- Toutes les couches partagent la limite de lignes du visuel. Consultez Lignes de données et limites.
- Une carte qui a besoin de contexte plutôt que de données, comme un contour de limite ou une couche météo, n'a besoin d'aucune ligne de données. Utilisez une couche de référence.