Positionnement de coordonnees GPS

adsads Membre
14:46 modifié dans Objective-C, Swift, C, C++ #1
Bonjour,

les maths ca commence a faire vieux chez moi  :D

Voila je dois faire dessiner la position gps actuelle d'un iPhone sur une carte en SVG.

bien evidement les difficultes principales sont que d'une part les coordonnees GPS sont pas en metre et que ma carte en SVG n'a pas le meme point d'origine (0,0).

Donc l'idee qui me vient a l'esprit, c'est de mesurer en coordonnees GPS le point d'origine de la carte, ains que le point le plus ecarte de la carte. Appellons le point d'origine O et le point le plus eloigne A.

Ensuite si je me ballade avec mon gps sur un point I figurant sur la carte, le GPS me donne ces cordonnees (lat et long).
Le core Framework peut aussi me donner la differnce metrique entre deux coordonnees GPS, donc je peux savoir a combien de metre de O je suis (distance IO) et la meme chose pour IA.

Mon probleme est ensuite de savoir les coordonnes metriques de ma position (I) car on peut imaginer que I est l'intersection de rayon OI et celui de rayon IA, le seul probleme c'est que dans la majorite des cas, ces 2 cercles on 2 points d'intersections  :(

Donc 2 problemes :

1 - Comment calculer les corrdonnes metriques de ces points d'intersection ?
2- Comment savoir a quel point correspond I ?

Si quelqu'un a une autre methode plus efficace , je suis prenneur aussi.

Merci

Réponses

  • AliGatorAliGator Membre, Modérateur
    14:46 modifié #2
    Attention, cela dépend également de la grandeur de ta carte (enfin de la taille qu'elle couvre).
    Pour une petite surface, faire l'approximation que la terre est plane est acceptable. Surtout sur le latitude proche de l'équateur ou de nos positions. Plus proche des pôles c'est déjà  autre chose, ainsi que sur une sorface plus grande (carte mondiale)

    Car comme tu le sais sans doute, les latitudes et longitudes sont des degrés, pas des distances.
    - Autant un changement d'un degré en latitude représente toujours la même distance, puisque cela te fait te déplacer sur un cercle (qui pour le coup représentent une longitude donnée) de centre le centre de la terre, dans tous les cas. Donc tu te déplaces de R*alpha (R étant le rayon de la terre).
    - Mais un changement d'un degré en longitude, c'est autre chose, puisque tu te déplaces alors sur un cercle horizontal dont le centre est sur l'axe de rotation de la terre, mais à  une hauteur dépendant de la latitude. Donc ce cercle a un rayon qui vaut certes le rayon de la terre au niveau de l'équateur, mais de plus en plus petit au fur et à  mesure que tu te rapproches des pôles. Et du coup la distance R(lat)*alpha que tu parcoures en allant d'un point A(lat,long1) à  un point B(lat,long2) dépend de cette latitude.

    Et du coup tu te doutes que les calculs pour faire une correspondance entre les coordonnées GPS (qui dépendent d'ailleurs du référenciel GPS utilisé) et celles d'une carte plane ne sont pas aussi simples qu'ils n'y paraissent.

    Maintenant, sur une petite zone du globe, tu peux considérer que la terre est plane et que faire une simple interpolation linéaire est bien suffisante. En supposant que ta carte est orientée Nord, il suffit donc de dire que Xcarte = a*Longitude+b et que Ycarte = c*Latitude+d. Tu prends 2 points quelconques de la carte (de préférence les plus éloignés possibles pour réduire les deltas dus aux erreurs de calculs) dont tu connais les coordonnées GPS (donc tu as deux couples (Xcarte,Ycarte) dont tu connais (Longitude,Latitude)) ce qui te donne quatre équations te permettant de trouver tes 4 inconnues a,b,c,d.
  • adsads Membre
    14:46 modifié #3
    Merci AliGator,

    la carte en question fait mooins de 1kmx1km.

    En supposant que ta carte est orientée Nord

    Justement, pas forcement, ca a une incidence sur tes calculs ?
    Question a deux balles, si je rajoutes un 3eme point, est ce que du coup, c'est pas plus simple ?

    Merci.

    Strange, je ne recois plus les notifications de reponse cette semaine...
  • AliGatorAliGator Membre, Modérateur
    14:46 modifié #4
    Si ta carte n'est pas orientée nord, ton Y ne va pas dépendre QUE de la latitude, mais d'une combinaison linéaire de la latitude et de la longitude. Et de même pour X.
    Car quand tu vas te déplacer sur l'axe Y de ton image ça va correspondre à  des points dont la latitude sera différente... mais la longitude aussi, du coup, si ta carte est "de travers".

    Mais bon, c'est pas impossible non plus, faut juste écrire les équations qui vont bien dans ce sens du coup.

    X = a*Lat+b*Long+c
    Y = d*Lat+e*Long+f
    Autrement dit (X,Y) = M*(Lat,Long)+V, où M est une matrice 2x2 et V un vecteur 2x1
  • 14:46 modifié #5
    dans 1273049014:

    X = a*Lat+b*Long+c
    Y = d*Lat+e*Long+f
    Autrement dit (X,Y) = M*(Lat,Long)+V, où M est une matrice 2x2 et V un vecteur 2x1

    :p :p :p :p
  • adsads Membre
    14:46 modifié #6
    Merci AliGator
Connectez-vous ou Inscrivez-vous pour répondre.