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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

Pied de page des forums

Powered by FluxBB