#1 Fri 30 May 2008 11:28
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Quelle est la coordonnée Y selon X sur une ligne?
Bonjour à tous,
Bon d'accord, le sujet de ce post est un peu obscur mais je ne savais pas trop comment formuler ma question en quelques mots.
Je m'explique: En MapBasic, je voudrais placer de centroïdes de rectangles non pas tous les n km de linéaire (on ne parle donc pas de pk...) mais tous les n km en X et que le centroïde de ce rectangle soit calé sur la ligne pour la coordonnée Y.
Sauf que mon problème est de trouver la valeur de la coordonnée Y.
Auriez-vous une idée pour créer une commande du genre "sélectionner Y sur la ligne là où x = 1 820 354"?
Bonne journée
Hors ligne
#2 Fri 30 May 2008 12:44
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Quelle est la coordonnée Y selon X sur une ligne?
Rien de direct à mon avis
Faudra passer par le tracé (provisoire) d'une verticale
ps: j'avais pas fait attention...c'est vendredi !!
Hors ligne
#3 Fri 30 May 2008 23:11
- Gérard parcoli
- Participant actif
- Date d'inscription: 9 Jan 2007
- Messages: 95
Re: Quelle est la coordonnée Y selon X sur une ligne?
Auriez-vous une idée pour créer une commande du genre "sélectionner Y sur la ligne là où x = 1 820 354"?
Bonne journée
Bonjour,
La fonction YResultat() ci dessous, alimentée par un X et un objet vous retournera le Y correspondant à la projection du X sur l'objet ligne.
Par sécurité le systeme de projection du X doit être spécifié dans le code.
En espérant que ca corresponde à votre demande ou vous donne des idées !
Code:
Include "mapbasic.def" Declare Sub Main Declare Function YResultat(ByVal XRef as Float, ByVal Obj_Target as Object) as Float Sub Main Dim Y_Result as Float ' Definition du systeme de projection a employer, a modifier selon le systeme employe Set CoordSys Earth Projection 3, 1002, "m", 0, 46.8, 45.8989188889, 47.69601444, 600000, 2200000 Dim X_Search as Float ' X de reference X_Search = 814398.6 Y_Result = YResultat(X_Search, selection.obj) ' Affichage du résultat Print Y_Result Dim NomCoucheDessin as String NomCoucheDessin = WindowInfo( FrontWindow(), WIN_INFO_TABLE) Insert Into NomCoucheDessin (obj) Values (Createpoint(X_Search, Y_Result)) End Sub Function YResultat(ByVal XRef as Float, ByVal Obj_Target as Object) as Float Dim Obj_Intersect as object Dim YMin, YMax as integer YMin = ObjectGeography(Obj_Target, OBJ_GEO_MINY) YMax = ObjectGeography(Obj_Target, OBJ_GEO_MAXY) Obj_Intersect = IntersectNodes( Createline(XRef, YMin, XRef, YMax), Obj_Target, INCL_CROSSINGS) YResultat = CentroidY(Obj_Intersect) End Function
Dernière modification par Gérard parcoli (Fri 30 May 2008 23:12)
Hors ligne
#4 Tue 10 June 2008 18:12
- Miss T.
- Participant assidu
- Lieu: En pleine amazonie...
- Date d'inscription: 17 Oct 2005
- Messages: 294
Re: Quelle est la coordonnée Y selon X sur une ligne?
Monsieur Parcoli, il marche super bien ton code.
J'ai pu l'adapter et ça marche au poil pour trouver le centroïde de mes rectangles.
Sauf que ma méthode n'est pas la bonne.
Je m'explique: je cherche à automatiser la création de synoptiques le long de linéaires. J'avais opté pour un centroïde de cadre tous les x mètres en X (selon l'échelle, la taille de la carte sur la mise en page, etc) sauf que le résultat ne va pas du tout du fait du tracé du linéaire (voir jpg). Ca aurait été nickel pour un linéaire horizontal (je ne sais pas ce qui m'est passé par la tête sur ce coup là...).
Pendant un instant, je me suis dite "on va procéder comme pour les pk..." sauf que si on prend une longueur de linéaire fixe et qu'on se trouve dans le cas d'un linéaire en lacets, les cadres de synoptique risquent se se superposer.
Une idée?
Hors ligne
#5 Sun 26 January 2014 09:34
- supcom
- Juste Inscrit !
- Date d'inscription: 7 Jan 2014
- Messages: 2
Re: Quelle est la coordonnée Y selon X sur une ligne?
Bonjour , Je suis débutante en mapbasic , je voulais écrire un script qui en cliquant sur deux point d'une carte (carte qui contient la forme du relief (MNT): les hauteurs ) cette application est capable de calculer l'atténuation de l'onde entre ces deux point en se basant sur une des méthodes de calcule de diffraction . Donc j'ai besoin que ce script soit capable de lire les obstacles (montagne , colline ... ) ce qui existent entre l'émetteur et le récepteur . J'ai commencé à lire le guide officiel de mapbasic mais encore je n'arrive pas à résoudre mon problème . J'ai aussi une autre question , en Arcview , juste en cliquant sur un point dans carte ->les coordonnées de ce point apparaissent dans la table avec une couleur différente . mais malheureusement ce n'est pas le cas avec mes cartes (.tab ,.grd , .grc ) que j'arrive uniquement à ouvrir les cartes et non pas leurs tables ( je ne sais pas c'est quoi le problème . Merci bien de vouloir me répondre . J'en ai vraiment besoin . Je suis vraiment bloquée .
Dernière modification par supcom (Sun 26 January 2014 09:36)
Hors ligne
#6 Tue 28 January 2014 09:01
Re: Quelle est la coordonnée Y selon X sur une ligne?
Monsieur Parcoli, il marche super bien ton code.
Pendant un instant, je me suis dite "on va procéder comme pour les pk..." sauf que si on prend une longueur de linéaire fixe et qu'on se trouve dans le cas d'un linéaire en lacets, les cadres de synoptique risquent se se superposer.
Une idée?
Créer un quadrillage et sélectionner les polygones qui intersectent le cours d'eau ?
Jean-François Behm, formateur SIG, jf.behm@, idgeo.frformations@ idgeo.fr
IDGEO, www.idgeo.fr
Institut de Développement de la Géomatique 42, avenue de Général de Croutte - 31100 toulouse
Hors ligne