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

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB