Outils pour utilisateurs

Outils du site


informatique:ign_bdortho

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:ign_bdortho [22/02/2026 19:00] – [Indre-et-Loire (37)] cyrilleinformatique:ign_bdortho [23/02/2026 20:54] (Version actuelle) – [Outils] cyrille
Ligne 19: Ligne 19:
  
 <code python> <code python>
-''' +"""
-Script généré par https://chat.mistral.ai+
  
 Installation: Installation:
 pip install rasterio pillow numpy tqdm pip install rasterio pillow numpy tqdm
  
-'''+"""
 import rasterio import rasterio
 import os import os
Ligne 35: Ligne 34:
 from tqdm import tqdm from tqdm import tqdm
 from concurrent.futures import ThreadPoolExecutor, as_completed from concurrent.futures import ThreadPoolExecutor, as_completed
 + 
 def decouper_fichier_jp2(fichier, dossier_sortie, taille=640): def decouper_fichier_jp2(fichier, dossier_sortie, taille=640):
     nom_base = os.path.splitext(os.path.basename(fichier))[0]     nom_base = os.path.splitext(os.path.basename(fichier))[0]
-    # Sous dossier à partir du nom du fichier JP2 
     sous_dossier = os.path.join(dossier_sortie, nom_base)     sous_dossier = os.path.join(dossier_sortie, nom_base)
     os.makedirs(sous_dossier, exist_ok=True)     os.makedirs(sous_dossier, exist_ok=True)
Ligne 51: Ligne 49:
         nb_tuiles_w = w // taille         nb_tuiles_w = w // taille
         total_tuiles = nb_tuiles_h * nb_tuiles_w         total_tuiles = nb_tuiles_h * nb_tuiles_w
 +        # réserve un buffer pour limiter une allocation à chaque tuile.
 +        buffer = np.empty((src.count, taille, taille), dtype=np.uint8)
         with tqdm(total=total_tuiles, desc=f"Traitement de {nom_base}") as pbar:         with tqdm(total=total_tuiles, desc=f"Traitement de {nom_base}") as pbar:
-            for in range(0, h, taille): +            for in range(0, h, taille): 
-                for in range(0, w, taille): +                for in range(0, w, taille): 
-                    window = Window(ji, taille, taille) +                    window = Window(xy, taille, taille) 
-                    if + taille <= h and + taille <= w: +                    if + taille <= h and + taille <= w: 
-                        tile = src.read(window=window)+                        tile = src.read(window=window, out=buffer)
                         tile_rgb = np.moveaxis(tile, 0, -1).astype(np.uint8)                         tile_rgb = np.moveaxis(tile, 0, -1).astype(np.uint8)
                         img = Image.fromarray(tile_rgb)                         img = Image.fromarray(tile_rgb)
-                        img.save(f"{sous_dossier}/{nom_base}_x{i}_y{j}.jpg")+                        img.save(f"{sous_dossier}/{nom_base}_x{x}_y{y}.jpg")
                         pbar.update(1)                         pbar.update(1)
 + 
 def decouper_jp2_en_tuiles_parallele(dossier_entree, dossier_sortie, taille=640, nb_threads=4): def decouper_jp2_en_tuiles_parallele(dossier_entree, dossier_sortie, taille=640, nb_threads=4):
     os.makedirs(dossier_sortie, exist_ok=True)     os.makedirs(dossier_sortie, exist_ok=True)
     fichiers = glob.glob(os.path.join(dossier_entree, "*.jp2"))     fichiers = glob.glob(os.path.join(dossier_entree, "*.jp2"))
 +    #fichiers = glob.glob(os.path.join(dossier_entree, "37-2025-0505-6715-LA93-0M20-E080.jp2"))
     with ThreadPoolExecutor(max_workers=nb_threads) as executor:     with ThreadPoolExecutor(max_workers=nb_threads) as executor:
         futures = [executor.submit(decouper_fichier_jp2, fichier, dossier_sortie, taille) for fichier in fichiers]         futures = [executor.submit(decouper_fichier_jp2, fichier, dossier_sortie, taille) for fichier in fichiers]
Ligne 70: Ligne 71:
             future.result()  # Attend la fin de chaque tâche             future.result()  # Attend la fin de chaque tâche
  
-# Exemple d'utilisation +if __name__ == "__main__": 
-decouper_jp2_en_tuiles_parallele( + 
- "BDORTHO_2-0_RVB-0M20_JP2-E080_LAMB93_D037_2025-01-01/ORTHOHR/1_DONNEES_LIVRAISON_2025-12-00193/OHR_RVB_0M20_JP2-E080_LAMB93_D37-2025/", +    decouper_jp2_en_tuiles_parallele( 
- "tuiles_640/", +        "BDORTHO_2-0_RVB-0M20_JP2-E080_LAMB93_D003_2025-01-01/ORTHOHR/1_DONNEES_LIVRAISON_2026-01-00061/OHR_RVB_0M20_JP2-E080_LAMB93_D03-2025/", 
- nb_threads=4 +        "BDORTHO_tuiles-640_03/", 
-)+        nb_threads=4, 
 +    )
 </code> </code>
  
informatique/ign_bdortho.1771783219.txt.gz · Dernière modification : de cyrille

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki