Outils pour utilisateurs

Outils du site


nsi:modules:points_sur_une_carte_europe

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
nsi:modules:points_sur_une_carte_europe [2025/03/05 15:42] – créée goupillwikinsi:modules:points_sur_une_carte_europe [2025/03/05 16:10] (Version actuelle) goupillwiki
Ligne 13: Ligne 13:
   {"nom":"Paris", "lat":48.866667, "lng": 2.333333},   {"nom":"Paris", "lat":48.866667, "lng": 2.333333},
   {"nom":"Londres", "lat":51.507222, "lng":0.1275},   {"nom":"Londres", "lat":51.507222, "lng":0.1275},
-  {"nom":"Berlin", "lat":52.520007, "lng":13.404954}+  {"nom":"Berlin", "lat":52.5166667, "lng":13.383}
 ] ]
 </code> </code>
- 
-J'ai ajouté Berlin pour montrer l'exemple d'un point qui est en dehors de la carte. 
  
 <WRAP group> <WRAP group>
 <WRAP half column> <WRAP half column>
- 
-===== Ce qu'on ne veut pas faire ===== 
- 
-Il existe des modules permettant de télécharger les cartes voulues et d'accéder directement à des positions GPS. Ces modules sont pratiques mais assez lourds. On va essayer s'en passer, ce qui occasionne quelques bricolages... 
  
 ===== Afficher la carte ===== ===== Afficher la carte =====
  
-Télécharger le fichier : {{ :nsi:modules:france_vide.png?linkonly|}}+Télécharger le fichier : {{ :nsi:modules:europe.png?linkonly|}}
  
 <code python> <code python>
 import matplotlib.pyplot as plt import matplotlib.pyplot as plt
 import matplotlib.image as mpimg import matplotlib.image as mpimg
-img = mpimg.imread('france_vide.png')+img = mpimg.imread('europe.png')
 plt.imshow(img) plt.imshow(img)
 plt.show() plt.show()
Ligne 40: Ligne 34:
  
 <WRAP half column> <WRAP half column>
-{{ :nsi:modules:france_vide_1.png?direct&400|}}+{{ :nsi:modules:europe_1.png?direct&400|}}
 </WRAP> </WRAP>
 </WRAP> </WRAP>
Ligne 46: Ligne 40:
 ===== Coordonnées sur la carte ===== ===== Coordonnées sur la carte =====
  
-La carte choisie a le format 800x800. Le coin supérieur gauche a les coordonnées (0;0) et le coint inférieur droit (799;799). Rien à voir avec latitude et longitude... Nous devons créer une fonction (lng;lat) -> (x;y).+La carte choisie a le format 857x712. Le coin supérieur gauche a les coordonnées (0;0) et le coint inférieur droit (856;711). Rien à voir avec latitude et longitude... Nous devons créer une fonction (lng;lat) -> (x;y).
  
 {{ :nsi:modules:france_vide_points.png?direct&200|}} {{ :nsi:modules:france_vide_points.png?direct&200|}}
  
-Pour cela nous avons besoin de quelques repères. +La carte n'est pas en projection plateil faut faire quelques calculsJe vous donne la fonction.
- +
-Sur la carte nous identifions deux points : +
- +
-  * le point en vertque j'appellerai A, a pour coordonnées sur la carte (770;190) et ces coordonnées GPS sont longitude = 8.226100° et latitude = 48.968311° +
-  * le point en rouge, que j'appellerai B, a pour coordonnées sur la carte (179;685) et ces coordonnées GPS sont longitude = -1.784251° et latitude = 43.372928° +
- +
-==== Longitude vers x ==== +
- +
-On une fonction $f: lng \mapsto x$ et on sait que $f(lng_A) = x_A$ et $f(lng_B) = x_B$On sait aussi que $f$ devrait s'approximer par une fonction affine. +
- +
-<WRAP tip>La carte considérée est assez petite pour être considérée comme plate. Ce serait plus compliqué pour une carte de grande taille devant tenir compte de la courbure de la Terre.</WRAP> +
- +
-On a donc $x = a\cdot lng + b$. +
- +
-C'est un travail de mathématiques. +
- +
-<WRAP info> +
-Voici le calcul pour ceux que cela intéresse : On pose $x = a\cdot lng + b$. Cela doit fonctionner pour les points A et B donc : +
- +
-$$\begin{cases}a\cdot lng_A + b = x_A\\a\cdot lng_B + b = x_B\end{cases} \Rightarrow a \cdot \left(lng_A - lng_B\right) = x_A - x_B \Rightarrow a = \frac{x_A - x_B}{lng_A - lng_B}$$ +
- +
-On remplace par exemple dans la première équation pour trouver $b$ +
- +
-$$\frac{x_A - x_B}{lng_A - lng_B} \cdot lng_A + b = x_A \Rightarrow b = x_A - \frac{x_A - x_B}{lng_A - lng_B} \cdot lng_A$$ +
-</WRAP>+
  
-On en déduit la fonction : 
 <code python> <code python>
-def lng_to_x(lng):+def latlng_to_xy(lat,lng):
     xA = 770     xA = 770
     xB = 179     xB = 179
nsi/modules/points_sur_une_carte_europe.1741185765.txt.gz · Dernière modification : de goupillwiki