gps android python

Vous connaissez Python? Vous connaissez Android? Bien vous connaissez QPython….

QPython est un interpréteur (script engine) qui permet d’exécuter du code Python sur des environnements Android. Il contient l’interpréteur, une console, un éditeur et la librairie SL4A qui permet d’accéder aux éléments de votre appareil Android (GPS, Interface, Son, etc.)

Pour débuter, c’est facile. Rendez-vous dans Google play, faites une recherche QPython et téléchargez un des nombreux logiciels disponibles. Moi j’utilise QPython3, mais il y en a d’autres.

Une fois téléchargé, ouvrez l’application. Vous avez un menu en bas. Ce menu contient 4 icônes. Vous pouvez utiliser la console pour exécuter des petits bouts de code Python. Vous pouvez ouvrir l’éditeur qui vous permet d’écrire un script Python. Vous pouvez voir les exemples de scripts déjà présents via l’icône Scripts. Finalement, accéder à la communauté d’utilisateurs.

Ce qui est intéressant dans cette approche c’est qu’il est possible de faire quelques lignes de codes en script Python pour avoir quelque chose qui fonctionne. C’est certain que de base, l’interface n’est pas intuitive pour les non-programmeurs, mais c’est mieux que de faire un programme avec Android Studio pour une fonctionnalité simple.

Ce que je vous propose ici, c’est d’utiliser le GPS de votre téléphone ou votre tablette pour faire un suivi de vos positions dans un intervalle de temps. Un peu à la manière du Petit Poucet.

À l’aide de votre connexion USB et le transfert de données ou via l’éditeur sur votre tablette ou téléphone, entrez le code suivant:

import android, time
droid = android.Android()
#Activation de la géolocation 
droid.startLocating()
compteur=0
nombre=100
#Chemin pour la saquvegarde des points
chemin ="/mnt/sdcard/Documents/pos.txt"
#Ouverture du fichier pour inscrire l'entête
f = open(chemin,"w")
f.write("y,x\n")
f.flush()
f.close()

while compteur<nombre:
  #Dernière position
    l = droid.getLastKnownLocation().result
    # Position par GPS ou par le réseau 
    latitude = l['gps']['latitude']
    longitude = l['gps']['longitude']
  #Affichage du point
    print (latitude, longitude)
  #Sauvegarde du point dans le fichier. 
    f = open(chemin,"a")
    f.write(str(latitude) + "," + str(longitude)+"\n")
    f.flush()
    f.close()
    compteur=compteur+1 
    time.sleep(5) #Attente de 5 secondes

Vous pouvez exécuter votre script. Ce dernier va vous créer un fichier texte des positions. C‘est un fichier en format CSV dans lequel il y a 2 colonnes. Soit une colonne X pour les positions en X et une colonne Y pour les positions en Y. Pour afficher les données sur une carte. C’est simple, ouvrez votre fureteur web préféré, allez à l’adresse http://arcgis.com, cliquez sur l’onglet Carte et faites un glisser-déposer de votre fichier texte vers la carte. Voilà le résultat.

Une collecte de données relativement facile avec Android, Python et ArcGis Online.