Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 27 November 2014 10:33

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Créer une boucle pour sélection et légende de polygones

Bonjour,

Je cherche a faire une boucle a partir de quelques lignes de commandes que j'ai prépare. Je ne connais pas trop le domaine de la programmation, je ne sais donc pas trop si c'est réalisable ou pas...
Pour expliquer : j'ai une table "Habitats" avec un polygone pour chaque habitat, ainsi qu'une colonne Code CORINE. Admettons que j'ai 50 polygones et 15 habitats differents, le but serait d'avoir 15 cartes, presentant chacune un seul habitat.

Les commandes que j'ai prepare me permettent de selectionner un habitat, l'ajouter à la carte, le mettre en jaune, faire pareil avec un deuxieme et fermer le premier.. Mais pour cela je dois modifier a la main le code CORINE a selectionner ainsi que le nom de ma nouvelle table ou est rentree la selection. Je dois egalement modifier le numero de la fenetre carte (map windows XXX) qui change a chaque ouverture de mapinfo.

Bref j'aimerais savoir s'il est possible d'automatiser tout ça, creer un code qui balaye ma colonne "code CORINE" et applique le programme pour chaque nouveau code trouve?!

Je vous joins les quelques lignes de base pour que vous compreniez mieux. Un grand merci d'avance si quelqu'un peut m'apporter de l'aide!
PS : je travaille sous MI 11.00

select * from Habitats where Code_CORINE="34.3" into Liste
Add Map Window 173673664 Auto Layer Liste

Set Window 173673664 Front
Set Map Window 173673664  Layer 1 Display Global
Set Map Window 173673664  Layer 1  Global Pen (1,2,0)   Global Brush (2,16776960,16777215)


select * from Habitats where Code_CORINE="24.2" into Liste2
Add Map Window 173673664 Auto Layer Liste2

Set Window 173673664 Front
Set Map Window 173673664  Layer 1 Display Global
Set Map Window 173673664  Layer 1  Global Pen (1,2,0)   Global Brush (2,16776960,16777215)
Set Map Window 173673664  Layer 2 Display Off

Hors ligne

 

#2 Thu 27 November 2014 12:30

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Créer une boucle pour sélection et légende de polygones

Salut et bienvenue,

Ta manip est faisable en semi auto.
En utilisant la FMB couplée avec scriptgen.
Connais tu ces outils?
A+
Joël

Hors ligne

 

#3 Thu 27 November 2014 14:12

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Re: Créer une boucle pour sélection et légende de polygones

Salut et Merci!
FMB oui, scriptgen seulement de nom je ne l'ai jamais utilisé. Ca m'intéresse bien si tu peux détailler.. smile ?
Lina

Hors ligne

 

#4 Thu 27 November 2014 14:27

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Créer une boucle pour sélection et légende de polygones

En gros si tu regardes tes requêtes:

Code:

select * from Habitats where Code_CORINE="34.3" into Liste
Add Map Window 173673664 Auto Layer Liste

Set Window 173673664 Front
Set Map Window 173673664  Layer 1 Display Global
Set Map Window 173673664  Layer 1  Global Pen (1,2,0)   Global Brush (2,16776960,16777215)


select * from Habitats where Code_CORINE="24.2" into Liste2
Add Map Window 173673664 Auto Layer Liste2

Set Window 173673664 Front
Set Map Window 173673664  Layer 1 Display Global
Set Map Window 173673664  Layer 1  Global Pen (1,2,0)   Global Brush (2,16776960,16777215)

Il n'y a pas grand chose qui change
--> "24.2" , Liste2 etc..
Ce que fait scriptgen c'est de générer autant de requêtes qu'il y a de valeurs contenues dans une liste (d'une ou plusieurs variables).
Si je reprends ton code pour en faire un script de base celà donne:

Code:

select * from Habitats where Code_CORINE="XXXX" into ListeXXXX
Add Map Window 173673664 Auto Layer ListeXXXX

Set Window 173673664 Front
Set Map Window 173673664  Layer 1 Display Global
Set Map Window 173673664  Layer 1  Global Pen (1,2,0)   Global Brush (2,16776960,16777215)

XXXX est une variable qui sera incrémentée par les valeurs compris dans ta liste
Dés que tu auras toutes tes requêtes il ne te resteras plus qu'à les copier et coller dans la FMB wink
J'espère être clair
Je t'invite à faire une recherche sur ce forum et chez nos voisins "Forum SIG" avec comme mot clef "Générateur de scripts" ou "scriptgen" , tu devrais trouver pas mal de choses.
A+
Joël

Dernière modification par Spacejo (Thu 27 November 2014 14:28)

Hors ligne

 

#5 Fri 28 November 2014 09:45

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Re: Créer une boucle pour sélection et légende de polygones

Rebonjour! Merci pour les infos! L'outil me plait bien et je devrais réussir à obtenir ce que je veux avec ça smile cependant 2 petits problèmes pour l'instant... A chaque fois que j'ouvre un wor, le numéro de ma fenêtre change (Set Window 169932056). Je suis donc obligée de le modifier manuellement, y aurait-il une autre solution? 2ème prb : mapbasic n'accepte apparemment pas les virgules en fin de commande. Mes "ListeXXXX" lorsqu'elles sont remplacées par les codes CORINE (24.2, 24.5...), ne sont pas reconnues, alors que si je modifie par Liste1, Liste2..., le programme fonctionne parfaitement! Y a t'il une solution....?
Bonne journée!
Lina

Hors ligne

 

#6 Fri 28 November 2014 12:25

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Re: Créer une boucle pour sélection et légende de polygones

Problème résolu (partiellement) pour le code_corine. Je prends l'intitulé à la place, plus d'erreur à cause de la virgule!
Par contre je ne trouve pas de solution pour ma fenêtre carte qui change de numéro à chaque ouverture...

Hors ligne

 

#7 Fri 28 November 2014 19:44

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Créer une boucle pour sélection et légende de polygones

Mes "ListeXXXX" lorsqu'elles sont remplacées par les codes CORINE (24.2, 24.5...), ne sont pas reconnues, alors que si je modifie par Liste1, Liste2..., le programme fonctionne parfaitement! Y a t'il une solution....?


Oui en utilisant plusieurs variables.
Cocher "utiliser plusieurs valeurs à remplacer" -> Dans valeur à remplacer: mettre par exemple -> XXXX; YYYY
Puis le script initial devient ->

select * from Habitats where Code_CORINE="XXXX" into ListeYYYY
Add Map Window 173673664 Auto Layer ListeYYYY


Dans la liste il suffit de mettre:
24.2; 1
24.5; 2
etc...
Par contre je ne comprends -> ouverture de .wor -> peux tu être plus précise?
A+
Joël

Hors ligne

 

#8 Mon 01 December 2014 09:05

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Re: Créer une boucle pour sélection et légende de polygones

Oui c'est ce que j'avais fini par trouvé pour les valeurs multiples en fouillant sur le forum! Merci! Pour l'histoire du wor : dans mon script il y a "add map window 173673664". Mais si je ferme MI, je le rouvre plus tard, lorsque je mets mon script un message erreur apparait "map window 173673664 non reconnu". Et en effet si je fais une manip manuel, par exemple j'ajoute une couche, dans la FMB jai la commande "add map window 35679458" qui apparait. Ou le numéro n'ai jamais le même d'une ouverture à l'autre.
J'espère que c'est plus clair ...?

Hors ligne

 

#9 Mon 01 December 2014 13:19

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Créer une boucle pour sélection et légende de polygones

Salut,

Code:

lorsque je mets mon script

????
Tu complètes à chaque fois ton .wor?
Je n'ai pas trés bien saisit mais tu peux renommer ta fenêtre active comme ceci:

Code:

Set Window Frontwindow() Title "MonNomDeCarte"
add map window "MonNomDeCarte"

Ceci est à placer dans le .wor
A+
Joël

Dernière modification par Spacejo (Mon 01 December 2014 13:19)

Hors ligne

 

#10 Mon 01 December 2014 14:11

Lynah
Juste Inscrit !
Date d'inscription: 27 Nov 2014
Messages: 7

Re: Créer une boucle pour sélection et légende de polygones

... en fait le script me servirai à réeffectuer la manip sur de nouvelles cartes. Pour chaque nouveau site étudié, je réalise une carte des habitats. J'applique le script pour créer toutes mes cartes par habitat. Mais du coup je crée un nouveau wor pour chaque site d'étude.
Mais je devrais réussir à faire quelque chose de correct avec tout ça! Merci beaucoup pour ton aide!
Lina

Hors ligne

 

#11 Mon 01 December 2014 14:14

Spacejo
Membre
Lieu: Nancy
Date d'inscription: 17 Aug 2008
Messages: 2511

Re: Créer une boucle pour sélection et légende de polygones

Il existe un .wor sur ce site qui fait de la production de carte en série.
--> http://georezo.net/forum/viewtopic.php?id=49934
A+
Joël

Hors ligne

 

Pied de page des forums

Powered by FluxBB