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 Fri 16 April 2010 10:09

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

[MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

Bonjour à tous,

J'en appelle à vous afin que vous puissiez m'aider !!! Mon problème concerne des communes.

Dans le code suivant, j'ai 2 problèmes :
- déjà je crée une table temporaire afin de pouvoir faire référence à celle ci, mais il ne me la reconnait pas, car lors du pochoir, il le fait bien sur ma table temporaire (une commune) mais pour le zoom, il le fait sur l'ensemble des entités (toutes les communes donc le département).

- ensuite je fais une boucle pour qu'il fasse toutes les communes. Il me fait bien le nombre de mise en page égal au nombre d'enregistrement, mais il garde toujours la géométrie de la première.

Code:

Fetch rec z from nomtable
z = 1
Do while Not EOT(nomtable)

'on crée une table temporaire à partir du polygone sélectionné
        SELECT * FROM nomtable into monPolygone
                  
'on crée une copie de la table d'où le polygone est sélectionné
        DIM maTable AS string
        maTable = selectioninfo(SEL_INFO_TABLENAME)

'dessine dans le Layout un cadre permettant l'affichage de la carte
        create frame into window WindowID(IdLayout) (0.63, 3.48) (41.37, 29.1) Pen(1,1,0) brush(1, 16777215, 16777215) FROM WINDOW WindowID(IdMap) fillframe on

'on défini le polygone en pochoir
        Fetch rec z from monPolygone
        SET Map Clipping Object monPolygone.obj

'on rajoute une couche avec le polygone sélectionné
        Add Map window WindowID(IdMap) Layer monPolygone
    
'on zoome sur cette couche
        SET Map Window WindowID(IdMap) Zoom Entire Layer monPolygone

'on supprime la couche avec le polygone sélectionné
        Remove Map Window WindowID(IdMap) Layer monPolygone
'on ferme la table monPolygone
        Close table monPolygone

[...]

Fetch next from nomtable
Loop

Merci pour vos aides.

P.S. : le zoom fonctionné parfaitement avant que j'inclus la variable pour boucler...

Hors ligne

 

#2 Mon 19 April 2010 09:31

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

Bonjour,

Quelqu'un pourrait il m'aider ou me donner une piste pour résoudre mon problème!!!

Merci

Hors ligne

 

#3 Mon 19 April 2010 11:40

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

Bonjour,

Il y a quand même un chose qui me dérange dans ce code, pourquoi avoir besoin de la table d'origine entière dans monPolygone?
juste l'enregistrement suffit, sélectionne l'enregistrement par son identifiant.
la table mon_polygone ne doit contenir qu'un seul enregistrement.

la position du z= 1 n'est pas correcte, elle devrait avoir lieu juste avant le fetch rec.

je suppose que le z est bien incrémenté et que le fetch rec z nomtable a bien lieu derrière...

cordialement.

Hors ligne

 

#4 Mon 19 April 2010 11:52

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

Bonjour,

Merci pour votre réponse.

Pour monPolygone, c'est ce que je souhaite faire, prendre que l'enregistrement qui m'intéresse. le symbole *; c'est pour dire de prendre toutes les informations de l'enregistrement z.

A moins que je me trompe, et que cela ne se dit pas comme cela.

Mais ce que je ne comprend pas, c'est qu'il réalise correctement le pochoir, mais pas le zoom, c'est qu'il arrive à le lire quand même, non????

Pour le z=1, je l'avais supprimé en remplacant rec z par first, puis à la fin next, mais cela ne change rien, il me garde toujours la première géométrie.

Je vais donc essayer de placer z=1 avant.

Je vous tiens au courant, merci...

Hors ligne

 

#5 Mon 19 April 2010 11:57

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

Non, malheureusement, même en plaçant le z = 1 avant, il me garde toujours la même géométrie...

Je n'arrive vraiment pas à trouver la solution à mes problèmes!!

Dernière modification par Cyril Chat (Mon 19 April 2010 11:58)

Hors ligne

 

#6 Mon 19 April 2010 13:44

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

explication

l'instruction suivante va sélectionner toute ta table nomtable dans monPolygone...

SELECT * FROM nomtable into monPolygone

pour en sélectionner un seul tu dois rajouter la clause where.

idPolygone = nomtable.id (vu le fetch rec z en fin de boucle et du début de boucle)
SELECT * FROM nomtable where id = idPolygone into monPolygone

Fetch rec z from monPolygone est inutile si il n'y a qu'un seul enregistrement.

Normalement il faut une fenêtre carte par cadre carte dans la ou les mises en page.

Hors ligne

 

#7 Mon 19 April 2010 13:49

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

OK, merci pour l'explication.
Je viens donc d'essayer idPolygone = nomtable.id.

Il me retourne l'erreur : "Unrecognized command : .."
Savez vous pourquoi ne la reconnait il pas???

Hors ligne

 

#8 Mon 19 April 2010 15:00

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

attention tout de même, chacun de tes polygones doit avoir un identifiant unique pour que cela marche, dans ma supposition id était le champ de l'identifiant.

Quel est le champ unique pour tes polygones? Le champ qui identifie à coup sur tes polygones...
s'il n'existe pas il faut le créer en ajoutant un champ à la table d'origine et en le remplissant par rowid.

et bien sur idPolygone doit être une variable de même type que l'identifiant unique du polygone, pour rowid c'est de l'integer.

c'est nécessaire.

désolé si j'ai oublié des informations.

Hors ligne

 

#9 Mon 19 April 2010 15:42

Cyril Chat
Participant actif
Lieu: Niort
Date d'inscription: 14 Feb 2010
Messages: 90

Re: [MapBasic 9.x] Problème de table temporaire et de zoom sur sélection

je sais bien que c'était à titre d'exemple votre 'id'.

J'avais donc essayer avec un champ "insee" qui a des identifiants uniques, car je ne possède pas d'ID allant de 1 jusqu'au nombre total. Insee comporte donc des nombres du style "79002, 79034...". Mais cela ne fonctionnait pas non plus.

J'ai donc tenter votre suggestion pour insérer un champ avec Rowid, mais je n'y arrive pas.

Quel code utilisé pour insérer un champ?

Merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB