Architecture du package
Le package suit un flux logique.
- acquisition ou lecture des données
- préparation et transformation
- rendu cartographique
- export et organisation du projet
Modules pivots
dataprocessingmapperstylingproject
Ces cinq noms restent l’unique point d’entrée public (from cartograpy.data import ..., from cartograpy.mapper import ..., etc.) et ne changent pas si leur implémentation interne évolue.
Organisation interne
data, processing et mapper sont chacun un sous-package (un dossier), pas un seul fichier : découpage nécessaire une fois que chacun a dépassé plusieurs milliers de lignes et mélangé plusieurs responsabilités indépendantes dans un seul fichier plat :
cartograpy/data/: un fichier par source de données :io.py(lecture/écriture générique),boundaries.py(GeoBoundaries,Bound),geocoding.py(Geocoder),osm.py(OSM),hydro.py(Hydro),dem.py(DEM),worldbank.py(WorldBank),climate.py(Climate, NASA POWER),gee.py(Gee), plus_optional.py/_types.pypour le code partagé en interne.cartograpy/processing/:vector.py(fonctions vectorielles +VectorTools) etraster.py(RasterTools).cartograpy/mapper/:helpers.py(read_image,plot_choropleth),map.py(Map),map2d.py(Map2D),webmap.py(WebMap),situation.py(SituationMap),bivariate.py(choroplèthes bivariées),hexgrid.py(grilles hexagonales / hexbin, viageohexgrid), plus_optional_deps.pypour les dépendances graphiques optionnelles (contextily,matplotlib-scalebar,matplotlib-map-utils) partagées entreMapetSituationMap.
Map (dans mapper/map.py) reste volontairement une seule classe de grande taille : son découpage interne en mixins thématiques est un chantier à part, pas encore fait.
Messages et journalisation
Les méthodes qui affichent un statut (Project.init(), Project.infos(), Bound.get_country(), etc.) passent par le module logging standard plutôt que par print() directement. Par défaut, ces messages restent visibles exactement comme avant : aucune configuration requise. Pour les couper :
import logging
logging.getLogger("cartograpy").setLevel(logging.ERROR)But de cette page
Expliquer quand utiliser une fonction simple, quand passer à VectorTools ou RasterTools, et quand structurer le travail avec Project.