#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.. ?
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
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 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