#1 Wed 28 October 2015 09:14
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Coordonnées extrémités d'une (poly)ligne
Bonjour,
Je cherche à déterminer (récupérer) les coordonnées des extrémités d'une ligne et d'une polyligne (en omettant les coordonnées des nœuds intermédiaires), soit :
--------------\
(x,y) \____________
(xx,yy)
...le plus automatisé possible, j'ai une table de 4000 lignes !
Je dispose de MapInfo v.10
Une idée ?
Merci d'avance !
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#2 Wed 28 October 2015 12:19
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
Bonjour,
Une façon de faire est d'utiliser les commandes MapBasic:
ObjectInfo(matablepolyligne.obj, 20) --> Cela va produire le nombre de points 'NombreTotal' dans votre polyligne.
ObjectNodeX(matablepolyligne.obj, indexdePolyligne, 1) --> X de premier noeud
ObjectNodeY(matablepolyligne.obj, indexdePolyligne, 1) --> Y de premier noeud
ObjectNodeX(matablepolyligne.obj, indexdePolyligne, NombreTotal) --> X de dernier noeud
ObjectNodeY(matablepolyligne.obj, indexdePolyligne, NombreTotal) --> Y de dernier noeud
Vous pouvez exécuter ces commandes directement dans la fenêtre de MapBasic dans MapInfo Pro.
Noureddine Farah
Principal Software Engineer
Pitney Bowes
1 Global View
Troy, NY 12180
Dernière modification par nfarah (Wed 28 October 2015 15:36)
Hors ligne
#3 Wed 28 October 2015 12:36
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
Bonjour,
Tout d'abord, je suis très honoré d'être renseigné directement par la source !
Je vous remercie grandement pour votre réponse (matinale, à NYC !).
Je me suis empressé d'essayer... mais je crains que ma version v10.0 de MapInfo soit un peu en retard ! (messages d'erreurs)
Je travaille pour un Ministère en France (civil servant) et je ne suis pas en mesure de pouvoir disposer des versions les plus récentes !
...Pas d'inquiétudes, j'ai réussi mon propre défi - il a fallu que j'utilise un autre logiciel de GIS pour extraire les "endpoints" des polylignes et j'ai facilement pu extraire depuis MapInfo les coordonnées des points ainsi créés !
Bonne journée !
Dernière modification par GeoCalimero (Wed 28 October 2015 13:17)
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#4 Wed 28 October 2015 13:44
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
Re-Bonjour,
De rien. Je pense que les commandes mentionnées sont assez anciennes pour marcher. Définitivement elles datent plutôt que MapInfo Pro 10.0
Quelles erreurs vous avez ?
Noureddine Farah
Hors ligne
#5 Wed 28 October 2015 14:31
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
MapBasic me renvoie "Commande non reconnue", quelque soit la commande.
Pourtant, d'habitude, la fenêtre de commandes ne me pose pas de problèmes (commandes simples, cela étant).
J'utilise le MapInfo Professional Version 10.0 Release Build 28, pour info.
Encore merci pour l'intérêt que vous avez porté à ma requête,
I wish you a good afternoon,
- - -
Je suis géomaticien "ADL" (Administrateur de Données Localisées).
Au sein de mon administration d'Etat, c'est désormais QuantumGis qui domine (désolé !), mais certains agents continuent de travailler avec MapInfo (tant que la licence est active). J'apparais alors comme un "dépanneur", même si j'ai moi-même des lacunes. Cependant, je m'accroche au défi tant que je n'ai pas trouvé la solution ! Bien entendu, les demandes que je reçois sont toujours dans l'urgence : normal.
Par ailleurs, j'ai appris sous MapInfo, j'ai acquis certains réflexes propres à ce programme... que je ne retrouve pas forcément, ni en "esprit" ni en fonctionnalités, sous QGis. Alors, je reviens régulièrement à MapInfo !
Le 3ème logiciel que j'utilise est OpenJump.
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#6 Wed 28 October 2015 15:40
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
Bonjour,
Voici le code au complet:
Code:
dim nombreTotal as Integer nombreTotal=objectInfo(matablepolyligne.obj, 20) print nombreTotal dim premierNoeud_x as float dim premierNoeud_y as float dim dernierNoeud_x as float dim dernierNoeud_y as float premierNoeud_x =ObjectNodeX(matablepolyligne.obj, 1, 1) print premierNoeud_x premierNoeud_y =ObjectNodey(matablepolyligne.obj, 1, 1) print premierNoeud_y dernierNoeud_x =ObjectNodeX(matablepolyligne.obj, 1, nombreTotal) print dernierNoeud_x dernierNoeud_y =ObjectNodey(matablepolyligne.obj, 1, nombreTotal) print dernierNoeud_y
Copier ce code, éditer le pour changer le nom de votre table (changer seulement matablepolyligne mais garder .obj). Puis, l'exécuter dans la fenêtre MapBasic.
Noureddine Farah
Dernière modification par nfarah (Wed 28 October 2015 15:42)
Hors ligne
#7 Wed 28 October 2015 16:30
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
C'est vraiment sympathique de votre part de continuer ce "post" !
Mais... J'ai un nouveau message d'erreur :
Variable ou champ dernierNoeud_y non défini. Échec de la commande d'impression. Impossible d'évaluer l'expression.
(je ne comprends pas pourquoi c'est l'avant-dernière ligne qui coince alors que les autres ne produisent pas d'erreur...)
Désolé de vous embêter (!!!) - mais tant que j'y suis :
dans l'expression nombreTotal=objectInfo(N_HYDRO_TRONC_BDC_008.obj, 20) : à quoi correspond le nombre 20, s'il vous plaît ?
Bonne journée
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#8 Wed 28 October 2015 19:00
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
La commande étant: ObjectInfo( objet, attribut )
On peut trouver plusieurs attributs pour une géométrie: type, etc.
20 est le code 'attribut' de nombre total de points.
Vous pouvez installer l'application 'MapBasic' (gratuite) et voir le guide. Tous les attributs sont expliqués dedans ainsi que toutes les autres commandes MapBasic
Noureddine Farah
Hors ligne
#9 Thu 29 October 2015 08:46
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
Merci !
Oui, je vais étudier ce chapitre.
Bonne journée
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#10 Thu 29 October 2015 09:34
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
Vous avez écrit : "La commande étant: ObjectInfo( objet, attribut )"
La preuve en image... (PJ)
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#11 Thu 29 October 2015 16:45
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
? objectInfo n'est pas, en effet, une command valide. Pour que la commande soit valide il faut avoir quelque chose a gauche de la commande:
dim nombreTotal as Integer
nombreTotal=objectInfo(matablepolyligne.obj, 20)
Noureddine Farah
Dernière modification par nfarah (Thu 29 October 2015 16:45)
Hors ligne
#12 Thu 29 October 2015 17:02
- GeoCalimero
- Participant occasionnel
- Lieu: Charleville-Mézières
- Date d'inscription: 26 Jun 2014
- Messages: 36
Re: Coordonnées extrémités d'une (poly)ligne
Bonjour,
Ce qui n'a pas voulu fonctionner de toute la journée... m'a affiché une petite fenêtre intitulée "Message" comprenant le chiffre zéro.
(PJ : copie d'écran)
Je suis débutant complet en MapBasic... Et le manuel est copieux !
Bonne journée
- - - - - - - - -
Précisez systématiquement la version des progiciels que vous exploitez !
Perso : QGIS 2.16.3-Nødebo / OpenJump 1.8.0 / Win7pro 32b
Hors ligne
#13 Fri 30 October 2015 14:23
- nfarah
- Participant assidu
- Lieu: New York, USA
- Date d'inscription: 9 May 2006
- Messages: 352
Re: Coordonnées extrémités d'une (poly)ligne
Bonjour,
Mon exemple de code n’était pas correct. Désolé.
En fait une polyligne peut être composée de plusieurs sections et pour avoir les nœuds, il faut faire une itération de chaque section composant la polyligne, trouver le nombre total de nœuds de cette section pour pouvoir avoir son premier et dernier nœud :
Code:
dim nombreTotalDeNoeuds as Integer nombreTotalDeNoeuds =objectInfo(matablepolyligne.obj, 20) print nombreTotalDeNoeuds ' Trouver combien de segments dans la polyligne dim nombreSegments as Integer nombreSegments = objectInfo(matablepolyligne.obj, 21) print nombreSegments ' Ici un exemple comment trouver le nombre de noeuds dans ' le premier segment..mais vous pouvez faire une loupe pour tous les segments ' Noter: 21+x: x est l'index de segment auquel je suis intéressé. Si je veux avoir le nombre ' de noeuds de segment 5, il faut mettere: 21+5. dim nombrePoints_PremierSegment as Integer nombrePoints_PremierSegment = objectInfo(matablepolyligne.obj, 21+1) print nombrePoints_PremierSegment dim premierNoeud_x as float dim premierNoeud_y as float dim dernierNoeud_x as float dim dernierNoeud_y as float premierNoeud_x =ObjectNodeX(matablepolyligne.obj, 1, 1) print premierNoeud_x premierNoeud_y =ObjectNodey(matablepolyligne.obj, 1, 1) print premierNoeud_y dernierNoeud_x =ObjectNodeX(matablepolyligne.obj, 1, nombrePoints_PremierSegment ) print dernierNoeud_x dernierNoeud_y =ObjectNodey(matablepolyligne.obj, 1, nombrePoints_PremierSegment ) print dernierNoeud_y
Pour le guide de MapBasic c’est gratuit il suffit d’installer MapBasic (gratuit), le lancer puis cliquer sur F1. Le guide d’aide va s’afficher et toutes les commandes sont là.
http://www.pbinsight.com/support/produc … 1-download
Des fichiers pdf sont aussi disponible mais en Anglais.
http://reference.mapinfo.com/software/m … rGuide.pdf
http://reference.mapinfo.com/software/m … erence.pdf
Sinon installer le dernier MapBasic disponible dans notre site web, et vous aurez la documentation numérique en pressant F1 une fois MapBasic est exécuté.
Bonne chance
Noureddine Farah
Dernière modification par nfarah (Fri 30 October 2015 14:25)
Hors ligne