Bonjour,
I] Présentation :
J'ai un script qui me permet de parser un fixhier XML (au format .GPX) et de le rentrer dans une base MYSQL. Ces fichiers GPX sont des traces issues d'un GPS. Ils contiennent l'altitude, une latitude, une longitude et un datetime.
Au niveau de l'insertion en base, tout fonctionne bien.
II] Le problème
Parfois, lorsque l'on fait un très grand parcours, on obtient des milliers de points. Pour ne pas encombrer la base de données, j'aimerais mettre en place un système qui permettrait de simplifier ces points. L'idée est donc de ne pas intégrer certains points pour simplifier la trace.
Quel algorythme pourrait-on utiliser ? J'ai pensé à ne pas intégrer un point sur deux tant que l'on atteint pas un nombre de point précis.
III] Le code d'insertion des points GPS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $xml = $DESTINATION_FOLDER.'/'.$nom_gpx; $obj = simplexml_load_file($xml, 'SimpleXMLIterator'); $sql_insert_coordonnee = $bdd->prepare('INSERT INTO pevtt_coordonnee_gps (id_fichier_gps, id_coord_gps, coord_gps_lat , coord_gps_lon, coord_gps_altitude, coord_gps_date)' . ' VALUES (:id_fichier_gps, :id_coord_gps, :coord_gps_lat, :coord_gps_lon, :coord_gps_altitude, :coord_gps_date)'); $id_coord_gps = 1; foreach($obj->trk->trkseg->trkpt as $trkpt) { $tableau_gpx = array( ':coord_gps_lat' => $trkpt['lat'], ':coord_gps_lon' => $trkpt['lon'], ':coord_gps_altitude' => $trkpt->ele, ':coord_gps_date' => strftime("%Y-%m-%d %H:%M:%S", strtotime($trkpt->time)), ':id_fichier_gps' => $id_fichier_gps, ':id_coord_gps' => $id_coord_gps ); $sql_insert_coordonnee->execute($tableau_gpx); $id_coord_gps++; }
Si vous avez une idée sur le comment faire, je suis preneur !
Merci pour votre aide.
Partager