Le déroulement du projet ayant fait l’objet de plusieurs articles et mises à jour, nous mettons à votre disposition ici un document de synthèse au format PDF. Vous pourrez ainsi avoir une vision complète et cohérente de toutes les étapes pour créer et charger une base de données ENC sous QGis au format geopackage et tous les éléments nécessaires (.bat, .py, .svg) à la mise en place d’une symbologie appropriée automatique.
Le projet d’intégrations des cartes ENC dans QGis sous la forme de Geopackage est maintenant terminée. Cet article complète les deux articles déjà publiés concernant la symbologie ENC de la base de données Geopackage.
Ajout de la symbologie au Geopackage
La symbologie par défaut des tables d’un geopackage est contenue dans une table nommée layer_styles qui n’est créée que si vous utilisez l’option enregistrer par défaut du bouton style.
Après le clonage des tables dans le fichier ENC, la table n’existe pas. Nous allons donc importer la table contenant toute la symbologie des cartes ENC.
Attention: la table layer_styles est une table système, contrairement à la table natsurf qui est un simple table de données. A différence des tables de données, les tables système n’apparaissent pas dans le panneau explorateur. Vous devez utiliser le Gestionnaire de bases de données de QGis (menu Base de données -> DB Manager) pour voir et manipuler les tables systèmes comme layer_styles. Par contre natsurf sera visible et manipulable comme toute autre couche de données.
Télécharger layer_natsurfV3.gpkg
Ce geopackage contient une table, nommée layer_styles, avec les définitions de symbologies de 153 tables S57 ainsi qu’une table nommée natsurf qui sera utilisée pour la mise en forme du rendu de la table « nature des fonds marins » (SBDARE).
Pour intégrer ces tables dans votre fichier ENC (ici ENC.gpkg):
Dans QGis ouvrez le gestionnaire de base de données.
- Vous devriez avoir déjà la connexion geopackage->ENC.gpkg, si ce n’est pas le cas: bouton droit sur ‘Geopackage‘->nouvelle connexion, puis pointez sur votre fichier ENC.gpkg
- Connectez-vous à la table layers_natsurf.gpkg téléchargée (bouton droit sur ‘Geopackage‘->nouvelle connexion, puis pointez sur le geopackage téléchargé)
- Sélectionnez layer_styles dans layers_natsurf.gpkg puis bouton droit->ajouter au canevas.Vous aurez la table layer_styles dans la liste des couches chargées.
- Sélectionnez natsurf dans layers_natsurf.gpkg puis bouton droit->ajouter au canevas.Vous aurez la table natsurf dans la liste des couches chargées.
- Sélectionnez le geopackage ENC.gpkg dans le gestionnaire de base de données.
- Dans le menu Table, sélectionnez Import de couche/fichier
- Dans la liste des couches sélectionnez natsurf, puis OK
- Répétez l’opération pour la couche layer_styles.
La version actuelle de layer_styles contient les mises en forme de symbologie de 153 couches. Pensez à vérifier régulièrement s’il n’y a pas des mises à jour disponibles au téléchargement.
Cette symbologie utilise des symboles svg que vous devez télécharger sur votre machine. En cliquant ici vous téléchargerez un fichier ‘nauticalV3’ contenant tous les symboles svg nécessaires ainsi qu’un répertoire nommé « XML » avec des symboles supplémentaires pour QGis.
Pour l’installation du répertoire nautical, référez-vous à l’article Création d’une base de données Geopackage pour les cartes ENC (2ème partie: ajouter la symbologie).
La table layer_styles contient la symbologie de 153 couches, les couches habituelles des fichiers ENC. Par contre il peut y en avoir jusqu’à 210 couches possibles. Si dans votre cas la table layer_styles ne contient pas une ou plusieurs couches de votre projet, référez-vous à l’article Mise à jour(2) : Symbologie ENC avec Geopackage sous QGis pour l’ajout de ces symbologies manquantes à partir des fichiers de style .qml de l’ensemble des couches (V1, V2 et V3) qui peut être téléchargé ici.
Les symbologies qui changent avec cette nouvelle version
Les fichiers qml contenus dans le répertoire qmlV3 sont adaptés à la chaîne de traitement mise à jour qui récupère les primitives et affecte les valeurs de POSACC et QUAPOS aux différentes couches S57, mais aussi à certaines symbologies qui ont été précisées. Si vous démarrez avec la chaîne de traitement V3, vous n’avez rien à faire pour mettre en place ces symbologies. Ce sont celles qui sont définies par défaut dans layer_stylesV3. Si vous migrez d’une base geopackage V2 vers la V3, référez_vous à l’article Mise à jour(2) : Symbologie ENC avec Geopackage sous QGis pour l’ajout de ces symbologies manquantes.
Soundg (sondes bathymétriques)
Le tableau suivant montre la symbologie V3 de la couche SOUNDG ainsi que les valeurs des attributs utilisés pour sa mise en forme.
Obstrn (Obstructions)
Le tableau suivant montre la symbologie V3 de la couche OBSTRN (points) ainsi que les valeurs des attributs utilisés pour sa mise en forme
UWTROC (Rocher immergé / découvrant)
Le tableau suivant montre la symbologie V3 de la couche UWTROC ainsi que les valeurs des attributs utilisés pour sa mise en forme
Wrecks (Epaves)
Le tableau suivant montre la symbologie V3 de la couche WRECKS ainsi que les valeurs des attributs utilisés pour sa mise en forme
DEPCNT (Contours bathymétriques)
La nouvelle version de la symbologie prend en compte la qualité de la donnée (isobathes approximatives).
Symbole | VALDCO | QUAPOS | Label |
---|---|---|---|
>=0 | Isobathes Depth contours |
||
<0 | Isobathe découvrante Drying contour |
||
4 ou 5 | Isobathes approchées Approximate depth contours |
COALNE (trait de côte)
Une nouvelle catégorie a été ajoutée : Unsurveyed (Côte insuffisamment connue) quand l’attribut QUAPOS est 4 ou 5.. Elle est symbolisée par un trait tireté.
LNDELV (Courbes de niveau)
De même que les isobathes, les courbes de niveau sont maintenant symbolisées avec un tireté quand la valeur de QUAPOS est 4 ou 5.
LNDMRK, SEAARE,UWTROC , LNDELV, OBSTRN, WRECKS(de type Point)
Les étiquettes des valeurs de profondeur ou élévation de ces couches prennent en compte la valeur de QUAPOS. Elles ont maintenant un préfixe PA (position approximative) quand QUAPOS a une valeur de 4 et un préfixe PD (Position douteuse) quand la valeur de QUAPOS est 5.
SBDARE (nature des fonds)
La nouvelle symbologie nécessite un travail particulier. Dans les premières versions nous avions mis en place une symbologie qui utilise la table natsurf pour mettre en forma les étiquettes nécessaires aux natures du fond. Tout le processus était géré au niveau de l’expression de génération des étiquettes. Si cette solution était viable pour un nombre réduit de cartes présentes dans la base, les temps de calcul nécessaires pour des nombres importants devenaient prohibitifs.
Nous avons opté, pour cette version finale, par la mise en place d’un script python qui génère un attribut « Label » dans la table SBDARE. Cet attribut est utilisé comme étiquette et permet un affichage presque instantané de la couche.
Chargez la couche pt_SBDARE et la table natsurf dans votre projet.
Vous devez créer l’attribut Label dans la table pt_SBDARE:
Ouvrez la table attributaire -> Calculatrice de champ
Nommez le champ Label, de type Texte et rentrez une valeur » par défaut.
Dans la console python chargez le script Label_sbdare.py que vous pouvez télécharger ici.
Une fois exécuté vous aurez les étiquettes dans l’attribut Label de la table:
LIGHTS (Feux)
La symbologie des feux a été enrichie. Trois types de feux son maintenant symbolisés:
- Les feux à secteurs
- Les feux directionnels
- Les feux principaux et secondaires
Pour cette dernière catégorie deux types de représentations sont disponibles
- Type ECDIS avec des cercles de couleurs
- Type carte papier avec des symboles colorés
Dans le répertoire qmlV3 vous avez deux fichiers de symbologie pour la couche Lights
- pt_lightsPoint.qml
- pt_lightsMultipoint.qml
La table Lights issue du processus d’import V1 et V2 est de type Point. Par contre, pour pouvoir récupérer les primitives, les modifications de la commande ogr2ogr produisent une couche Lights de type Multipoint. Par défaut, la symbologie de la table layer_styles V3 est celle des Multipoints.
Si vous travaillez avec une base avec la table de type Points, vous pouvez charger la symbologie correspondante et la sauvegarder en tant que symbologie par défaut dans layer_styles.
Ces deux symbologies sont corrigées par rapport aux versions précédentes d’une déviation angulaire. Le fait de travailler avec des couches en coordonnées géographiques impliquent que les distance latitudinales et longitudinales ne sont pas d’un rapport constant. Si un delta X et un delta Y ont la même longueur sur l’équateur, plus on s’écarte de l’équateur plus le delta X diminue par rapport au delta Y. Pour tracer les lignes des secteurs partant du feu on créé un point à une même distance X et Y dans la direction du secteur. Pour que l’angle résultant soit celui du secteur il faut appliquer une correction en multipliant par la tangente de la latitude du point. Les angles réels à l’affichage des versions précédentes s’écartaient jusqu’à 10° par rapport à la valeur des attributs SECTR1 et SECTR2. La correction tangente(Latitude) est une approximation qui réduit cet écart à environ 1°.