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 August 2001 21:53

Christian MARMOND
Invité

coordonnees des extremites d'une ligne / polyligne

Bonjour,

Je dispose d'une table MI avec des objets polylignes, dont je voudrais
recuperer les coordonnees (x,y) des sommets de debut et fin.

Dans la fenetre carte, lorsqu'on double-clique sur une polyligne, on obtient
une fenetre d'info intitulee 'objet polyligne', qui donne ces infos
(coordonnees des sommets debut (1) et fin (2) : X1,Y1; X2,Y2), ainsi que la
longueur et le nombre de segments de la polyligne.

Je pense donc qu'il doit etre assez aise de recuperer ces coordonnees dans
une table :-) mais je ne vois pas bien comment recuperer autre chose que des
centroides d'objets avec les commandes SQL de MI :-(

Si quelqu'un a une idee...

merci par avance !

Cordialement,

Christian Marmond
Cartographie / SIG
SNCF DDTER Rhone-Alpes

 

#2 Tue 21 August 2001 21:57

Christian MARMOND
Invité

Re: coordonnees des extremites d'une ligne / polyligne

Bonjour,

voici les elements de reponses relatifs a la question posee (rappelee en bas
de message) que j'ai recus directement, en complement de ce qui a ete envoye
sur la liste :

==> les commandes proposees par Sebastien Roddier (message directement poste
sur la liste) fonctionnent bien, il convient juste de veiller au systeme de
projection : par defaut, MI renvoit les infos en lat/long :
Complement d'infos de S. Roddier :
Pour specifier le systemes de coordonnees dans lequel MapInfo doit
travailler je
vous suggere d'essayer cette ligne de commande dans la fenetre mapbasic:

set coordsys table table de reference

Une fois cette ligne executee MapInfo travaillera dans le systeme de
projection
de la table de reference (table de reference est une table ouverte dont vous
connaissez le systeme de
coordonnees.)
Astuce : si vous travaillez tout le temps avec le meme systeme de projection
et que vous
disposez d'une table dans ce systeme je vous conseille de rajouter les
lignes
suivantes dans le document STARTUP.WOR (dans le repertoire d'installation de
MI)et de sauvegarder les modifs:

open table table de reference
set coordsys table table de reference
close table table de reference

Au lancement de mapInfo, le logiciel vient executer les lignes de commandes
du
document STARTUP.WOR et initialisera toutes vos operations en se basant sur
le
systeme de projection de votre table de reference.

==> autre possibilite (envoyee par Antoine Varoquaux
(antoine.varoquaux@texte-a-enlever.sncf.fr)) :
En faisant un export Mid Mif de la Polyligne, et en
ouvrant le fichier exporte avec un editeur de texte,
on a bien toute les coordonnees des noeuds intermediaires !

A la prochaine ;-)

Christian Marmond

 

#3 Mon 20 August 2001 21:56

Roddier Sebastien
Invité

Re: coordonnees des extremites d'une ligne / polyligne

Bonjour

Pour recuperer les coordonnees extremes d'une polyligne vous pouvez utiliser les
commandes suivantes :

objectnodeX(obj, 1, 1) 'pour recuperer le x du from node
objectnodeX(obj, 1, objectinfo(obj,20)) 'le x du To_node

objectnodeY(obj, 1, 1) 'pour recuperer le y du from node
objectnodeY(obj, 1, objectinfo(obj,20)) 'le y du To_node

Pour faire de meme avec des lignes (2 sommets) utilisez :

objectgeography(obj,1) pour le x du from_node
objectgeography(obj,1) pour le y du from_node
objectgeography(obj,1) pour le x du to_node
objectgeography(obj,1) pour le y du to_node

Vous pouvez placer ces fonctions dans le requeteur SQL en definissant des alias de
colonnes pour chaque fonction :

select objectnodeX(obj, 1, 1) x_from_node , objectnodeX(obj, 1, objectinfo(obj,20))
x_to_node from nom_table

Attention, si vos polylignes sont multi sections vous devez specifiez sur quelle
section vous travaillez (argument 2 de la fonction objectnodeX et objectnodeY)

voila

a bientot

 

#4 Mon 20 August 2001 21:57

HOUOT Dominique, CETE Est/D13
Invité

Re: coordonnees des extremites d'une ligne / polyligne

Il suffit de recuperer les coordonnees des points composant la polyligne ou
les extremites de la ligne.

Exemple de creation de points a partir de troncons routiers de la BdCarto :

Code:

include mapbasic.def
include menu.def
declare sub main

sub main
dim i,j,n,l as integer
'***************************************************************************
*************************
'
' Creation de points avec attributs x,y et identif.route a partir des
troncons routiers de la BdCarto
'
'  Il faut creer une nouvelle table POINTS avec champs ID_ROUTE 11 car., XP
Entier, YP Entier
'
' la table a ouvrir doit se nommer RESEAU
'
'
'
'***************************************************************************
***************************

dim x,y,z as float
dim objet as object
dim route As String*11
set coordsys table reseau
for i=1 to tableinfo(reseau,TAB_INFO_NROWS)
fetch rec i from reseau
objet=reseau.obj
l=Len(reseau.numero)

route= Left(reseau.numero,1) + String((5-l), 00 ) +
Mid(reseau.numero,2,l-1)
do case Objectinfo(objet,OBJ_INFO_TYPE)
case OBJ_TYPE_LINE
x=Objectgeography(objet,OBJ_GEO_LINEBEGX)
y=Objectgeography(objet,OBJ_GEO_LINEBEGY)
Insert Into points (id_route,xp,yp,obj) Values
(route,x,y,createpoint(x,y))
x=Objectgeography(objet,OBJ_GEO_LINEENDX)
y=Objectgeography(objet,OBJ_GEO_LINEENDY)
Insert Into points (id_route,xp,yp,obj) Values
(route,x,y,createpoint(x,y))
case OBJ_TYPE_PLINE
n=ObjectInfo(objet,OBJ_INFO_NPNTS)
For j=1 to n
x=ObjectNodeX(objet,1,j)
y=ObjectNodeY(objet,1,j)
Insert Into points (id_route,xp,yp,obj) Values
(route,x,y,createpoint(x,y))
Next
end case
Next
end sub

Dominique HOUOT
Pole Regional de Diffusion
Departement Informatique - ITS
Cete de l'Est

 

#5 Mon 20 August 2001 21:59

Jacques Paris
Invité

Re: coordonnees des extremites d'une ligne / polyligne

Vous avez deja recu de bonnes reponses a votre question. Je tiens simplement
a vous signaler que les X Y que vous indiquez comme etant les extremites de
la polyligne sont en fait celles du rectangle dans lequel la polyligne est
inscrite (le MBR, minimum bounding rectangle).

Jacques Paris

 

Pied de page des forums

Powered by FluxBB