mirror of
https://forge.chapril.org/tykayn/mapillary_download
synced 2025-10-09 17:02:46 +02:00
up
This commit is contained in:
parent
cdd4d6e549
commit
a080ab844f
15 changed files with 392 additions and 80 deletions
83
move_france_folder.py
Normal file
83
move_france_folder.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
import os
|
||||
import random
|
||||
import piexif
|
||||
from PIL import Image
|
||||
|
||||
#username="konink360"
|
||||
username="konink360"
|
||||
counter=0
|
||||
# Définition de la bounding box de la France métropolitaine
|
||||
FRANCE_METROPOLITAINE = {
|
||||
'min_lat': 42.25,
|
||||
'max_lat': 51.1,
|
||||
'min_lon': -4.8,
|
||||
'max_lon': 8.2
|
||||
}
|
||||
|
||||
def get_random_jpg_file(dossier):
|
||||
"""Renvoie le chemin d'un fichier JPG au hasard dans le dossier"""
|
||||
jpg_files = [f for f in os.listdir(dossier) if f.endswith('.jpg')]
|
||||
if not jpg_files:
|
||||
return None
|
||||
return os.path.join(dossier, random.choice(jpg_files))
|
||||
|
||||
def get_exif_info(file_path):
|
||||
"""Renvoie les informations EXIF de la photo"""
|
||||
try:
|
||||
exif_dict = piexif.load(file_path)
|
||||
return exif_dict
|
||||
except Exception as e:
|
||||
print(f"Erreur lors de la lecture des EXIF : {e}")
|
||||
return None
|
||||
|
||||
|
||||
def is_in_france(exif_info):
|
||||
"""Vérifie si la photo a des informations de géolocalisation situées en France métropolitaine"""
|
||||
if not exif_info or 'GPS' not in exif_info:
|
||||
return False
|
||||
gps_info = exif_info['GPS']
|
||||
lat_ref = gps_info[1]
|
||||
lat = gps_info[2]
|
||||
lon_ref = gps_info[3]
|
||||
lon = gps_info[4]
|
||||
if lat_ref == b'N':
|
||||
signe_lat = 1
|
||||
else:
|
||||
signe_lat = -1
|
||||
if lon_ref == b'E':
|
||||
signe_lon = 1
|
||||
else:
|
||||
signe_lon = -1
|
||||
# Convertir les tuples en nombres
|
||||
lat = signe_lat * (lat[0][0] / lat[0][1] + lat[1][0] / (lat[1][1] * 60) + lat[2][0] / (lat[2][1] * 3600))
|
||||
lon = signe_lon * (lon[0][0] / lon[0][1] + lon[1][0] / (lon[1][1] * 60) + lon[2][0] / (lon[2][1] * 3600))
|
||||
return (FRANCE_METROPOLITAINE['min_lat'] <= lat <= FRANCE_METROPOLITAINE['max_lat'] and
|
||||
FRANCE_METROPOLITAINE['min_lon'] <= lon <= FRANCE_METROPOLITAINE['max_lon'])
|
||||
|
||||
|
||||
def move_to_found_in_france(dossier):
|
||||
"""Déplace le dossier vers found_in_france"""
|
||||
dest_folder = 'found_in_france'
|
||||
if not os.path.exists(dest_folder):
|
||||
os.makedirs(dest_folder)
|
||||
os.rename(dossier, os.path.join(dest_folder, os.path.basename(dossier)))
|
||||
print('dossier déplacé:',counter, dossier, dest_folder)
|
||||
|
||||
def main():
|
||||
root_folder = 'data/'+username
|
||||
for dossier in os.listdir(root_folder):
|
||||
dossier_path = os.path.join(root_folder, dossier)
|
||||
# print(dossier_path)
|
||||
if os.path.isdir(dossier_path):
|
||||
jpg_file = get_random_jpg_file(dossier_path)
|
||||
# print(jpg_file)
|
||||
if jpg_file:
|
||||
exif_info = get_exif_info(jpg_file)
|
||||
# print(exif_info)
|
||||
if exif_info and is_in_france(exif_info):
|
||||
move_to_found_in_france(dossier_path)
|
||||
# counter += 1
|
||||
print(f"Dossier {dossier} déplacé vers found_in_france")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue