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