Dans un article précédent nous avons abordé comment afficher une symbologie appropriée aux fichiers S57. Dans cet article nous n’avons pas abordé comment afficher les valeurs des sondes bathymétriques et ce pour deux raisons: la première parce que les sondes en tant que telles n’ont pas de symbologie. Elles sont représentées par des étiquettes et non des symboles. La deuxième parce qu’elles nécessitent un traitement particulier pour pouvoir être affichées.
La couche « sondes » S57
Les sondes sont contenues dans la couche SOUNDG.
Mais une fois la table attributaire ouverte, il n’y a aucun attribut qui ressemble à la valeur d’une sonde.
L’information qui permet de les retrouver se situe au niveau du type de couche:
Cette couche n’est pas une couche géographique xy mais une couche xyz. Est c’est bien le Z de la géométrie qui contient la valeur de la sonde et non un attribut de la table attributaire.
Pour pouvoir l’utiliser comme étiquette des points de sonde il faut donc créer un attribut et récupérer la valeur Z de la géométrie.
Mais avant de le faire, une autre remarque s’impose: SOUNDG est une couche de type multipoint. Si nous voulons récupérer la valeur de tous les points et pas seulement du premier point des multipoints, nous devons transformer la couche en type de géométrie simple.
De multipointZ à pointZ
Pour changer le type de géométrie, nous utilisons le traitement « De morceaux multiples à morceaux uniques » de la boîte à outils « Géométrie vectorielle« .
Sur cette nouvelle couche de type PointZ nous pouvons maintenant récupérer les valeurs des sondes.
Récupération des valeurs des sondes
Nous ouvrons la table attributaire et la calculatrice de champs:
Nous définissons un nouveau champ de type entier et nous lui affectons l’expression z($geometry)/10 qui récupère la valeur Z de la géométrie. La division par 10 est nécessaire car les valeurs des sondes S57 ne sont pas en mètres mais en décimètres.
Nous avons alors un attribut avec les valeurs des sondes qui peut être utilisé pour générer les étiquettes sur la carte marine.