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

#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 !! big_smile

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?

Miss T. a écrit:

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.

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


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

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

Dernière modification par supcom (Sun 26 January 2014 09:36)

Hors ligne

 

#6 Tue 28 January 2014 09:01

JF BEHM
Participant actif
Lieu: toulouse
Date d'inscription: 9 Aug 2013
Messages: 126
Site web

Re: Quelle est la coordonnée Y selon X sur une ligne?

Miss T. a écrit:

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@texte-a-enlever.idgeo.fr, formations@texte-a-enlever.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

 

Pied de page des forums

Powered by FluxBB