Pages: 1
- Sujet précédent - Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2 - Sujet suivant
#1 Mon 20 September 2010 12:26
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Bonjour,
J'ai récupéré une table de données attributaires contenant notamment les champs X1, Y1, X2, Y2 correspondant aux coordonnées des 2 points définissant à chaque enregistrement un segment.
Mapinfo permet de créer automatiquement des points en carto à partir de 2 champs flottants X,Y d'une table.
Y a t-il une solution pour créer de façon similaire et automatique des segments ?
Hors ligne
#2 Mon 20 September 2010 12:36
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Bonjour
C'est possible...
Il faut rendre la table graphique (par "modifier structure") puis utiliser dans la fen*etre MapBasic (la fameuse FMB) la fonction CreateLine()
Du genre: Insert Into ma_table (obj) Values (CreateLine(COL1, COL2, COL3, COL4))
Hors ligne
#3 Mon 20 September 2010 12:42
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Merci pour cette piste. Je tente cet après-midi !
Hors ligne
#4 Mon 20 September 2010 12:52
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Ça ne fonctionne pas, commande "values" inconnue.
Je suppose que le souci est qu'il attend des valeurs numériques or on indique ici des intitulés de colonnes. Il doit y avoir une déclaration à faire ??
Dernière modification par atech (Mon 20 September 2010 13:11)
Hors ligne
#5 Mon 20 September 2010 13:59
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
J'avais dit genre....
Si le Insert ne marche pas (il faut effectivement une boucle...difficilee en FMB) on peut passer par un Update
Set CoordSys Table ma_table
Update ma_table Set Obj = CreateLine(ma_table.COL1, ma_table.COL2, ma_table.COL3, ma_table.COL4)
Si on tient au insert il faut:
dim i as integer
Set CoordSys Table ma_table
i=1
Fetch Rec i From ma_table
Insert Into ma_table (obj) Values (CreateLine(ma_table.COL1, ma_table.COL2, ma_table.COL3, ma_table.COL4))
i=i+1
print i
On sélectionne tout une fois, puis seulement les 4 dernières lignes ensuite et on garde 'enter' appuyé jusqu'à ce que i prenne la valeur du nombre de lignes du tableau...
Hors ligne
#6 Mon 20 September 2010 14:52
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Je n'ai jamais pratiqué la FMB en fait...
La 1ere méthode ne fonctionne pas mais la 2eme semble aboutir à ce qui était attendu !
Un grand merci
Hors ligne
#7 Mon 20 September 2010 15:33
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Par contre, cela rajoute dans la table attributaire autant d'enregistrements que de segments créés. Les segments ne sont pas liés aux enregistrements initiaux mais à des enregistrements vides...
Dernière modification par atech (Mon 20 September 2010 15:48)
Hors ligne
#8 Mon 20 September 2010 16:31
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Dans la boucle plus haut avec "i", je voulais en profiter pour intégrer une valeur pour une colonne de ma table comme ceci :
...
ma_table.COL=i
i=i+1
>> "commande inconnue"
Comment attribuer une valeur ?
Hors ligne
#9 Mon 20 September 2010 16:57
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Pas compris...Si c'est pour incréménter un numéro d'ordre, on peut le faire après par une mise à jour de la colonne avec RowID
Pourriez vous faire passer en pièce jointe votre table originelle (zippée) ou au moins une partie ??
Hors ligne
#10 Mon 20 September 2010 20:25
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
J'ai maintenant mes segments mais pas les attributs correspondants (aucune donnée dans mes colonnes). Je peux m'en sortir en incrémentant une colonne pour ensuite mettre à jour à partir d'une autre table.
Pour le 1er enregistrement, je veux mettre à 1 la colonne.
Pour le 2eme enregistrement, je veux mettre à 2 la colonne. (etc, 2600 enregistrements...).
Donc je suppose qu'avec la FMP et une petite boucle, ça peut se faire facilement ?
Hors ligne
#11 Mon 20 September 2010 21:47
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Bonjour,
Corrigez-moi si je me trompe mais le nombre maximal de colonnes dans une table est de 255
Sinon, tableau croisé dynamique dans Excel?
JF
Dernière modification par jean94 (Mon 20 September 2010 21:47)
Hors ligne
#12 Mon 20 September 2010 21:54
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Bonjour,
Vérification faites....max = 250 colonnes
JF
Hors ligne
#13 Tue 21 September 2010 14:09
- atech
- Participant occasionnel
- Date d'inscription: 1 Feb 2010
- Messages: 21
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Je m'exprime mal : Pour une colonne donnée, je veux attribuer à chaque cellule un entier correspondant au numéro de ligne.
EDIT : vu avec RowID et "mettre à jour". Ça marche, je vais finir ma petite bidouille.
Merci
Dernière modification par atech (Tue 21 September 2010 14:20)
Hors ligne
#14 Tue 21 September 2010 14:22
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2
Par défault la valeur de la ligne est égale au RowId...tu peux afficher ce rowid dans une colonne en faisant
un update column et dans valeur mettre "rowid" sans guillemet aussi faisable dans FMB
J'espère répondre à ta question
JF
Dernière modification par jean94 (Tue 21 September 2010 14:23)
Hors ligne
Pages: 1
- Sujet précédent - Mapinfo : créer automatiquement segments à partir champs X1,Y1 - X2,Y2 - Sujet suivant