Boucle pour grouper des couches avec un script GM

Boucle pour grouper des couches avec un script GM

Messagepar _Camille_ » 06 Mai 2025, 10:17

Bonjour,

Je me permets de redemander de l'aide concernant la création de script Global Mapper.

J'ai un script en plusieurs parties :
- l'une de ces parties me permet d'importer de nombreux fichiers au format .nc (NetCDF) avec IMPORT à partir d'un dossier en utilisant DIR_LOOP_START ;
- une autre partie me permet d'importer de nombreux fichiers au format .txt avec IMPORT_ASCII également à partir d'un dossier en utilisant une nouvelle boucle DIR_LOOP_START différente de la précédente.

Mes fichiers .nc et .txt ont en commun leurs noms (exemple : 001-nom_fichier.nc, 001-nom_fichier.txt, 002-nom_fichier.nc, 002-nom_fichier.txt ...etc).

Je souhaiterais regrouper ensemble, dans le Centre de contrôle, les fichiers .nc et .txt qui ont le même nom, de façon à obtenir une arborescence du style :

001-nom_fichier
001-nom_fichier.nc
001-nom_fichier.txt

002-nom_fichier
002-nom_fichier.nc
002-nom_fichier.txt

...etc

J'ai compris qu'il faut utiliser LAYER_GROUP.

J'ai donc essayé de créer une nouvelle boucle du style :

Code : Tout sélectionner
LAYER_LOOP_START FILENAME="*" VAR_NAME_PREFIX="GROUP"

SET_LAYER_OPTIONS FILENAME="%GROUP_FNAME_W_DIR%" LAYER_GROUP="%GROUP_FNAME_WO_EXT%"

LAYER_LOOP_END


Mais ça me crée un groupe pour chaque couche sans mélanger les fichiers .nc et .txt avec le même nom, comme ci-dessous :

001-nom_fichier
001-nom_fichier.nc

002-nom_fichier
002-nom_fichier.nc

001-nom_fichier
001-nom_fichier.txt

002-nom_fichier
002-nom_fichier.txt

J'ai essayé de jouer avec FILENAME en essayant de remplacer FILENAME="%GROUP_FNAME_W_DIR%" avec FILENAME="%GROUP_FNAME_WO_EXT%.nc" et FILENAME="%GROUP_FNAME_WO_EXT%.txt".

J'ai essayé d'utiliser IF mais je ne suis pas sûre d'avoir trouver comment écrire ma condition correctement. J'ai tenté IF COMPARE_STR="%GROUP_FNAME_WO_EXT%=%GROUP_FNAME_WO_EXT%" et IF COMPARE_STR="%GROUP_FNAME_WO_EXT%.nc=%GROUP_FNAME_WO_EXT%.txt".

J'ai aussi essayé de mettre d'abord les fichiers .nc dans un groupe pour rajouter ensuite le fichier .txt correspondant dans le groupe avec la fonction SORT_LAYER mais aucun de mes essais n'a fonctionné.

Sauriez-vous comment je peux obtenir le résultat de groupement souhaité, s'il vous plaît ?

En vous remerciant,
Bien cordialement,
Camille
_Camille_
 
Message(s) : 7
Inscrit le : 24 Novembre 2021, 15:54

Re: Boucle pour grouper des couches avec un script GM

Messagepar Sophie-Anne » 12 Mai 2025, 18:35

Bonjour Camille,

Merci pour votre message ! Je vous réponds prochainement ;) .

En vous souhaitant une bonne fin de journée,

Sophie-Anne, pour le support technique de Géom@tique
Avatar de l’utilisateur
Sophie-Anne
 
Message(s) : 409
Inscrit le : 19 Janvier 2013, 20:41

Re: Boucle pour grouper des couches avec un script GM

Messagepar Sophie-Anne » 30 Mai 2025, 12:41

Bonjour Camille,

Pardon pour ce message tardif.

Il semble que le problème soit lié à l'ordre initial des couches dans le Centre de contrôle avant l'exécution de la boucle.

Par exemple, si les couches sont déjà ordonnées, de sorte que fichier1.txt et fichier1.csv sont côte à côte, les groupes sont créés comme prévu :

Image

Image

En revanche, si les couches ne sont pas dans cet ordre, par exemple si nom_fichier1.csv se trouve en bas de la liste des couches, un groupe est d'abord créé pour fichier1.txt sans l'extension, puis pour fichier2. Le groupe portant ce nom n'est pas mémorisé lorsqu'il atteint le bas de la liste.

Image

Image

Pour résoudre ce problème, il est nécessaire de modifier l'ordre des couches avant le regroupement. Pour ce faire, vous devez utiliser la commande SORT_LAYERS avant la boucle, avec le paramètre MAP_ORDER.

    SORT_LAYERS : permet de trier les couches chargées selon certains critères, tels que le nom, la résolution, le type, etc.

    MAP_ORDER : spécifie le mode de tri des cartes.

    LAYER_DESC_ASC : spécifie un ordre croissant par nom de couche
Par exemple :

    SORT_LAYERS MAP_ORDER=LAYER_DESC_ASC
    LAYER_LOOP_START FILENAME="*" VAR_NAME_PREFIX="GROUP"
    SET_LAYER_OPTIONS FILENAME="%GROUP_FNAME_W_DIR%" LAYER_GROUP="%GROUP_FNAME_WO_EXT%"
    LAYER_LOOP_END
Image

Image

J'espère que cela répond à votre question ! Je reste à votre disposition si besoin.

Très bon week-end à vous,

Sophie-Anne, pour le support technique de Géom@tique
Avatar de l’utilisateur
Sophie-Anne
 
Message(s) : 409
Inscrit le : 19 Janvier 2013, 20:41


Retour vers Global Mapper

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)

cron