#1 Wed 22 August 2007 16:48
[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
Hors ligne
#3 Thu 23 August 2007 09:36
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... ?
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
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
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
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
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"
[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