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é ?

#1 Wed 22 August 2007 16:48

samuel_31
Participant actif
Lieu: Pamiers
Date d'inscription: 16 Apr 2006
Messages: 116
Site web

[Mapbasic] Création de points

Bonjour,
Je n'arrive pas à programmer un code qui permettrait de créer un point sur chaque noeud dans une nouvelle couche.
il y a plusieurs message dans le même type que le mien. Entre autres un message récent où Maurice propose son outil. Il y a aussi le p2p.mbx que je connais bien.
Mais je souhaiterai avoir le code de cette manip pour pouvoir l'intégrer dans un autre MBX.
J'ai commencé par déterminer le nombre de noeuds de mon objet (polygone ou polyligne). Après ceci, j'arrive à déterminer les coordonnées d'un noeud (et je pense qu'avec un boucle du type For... Next on peut déterminer les coordonnées de tous les noeuds). Mais c'est à ce moment que je bloque. Je n'arrive pas à créer un point à l'emplacement du noeud dans une nouvelle table.
Quelqu'un aurait-il une idée ?
Merci d'avance
Samuel

Hors ligne

 

#2 Wed 22 August 2007 17:32

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Mapbasic] Création de points

Bonjour,
Il y a des explications sur cette phase de création de point... justement dans l'aide de la fonction qui est à utiliser, soit
ObjectNodeX()
ps: pour mon outil je n'utilise cette méthode mais je passe par la lecture du mid-mif...si je me souviens bien smile

Hors ligne

 

#3 Thu 23 August 2007 09:36

samuel_31
Participant actif
Lieu: Pamiers
Date d'inscription: 16 Apr 2006
Messages: 116
Site web

Re: [Mapbasic] Création de points

Bonjour,
j'avais noté qu'il y a un exemple de céation de points à l'emplacement des noeuds dans la même table. Mais mon souci est de créer ces points dans une nouvelle table.
J'ai pensé à deux solutions. Soit par la couche dessin mais je ne trouve pas la commande pour dessiner dans cette couche après :

Code:

Set Map Layer 0 editable On

Deuxième solution : créer directement une nouvelle table. Mais pour cette solution, je ne trouve pas par quel bout commencer. Il faut sûrement créer la table en premier pour pouvoir dessiner quelque part mais lorsque j'exécute le mbx, mapinfo note un message d'erreur : le fichier .DAT n'existe pas.
Que faire... ? hmm
Merci encore
Sam

Hors ligne

 

#4 Thu 23 August 2007 22:39

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Mapbasic] Création de points

Bonjour,
J'ai du mal à savoir où vous en êtes; peut être faudrait-il nous montrer l'état de votre code...
Sinon il faut effectivement commencer par créer une table (par Create Table, avec par prudence création d'une colonne ID en entier car les tables sans attribut sont parfois source de problèmes) puis suivre la même démarche que celle évoquée dans l'aide de ObjectNodeX(), en insérant chaque nouveau point dans la nouvelle table (avant dernière ligne de l'exemple)
Bon courage

Hors ligne

 

#5 Fri 24 August 2007 12:07

philmap
Participant actif
Date d'inscription: 27 Nov 2006
Messages: 59

Re: [Mapbasic] Création de points

Apres avoir creer une table, creer une carte (Ex: pour coordonnees: WGS84)
Create Map For  TableName  CoordSys Earth Projection 1, 104
puis creer les points par une instruction du type:
"Update " & TableName & " set obj=createpoint(" & ChampLon & "," & ChampLat & ")"

ChampLon er ChampLat les champs de la table contenant les coo. geographiques des points a creer.

(Extrait d'un code VB, donc en MapBasic virer les guillemets)

Hors ligne

 

#6 Fri 24 August 2007 16:31

samuel_31
Participant actif
Lieu: Pamiers
Date d'inscription: 16 Apr 2006
Messages: 116
Site web

Re: [Mapbasic] Création de points

Re,
j'avance petit à petit. J'arrive à créer mes tables et à leur donner automatiquement le nom que je souhaite mais j'ai un souci lorsque je cherche à afficher une fenetre carte de la table nouvellement créée dans laquelle (et c'est logique) il n'y a pas encore d'entité graphique ce que mapinfo note dans la fenetre d'erreur. Pourtant c'est dans cette table que doivent être créés mes futurs points.

Voici mon code :

Code:

Sub points_noeuds
filespec_points=filedir+nom_table+"_points"
Create Table nom_table+"_points"
    (null Integer, coordX Float, coordY Float)
    File filespec_points
Add Map Auto Layer nom_table+"_points"
End Sub

Ici, filespec_points est le nom de la table que je souhaite crééer, filedir l'emplacement, nom_table la table qui contient le polygone avec les noeuds.

Ai-je été clair ? Ca je commence à m'embrouiller moi-même hmm

Merci encore
Sam

Hors ligne

 

#7 Fri 24 August 2007 16:57

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Mapbasic] Création de points

Erreur "normale"...
Attendez qu'il y ait un contenu graphique à la nouvelle table avant de l'afficher en fenêtre carte...
i.e: patientez avant de faire Add Map: remplissez avec des point, enregistrer (Commit) et n'affichez qu'après

Hors ligne

 

#8 Wed 19 September 2007 12:37

samuel_31
Participant actif
Lieu: Pamiers
Date d'inscription: 16 Apr 2006
Messages: 116
Site web

Re: [Mapbasic] Création de points

Bonjour,

après quelques temps d'absence, je reviens à mes moutons en espérant conclure ce MBX mais non. J'ai toujours un souci que je n'arrive pas à résoudre.
Je veux toujours créer des points dans une nouvelle table à partir des coordonnées des noeuds d'un polygone d'une autre table. J'arrive à faire tourner certaines étapes mais jebloque lors de la céation des points dans une nouvelle table. J'ai utilisé la solution de philmap mais rien à faire.

Voici le code correspondant :

Code:

Create Table points (ID Char(10))
Update points set obj=createpoint(X, Y)

X et Y sont les coordonnées définies auparavant.

Donc quand je fais tourner, MapInfo note l'erreur suivante :
Le résultat de l'expression n'est pas un nom de table ou de colonne.
Au niveau de la dernière ligne de mon code.

Que dois-je changer ?

Merci encore.

Sam

Hors ligne

 

#9 Wed 19 September 2007 12:55

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Mapbasic] Création de points

Courage...
Vous ne pouvez pas "updater" (mettre à jour ligne à ligne) une table vide (sans ligne) !!
Il faut utiliser:

Code:

Insert Into points (Obj) Values (CreatePoint(X,Y))

Hors ligne

 

#10 Wed 19 September 2007 16:17

samuel_31
Participant actif
Lieu: Pamiers
Date d'inscription: 16 Apr 2006
Messages: 116
Site web

Re: [Mapbasic] Création de points

J'ai essayé des deux façons mais le même message d'erreur apparaît.

Pourtant, je ne vois pas le souci. J'ajoute à la table points dans la colonne objet les valeurs qui sont des points avec pour coordonnées X et Y. La fonction est basique. Mais ça ne toune pas rond. Mais il n'y a pas de variable à déclarer, ma table est bien ouverte... Mystère.

Merci quand même.

Samuel

Hors ligne

 

#11 Wed 19 September 2007 17:07

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [Mapbasic] Création de points

Dernier recours: me faire passer le fameux code ...que je tente de "réparer" smile


[EDIT Maurice]: C'est fait...Il manquait une ligne Create Map entre Create table et Insert, pour rendre la table graphique

Code:

Créate Table "Points" (ID Char(10))
Create Map For Points CoordSys Earth Projection 3, 1002, "m", 0, 44.1, 43.1992913889, 44.99609389, 600000, 200000 Bounds (-45826, -217324) (1270389, 1086104)
Insert into points (obj) values (CreatePoint(X, Y))

La clause CoordSys est ici donnée à titre d'exemple (Lambert 3 Sud)

Dernière modification par Maurice (Thu 20 September 2007 09:43)

Hors ligne

 

Pied de page des forums

Powered by FluxBB