IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Géolocalisation de photos à partir de points gps [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut Géolocalisation de photos à partir de points gps
    Bonsoir,

    J'ai un script qui me permet de géolocaliser mes photos sur des points gps à partir de la date de la photo et du point gps.

    Cela fonctionne mais pas correctement. Deux soucis persistent :

    • Les photos ne se géolocalisent pas au bon endroit
    • Toutes les photos ne se géolocalisent pas forcément


    Si vous voyez des soucis ou des optimisations, je suis preneur. Par avance, merci.

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <?php
     function recursive_readdir ($dir) 
     {
    	$dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
    	if(is_dir ($dir)) // si c'est un repertoire
    	{
    		$dh = opendir ($dir); // on l'ouvre
    	}
    	else 
    	{
    		echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
    		exit;
    	}
    	while (($file = readdir ($dh)) !== false )//boucle pour parcourir le repertoire
    	{ 
    		if($file !== '.' && $file !== '..')
    		{ 
    			$path =$dir.'/'.$file; // construction d'un joli chemin...
    			if (is_dir ($path)) //si on tombe sur un sous-repertoire 
    			{ 
    				 recursive_readdir ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
    			}
    			$path_parts = pathinfo($path);
    			if($path_parts['extension'] == "jpg" OR $path_parts['extension'] == "JPG" )
    			{
    				// envoie les images dans la base
    				inserer_database_exif($path); 
    			}
    		}
    	}
    	 closedir ($dh); // on ferme le repertoire courant
    }
     
    //---------------------------------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------------------------------
    function inserer_database_exif($chem_image)
    {	
    	$racine = $_SERVER['DOCUMENT_ROOT'];
    	include($racine . '/inclusion/connect_pdo_v3.php');
     
    	//Récupèration des informations de l'image
    	$tab_info = exif_read_data($chem_image,FILE);
     
    	//si il a quelque chose dans le datetime photo
    	if(!empty($tab_info['DateTimeOriginal']))
    	{	
    		$datetime = new DateTime($tab_info['DateTimeOriginal']);
    		$newdate = $datetime->format('Y-m-d H:i:s');
     
    		/* Cherche dans tout les points de la balade, le point le plus proche*/
    		$sql_trouver_point = $bdd->prepare('SELECT a.id_fichier_gps, MIN(id_coord_gps) AS id_coord_gps' 
    											. ' FROM pevtt_coordonnee_gps a'
    											. ' LEFT JOIN pevtt_fichier_gps_avec_article b ON a.id_fichier_gps = b.id_fichier_gps'
    											. ' WHERE coord_gps_date  >= ?'
    											. ' AND id_article = ?');								
    		if(!empty($_POST['id_prochain_article']))
    		{
    			$id_article = intval($_POST['id_prochain_article']);
    		}
    		else
    		{
    			$id_article = intval($_POST['id_article_a_modifier']);
    		}
     
    		$sql_trouver_point->execute(array($newdate,$id_article));
    		$tab_trouver_point = $sql_trouver_point->fetch();
     
    		$pieces = explode("/", $chem_image);
    		$nom_photo = end($pieces);
     
    		$chem_image = str_replace($_SERVER['DOCUMENT_ROOT'],"",$chem_image);
     
    		$id_pt_gpx = intval($tab_trouver_point['id_coord_gps']);
    		$id_fichier_gps = intval($tab_trouver_point['id_fichier_gps']);
    		$id_photo_gps = mt_rand();
     
    		$sql_update_pt_gpx = $bdd->prepare('INSERT INTO pevtt_photo_gps (id_fichier_gps,id_coord_gps,id_photo_gps,photo_gps_nom,photo_gps_url) 
    											VALUES(:id_fichier_gps,:id_coord_gps,:id_photo_gps,:photo_gps_nom,:photo_gps_url)');
    		$sql_update_pt_gpx->execute(array(':id_fichier_gps' => $id_fichier_gps,
    										  ':id_coord_gps' => $id_pt_gpx,
    										  ':id_photo_gps' => $id_photo_gps,
    										  ':photo_gps_nom' => $nom_photo,
    										  ':photo_gps_url' => $chem_image
    										));
    	}		
    	return $resultat;	
    }
    	//appel de la fonction
    	recursive_readdir ($racine.'/upload/articles/images/'.$fsb->userdata('u_id').'/'.$id_type_article.'/'.$id_article.'/'); ?>
    Edit : Exemple d'un résultat

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut mon petit heretic25,

    n'aurais tu surtout des photos qui ont leur marqueur qui se superpose car elles sont rassemblées au même point par l'algo?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Salut mon grand Eric69

    C'est possible que ce soit cela. En effet, souvent, je prend plusieurs photos d'un sommet par exemple. Du coup, les photos doivent se marcher dessus. Comment réussir à accrocher ces photos ? On peut imaginer prendre le point théorique + 1.

    Concernant le décalage des photos, une idée ?

    Le code te paraît logique ?

    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Pour le décalage, c'est un souci d'heure entre le GPS et l'appareil photo.

    Reste à trouver pourquoi certaines photos ne se géolocalisent pas.

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    fais un peu de statistiques pour voir:

    combien de photos dans le repertoire? même nombre pour le chemin?
    ensuite pour les photos superposées compte le nombre de photos par points gps

    ça va déjà t'indiquer les problèmes suposés
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    En faite, j'ai remarqué que ma modélisation permettait de stocker n photos sur un point GPS. La photo se géolocalise bien. C'est juste qu'au niveau de la cartographie, seul une photo apparaît. Il faudrait que je regarde si OpenLayers est capable de gérer le cas. Sinon, il faut que je décale les photos qui ont le même point d'attache.

  7. #7
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    ou que tu les cales dans le même repère si c'est possible...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Je vais regarder sur la lib openlayers, merci Eric.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer ville à partir point GPS offline
    Par tiger360 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 26/07/2014, 10h54
  2. Photo à partir d'une listbox dans formulaire
    Par alex.a dans le forum IHM
    Réponses: 17
    Dernier message: 17/05/2006, 09h50
  3. Formes geométriques a partir de points
    Par xavibla2 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 22/11/2005, 11h40
  4. [MySQL] Afficher une photo à partir de la base de données
    Par microcongo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/09/2005, 17h29
  5. Réponses: 2
    Dernier message: 16/07/2005, 08h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo