#1 Thu 04 September 2008 10:28
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
[MapBasic 9.0] création de ligne
Bonjour;
mon objectif est d'afficher une ligne sur ma Map; alors j'ai la partie de code suivante:
Code:
... open table nomTab ' c une simple table contenant les donnés avec des diff colonnes (nom, long, lat, ...) '§§§§§§§§§§§§§§§§§§§§ createline dim x1,x2,y1,y2 as float x1= 666800 x2= 667500 y1= 3960350 y2= 3960380 Insert Into nomTab (obj) Values (CreateLine( x1, y1, x2, y2)) '§§§§§§§§§§§§§§§§§§§§ end CL map from nomTab ...
le pb c'est qu'à l'affichage j'aurais ma Map mais il n'y a pas de ligne;
mais quand j'exécute la commande "Browse * from nomTab" il y a une ligne (ou bien un enregistrement) qui s'ajoute à ma table; une ligne qui contient des zéros pour tout les enregistrements.
merci d'avance et Bonne Journée;
coordialement SOFIENE
Dernière modification par kharbeche (Thu 04 September 2008 10:42)
Hors ligne
#2 Thu 04 September 2008 11:08
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
Bonjour
Au départ, la table "nomTab" est une table graphique ou pas ??
Si elle ne l'est pas, il faut avant tout la rendre graphique par un Create Map For nomTab CoordSys...
Hors ligne
#3 Thu 04 September 2008 13:53
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
Merci de votre réponse Mr;
Oui, vous avez totalement raison;
Mais comment paramètrer "CoordSys Earth Projection" sur tout pour le type de système de projection; pouvez-vous m'expliquer le plus simple possible.
Je serais trop reconnaissant si vous me donner un petit programme/exemple qui affiche tt simplement une ligne sur une Map;
Merci de votre collaboration;
Coordialement; SOFIENE
Hors ligne
#4 Thu 04 September 2008 14:27
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
Je ne sais pas dans quelle projection sont exprimés vos X,Y qui sont a priori en mètres. A vous de le savoir...
Supposons (pure hypothèse) que ce soit "UTM Zone 31, Northern Hemisphere (WGS 84)"
La ligne correspondante dans le fichier C:\Program Files\MapInfo\Professional\mapinfow.prj dit:
"UTM Zone 31, Northern Hemisphere (WGS 84)\p32631", 8, 104, 7, 3, 0, 0.9996, 500000, 0
La clause CoordSys du Create Map sera alors:
Create Map For nomTab CoordSys Earth Projection 8, 104, 7, 3, 0, 0.9996, 500000, 0
Autre solution: vous avez une table dans la même projection que celle des points de nomtab (disons tableRef)
Ouvrez là avant d'utiliser dans le code:
Set CoordSys Table tableRef
Create Map For nomTab
Pas besoin de CoordSys, la première ligne force l'utilisation de la même projection que tableRef
Hors ligne
#5 Fri 05 September 2008 12:21
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
Bonjour Mr. Maurice;
Tout d'abord merci de votre suivi;
j'ai fixé mon système de cordonnés, ça devient le suivant: "UTM Zone 32, Northern Hemisphere (WGS 84)\p32632"
Et tout mon code devient:
Code:
Create Table Towns ( townname Char(30), population SmallInt, median_income Decimal(9,2) ) Create Map For towns CoordSys Earth Projection 8, 104, 7, 9, 0, 0.9996, 500000, 0 dim x1,x2,y1,y2 as float x1= 666800 x2= 667500 y1= 3960350 y2= 3960380 Insert Into towns (obj) Values (CreateLine( x1, y1, x2, y2)) browse * from towns map from towns
Mais mon problème devient le suivant:
La Map s'affiche toute blanche; c-à-d aucune ligne ne s'affiche (vous pouvez exécuter le code et voir vous même);
mais une ligne (ou un enregistrement) qui s'ajoute dans la table "towns" tout en zéros pour tout les champs.
Merci de me résoudre ce problème.
Coordialement; SOFIENE
Hors ligne
#6 Fri 05 September 2008 12:57
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
C'est quasi bon...je dirais en fin de première ligne ..... File "C:\TOWNS"
et surtout j'ajouterais (les 3 premières lignes sont facultatives)
set map redraw off
Set Map Layer 1 Global Line (1,2,0) 'au cas où le style de ligne par défaut serait invisible
set map redraw on
Set Map Window FrontWindow() Zoom Entire Layer 1 'pour centrer la carte sur l'objet ligne créé
Un commit table towns, pour enregistrer la table, sera nécessaire à un moment donné ...
Hors ligne
#7 Fri 05 September 2008 13:36
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
Merci Mr de votre réponse;
voici le nouveau code en ajoutant vos modifications proposés;
Code:
Create Table Towns ( townname Char(30), population SmallInt, median_income Decimal(9,2) ) file "c:\map\towns" Create Map For towns CoordSys Earth Projection 8, 104, 7, 9, 0, 0.9996, 500000, 0 dim x1,x2,y1,y2 as float x1= 666800 x2= 667500 y1= 3960350 y2= 3960380 Insert Into towns (obj) Values (CreateLine( x1, y1, x2, y2)) commit table towns browse * from towns map from towns set map redraw off Set Map Layer 1 Global Line (1,2,0) set map redraw on Set Map Window FrontWindow() Zoom Entire Layer 1
Mais malheureusement rien n'a changé;
Cordialement; SOFIENE
Hors ligne
#8 Fri 05 September 2008 13:54
- Olivier T
- Participant actif
- Date d'inscription: 31 May 2006
- Messages: 71
Re: [MapBasic 9.0] création de ligne
Bonjour
J'utiliserais plutôt la commande suivant
upadte town set obj=createline(x1,y1,x2,y2)
browse town
Hors ligne
#9 Fri 05 September 2008 15:52
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
Les mêmes lignes (sauf les dim qui doivent être un seul par ligne) tapées dans la fenêtre MapBasic de MapInfo fonctionnent chez moi !!
Qu'est-ce qui ne va pas ?
Il n'y a pas d'objet graphique ? Mettez en édition, sélectionnez tout ... vous ne voyez rien ?
ps on ne peut pas utiliser le update towns set obj=createline(x1,y1,x2,y2) ...il n'y a pas encore d'objet à updater !!
Hors ligne
#10 Thu 11 September 2008 10:11
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
Bonjour Mr. Maurice;
je suis désolé; mais j'ai u une fenêtre Map qui est toute blanche; aucun changement;
voici le code exécuté; et vous pouvez voir aussi une impécran de résultat de l'exécution comme pièce jointe
Code:
Create Table Towns ( townname Char(30), population SmallInt, median_income Decimal(9,2) ) file "c:\map\towns" Create Map For towns CoordSys Earth Projection 8, 104, 7, 9, 0, 0.9996, 500000, 0 dim x1 as float dim x2 as float dim y1 as float dim y2 as float x1= 666800 x2= 667500 y1= 3960350 y2= 3960380 Insert Into towns (obj) Values (CreateLine( x1, y1, x2, y2)) commit table towns browse * from towns map from towns set map redraw off Set Map Layer 1 Global Line (1,2,0) set map redraw on Set Map Window FrontWindow() Zoom Entire Layer 1
c vraiment bizarre mais je ne sais pas quoi faire; et j'ai vraiment besoin de votre aide;
en outre, l'objet se sélectionne; c'est à dire quand je sélectionne sa région dans la fenêtre Map il se sélectionne dans le tableau (la ligne correspondante); mais je ne le vois pas !!! comme si il est en blanc;
merci de votre suivi
Dernière modification par kharbeche (Thu 11 September 2008 11:56)
Hors ligne
#11 Thu 11 September 2008 13:53
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
Votre style courant pour les lignes doit être à blanc et/ou ligne vide ...
Utilisez les commandes suivantes, dans l'orde et pour plusieurs essais repartez en ligne 8, le Set Style, les 4 Dim et les deux lignes de création de table étant déjà faits (en gras les parties variables):
dim x1 as float
dim x2 as float
dim y1 as float
dim y2 as float
Create Table Towns (townname Char(30),population SmallInt,median_income Decimal(9,2)) file "c:\map\towns"
Create Map For towns CoordSys Earth Projection 8, 104, 7, 9, 0, 0.9996, 500000, 0
Set Style Pen MakePen( 1, 2, 0) 'nb: vous pouvez faire varier ça aussi, pour voir...
x1= 666800
x2= 667500
y1= 3960350
y2= 3960380
Insert Into towns (obj) Values (CreateLine( x1, y1, x2, y2))
commit table towns
' browse * from towns facultatif
map from towns 'à ne faire qu'une fois au cours des essais, puis inactiver par '
Set Map Window FrontWindow() Zoom Entire Layer 1 'utile seulement la première fois, inactiver après
Hors ligne
#12 Mon 15 September 2008 01:08
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
Bonsoir Mr.Maurice;
Oui vous avez raison pour la couleur de la ligne; mais en faite le problème n'est pas là;
parce qu'après le changement du programme comme vous avez m'indiquer; malheureusement j'ai obtenu les même résultats que précédemment; (aussi une Map toute en blanche)
Mais après un essai pour savoir des informations sur la ligne (après exécutions et en sélectionnant la région de la ligne sur la Map); j'ai bien contourné le problème;
C'est tout simplement les coordonnées ne sont pas ceux exigés dans le programme; j'ai obtenu des autres cordonnées pour les extrémités de la ligne avec une longueur égal à zéros mètres (dont vous pouvez voir l'impécran sur les résultats obtenus que j'ai eu lors de l'exécution; pour une meilleur clarté et compréhension du problème)
La figure ci jointe vous montre;
Une autre fois je vous remercie fortement pour votre suivi;
Cordialement; SOFIENE
Hors ligne
#13 Mon 15 September 2008 08:21
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] création de ligne
Voir le post #4: à part les problèmes de couleur, il faut aussi que les coordonnées que vous donnez aux points soient compatibles avec la projection que vous avez fixée pour la table. De plus vous pouvez forcer les calculs à se faire dans cette projection, par une ligne Set CoordSys Table towns, juste après Create Map....
Hors ligne
#14 Mon 15 September 2008 10:19
- kharbeche
- Participant occasionnel
- Lieu: Eddamous
- Date d'inscription: 27 Aug 2008
- Messages: 42
Re: [MapBasic 9.0] création de ligne
waaaaaaaaaaaaaaaaw, Mr.Maurice; enfin j'ai réussi; c'est vraiment génial de vous;
milles mercis pour votre effort et de votre aide; juste je voudrais vous dire que dans le cadre de mon PFE c'est la première fois que je connais MapBasic/MapInfo;
au revoir, (au prochain problème )
"très" Cordialement de SOFIENE
Hors ligne