IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Traçage d'une carte géographique


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Traçage d'une carte géographique
    Salut
    alors, jai des coordonées geographiques (longitude: x, latitude: y) et j'ai du mal à les representer graphiquement, tento elle me sort alonvers, ..., peut être problemes d'echelle. Alors si qlq peus m'aider à trouver la bonne ECHELLE et comment bien exploiter ScaleMode, ScaleTop, ScaleLeft, ScalWeight.
    Et merci.

  2. #2
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Premièrement, prière de faire un peu attention à ce que tu écrit, ce n'est pas très lisible.
    Deuxièmement, ou sont tes coordonnées, dans un tableau ? dans un fichier ?
    Qu'utilise tu pour les afficher : un PictureBox ? Image ?
    Montre nous ce que tu as déjà fait (un petit bout de code serait le bienvenu).

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut Merci pour le dialogue
    Mon Objectf est de representer garphiquement une carte géographique graphiquement sur un FORM, pour ce faire j'ai un fichier de type dat, chaque gouvernerat débute par le nbre de pt puis les pts (longit, latitude)
    il y a une vingtaine de gouvernerat. voici un exemple du contenu:

    283
    9.89 37.25
    9.90 37.25
    9.88 37.26
    9.88 37.27
    9.89 37.27
    9.89 37.29
    9.87 37.30
    .........etec
    160
    10.27 36.82
    10.27 36.84
    10.24 36.87
    10.24 36.88
    10.25 36.89
    10.25 36.91
    10.26 36.92
    10.25 36.93
    .........etec
    et voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub Trace_Click()
    Dim Lig, NbrPt, x, y, XX, YY, i, L, CX, CY
    ScaleWidth = 39 '15 '640
    ScaleHeight = 39 '40 '480
    ScaleLeft = 20
    ScaleTop = 0
    ScaleMode = 0
    TraceCarteGlobal:
    i = 0
    Open "c:\seisme1\tungov.dat" For Input As #1
      While Not EOF(1)
      Line Input #1, Lig
      If Mid(Lig, 5, 1) <> "." Then GoSub TraceGouv
      Wend
      Close
      GoTo fin
    TraceGouv:
    i = i + 1
    NbrPt = Val(Lig)
    For J = 1 To NbrPt
    Line Input #1, Lig
    y = Val(Left(Lig, 7))
    x = Val(Right(Lig, 5))
       If Abs(x - XX) < 0.3 And Abs(y - YY) < 0.3 Then Line (x, y)-(XX, YY)
        XX = x
        YY = y
    Next J
    Return

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    tu devrais entourer ton code avec des balises [Code] [/Code ]

    la ligne ci-dessous m'interpelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Mid(Lig, 5, 1) <> "." Then GoSub TraceGouv
    en regardardant l'extrait du fichier dat, tu executes TraceGouv a chaque entrée du Dat. Cette ligne signifie "Si le 5° caractere est différent du point". Hors toutes les lignes que tu montres repondent à cette condition

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ces deux lignes posent egaement problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ScaleWidth = 39 '15 '640
    ScaleHeight = 39 '40 '480
    Ces deux propriétes doivent recevoir des décimaux, pas des mesures d'angle
    et en plus j'aurais bien ScaleHeight en négatif

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut ReSalut
    Alor
    En ce qui conserne l'algorithme pas de probleme, cette carte je l'avais representé sur le language "QuikBasic", mon Objectif est de la representer sur VB6 et sur un FORM. Le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Mid(Lig, 5, 1) <> "." Then GoSub TraceGouv
    est tout à fait juste puisque "." qui se trouve au 5ème ron de la ligne "Lig" et cette condition n'est pas valide que lorsque la ligne Lig contien le nbre de pt du gouvernerat en question.
    et En ce qui concerne les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ScaleWidth = 39 '15 '640
    ScaleHeight = 39 '40 '480
    ils sont juste et bien sure c'est pas des mesures d'angles... en VB lorsque vous mettez 'bla bla >> c'est considerer comme des commentaires donc c'est comme si vous avez éciris ScaleWidth = 39 toute seule et '15 '640 sont des commentaires... en fait se sont des valeurs que j'avais esseyés au par avant.

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ami Foued, STOP !

    Si tu t'en sortais avec un développement en QuickBasic (et que c'était TON développement), tu ne devrais avoir aucune difficulté à transposer en VB.
    Tu pourrais même utiliser quasi directement ton code QuickBasic.

    Alors : j'attends ton savoir :

    Mets-nous ici ton code QuickBasic, commenté clairement et en français , s'il te plait !

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Re Salut tout le monde
    Voila le code En QuikBasic, il tavaille à merveille, mais n'oubliez pas SVP mon problème comment la metre en pratique en VB6.

    voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Cls
    Cr$ = ""
    X0 = 7
    Y0 = 29.8
    Y1 = 37.75
    Ech = 1
    'X1 = X0 + (Y1 - Y0) * 640 / 480
    'X1 = X0 + 12.74
    X1 = X0 + 12
    Screen 12
    WINDOW (X0, Y0)-(X1, Y1)
    Line (X0, Y1)-(X1, Y0), , B
    WINDOW (X0, Y0)-(X1, Y1)
    L = (Y1 - Y0) / 100
            For tic = 0 To X1 Step Ech
               Line (tic, Y0)-(tic, Y0 + L)
               Line (tic, Y1)-(tic, Y1 - L)
            Next tic
            For tic = 0 To Y1 Step Ech
               Line (X0, tic)-(X0 + L, tic)
               Line (X1, tic)-(X1 - L, tic)
            Next tic
    GoSub TraceCarteGlobal
    fin:
    While Cr$ <> Chr$(13)
    Cr$ = INKEY$
    Wend
    End
    TraceCarteGlobal:
    i = 0
    Open "tungov.dat" For Input As #1
      While Not EOF(1)
      Line Input #1, Lig$
      If Mid$(Lig$, 5, 1) <> "." Then GoSub TraceGouv
      Wend
      Close
    Return
    TraceGouv:
    XX = 0: YY = 0
    couleurGouv = 15
    couleurChot = 11
    couleurFront = 10
    couleur = 15
    i = i + 1
    If i = 24 Then couleur = couleurFront
    If i = 25 Then couleur = couleurGouv
    If i = 26 Then couleur = couleurChot
    If i = 27 Then couleur = couleurGouv
    If i = 28 Then couleur = couleurFront
    If i = 29 Then couleur = couleurChot
    If i = 32 Then couleur = couleurChot
    If i = 33 Then couleur = couleurGouv
    If i = 39 Then couleur = couleurChot
    If i = 40 Then couleur = couleurChot
    If i = 41 Then couleur = couleurChot
    If i = 42 Then couleur = couleurGouv
    NbrPt = Val(Lig$)
    For j = 1 To NbrPt
    Line Input #1, Lig$
    x = Val(Left$(Lig$, 7))
    y = Val(Right$(Lig$, 5))
            y = y + CorrectionY
            If Abs(x - XX) < 0.25 And Abs(y - YY) < 0.25 Then Line (x, y)-(XX, YY), couleur
            XX = x
            YY = y
    Next j
    Color 15
    Return

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Et... si :
    1) tu indentais ton code
    2) tu commentais ton code (comme demandé)
    3) tu nous disais à quoi sert l'étiquette "fin"
    4) tu nous expliquais pourquoi ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    X0 = 7
    Y0 = 29.8
    Y1 = 37.75
    Ech = 1
    'X1 = X0 + (Y1 - Y0) * 640 / 480
    'X1 = X0 + 12.74
    X1 = X0 + 12
    qui veut dire celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    X0 = 7
    Y0 = 29.8
    Y1 = 37.75
    Ech = 1
    X1 = 19
    de sorte à ce que l'on voie bien ce que tu veux et que tu sais ce que tu veux ?

  10. #10
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    decidement tu ne doit pas connaitre les balise [CODE] et/ou [QUOTE] .

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 7
    Points
    7
    Par défaut En fin je l'ai trouvé
    Salut
    ok, tout vas bien, je vous ai dis dès le début que c'est un broblème d'chelle et des qutres parametres (ScaleWidth, ScaleHeight, ScaleLeft, ScaleTop).
    voici le Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' Dimension réelle Carte 1/500 000>> Largeur= 845 mm et Hauteur= 1750 mm
    Picture1.Cls
    Picture1.Width = 4 * 845
    Picture1.Height = 4 * 1750
    Picture1.AutoRedraw = True
     
    Picture1.ScaleWidth = 4.5 'il me faut 4.5 degrés pour representer lesLongitude
    Picture1.ScaleHeight = 8  'il me faut 8 degrés pour representer lesLatitudes
    Picture1.ScaleLeft = 7.37 ' ma carte débute à la longitude presque 7.3
    Picture1.ScaleTop = -38  'jai inverser y=-y et puis j'ai retiré latitudemaxi
    j'ai inversé les latitudes: par >>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y = -Val(Right$(Lig, 5))
    Amusez-vous bien
    J'espère que vous avez compris tout...A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Installation d'une carte réseau
    Par sekiryou dans le forum Matériel
    Réponses: 7
    Dernier message: 11/10/2004, 02h42
  2. Problème avec une carte Sound Blaster Live
    Par zogstrip dans le forum Matériel
    Réponses: 4
    Dernier message: 25/09/2004, 21h43
  3. Problème d'installation de driver pour une carte réseaux
    Par black is beautiful dans le forum Matériel
    Réponses: 3
    Dernier message: 19/07/2004, 22h33
  4. Capture video depuis une carte DC30+
    Par Ertai dans le forum MFC
    Réponses: 2
    Dernier message: 19/02/2004, 16h19
  5. Accès au port 700h pour une carte d'interface
    Par haypo dans le forum Matériel
    Réponses: 3
    Dernier message: 07/11/2002, 12h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo