Reference data
cartograpy.data regroupe le chargement/sauvegarde de fichiers géospatiaux et les connecteurs vers des sources externes : frontières administratives (GeoBoundaries/Natural Earth), géocodage (Nominatim/OSM), OpenStreetMap, réseau hydrographique (HydroRIVERS), modèles numériques de terrain (SRTM), indicateurs Banque mondiale et Google Earth Engine. La plupart des connecteurs font des appels réseau et certains nécessitent des dépendances optionnelles installées séparément : chaque section ci-dessous précise les erreurs et pièges réels du code source.
io : chargement, sauvegarde et inspection de fichiers
Quatre fonctions autonomes définies dans cartograpy/data/io.py. Ce sont elles que Project.add_data, Project.load_data et Project.save_output utilisent en interne.
load(filepath, layer=None)
load(filepath, layer=None)filepath(strouPath, requis) : chemin du fichier à charger. L’extension détermine le type de retour.layer(str, optionnel) : pour les fichiers multi-couches (GPX), nom de la couche à charger ("tracks"par défaut).- Retour :
geopandas.GeoDataFramepour les vecteurs (shp,geojson,gpkg,kml,gpx,csv,parquet) ;rasterio.io.DatasetReaderpour les rasters (tif,tiff). - Erreurs :
ValueErrorsi l’extension n’est pas supportée ;RuntimeErroren cas d’échec de lecture (KML, GPX, raster).
from cartograpy.data import load
regions = load("data/regions_civ.geojson")
mnt = load("data/elevation.tif")Pour un raster, load() renvoie un DatasetReader ouvert : pensez à le fermer (.close()) ou à utiliser un context manager (with load(...) as src:), sinon le fichier reste verrouillé.
describe(filepath)
describe(filepath) -> dictfilepath(strouPath, requis) : fichier à décrire (vecteur, raster ou tabulaire).- Retour (
dict) :type("vector","raster"ou"tabular"),format,nb_layers,layers(détail par couche/bande/table). Le résumé est aussi affiché vialogging. - Erreurs :
ValueErrorsi le format n’est pas reconnu.
from cartograpy.data import describe
info = describe("data/gadm41_CIV.gpkg")
print(info["nb_layers"], info["layers"][0]["geometry_types"])save(data, file_extension, filename="output", timestamp=False, raster_meta=None)
save(data, file_extension, filename="output", timestamp=False, raster_meta=None) -> strdata(requis) :GeoDataFrame/DataFramepour du vectoriel/tabulaire,DatasetReaderrasterio ounumpy.ndarraypour du raster.file_extension(str, requis) :geojson,shp,gpkg,kml(vecteur),csv,parquet,geoparquet,xlsx,feather(tabulaire), outif/tiff(raster).filename(str, défaut"output") : nom de base, sans extension.timestamp(bool, défautFalse) : ajoute un horodatage_AAAAMMJJ_HHMMSSau nom.raster_meta(dict, optionnel) : requis sidataest unndarray: doit contenircrs,transform,width,height,dtype,count.- Retour (
str) : chemin absolu du fichier écrit. Le dossier parent est créé automatiquement si besoin. - Erreurs :
ValueErrorsi le format est inconnu, sifilenamecontient".."(anti path-traversal), ou siraster_metaest manquant/incomplet ;TypeErrorsi le type dedatane correspond pas au format demandé (ex.DataFramesans géométrie vers un format vectoriel,ndarray/DatasetReadervers autre chose quetif/tiff).
from cartograpy.data import save
save(regions, "geojson", filename="regions_civ")
save(regions, "gpkg", filename="regions_civ", timestamp=True)Un ndarray 2D (une seule bande) est automatiquement promu en 3D avant écriture : inutile de le remodeler à la main.
list_geofiles(folder_path)
list_geofiles(folder_path) -> list[str]folder_path(str, requis) : dossier à parcourir (récursivement).- Retour (
list[str]) : chemins de tous les fichiers dont l’extension est géospatiale (.shp,.geojson,.gpkg,.kml,.csv,.parquet,.gpx,.tif,.tiff).
from cartograpy.data import list_geofiles
fichiers = list_geofiles("data/")GeoBoundaries et Bound
GeoBoundaries est le client bas niveau pour l’API geoboundaries.org (frontières administratives ADM0–ADM5) et pour les continents Natural Earth. Bound en hérite et ajoute les méthodes utilitaires de haut niveau (get_country, get_admin, get_neighbors, get_area…) : c’est la classe à utiliser en pratique.
from cartograpy.data import Bound
b = Bound(cache_expire_seconds=604800)cache_expire_seconds(int, défaut604800= 1 semaine) : durée de mise en cache des requêtes HTTP (requests_cache.CachedSession).
Les réponses de l’API sont mises en cache automatiquement. Utilisez b.clear_cache(), b.set_cache_expire_time(seconds) ou b.disable_cache() pour contrôler ce comportement pendant le développement.
get_country(name)
get_country(name: str | list[str]) -> gpd.GeoDataFramename(stroulist[str], requis) : nom de pays, code ISO2/ISO3, ou liste. Exemples :"Côte d'Ivoire","CIV",["SEN", "Mali"].- Retour (
GeoDataFrame) : frontières ADM0 (nationales) simplifiées : une ligne par pays si liste. - Erreurs :
KeyErrorsi un pays n’est pas trouvé.
from cartograpy.data import Bound
b = Bound()
civ = b.get_country("CIV")
pays = b.get_country(["Côte d'Ivoire", "SEN", "Mali"])La résolution du nom passe par get_iso3(), qui recherche aussi par sous-chaîne dans les noms de pays multilingues. Si le mot-clé correspond à plusieurs pays avec des codes ISO3 différents, get_iso3() renvoie une liste de tuples (nom, iso3) au lieu d’une chaîne unique, ce qui fait échouer la résolution en KeyError côté get_country/get_admin. Préférez un code ISO2/ISO3 non ambigu pour les recherches par nom partiel.
get_admin(territories, adm, simplified=True)
get_admin(territories: str | list[str], adm: str | int, simplified: bool = True) -> gpd.GeoDataFrameterritories: territoire(s), mêmes valeurs acceptées queget_country.adm(strouint, requis) : niveau administratif :"ADM0"à"ADM5", un entier0–5, ou-1pour le plus petit niveau disponible pour le pays.simplified(bool, défautTrue) : géométrie simplifiée (plus légère) ou complète.- Retour (
GeoDataFrame) : géométries du niveau demandé (délègue àadm()deGeoBoundaries). - Erreurs :
KeyErrorsi le territoire n’est pas trouvé, ou si le niveau ADM demandé n’existe pas pour ce pays.
regions_civ = b.get_admin("CIV", adm=1) # régions
communes_sen = b.get_admin("SEN", adm=-1) # plus petit niveau disponibleb.adminLevels() retourne une table Markdown de correspondance ADM0–ADM5 → nom usuel (pays, région, département, commune…) en cas de doute sur le niveau à demander.
GeoBoundaries et Bound
| Méthode | Description |
|---|---|
is_valid_adm(iso3, adm) |
bool : le niveau ADM existe-t-il pour ce pays. |
get_iso3(territory) |
Code ISO3 ; list[tuple] si plusieurs pays correspondent (voir avertissement ci-dessus), None si aucun. |
list_countries() |
Liste de tous les codes ISO3 reconnus. |
adminLevels() |
Table Markdown des niveaux ADM0–ADM5. |
metadata(territory, adm) |
dict des métadonnées brutes renvoyées par l’API pour un territoire/niveau. |
adm(territories, adm, simplified=True) |
Méthode sous-jacente de get_admin (identique). |
continents(continents=None) |
Géométries de continents (Natural Earth). None = tous. Lève ValueError si un continent est introuvable, TypeError si le type de continents est invalide. |
list_continents_names() |
Alias FR/EN de continents reconnus (dict). |
get_continent(name) |
Alias Bound de continents(). |
get_world(level="continent") |
Monde entier par "continent" ou "country" (Natural Earth). Lève ValueError si level n’est ni l’un ni l’autre. |
get_neighbors(territory) |
Pays voisins (frontière commune), territoire(s) cible exclu(s). |
get_countries_by_continent(continent, adm=0, simplified=True) |
Tous les pays d’un continent via GeoBoundaries. Lève ValueError si le continent est introuvable. |
get_bbox(territory) |
Tuple (west, south, east, north) en WGS-84. |
get_centroid(territory) |
GeoDataFrame des centroïdes (géométrie Point). |
clip(gdf, territory, adm=0) |
Découpe un GeoDataFrame selon les frontières d’un territoire. |
contains(territory, point) |
bool : le point (lat, lon) est-il dans le territoire. |
search_country(keyword) |
Recherche floue : liste de (nom, iso3) contenant le mot-clé. |
get_area(territory, unit="km2") |
Superficie ("km2", "m2" ou "ha"). float pour un seul territoire, GeoDataFrame avec colonne area pour une liste. Lève ValueError si l’unité est invalide. |
continents(), get_world("country") et get_neighbors() téléchargent le jeu Natural Earth 110m (ne_110m_admin_0_countries) depuis un bucket S3 public au premier appel, puis le mettent en cache en mémoire pour la durée de vie de l’instance. Une connexion internet est nécessaire au premier appel de chacune de ces méthodes.
Geocoder
Géocode et géocode inversement des lieux via geopy/Nominatim (OpenStreetMap), avec quelques méthodes qui s’appuient sur osmnx pour des contours polygonaux plutôt que des points.
from cartograpy.data import Geocoder
geocoder = Geocoder(user_agent="mon_app_cartograpy", delay=1.0)user_agent(str, défaut"mon_geocoder_geopandas_cartograpy") : identifiant d’application requis par la politique d’usage de Nominatim.delay(float, défaut1.0) : délai en secondes entre deux requêtes.
Le service Nominatim public est limité en débit : gardez delay >= 1 seconde et fournissez un user_agent explicite et unique à votre application, sous peine de blocage temporaire par le service. Les méthodes bbox(), boundary() et within() nécessitent en plus le paquet optionnel osmnx (ImportError explicite s’il est absent).
geocode(places)
geocode(places: str | list[str]) -> tuple[gpd.GeoDataFrame, list[str]]places(stroulist[str], requis) : localité(s) à géocoder.- Retour : tuple
(GeoDataFrame, list):GeoDataFramedes résultats trouvés (colonnesquery,address,latitude,longitude,altitude,raw,geometryenEPSG:4326), et liste des localités non trouvées. - Erreurs : n’en lève pas : timeout, service indisponible ou lieu introuvable sont capturés et renvoient la localité dans la liste des non-trouvées (le détail est journalisé via
logging).
gdf, introuvables = geocoder.geocode(["Abidjan", "Dakar", "Bamako"])
print(introuvables) # ex. ["Bamak"] si mal orthographiéGeocoder
| Méthode | Description |
|---|---|
reverse_geocode(coordinates) |
Géocodage inverse : (lat, lon) ou liste → adresses. Retourne (GeoDataFrame, non_trouvés). |
search(place, limit=5, country_codes=None, viewbox=None, bounded=False) |
Plusieurs candidats pour un lieu (désambiguïsation). |
geocode_in_country(places, country_codes) |
Géocodage contraint à un ou plusieurs pays (codes ISO alpha-2, ex. "ci"). |
geocode_in_bbox(places, bbox, bounded=True) |
Géocodage contraint à une bounding box (west, south, east, north). |
boundary(place) |
Contour polygonal d’un lieu via osmnx. Requiert osmnx. |
geocode_dataframe(df, column) |
Enrichit un DataFrame pandas avec lat/lon/geometry depuis une colonne de noms de lieux. Lève ValueError si la colonne n’existe pas. |
components(place) |
Composants d’adresse (pays, région, ville, code postal…) sous forme de dict. Dict vide si le lieu est introuvable. |
distance(place_a, place_b, unit="km") |
Distance géodésique entre deux lieux géocodés ("km", "m", "mi"). Lève ValueError si un lieu est introuvable ou l’unité invalide. |
within(place, point) |
bool : le point (lat, lon) est-il dans le polygone du lieu. Requiert osmnx. |
bbox(place) |
Bounding box (west, south, east, north) du lieu via osmnx. Requiert osmnx. |
OSM
Récupère des entités OpenStreetMap (bâtiments, routes, POI…) via osmnx, filtrées par tags.
from cartograpy.data import OSM
osm = OSM()OSM() nécessite le paquet optionnel osmnx : son absence lève ImportError dès l’instanciation (pip install osmnx).
Hydro
Télécharge le réseau hydrographique HydroRIVERS par grande région continentale.
from cartograpy.data import Hydro
hydro = Hydro(output_dir="data/hydro")output_dir(str, défaut"data/hydro") : dossier de destination par défaut (peut être redéfini à l’appel dedownload).
download(region, output_dir="hydrorivers_data")
download(region: str, output_dir: str = "hydrorivers_data") -> gpd.GeoDataFrameregion(str, requis) : code de région HydroRIVERS parmi"af","as","au","eu","na","sa".output_dir(str, défaut"hydrorivers_data") : dossier local d’extraction du zip téléchargé.- Retour (
GeoDataFrame) : réseau hydrographique HydroRIVERS de la région. - Erreurs :
ValueErrorsiregionn’est pas un des codes valides ;RuntimeErrorsi le téléchargement échoue ;FileNotFoundErrorsi le shapefile attendu est absent après extraction.
hydro = Hydro()
rivieres_afrique = hydro.download("af")Si output_dir/region existe déjà, le téléchargement est sauté : pas de re-téléchargement automatique même si les données ont changé côté source. Supprimez le dossier pour forcer une mise à jour.
hydro.describe_variables() retourne une description texte (table Markdown) des colonnes du jeu de données (HYRIV_ID, LENGTH_KM, DIS_AV_CMS, ORD_STRA…), pratique pour l’affichage dans un notebook.
DEM
Télécharge un modèle numérique de terrain SRTM (~30 m) sans clé API via les tuiles Skadi hébergées sur AWS, puis mosaïque et découpe selon une emprise.
from cartograpy.data import DEM
dem = DEM(work_dir="_dem_tiles", timeout=180, keep_intermediate=False)work_dir(str/Path, défaut"_dem_tiles") : dossier de travail pour les tuiles intermédiaires.timeout(int, défaut180) : délai HTTP maximal par requête, en secondes.keep_intermediate(bool, défautFalse) : conserve les tuiles.hgt.gz/.tifaprès assemblage siTrue.output_dir(optionnel) : alias déprécié dework_dir: émet unUserWarningsi les deux sont fournis (etoutput_dirl’emporte).
DEMDownloadError (sous-classe de RuntimeError, importable via from cartograpy.data import DEMDownloadError) est l’erreur dédiée du module : échec de téléchargement après 3 tentatives, tuile corrompue (taille décompressée inattendue après gzip), ou fenêtre de découpe invalide pour la bbox demandée.
download(bbox, out_tif, verbose=True, max_workers=4)
download(bbox: tuple | gpd.GeoDataFrame, out_tif: str | Path, verbose: bool = True, max_workers: int = 4) -> Pathbbox(tuple(west, south, east, north)ouGeoDataFrame, requis) : emprise en EPSG:4326.out_tif(str/Path, requis) : chemin du GeoTIFF final (mosaïque + découpe).verbose(bool, défautTrue) : affiche une barre de progressiontqdm.max_workers(int, défaut4) : threads de téléchargement parallèle (1= séquentiel).- Retour (
Path) : chemin du GeoTIFF SRTM final. - Erreurs :
ValueErrorsi la bbox est hors limites (longitude hors[-180, 180], latitude hors[-90, 90], ousouth >= north) ;DEMDownloadErroren cas d’échec de téléchargement, de tuile corrompue, ou de fenêtre de découpe invalide.
dem = DEM(work_dir="_dem_tiles")
chemin = dem.download(bbox=(-8.6, 4.3, -2.5, 10.8), out_tif="srtm_civ.tif") # emprise CIVUne bbox traversant l’antiméridien (west > east) est automatiquement découpée en deux et fusionnée : inutile de la gérer manuellement. Les tuiles océaniques manquantes côté serveur (HTTP 403/404) sont remplacées par des tuiles nodata plutôt que de faire échouer le téléchargement.
| Méthode | Description |
|---|---|
DEM.info(tif_path) |
Métadonnées et statistiques (min/max/moyenne/écart-type) d’un GeoTIFF MNT. |
DEM.hillshade(tif_path, out_path=None, azimuth=315.0, altitude=45.0) |
Ombrage (hillshade), ndarray 0–255. Sauvegarde en GeoTIFF si out_path fourni. |
DEM.slope(tif_path, out_path=None, degrees=True) |
Pente, en degrés (ou radians si degrees=False). |
DEM.aspect(tif_path, out_path=None) |
Orientation en degrés (0–360, 0 = nord, sens horaire). |
DEM.plot(tif_path, cmap="terrain", title=None, figsize=(10, 8), hillshade_alpha=0.35, colorbar=True) |
Aperçu rapide (altitude + ombrage superposé). Nécessite matplotlib. |
DEM.reproject(tif_path, out_path, dst_crs="EPSG:3857", resampling="bilinear") |
Reprojette le GeoTIFF. Lève ValueError si resampling n’est pas "nearest", "bilinear", "cubic" ou "lanczos". |
Toutes ces méthodes sont statiques : DEM.info(...), DEM.hillshade(...), etc. fonctionnent sans instancier DEM.
WorldBank
Interroge l’API Banque mondiale (indicateurs de développement) via le paquet wbdata.
from cartograpy.data import WorldBank
wb = WorldBank()WorldBank() nécessite le paquet optionnel wbdata : son absence lève ImportError dès l’instanciation (pip install wbdata).
get_data(indicators, country='all', **kwargs)
get_data(indicators, country="all", **kwargs) -> pandas.DataFrameindicators(requis) : indicateur(s) Banque mondiale, tel qu’attendu parwbdata.get_dataframe: typiquement undict{code: alias}, ex.{"SP.POP.TOTL": "population"}.country(strou liste, défaut"all") : code(s) pays ISO2/ISO3, ou"all".**kwargs: transmis tels quels àwbdata.get_dataframe(ex.date,freq,source).- Retour (
DataFrame) : indexé par pays/date, une colonne par indicateur.
wb = WorldBank()
pop = wb.get_data({"SP.POP.TOTL": "population"}, country=["CIV", "SEN", "MLI"])WorldBank
| Méthode | Description |
|---|---|
get_sources() |
Liste des sources de données disponibles sur l’API Banque mondiale. |
get_indicators(source=1, query=None) |
Indicateurs disponibles pour une source (1 = World Development Indicators par défaut). |
get_countries(query) |
Recherche de pays reconnus par l’API Banque mondiale. |
Le paramètre query de get_indicators() est accepté mais n’est pas transmis à wbdata : seul source est utilisé en interne (self._wbdata.get_indicators(source=source)). Filtrez le résultat côté Python si vous cherchez un indicateur précis.
Climate
- Séries météo/climat globales via l’API NASA POWER
-
sans clé API. Ré-analyses MERRA-2 + produits satellite : température, précipitations, vent, rayonnement, humidité… en résolution journalière, horaire, mensuelle ou climatologique. Réponses mises en cache localement (
requests_cache, 7 jours par défaut).
from cartograpy.data import Climate
clim = Climate() # cache_expire_seconds=604800, timeout=60
# Série journalière en un point (Abidjan)
gdf_pt = clim.get_point(
-3.99, 5.35, "2023-01-01", "2023-12-31",
parameters=["T2M", "T2M_MIN", "T2M_MAX", "PRECTOTCORR"],
community="ag", temporal="daily",
)
# -> GeoDataFrame (EPSG:4326) indexé par date, une colonne par paramètre + geometry
# Grille de points sur une emprise, en mensuel
gdf = clim.get_region(
(-6, 4, -2, 8), 2020, 2022,
parameters=["T2M", "PRECTOTCORR"], temporal="monthly",
)
# -> GeoDataFrame long : parameter, date, value, geometry (grille ~0.5°)| Méthode | Description |
|---|---|
get_point(longitude, latitude, start, end, parameters=None, community="ag", temporal="daily") |
Série temporelle en un point → geopandas.GeoDataFrame (EPSG:4326) indexé par date, géométrie constante. |
get_region(bbox, start, end, parameters=None, community="ag", temporal="daily") |
Grille de points sur [xmin, ymin, xmax, ymax] → geopandas.GeoDataFrame au format long. |
parameters: codes NASA POWER (voir la liste complète).Noneou[]→Climate.DEFAULT_PARAMETERS(T2M,T2M_MIN,T2M_MAX,T2MDEW,PRECTOTCORR,WS2M,ALLSKY_SFC_SW_DWN,RH2M).start/end:datetime.date,"YYYY-MM-DD"/"YYYYMMDD"pourdaily/hourly; une année (intou"YYYY") pourmonthly/climatology.community:"ag"(agro, défaut),"sb"(bâtiment durable),"re"(énergies renouvelables) : change le jeu de paramètres proposé et certaines conventions.temporal:"daily"(défaut),"hourly","monthly","climatology".- Les valeurs manquantes de l’API (
-999) sont remplacées parNaN; enmonthly, la ligne « moyenne annuelle » (mois 13) est écartée.
L’emprise de get_region doit rester modérée (l’API POWER limite la taille de la région) ; au-delà, découpez en plusieurs appels. Pour cartographier une grille, pivoter : gdf.pivot_table(index="geometry", columns="parameter", values="value").
Gee
Interface haut niveau pour Google Earth Engine : Sentinel-2, Landsat-9, Sentinel-1, NDVI, export local ou vers Google Drive, carte interactive geemap.
Gee est réexportée à la racine du package (from cartograpy import Gee) comme les autres classes de data. L’import ne tire pas earthengine-api : le paquet ee n’est requis qu’à l’instanciation de Gee().
from cartograpy.data import Gee
gee = Gee(project="mon-projet-gcp")project(str, optionnel) : ID du projet GCP Earth Engine ; sinon lu depuis la variable d’environnementGEE_PROJECT.service_account/key_file(str, optionnels) : authentification non interactive par compte de service (les deux doivent être fournis ensemble).
Gee() nécessite les paquets optionnels earthengine-api (module ee) et geemap : ImportError explicite dès l’instanciation s’ils sont absents. Sans authentification déjà en cache localement, l’initialisation peut déclencher ee.Authenticate(), un flux interactif (ouverture de navigateur) : à éviter dans un script non interactif ou un pipeline CI.
get_sentinel2(bbox, start, end, mosaic=True, clip=True, cloud=0.2, bands=None)
get_sentinel2(bbox, start: str, end: str, mosaic: bool = True, clip: bool = True, cloud: float = 0.2, bands: list[str] | None = None) -> ee.Image | ee.ImageCollectionbbox([xmin, ymin, xmax, ymax], requis) : emprise en WGS-84.start,end(str, requis) : dates au format"YYYY-MM-DD".mosaic(bool, défautTrue) : renvoie une mosaïque médiane (ee.Image) plutôt qu’uneee.ImageCollection.clip(bool, défautTrue) : découpe le résultat sur la bbox.cloud(float, défaut0.2) : seuilCLOUDY_PIXEL_PERCENTAGE(fraction,0.2= 20 %).bands(list[str], optionnel) : bandes à sélectionner (défaut : Blue/Green/Red/NIR :B2,B3,B4,B8).- Retour :
ee.Imagesimosaic=True, sinonee.ImageCollection. Un masque de nuages (bandeQA60) est appliqué automatiquement à chaque image.
gee = Gee(project="mon-projet-gcp")
bbox_abidjan = [-4.10, 5.25, -3.85, 5.40]
s2 = gee.get_sentinel2(bbox_abidjan, "2024-01-01", "2024-03-01", cloud=0.15)download(data, bbox=None, filename="image.tif", scale=10, crs="EPSG:4326", bands=None, output_dir=".", mosaic_col=True)
download(data, bbox=None, filename: str = "image.tif", scale: int = 10, crs: str = "EPSG:4326", bands: list[str] | None = None, output_dir: str = ".", mosaic_col: bool = True) -> Pathdata(ee.Imageouee.ImageCollection, requis) : à exporter : une collection est réduite en médiane (ou mosaïquée simosaic_col=False) avant export.bbox(optionnel) : région d’export : nécessaire sidatan’est pas déjà découpée sur une zone.filename(str, défaut"image.tif") : nom du fichier de sortie.scale(int, défaut10) : résolution en mètres (10 pour S2, 30 pour L9/SRTM).crs(str, défaut"EPSG:4326"),bands(optionnel),output_dir(str, défaut".").- Retour (
Path) : chemin du fichier téléchargé localement (viageemap.ee_export_image).
gee.download(s2, bbox=bbox_abidjan, filename="abidjan_s2.tif", scale=10)download() télécharge en local via geemap : synchrone, limité par les quotas d’export direct d’Earth Engine. Pour de plus gros volumes, utilisez export_to_drive(), qui lance une tâche asynchrone vers Google Drive (à suivre avec ee.batch.Task.list()).
Gee
| Méthode | Description |
|---|---|
get_landsat9(bbox, start, end, mosaic=True, clip=True, cloud=0.2, bands=None) |
Identique à get_sentinel2, pour Landsat-9 Collection 2 Tier 1 L2 (filtre CLOUD_COVER). |
get_sentinel1(bbox, start, end, mosaic=True, clip=True, polarization="VV", pass_direction="DESCENDING") |
Images radar Sentinel-1 GRD (pas de masque nuage). |
compute_ndvi(image, nir_band="B8", red_band="B4", name="NDVI") |
Ajoute une bande NDVI à une image (bandes Sentinel-2 par défaut). |
compute_ndvi_l9(image, name="NDVI") |
NDVI pour Landsat-9 (SR_B5/SR_B4). |
collection(collection_id, bbox=None, start=None, end=None, properties=None) |
Accède à n’importe quelle collection GEE par son identifiant, avec filtres optionnels. |
info(data) |
Métadonnées (dict) d’une image ou collection (getInfo()). |
count(col=None) |
Nombre d’images d’une collection (la dernière utilisée par défaut). Lève ValueError si aucune collection n’est disponible. |
dates(col=None) |
Dates d’acquisition (list[str]) d’une collection. Lève ValueError si aucune collection n’est disponible. |
export_to_drive(data, bbox=None, description="gee_export", folder="GEE_exports", scale=10, crs="EPSG:4326", max_pixels=1e13) |
Lance une tâche d’export asynchrone vers Google Drive. |
map(center=None, zoom=8) |
Retourne (ou crée) une carte interactive geemap.Map. |
add_layer(data, vis_params=None, name="Layer", bbox=None) |
Ajoute une image/collection à la carte interactive. |
show_map(data, bbox=None, vis_params=None, name="Layer") |
Raccourci : crée la carte, ajoute la couche, la retourne. |
zonal_stats(image, bbox, scale=30, reducer="mean") |
Statistiques zonales ("mean", "median", "min", "max", "sum") sur une bbox. |
bbox_to_geometry(bbox) |
Convertit [xmin, ymin, xmax, ymax] en ee.Geometry.Rectangle. |
Organisation
cartograpy.data est un sous-package, un fichier par responsabilité :
| Fichier | Contenu |
|---|---|
io.py |
load, save, describe, list_geofiles |
boundaries.py |
GeoBoundaries, Bound |
geocoding.py |
Geocoder |
osm.py |
OSM |
hydro.py |
Hydro |
dem.py |
DEM, DEMDownloadError |
worldbank.py |
WorldBank |
climate.py |
Climate |
gee.py |
Gee |
Tout reste importable depuis cartograpy.data directement (from cartograpy.data import GeoBoundaries) : l’organisation en fichiers est un détail d’implémentation, pas une API à connaître.