Skip to content

swisstopo/lg-geology-data-model

Repository files navigation

Modèle de données géologiques

Le but de ces outils est de créer de manière plus au moins automatique le modèle de données géologiques, en particulier la liste des valeurs attributaires possibles, et le modèle physique issu de ESRI ArcSDE.

Les exports de la base de données ArcSDE sont dans exports, les fichiers intermédiaires markdown dans inputs et les différents formats du modèle final dans outputs.

  • Pour l'instant, le modèle est disponible en allemand et en français.
  • Plusieurs formats sont disponbiles : datamodel.pdf, ainsi que sous forme de fichier .docx, .html et .odt.
  • Le dump des informations de ESRI ArcSDE dans exports
  • Le schéma ER de la base ER-GCOVER.svg, généré à partir d'un fichier PlantUML.

Installation

L'outil est disponbile comme paquets sur anaconda.org et pypi.org. La génération des fichiers finaux à partir des exports est possible dans n'importe quel environnement, mais l'export des données nécessite arcpyet un accès à la base ESRI ArcSDE. base de données ESRI ArcSDE n'est bien entendu pas possible.

Windows

Open a Python Command Prompt windows and clone the default ESRI ArcGis conda environnement

(arcgispro-py3) C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3>conda create --clone arcgispro-py3 --prefix C:\LegacySW\envs\arcgispro-py3_clone

Deactivate the default environment

(arcgispro-py3) C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3> deactivate

Activate the newly created cloned environment

C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3> activate C:\LegacySW\envs\arcgispro-py3_clone

Install the package

(arcgispro-py3) C:\LegacySW\envs\arcgispro-py3_clone> conda install swisstopo::geocover

To generate de final documents from the markdown sources, you need pandoc. As pandoc.exe is a standalone binary on Windows, simply download it and unzip it into C:\LegacySW (see the latest available version on Pandoc ).

Pour tester l'installation (le numéro de version peut être différent):

C:\LegacySW\pandoc-3.1.13\pandoc.exe --version

Linux

You need pandoc and a fully-fledge XeLaTeX installation. Install it with apt-get, yum, etc.

Create a conda environement as normal and install the package:

conda install swisstopo::geocover

The subcommand of geocover requiring arcpy are not available on Linux. The Le script datamodel qui génère le fichier markdown n'a besoin que des libraries de base sus-mentionnées.

Utilisation

Extraction des données

  1. Creation des fichiers JSON/YAML contenant les coded domains et la liste des subtypes directement depuis la base de donnée ArcSDE

Dans un prompt Python, en utilisant l'environnement conda par défaut arcgis-py3 :

(arcgispro-py3-clone)> cd H:\code\lg-geology-data-model

(arcgispro-py3-clone)lg-geology-data-model>geocover  export  -w D:\connections\GCOVERP@osa.sde -l DEBUG -o ../exports
  1. Export de la structure Oracle :

Dans ArcGis Pro, charger et exécuter le script : export_oracle_tables.py

  1. Export des champs obligatoires :

    python export_mandatory.py

Traductions

Extraction des chaînes de caractères pour traduction :

pybabel extract -F babel.cfg -o locale/app.pot .

Fusion des catalogues (app et datamodel):

pybabel update -i locale/app.pot -d locale -D app
pybabel update -i locale/datamodel.pot -d locale -D datamodel

Edition des fichiers .po dans PoEdit par exemple

Compiler les catalogues (app et datamodel) :

pybabel compile --domain=app --directory=locale --use-fuzzy

Création du fichier Markdown source

Le script datamodel combine les informations de la configuration datamodel.yaml avec coded_domains.json , subtypes.json et le fichier de traduction. Le résultat est le fichier Marcdown fr/datamodel.md ou de/datamodel.md

datamodel --lang de  datamodel.yaml

Génération des différents formats

simply use the latest https://github.com/swisstopo/lg-geology-data-model/releases

Linux

Use make

make pdfs # or all

Creation d'un fichier PDF (possible uniquement avec une installation complète de LaTeX)

pandoc -s --pdf-engine=xelatex  \
     -V papersize:a4  \
     --number-sections \
     --shift-heading-level-by=-1  \
     --metadata-file=metadata.yaml \
     --variable mainfont="DejaVu Sans" \
     -V colorlinks=true \
     -V linkcolor=teal \
     -V urlcolor=teal \
     -V toccolor=gray \
     -o de/datamodel.pdf de/datamodel.md

Idem, mais pour un fichier Microsoft Word (.docx)

 C:\LegacySW\pandoc-3.1.13\pandoc.exe -s -V papersize:a4 --number-sections --shift-heading-level-by=-1
 --metadata-file=metadata.yaml  --variable mainfont="DejaVu Sans"  -o datamodel.docx datamodel.md

For HTML

Sur Linux...

C:\LegacySW\pandoc-3.1.13\pandoc.exe  --toc --number-sections  --shift-heading-level-by=-1 --css datamodel.css 
              --metadata-file=metadata.yaml   --variable mainfont="Sans"  -o datamodel.html datamodel.md

Génération du schema ER de la base de donnée SDE

Générer le fichier PlantUML avec :

python create_gv.py 

Convertir en fichier SVG avec p.ex. https://www.planttext.com/

Convertir en image :

convert  ER-GCOVER.svg ER-GCOVER.png

Convertir en PDF (A3)

cairosvg  -o ER-GCOVER.pdf    --background '#EEEEFF' --output-width   4191   --output-height 2972 ER-GCOVER.svg

Autres fonctions

Extraire les règles utiisées dans layerfiles d'un projet ESRI ArcGis Pro

geocover rules -l INFO

Compter les features dans un périmètre donné

Le fichier contenant les règles (layer_symbols_rules.json) a été généré avec la commande geocover rules.

With an arbitrary polyon (GeoJSON or ESRI Shapefile)

geocover filter --geometry san_bernardino.geojson  --gdb-path  I:\backup\GCOVER\daily\20240425_0300_2030-12-31.gdb   --ouput  san_bernardino.json

Or with a bounding box:

geocover filter --bbox 2760000,1146000,2777500,1158000  --gdb-path  I:\backup\GCOVER\daily\20240425_0300_2030-12-31.gdb   --ouput  san_bernardino.xlsx

The ouput format is either JSONor CSV depending on the file extension of the ouput file (.csv, .xlsx or .json )

Migration de schema

Dumping schema

Exécuter la commande suivante avant et après la migration de schéma

geocover schema --workspace  D:/connections/GCOVERP@osa.sde  --ouput dumps/PRODUCTION

Différences

La commande suivante permet d'afficher les différences avant et après la migration :

jsondiff --indent  4 --preserve-unicode dumps/PRODUCTION/geocover-schema-sde-2024-10-24.json  dumps/PRODUCTION/geocover-schema-sde-2024-10-26.json  > production-diff-october-2024.txt