Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.

Tracer itinéraire d'après photos

Discussion dans 'Photo' créé par Nouvoul, 24 Juillet 2019.

Modérateurs: fedo, macinside
  1. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    Suite et fin
    partie 2

    Code (Text):
       
            tell application "Finder"
                set gu to (ASCII character 34) -- crée le fichier piste.gpx avec les 5 lignes d'entête
                set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
                write "<?xml version=" & gu & "1.0" & gu & " encoding=" & gu & "UTF-8" & gu & "?>" & return & "<gpx version = " & gu & "1.0" & gu & ">" & return & "<trk>" & return & "<name>piste</name>" & return & "<trkseg>" & return to lelog starting at eof
                close access lelog
                set FolderContents to files of folder Ledossier
                repeat with Lefichier in FolderContents
                   
                    set nom to name of Lefichier
                    set Lefichier to Lefichier as string
                   
                    set lat to do shell script "mdls -name kMDItemLatitude " & quoted form of POSIX path of Lefichier --récupère la latitude
                    set lon to do shell script "mdls -name kMDItemLongitude " & quoted form of POSIX path of Lefichier --récupère la longitude
                    set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefichier --récupère la date de prise de vue
                   
                    --met les données en forme
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {" "}
                    set Lati to text item 3 of lat
                    set long to text item 3 of lon
                    set datecreat to text item 3 of datecrea & "T" & text item 4 of datecrea & "Z"
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur  
                    if Lati is not "(null)" or long is not "(null)" then
                        my ecriture(Lati, long, nom, datecreat) -- appelle la routine d'écriture des données
                    end if
                   
                   
                   
                   
                end repeat
                --ecrit les 3 lignes de fin du fichier
                set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
                write "</trkseg>" & return & "</trk>" & return & "</gpx>" & return to lelog starting at eof
                close access lelog
               
               
                (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
               
            end tell
        end if
    end tell

    on ecriture(Lati, long, nom, datecreat) --ecrit les 4 lignes de données
        set gu to (ASCII character 34)
        set lelog to open for access ((path to desktop folder as text) & "piste" & ".gpx") as Unicode text with write permission
        write "<trkpt lat=" & gu & Lati & gu & " lon=" & gu & long & gu & ">" & return & "<src>" & nom & "</src>" & return & "<time>" & datecreat & "</time>" & return & "</trkpt>" & return to lelog starting at eof
        close access lelog
    end ecriture
     
  2. Vinzzz25

    Vinzzz25 Membre émérite

    Inscrit:
    8 Avril 2010
    Messages:
    669
    J'aime reçus:
    63
  3. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    @Vinzzz25
    Le contenu du fichier est correct. seul son encodage n'est pas reconnu, exactement comment les autres testeur avant la modif du script.
    Je ne sais donc pas quoi faire ! désolé.
     
  4. Vinzzz25

    Vinzzz25 Membre émérite

    Inscrit:
    8 Avril 2010
    Messages:
    669
    J'aime reçus:
    63
    @zeltron54 perso je n'en ai pas l'utilité ,
    mais comme Nouvoul a/avait les mêmes probs, je remonte juste l'info ;)
     
  5. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    @Vinzzz25
    Comme je n'aime pas rester sur un échec, j'ai refais une autre version. peux-tu essayer et me dire si cette fois c'est aussi bon pour toi .
    A télécharger là : http://dl.free.fr/sqNUdZQe2

    Merci pour tes tests..;)

    Edit : cette version devrait fonctionner pour tout le monde , Car je converti systématiquement le fichier généré en version UTF-8...
     
    #125 zeltron54, 2 Août 2019
    Dernière édition: 2 Août 2019
  6. JLB21

    JLB21 Membre d’élite
    Club MacG

    Inscrit:
    22 Novembre 2007
    Messages:
    4 558
    J'aime reçus:
    305
    Ce n'est pas 'apparemment', je n'ai pas eu le problème:).
    J'ai conservé le fichier gpx que je vous mets, zippé, sur mon GoogleDrive : https://drive.google.com/open?id=1p-QJj8nPE3F94DFRLvZckdRxCu-qAmC0
    La piste est tracée aussi bien dans Earth que dans Aperture…
     
  7. Nouvoul

    Nouvoul Membre d’élite
    Club MacG

    Inscrit:
    4 Mars 2005
    Messages:
    3 113
    J'aime reçus:
    236
    Chez moi le dernier script #125 fonctionne parfaitement sur GE, bravo ! Je n'ai pas essayé le précédent à copier-coller en 2 parties
    Cependant je trouve un peu rédhibitoire le renommage des photos avec date avant ou après, car tous les liens créés entre ces photos, catalogues, dossiers, logiciels LR, Aperture, ON1, Photos, galeries hébergées ailleurs et autres mises en page, deviennent caducs, ce qui oblige à dupliquer toutes les photos qu'on veut utiliser pour créer l'itinéraire.
     
  8. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    @Nouvoul
    J' ai ajouté l'option de renommage, car le script génère un fichier avec les photos dans l'ordre alphabétique de leurs noms et GE et les site en ligne crée le chemin suivant cet ordre, seul Aperture crée le chemin dans l'ordre des dates de prise de vue.
    Ce problème fait donc des chemins parfois curieux, et comme Aperture est voué à disparaître...

    Mais je vais regarder pour avoir les choix : Ajouter la date avant le nom existant, --- Remplacer le nom par la date --- Ne pas renommer
    Peu être que cela serait plus judicieux, qu'en penses-tu ?
     
  9. Vinzzz25

    Vinzzz25 Membre émérite

    Inscrit:
    8 Avril 2010
    Messages:
    669
    J'aime reçus:
    63
    @zeltron54 oui c'est bon pour moi avec ton dernier script , et l'ouverture du.gpx se fait sans probs avec TextEdit
     
  10. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
  11. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    Suite à la demande de Nouvoul, une nouvelle version avec le choix de renommer ou non.
    A télécharger là : http://dl.free.fr/wBF2Gzte6
     
    Vinzzz25 aime ça.
  12. Nouvoul

    Nouvoul Membre d’élite
    Club MacG

    Inscrit:
    4 Mars 2005
    Messages:
    3 113
    J'aime reçus:
    236
    Tu es trop bon !
    Mille grazie ! ¡ Muchas gracias !
     
  13. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    Le lien étant mort, je met ici la dernière version.
    En 2 fois : restriction forum 5000 caractères.

    Partie 1
    Code (Text):
    tell application "Finder"
        --verifie si un fichier piste.gpx existe sur le bureau
        if exists ((path to desktop folder as text) & "piste" & ".gpx") then
            display dialog "le fichier piste.gpx existe déja sur le bureau"
        else
            set Ledossier to choose folder with prompt "Sélectionner le dossier contenant les fichiers photos"
           
            tell application "Finder"
                set FolderContents to files of folder Ledossier
            end tell
           
            tell application "Finder"
                display dialog "Attention les fichiers photos vont être renommés avec la date de la prise de vue" buttons {"Ajout date au debut", "Renommer avec date", "Ne pas renommer"}
                set choix to button returned of result
               
                -- renomme les photos avec la date de prise de vue pour avoir un ordre chronologique
                repeat with Lefichier in FolderContents
                    set lenom to name of Lefichier -- recupere le nom du fichier
                    set extens to Lefichier -- recupere l'extension du fichier
                    set lextension to name extension of extens
                    set Lefich to Lefichier as string
                    set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefich --récupère la durée au format texte
                   
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {" "}
                    set datecreat to text item 3 of datecrea & "-" & text item 4 of datecrea -- recupere AAAA-MM-JJ-hh/mm/ss
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
                    if choix = "Ajout date au debut" then
                        set name of Lefichier to datecreat & "_" & lenom -- renomme en ajoutant la date de prise de vue devant le nom
                    else if choix = "Renommer avec date" then
                        set name of Lefichier to datecreat & "." & lextension -- renomme avec la date de prise de vue aaaa-mm-jj -hh/mm/ss
                    end if
                end repeat
            end tell
     
     
  14. zeltron54

    zeltron54 Membre d’élite

    Inscrit:
    29 Mars 2008
    Messages:
    1 373
    J'aime reçus:
    201
    Partie 2 (suite et fin)
    Code (Text):
    tell application "Finder"
                set gu to (ASCII character 34) -- crée le fichier piste.gpx avec les 5 lignes d'entête
                set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
                write "<?xml version=" & gu & "1.0" & gu & " encoding=" & gu & "UTF-8" & gu & "?>" & return & "<gpx version = " & gu & "1.0" & gu & ">" & return & "<trk>" & return & "<name>piste</name>" & return & "<trkseg>" & return to lelog starting at eof
                close access lelog
                set FolderContents to files of folder Ledossier
                repeat with Lefichier in FolderContents
                   
                    set nom to name of Lefichier
                    set Lefichier to Lefichier as string
                   
                    set lat to do shell script "mdls -name kMDItemLatitude " & quoted form of POSIX path of Lefichier --récupère la latitude
                    set lon to do shell script "mdls -name kMDItemLongitude " & quoted form of POSIX path of Lefichier --récupère la longitude
                    set datecrea to do shell script "mdls -name kMDItemContentCreationDate " & quoted form of POSIX path of Lefichier --récupère la date de prise de vue
                   
                    --met les données en forme
                    set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
                    set AppleScript's text item delimiters to {" "}
                    set Lati to text item 3 of lat
                    set long to text item 3 of lon
                    set datecreat to text item 3 of datecrea & "T" & text item 4 of datecrea & "Z"
                    set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur  
                    if Lati is not "(null)" or long is not "(null)" then
                        my ecriture(Lati, long, nom, datecreat) -- appelle la routine d'écriture des données
                    end if
                   
                   
                   
                end repeat
                --ecrit les 3 lignes de fin du fichier
                set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
                write "</trkseg>" & return & "</trk>" & return & "</gpx>" & return to lelog starting at eof
                close access lelog
               
                set newfich to quoted form of POSIX path of ((path to desktop folder as text) & "piste" & ".gpx")
                set fich to quoted form of POSIX path of ((path to desktop folder as text) & "pistetmp" & ".gpx")
                set convert to "iconv -f MAC -t UTF-8 " & fich & " > " & newfich as string
                do shell script convert
                do shell script "rm " & fich
               
                (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
               
            end tell
        end if
    end tell

    on ecriture(Lati, long, nom, datecreat) --ecrit les 4 lignes de données
        set gu to (ASCII character 34)
        set lelog to open for access ((path to desktop folder as text) & "pistetmp" & ".gpx") as Unicode text with write permission
        write "<trkpt lat=" & gu & Lati & gu & " lon=" & gu & long & gu & ">" & return & "<src>" & nom & "</src>" & return & "<time>" & datecreat & "</time>" & return & "</trkpt>" & return to lelog starting at eof
        close access lelog
    end ecriture
     
Modérateurs: fedo, macinside
Chargement...

iOccasion - Achetez un produit Apple d'occasion

refurb Apple