{ "cells": [ { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "nf7E1OWNGioG" }, "source": [ "# Cartographie TP 3" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ZiiM4S1dGioM" }, "source": [ " Écrire votre nom " ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "Q0NK83CLGioT" }, "source": [ "*ici*" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "a5gA62EyGioV" }, "source": [ "## Obtenir les données de géolocalisation d'une photo\n", "\n", "Voici une photo :\n", "\n", "\n", "\n", "photo1\n", "\n", "\n", "Téléchargez la, et faites afficher ses propriétés (clic droit). Vous devriez voir les coordonnées GPS de l'endroit où a été prise la photo\n", "\n", "**Notez ci-dessous les coordonnées GPS**\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "U5I3KR1oGioa" }, "source": [ "------------------------\n", "\n", "**Réponse**: \n", "\n", "-----------------------" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "9o8sLR5AGiod" }, "source": [ "## Les unités\n", "\n", "**Les coordonnées GPS sont en degrés : minutes et secondes**\n", "\n", "Pour la latitude on lit : **33;52;31.658935546875**\n", "\n", "Pour exploiter ces données il faut les convertir en degré décimal : \n", "\n", "C'est à dire : **latitude = 33+52/60+31.658935546875/3600**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": {}, "colab_type": "code", "id": "ItBTSPgkGiog", "outputId": "4f1fae6b-d88c-4835-808e-3988a320d9e7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "33.87546081542969\n" ] } ], "source": [ "# ce qui donne :\n", "latitude = 33+52/60+31.658935546875/3600\n", "print(latitude)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "8NcJ_2LnGiov" }, "source": [ "\n", "
\n", "\n", "## À faire:\n", "\n", "**Déterminer la valeur de la longitude en degré décimal**" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "SjiAvLilGiow" }, "outputs": [], "source": [ "# Écrire le calcul ici" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "vZXbln9TGio3" }, "source": [ "
\n", "\n", "## Un détail ?\n", "\n", "**Comment faire pour savoir s'il s'agit de latitude Nord ou Sud et de longitude Est ou Ouest ?**\n", "\n", "### Nous avons 4 cas possibles :\n", "\n", "* **Cas 1: ( Nord et Est )**\n", " * lat = 33.87546081542969 \n", " * lon = 116.3016196017795\n", "* **Cas 2: ( Nord et ouest )**\n", " * lat = 33.87546081542969 \n", " * lon = -116.3016196017795\n", "* **Cas 3: ( Sud et Est )**\n", " * lat = -33.87546081542969 \n", " * lon = 116.3016196017795\n", "* **Cas 4: ( Sud et ouest )**\n", " * lat = -33.87546081542969 \n", " * lon = -116.3016196017795\n", " \n", "**Testez ces 4 cas sur le web ( Géoportail ou autres...)**\n", "\n", "**Avez vous une idée du lieu de cette photo ?**\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "7cXfnfhyGio7" }, "source": [ "------------------------\n", "\n", "**Réponse**: \n", "\n", "-----------------------" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xDhQ65daGio-" }, "source": [ "## Comment régler ce détail \n", "\n", "Ces informations sont contenues dans la photo, il suffit pour cela de faire afficher les données EXIFS de cette photo.\n", "\n", "Sur le Web, on trouve des sites qui permettent de le faire \n", "\n", "Faites afficher les données Exifs de cette photo sur ce site par exemple\n", "\n", "**Donnez les coordonnées complète de la photo :**" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "QV8SkGubGio_" }, "source": [ "------------------------\n", "\n", "**Réponse**: \n", "\n", "-----------------------" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "s76YclIEGipB" }, "source": [ "\n", "## Un programme\n", "\n", "Ce programme affiche les coordonnées du lieu où la photo a été prise:\n", "\n", "**Les bibliothèques utilisées sont :**\n", "* pilow (PIL)pour la lecture des données EXIFS\n", "* requests pour l'import depuis une url\n", "* io pour la lecture de fichier image" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "FiPzGUhtHKRT" }, "outputs": [], "source": [ "#pip install pillow" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 72 }, "colab_type": "code", "id": "-QFeTJQdGipD", "outputId": "da4a1fea-6a5a-4e95-f4de-bc479c96463e" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{0: b'\\x02\\x00\\x00\\x00', 1: 'N', 2: (33.0, 52.0, 31.658935546875), 3: 'W', 4: (116.0, 18.0, 5.83056640625), 5: b'\\x00', 6: 304.0, 18: 'WGS-84'}\n", "33.87546081542969\n", "-116.3016196017795\n" ] } ], "source": [ "#chargement des bibliothèques \n", "from PIL import Image\n", "import requests\n", "from io import BytesIO\n", "\n", "# chargement de la photo se trouvant à l'adresse donnée\n", "url=\" https://isn-icn-ljm.pagesperso-orange.fr/photo/photo1.jpg\"\n", "response = requests.get(url)\n", "im = Image.open(BytesIO(response.content))\n", "\n", "# Si la photo est dans le même dossier que le programme\n", "#chargement de l'image ( même dossier que le programme)\n", "#im = Image.open( 'photo.jpg' )\n", "\n", "# chargement des données exif, c'est un dictionnaire les données gps sont à la clé 34853\n", "# repéré à l'aide de l'explorateur de variable de l'ide python\n", "exif_data = im._getexif()\n", "#chargement des données de la clé 34853\n", "# on crée un dictionnaire pour contenir les données GPS\n", "test={}\n", "test=exif_data[34853]\n", "# eplorer la variable test pour savoir comment elle est structurée\n", "print(test)\n", "\n", "# ce dico contient les données recherchées\n", "# la latitude est à la clé 2 qui est un tuple\n", "# la longitude à l clé 4\n", "# il faut les transformer en nombres (float)\n", "\n", "# récupération de la latitude\n", "lat_deg=float(test[2][0])\n", "lat_min=float(test[2][1])/60\n", "lat_sec=float(test[2][2])/3600\n", "lat=lat_deg+lat_min+lat_sec \n", "# signe en fonction de Nord /Sud\n", "if test[1]=='S':\n", " lat=-lat\n", "print(lat)\n", "# récupération de la longitude\n", "lon_deg=float(test[4][0])\n", "lon_min=float(test[4][1])/60\n", "lon_sec=float(test[4][2])/3600\n", "lon=lon_deg+lon_min+lon_sec\n", "# signe en fonction de Est/Ouest\n", "if test[3]=='W':\n", " lon=-lon\n", "print(lon)\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "JWhYuC5iGipP" }, "source": [ "
\n", "\n", "## À faire :\n", "\n", "**En vous aidant des TP précédents et du programme ci-dessus, faites afficher sur une carte un marqueur sur le lieu où la photo a été prise**" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "PzErKn5wGipS" }, "outputs": [], "source": [ "#Écrire le code ici\n" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "ArYZDRmmGipb" }, "source": [ "
\n", "\n", "## À faire:\n", "\n", "Reprendre le travail précédent avec cette photo : \n", "\n", "l'URL est : https://isn-icn-ljm.pagesperso-orange.fr/photo/IMG1.jpg \n", "\n", "\n", "photo1" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "h9bsl2tKGipd" }, "outputs": [], "source": [ "#Écrire le code ici" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "xE5AbNv8Gipo" }, "source": [ "
\n", "\n", "## À faire:\n", "\n", "Reprendre le travail précédent avec une photo prise par votre smartphone (autorisez la géolocalisation)\n", "\n", "On chargera la photo dans le programme depuis le dossier qui contient ce notebook avec les instructions :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": {}, "colab_type": "code", "id": "zQQeKePiGipu" }, "outputs": [], "source": [ "#chargement des bibliothèques \n", "from PIL import Image\n", "\n", "\n", "# Si la photo est dans le même dossier que le programme\n", "#chargement de l'image ( même dossier que le programme)\n", "im = Image.open( 'photo1.jpg' )\n", "\n", "# chargement des données exif, c'est un dictionnaire les données gps sont à la clé 34853\n", "# repéré à l'aide de l'explorateur de variable de l'ide python\n", "exif_data = im._getexif()\n", "#chargement des données de la clé 34853\n", "# on crée un dictionnaire pour contenir les données GPS\n", "test={}\n", "test=exif_data[34853]\n", "# eplorer la variable test pour savoir comment elle est structurée\n", "print(test)" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "zpzcBCvnGip4" }, "source": [ "**Compléter le code ci-dessus pour faire ce travail**" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "vn0-2m_wGip7" }, "outputs": [], "source": [ "#Écrire le code ici" ] }, { "cell_type": "markdown", "metadata": { "colab_type": "text", "id": "9_23EbmHGiqD" }, "source": [ "\n", "
\n", " Enregistrez ce travail sous le nom : cartographie_tp_1_votre_nom.ipynb et déposez le là où on vous le dira \n", "\n", "### Pour enregistrer:\n", "\n", "1. File\n", "2. Save notebook as\n", "3. Pour le récupérer cliquez sur le dossier à gauche en haut...\n", "4. cliquez droit sur le fichier et download\n", "\n", "### Autre méthode \n", "\n", "Dans **home**\n", "sélectionnez le fichier et download \n", "\n" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "colab": {}, "colab_type": "code", "id": "gGUWT1UFG49h" }, "outputs": [], "source": [] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Cartographie_TP_3.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.8" } }, "nbformat": 4, "nbformat_minor": 1 }