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

Algorithmes et structures de données Discussion :

Transposer coordonnées GPS en pixels XY


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut Transposer coordonnées GPS en pixels XY
    Bonjour,

    Je crois que le titre est explicite.
    J'ai un bitmap vierge de la Belgique et une liste de villes
    avec leur coordonnées (longitude et latitude).

    Je souhaiterais placer des points-villes sur carte...

    En regardant sur le forum j'ai vu que des problèmes voisins ont été exposés
    mais je n'arrive pas à me fixer sur quelques points :
    - la conversion UTM est-elle la meilleure voie ?
    - Faut-il "recentrer" le 0-0 de mon bitmap (d'en haut à gauche vers le centre ?)

    Merci !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par devroot Voir le message
    Bonjour,

    Je crois que le titre est explicite.
    J'ai un bitmap vierge de la Belgique et une liste de villes
    avec leur coordonnées (longitude et latitude).

    Je souhaiterais placer des points-villes sur carte...

    En regardant sur le forum j'ai vu que des problèmes voisins ont été exposés
    mais je n'arrive pas à me fixer sur quelques points :
    - la conversion UTM est-elle la meilleure voie ?
    - Faut-il "recentrer" le 0-0 de mon bitmap (d'en haut à gauche vers le centre ?)

    Merci !

    1. Tout dépend de la projection utilisée pour ta carte de la Belgique....
      Si c'est UTM, alors prendre UTM, si c'est Lambert, prendre Lambert, etc etc..


    2. En général il faur recentrer (géo-référencer) les 4 angles et le centre....



    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Le plus simple est de se baser sur Mercator corrigé qui donnera sur une zone comme la Belgique une distorsion de 1km sur les bords par rapport à la projection utilisée sur le bitmap.

    La distorsion max est d'environ (1/4)*sin(lat0)*(sin(maxlat)-sin(minlat))(Maxlon-Minlon) soit pour la Belgique (300km x 180km = 5° x 3°) : Distorsion= 0.25*0.7*0.032*180 (0.32=sin(53°)-Cos(50°)) = environ 1km

    Pour cette solution basique:
    • - il faudra que la droite qui partage la carte dans le sens de la largeur soit orientée au nord,
    • - il faudra géoréférencer un point proche du centre de la carte (coord geographiques du point : Lat0 et Lon0 et coord en pixels : X0 et Y0)
    • - il faut connaitre l'echelle (E km/pixel).

    La conversion de coord (Lat en radians, Lon en radians - ouest négartifs) en pixels (X,Y) sera donnée par la formule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    X=X0+(Lat-Lat0)*E*kmParRadians ;  // (kmParRadian=40000/2*PI)
    Y=Y0+(Lon-Lon0)*E*kmParRadians*cos(Lat0) ;
    inversement:
    Lat=Lat0+(X-X0)/(E*kmParRadians) ;
    Lon=Lon0+(YX-Y0)/(E*kmParRadians*cos(Lat0)) ;
    L'ideal serait évidemment de connaitre la projection utilisée pour la carte et ses paramètres (centrage, orientation, ...) afin d'éliminer toute distorsion, mais les formules seront plus complexes.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Ah oui, je vois...

    Je dois d'abord m'assurer d'avoir une carte dont je connais avec exactitude
    le rapport km/pixel pour y géo-référencer un point.

    Bon, je vais chercher sur internet une carte plus informée que celle dont je dispose et j'essaie d'appliquer l'un des deux méthodes suggérées plus haut.

    Merci !

  5. #5
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    En cherchant à nouveau j'ai trouvé (presque) une solution clefs en main :
    http://www.codeproject.com/useritems/Calibrator.asp

    Merci !

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    et cette solution est FAUSSE

    En effet, elle part du postulat que la transformation est linéaire et rectangulaire, ce qui totalement erroné comme hypothèse de base...
    (voir la définition que ce soit d'une projection UTM, Lambert, Mercator, ou autre...)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Arrrgh !

    Bon, alors je réfléchis à la solution proposée par Graffito...

  8. #8
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    En relisant la suggestion de grafitto, je me demande si cela veut bien dire
    que je dois réorienter ma carte à la verticale :
    - il faudra que la droite qui partage la carte dans le sens de la largeur soit orientée au nord,
    Je veux dire par là que, alors que 99% des fois Liège est représentée sur la même horizontale que Lille, je dois tourner ma carte de manière à ce que Liège soit non pas à droite de Lille mais au-dessus ?

    Si je ne me fais pas comprendre, j'envoie un jpeg...

  9. #9
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Liège est représentée sur la même horizontale que Lille
    Comme ces 2 villes sont à peu près à la même latitude, la carte est donc bien orientée au nord (Tout va bien ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                               Nord
                                 ^
                                 !
                                 !
     
           x Lille                                  x liège
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    entre parenthèses, vu le lien proposé, pas étonnant que le car polonais de l'an dernier soit tombé dans le ravin, ou encore que les errements de certains GPS soient hallucinants...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre régulier
    Profil pro
    lkjlgj
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activité : lkjlgj

    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Points : 96
    Points
    96
    Par défaut
    Grafitto :

    J'ai essayé de convertir quelques données suivant ta formule mais ça donne des résultats zarbis. Est-ce que tu peux me préciser les parenthèses pour l'ordre des calculs dans l'équation suivante :

    X=X0+(Lat-Lat0)*E*kmParRadians ; // (kmParRadian=40000/2*PI)

    On a pour kmParRadians : 40000/ (2*3.14)

    Puis X0+(Lat-Lat0)
    multiplié par E
    le tout multiplié par kmParRadians ?

  12. #12
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X=X0      + ( (Lat-Lat0)*E*kmParRadians )
    E en pixels/km
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

Discussions similaires

  1. Coordonnées Gps Access 2007
    Par pkrvz dans le forum Outils
    Réponses: 1
    Dernier message: 13/04/2008, 03h04
  2. [vb.net]multiples coordonnées GPS
    Par phicarre dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/05/2007, 18h16
  3. coordonnées d'un pixel
    Par bahiatoon dans le forum C++Builder
    Réponses: 13
    Dernier message: 29/01/2007, 16h57
  4. Programme Delphi de conversion de coordonnées GPS/UTM
    Par furious-kiki dans le forum Delphi
    Réponses: 4
    Dernier message: 10/01/2007, 11h19
  5. Coordonnées GPS en varchar
    Par julien.63 dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/06/2006, 12h32

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