Cartes ENC Geopackage dans QGis Version finale: deuxième partie

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.

  1. 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
  2. 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é)
  3. 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.
  4. 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.
  5. Sélectionnez le geopackage ENC.gpkg dans le gestionnaire de base de données.
  6. Dans le menu Table, sélectionnez Import de couche/fichier
  7. Dans la liste des couches sélectionnez natsurf, puis OK
  8. 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.

SymboleQUASOUQUAPOSLabel
1Sounding in true position
Sonde dans sa position vraie
5No bottom found at depth shown
Pas de fond trouvé à la profondeur indiquée
44Soundings which are unreliable or taken from smaller scale
source
Sondes qui sont nonfiables ou provenant de sources à plus
petite échelle
1 (DEPTH<0)Drying heights above chart datum
Sondes découvrantes audessus du zéro des cartes
3Sounding doubtful
Sonde douteuse
98Reported, but not confirmed sounding or danger
Sonde ou danger signalé mais non confirmé

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

SymboleQUASOUTECSOULabel
2Obstruction, depth unknown
Obstruction de profondeur inconnue
1 or 6Obstruction, least depth known by sounding only
Obstruction, profondeur moindre connue, a été déterminé
seulement par sondage
66Obstruction, least depth known, swept by wire drag or diver
Obstruction, profondeur moindre connue, vérifiée à la
drague hydrographique ou par plongeur

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

SymboleWATLEVQUASOULabel
42Rock which covers and uncovers, with height
unknown above chart datum
Roche qui couvre et découvre, avec cote audessus du zéro
des cartes inconnue
4!=2Rock which covers and uncovers, with height known above chart datum
Roche qui couvre et découvre, avec cote audessus du zéro
des cartes connue
5Rock awash at chart datum
Roche à fleur d’eau au zéro des cartes
32Underwater rock of unknown depth, dangerous to surface
navigation
Roche submergée de profondeur inconnue, présentant un
danger à la navigation de surface
3!=2Underwater rock of known depth
Roche submergée, de profondeur connue

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

SymboleCATWRKWATLEVQUASOUTECSOULabel
5Wreck showing any portion of hull or superstructure at level
of chart datum
Épave montrant une portion de la coque ou superstructure
au niveau du zéro des cartes
4Wreck of which only the mast or masts are visible at chart
datum
Épave dont seul(s) le(s) mât(s) est (sont) visible(s) au niveau
du zero des cartes
31 or 6Wreck, least depth known by sounding only
Épave, la profondeur connue a été déterminé seulement par
sondage
31 or 64Wreck, least depth known, swept by wire drag or diver
Épave, profondeur moindre connue vérifiée à la drague
hydrographique ou par plongeur
232Wreck, least depth unknown, considered to be potentially
dangerous to some surface vessels
Épave de brassiage inconnu, constituant un danger
potentiel pour certains bâtiments de surface.
132Wreck, least depth unknown
Caution: On many charts, this symbol is used for wrecks of
unknown least depth, but considered to be covered by more
than 20m of water. The wrecks thus represented are then
potentially dangerous to vessels with a draught greater than
20m. Note: This symbol is also used for all wrecks in water
over 200m deep.
Épave de brassiage inconnu
Avertissement important : sur de nombreuses cartes, ce
symbole est utilisé pour les épaves de brassiage inconnu,
supposées couvertes de plus de 20 mètres d’eau. Les
épaves ainsi représentées sont alors potentiellement
dangereuses pour les navires d’un tirant d’eau supérieur à
20 mètres. Note : ce symbole est aussi utilisé pour toutes
les épaves dans des fonds supérieurs à 200m
37Wreck, least depth unknown, but considered to have a safe
clearance to depth shown
Épave, profondeur moindre inconnue, mais avec estimation
du plafond de brassiage à la profondeur indiquée
3Remains of a wreck or other foul ground, non dangerous to
navigation but to be avoided by vessels anchoring, trawling etc.
Vestige d’une épave ou autre sol de fonds malsains, non dangereux
pour la navigation mais qui constituent un danger pour le mouillage,
le chalutage, etc.

DEPCNT (Contours bathymétriques)

La nouvelle version de la symbologie prend en compte la qualité de la donnée (isobathes approximatives).

SymboleVALDCOQUAPOSLabel
>=0Isobathes
Depth contours
<0Isobathe découvrante
Drying contour
4 ou 5Isobathes 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°.

Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *