Le but de ces outils est de créer de manière plus au moins automatique le modèle de donnée géologie GeoCover, en particulier la liste des valeurs attributaires possibles, et le modèle physique issu de ESRI ArcSDE.
Les fichiers d'intérêts sont dans le répertoire output
- Le modèle de donnée géologique :
datamodel_de.pdf
etdatamodel_fr.pdf
(des fichiers.docx
,.html
et.odt
sont également disponibles) - le dump des informations de ESRI ArcSDE
- Le schéma ER de la base
ER-GCOVER.svg
, généré à partir d'un fichierPlantUML
.
Les scripts ne fonctionnent qu'avec Python3 (on est en 2024). Sur BURAUT, on peut utiliser l'installation conda par defaut de ESRI ArcGis Pro (argispro-py3) qui contient les modules nécessaires. Sur Linux, il faut au moins :
conda install jinja2 pyyaml pandas click loguru --yes
ou simplement (l'environement créé est DATAMODEL
):
conda env create -f environment.yml
En cas d'ajout de dépendances, recréer la liste des paquets avec :
conda env export environment.yml
Les scripts, coded_domain.py et subtype.py doivent être excécuté dans un projet ESRI ArcGis Pro avec une connection sur la base SDE GCOVER.
Le script datamodel.py qui génère le fichier MarkDown n'a besoin que des libraries de base sus-mentionnées. et va combiner
Comme pandoc est un fichier unique, il peut être facilement téléchargé et installé dans C:\LegacySW . Téléecahrger la dernière version Windows disponible sur Pandoc et dézipper dans C:>LegacySW
Pour tester l'installation (le numéro de version peut être différent):
C:\LegacySW\pandoc-3.1.13\pandoc.exe --version
- 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
:
./geocover.py export -w D:\connections\[email protected] -l DEBUG -o ../exports
- Export de la structure Oracle :
Dans ArcGis Pro, charger et exécuter le script : export_oracle_tables.py
-
Export des champs obligatoires :
python export_mandatory.py
-
Extraction des chaînes de caractères pour traduction :
pybabel extract -F babel.cfg -o locale/app.pot .
-
Edition des fichiers .po dans
PoEdit
par exemple -
Fusion des catalogues (
app
etdatamodel
):pybabel update -i locale/app.pot -d app
-
Compiler les catalogues (
app
etdatamodel
) :pybabel compile --domain=app --directory=locale --use-fuzzy
Le script datamodel.py 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 datamodel_fr.md ou datamodel_de.md
python3 datamodel.py --lang de # ou fr
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 datamodel.pdf datamodel.md
Idem, mais pour un fichier Microsoft Word (.docx)
Sur Linux...
pandoc -s -V papersize:a4 \
--number-sections \
--shift-heading-level-by=-1 \
--metadata-file=metadata.yaml \
--variable mainfont="DejaVu Sans" \
-o datamodel.docx datamodel.md
..ou sur Windows:
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
Pour HTML
Sur Linux...
pandoc -s --toc \
--number-sections \
--shift-heading-level-by=-1 \
--css datamodel.css \
--metadata-file=metadata.yaml \
--variable mainfont="Sans" \
-o datamodel.html datamodel.md
.. ou Windows
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é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
python geocover.py rules -l INFO
With an arbitrary polyon (GeoJSON or ESRI Shapefile)
python geocover.py filter --geometry san_bernardino.geojson --gdb-path I:\backup\GCOVER\daily\20240425_0300_2030-12-31.gdb -s san_bernardino.json
Or with a bounding box:
python geocover.py filter --bbox 2760000,1146000,2777500,1158000 --gdb-path I:\backup\GCOVER\daily\20240425_0300_2030-12-31.gdb -s san_bernardino.xlsx