Hello world
Le plugin [extension by rvelices] RV Maps & Earth est une très bonne chose. Le logiciel GeoSetter va très bien avec une fois correctement appréhendé.
Sauf que... les données GPS sont stockées dans des champs EXIF. Il faut, en plus de la synchronisation habituelle, lancer la synchronisation des données GPS avec RV Maps & Earth. Ca fait donc deux fois le même boulot.
Pourquoi ne pas prévoir ces deux lignes dans la BDD et ce cas dans la synchronisation normale ?
J'ai bien essayé de jeter un oeil au plugin pour voir comment il remplissait la table, sauf que qu'une ligne est constitué de plusieurs champs EXIF :-s
Le fichier tool/metadata.php me donne le résultat suivant :
[GPSVersion] => �� [GPSLatitudeRef] => N [GPSLatitude] => Array ( [0] => 44/1 [1] => 26/1 [2] => 51889/930 ) [GPSLongitudeRef] => E [GPSLongitude] => Array ( [0] => 4/1 [1] => 41/1 [2] => 79227/1352 ) [GPSAltitudeRef] => � [GPSAltitude] => 63/1 [GPSTimeStamp] => Array ( [0] => 19/1 [1] => 31/1 [2] => 46/1 ) [GPSSatellites] => 0 [GPSMapDatum] => WGS-84 [GPSDateStamp] => 2009:08:14
Dans la documentation de ExifTool, je trouve au Tag ID 0x8825 la référence aux données GPS. Plus dans le détail on trouvera la page suivante.
Concrètement, dans la BDD, le plugin [extension by rvelices] RV Maps & Earth rajoute les champs "lat" et "lon" (voir copies d'écran).
Le contenu du fichier de synchronisation de RV Maps & Earth :
<?php if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); function parse_fract( $f ) { $nd = explode( '/', $f ); return $nd[0]/$nd[1]; } function parse_lat_lon( $arr ) { $v=0; $v += parse_fract( $arr[0] ); $v += parse_fract( $arr[1] )/60; $v += parse_fract( $arr[2] )/3600; return $v; } if ( isset($_POST['submit']) ) $sync_options = array( // 'no_overwrite' => isset($_POST['no_overwrite']), 'simulate' => is_adviser() ? true : isset($_POST['simulate']), 'cat_id' => isset($_POST['cat_id']) ? (int)$_POST['cat_id'] : 0, 'subcats_included' => isset($_POST['subcats_included']), ); else $sync_options = array( // 'no_overwrite' => true, 'simulate' => true, 'cat_id' => 0, 'subcats_included' => true, ); if ( isset($_POST['submit']) ) { $where_clauses = array(); if ( $sync_options['cat_id']!=0 ) { $query=' SELECT id FROM '.CATEGORIES_TABLE.' WHERE '; if ( $sync_options['subcats_included']) $query .= 'uppercats REGEXP \'(^|,)'.$sync_options['cat_id'].'(,|$)\''; else $query .= 'id='.$sync_options['cat_id']; $cat_ids = array_from_query($query, 'id'); $query=' SELECT id,path,lat,lon FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id WHERE category_id IN ('.implode(',', $cat_ids).') GROUP BY id'; } else { $query=' SELECT id,path,lat,lon FROM '.IMAGES_TABLE; } $images = hash_from_query( $query, 'id'); $datas = array(); $errors = array(); foreach ($images as $image) { $exif = @read_exif_data( $image['path'] ); if ( empty($exif) ) continue; $exif = array_intersect_key( $exif, array_flip( array('GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude') ) ); if ( count($exif)!=4 ) continue; if ( !in_array($exif['GPSLatitudeRef'], array('S', 'N') ) ) { $errors[] = $image['path']. ': GPSLatitudeRef not S or N'; continue; } if ( !in_array($exif['GPSLongitudeRef'], array('W', 'E') ) ) { $errors[] = $image['path']. ': GPSLongitudeRef not W or E'; continue; } if (!is_array($exif['GPSLatitude']) or !is_array($exif['GPSLongitude']) ) { $errors[] = $image['path']. ': GPSLatitude and GPSLongitude are not arrays'; continue; } $lat = parse_lat_lon( $exif['GPSLatitude'] ); if ( $exif['GPSLatitudeRef']=='S' ) $lat = -$lat; $lon = parse_lat_lon( $exif['GPSLongitude'] ); if ( $exif['GPSLongitudeRef']=='W' ) $lon = -$lon; $datas[] = array ( 'id' => $image['id'], 'lat' => $lat, 'lon' => $lon, ); } $template->assign( 'sync_errors', $errors ); if ( count($datas)>0 and !$sync_options['simulate'] ) { mass_updates( IMAGES_TABLE, array( 'primary' => array('id'), 'update' => array('lat', 'lon') ), $datas ); rvm_invalidate_cache(); } $template->assign( 'metadata_result', array( 'NB_ELEMENTS_DONE' => count($datas), 'NB_ELEMENTS_CANDIDATES' => count($images), 'NB_ERRORS' => count($errors), )); } $query = ' SELECT id, CONCAT(name, IF(dir IS NULL, " (V)", "") ) AS name, uppercats, global_rank FROM '.CATEGORIES_TABLE; display_select_cat_wrapper($query, array( $sync_options['cat_id'] ), 'categories', false); $template->assign( array( 'SUBCATS_INCLUDED_CHECKED' => $sync_options['subcats_included'] ? 'checked="checked"' : '' ) ); ?>
Première des questions : Est-ce possible à l'avenir de prévoir ces données lors de la synchronisation de base de Piwigo (donc de l'APi aussi avec pLoader & Co) ?
Hors ligne
Je soutiens totalement cette demande !
Le plugin est très bien en tant que plugin, en revanche la synchro des données GPS devrait pouvoir être faite en même temps que les autres données.
Perso j'ai déja ajouté le support des infos de localisation en "customisant" quelques fichiers (Pays / Région / Ville / Localisation) par contre pour le GPS il faut garantir la compatibilité avec le plugin alors je ne le sens pas trop...
Hors ligne
ddtddt a écrit:
Zaphod a écrit:
Exemple les données GPS (qui se font via plugin mais qui pourraient être intégrées de base)
Tu dis ce parce que ces donnée t'intéresse.
J'ai une galerie Piwigo pour une assos ou 100% des photos sont dans un périmètre de 1 km²
Donc les données GPS je n'en voi pas l'intérêt.
Donc pour moi en plugin c'est très bien
Dans : [Forum, post 136658 by ddtddt in topic 14721] PWG 2.0.0R CRetour sur IPTC
Que d'origine la synchronisation ne porte pas sur tous les champs je suis d'accord.
Par contre, le le problème des données GPS c'est qu'elles doivent être inscrites dans la BDD et à l'heure actuel, ça implique 2 synchronisation.
Je m'y suis certainement un peu mal pris en faisant une demande d'évolution de Piwigo alors que ce serait certainement plus une demande d'évolution du plugin [extension by rvelices] RV Maps & Earth qui devra une fois son activation de faite, permettre (lors de la synchronisation de Piwigo) de synchroniser aussi les données EXIF du GPS.
C'est pourquoi hier soir j'ai demandé à plg de bien vouloir assigner le ticket à Rvelices ;-)
Hors ligne
Que les données majeures de Géolocalisation soient dans la base me semble indispensable.
Quelles soient synchronisées dans un seul process me semble normal.
Maintenant l'affichage reste un plugin à part entière... Et RV Maps & Earth le fait très bien.
Les colonnes devraient devenir un standard et la synchro devraient être modifiée.
AMA.
Hors ligne
Oui, je ne pense pas que ça soit une évolution du plugin qu'il faille, mais bien une évolution de piwigo..
Après, le plugin évoluera probablement aussi en conséquence.
Mais tu peux très bien ne pas activer le plugin et envoyer des photos, et l'installer ou l'activer ensuite, donc il faut que la colonne soit dans la base depuis le début.
Hors ligne
VDigital a écrit:
Que les données majeures de Géolocalisation soient dans la base me semble indispensable.
J'aimerais mieux que ça puisse être optionnel : je ne vois pas l'intérêt de m'encombrer de ça, si je ne souhaite pas l'utiliser.
Hors ligne
Pourtant les autres champs de la base ne sont pas optionnels...
Perso je n'ai pas d'intérêt à noter les images et je n'utilise pas le compteur du nombre de visionnages... pourtant les champs sont dans la base.
Certains n'utilisent pas les mots clés...
Bref ça ne me parait pas super lourd pour la BDD comme champ supplémentaire.
Et c'est quand même une fonctionnalité qui peut intéresser pas mal de monde.
Dernière modification par Zaphod (2010-03-17 17:28:19)
Hors ligne
Pas très pratique de mener 2 fois la même discussion sur 2 fils différents :\
Ma réponse est là : [Forum, post 136691 by tosca in topic 14721] PWG 2.0.0R CRetour sur IPTC
Hors ligne
Oui je l'ai lue (et répondu) ;)
En fait je pense que la discussion a plus sa place dans ce fil.
Grosso modo mon point de vue actuel c'est que le fonctionnement actuel par plugin n'est pas satisfaisant.
Tu envoies des photos vers Piwigo, toutes les métadonnées sont synchronisées sauf le GPS !
Il faut aller dans le plugin, sélectionner les catégories, synchroniser...
C'est peu fonctionnel.
Après, que ça soit fait par plugin ou autre, ça n'est pas super important (pour moi) à condition que la fonctionnalité soit équivalente, ce qui n'est pas le cas aujourd'hui.
Mais ça me parait bien plus facile à gérer via un champ de base dans la BDD que via un plugin !
Ca permettrait aussi d'autres plugins de pouvoir utiliser les données GPS... actuellement si tu veux le faire, il faut soit créer un deuxième champ GPS, soit être tributaire du premier plugin.
Or ça me parait être une donnée suffisamment riche pour que plusieurs plugins s'y intéressent.
Ca me parait aussi plus pérenne dans le cas des évolutions de Piwigo (l'évolution des plugins n'est pas garantie).
Attention je ne critique pas ici le plugin (RV Maps & Earth) que je trouve excellent (c'est même lui qui m'a fait m'intéresser au géotaggage que je considérais inutile avant).
Dernière modification par Zaphod (2010-03-17 18:35:22)
Hors ligne
Mettons nous tous bien d'accord :-)
Les données IPTC ne sont pas synchronisées par le processus de synchronisation de Piwigo.
De très rares données EXIF sont synchronisés de facto lors de la synchronisation. C'est un choix de l'équipe qui n'est qu'un minimum.
Concrètement, dans la BDD, i n'y que quelques colonnes pour :
- la date de la prise de vue
- le nom de l'auteur
- les mots clés
Les autres informations sont inscrites par dans la BDD via d'autres plugins.
RV Maps é Earth est l'un deux.
Ce plugin permet de rajouter des fonctionnalités à Piwigo. Ce qui fait est très bien !
La seule chose que je puisse reprocher c'est que les photos doivent subir du coup, 2 synchronisations lorsqu'une seule suffirait.
Je ne demande donc pas que Piwigo (le CORE) embarque cette fonctionnalité de géolocalisation car l'emploi du plugin de Rvelices est indispensable pour le traitement des données GPS.
Je demande juste que lors de l'installation de ce plugin, ce dernier soit en mesure de faire que la synchronisation classique soit enrichie en synchronisant les données EXIF du GPS.
Bien entendu, il faudra synchroniser (par le biais du plugin) les anciennes photos pour la BDD se remplisse :-)
Est-ce que c'est plus clair ?
Hors ligne
Zaphod a écrit:
Oui je l'ai lue (et répondu) ;)
En fait je pense que la discussion a plus sa place dans ce fil.
D'accord, je rapatrie donc la réponse :
Zaphod a écrit:
Moi j'ai plus tendance à considérer que celui qui installe Piwigo de base doit avoir la majorité des fonctions utilisables sans installer 15 plugins.
C'est ton avis ;-)
... mais il n'y pas longtemps, je ne sais plus qui (peut-être bien vincent3569) faisait remarquer que, pour commencer à utiliser Piwigo comme on le souhaitait, il fallait commencer par retirer ou désactiver plein de choses :\
Zaphod a écrit:
Mais ça me parait bien plus facile à gérer via un champ de base dans la BDD que via un plugin !
L'activation d'un plugin peut très bien "mettre en service" des nouveaux champs dans la base de données. De fait, une fois le plugin activé (ou l'option cochée), tu ne saurais même pas que ça ne fait pas partie du coeur.
Zaphod a écrit:
Ca me parait aussi plus pérenne dans le cas des évolutions de Piwigo (l'évolution des plugins n'est pas garantie).
J'ai aussi écrit :
tosca a écrit:
ce qui n'empêche pas d'avoir des extensions développées/supportées par l'équipe "officielle", pour celles qui sont considérées comme plus stratégiques (on a déjà le cas avec LocalFilesEditor, il me semble).
Un plugin peut faire exactement la même chose que s'il faisait partie intégrante du coeur (y compris la mise à jour de la base de données). Il peut être développé / distribué / supporté par l'équipe au même titre que le coeur.
Au final, la seule différence pour le webmaster, c'est qu'il a le choix de l'activer ou non ; et qu'il n'encombre pas son système (interface, base de données, etc.) avec s'il n'en a pas l'utilisation.
C'est pour avoir cette souplesse que je considère que le plugin est une meilleure solution pour les données GPS ... entre autres fonctionnalités.
Hors ligne
tosca a écrit:
Zaphod a écrit:
Mais ça me parait bien plus facile à gérer via un champ de base dans la BDD que via un plugin !
L'activation d'un plugin peut très bien "mettre en service" des nouveaux champs dans la base de données. De fait, une fois le plugin activé (ou l'option cochée), tu ne saurais même pas que ça ne fait pas partie du coeur.
C'est exactement ce que je disais précèdement ...
Hors ligne
tosca a écrit:
Zaphod a écrit:
Mais ça me parait bien plus facile à gérer via un champ de base dans la BDD que via un plugin !
L'activation d'un plugin peut très bien "mettre en service" des nouveaux champs dans la base de données. De fait, une fois le plugin activé (ou l'option cochée), tu ne saurais même pas que ça ne fait pas partie du coeur.
Sauf que toutes les photos déja transférées ne seront pas synchronisées.
Après comme je disais, sur le principe que ça soit dans un plugin ou pas ça ne change pas grand chose à fonctionnalité égale.
Actuellement, les fonctionnalités ne sont pas égales puisqu'il faut faire la synchro à part.
tosca a écrit:
ce qui n'empêche pas d'avoir des extensions développées/supportées par l'équipe "officielle", pour celles qui sont considérées comme plus stratégiques (on a déjà le cas avec LocalFilesEditor, il me semble).
Il me semble que ça n'est pas le cas de RV Maps & Earth, mais je peux me tromper ?
tosca a écrit:
Un plugin peut faire exactement la même chose que s'il faisait partie intégrante du coeur (y compris la mise à jour de la base de données). Il peut être développé / distribué / supporté par l'équipe au même titre que le coeur.
Au final, la seule différence pour le webmaster, c'est qu'il a le choix de l'activer ou non ; et qu'il n'encombre pas son système (interface, base de données, etc.) avec s'il n'en a pas l'utilisation.
Pris comme ça, je suis d'accord.
Mais il faudrait donc un plugin séparé de RV Maps & Earth qui gère la colonne GPS et qui permette la synchronisation en même temps que les autres données.
Hors ligne
Gotcha a écrit:
Les données IPTC ne sont pas synchronisées par le processus de synchronisation de Piwigo.
De très rares données EXIF sont synchronisés de facto lors de la synchronisation. C'est un choix de l'équipe qui n'est qu'un minimum.
Je ne suis pas trop d'accord.
Les mots clés sont synchronisés, et ce sont des IPTC, pas des EXIF non ?
Hors ligne