Jérôme Amagat wrote > a la place mieux vaux : > (._; >;); > out meta; > cela te donne les même éléments. > et normalement c'est trier, ça veux pas dire que c'est trier comme tu le > souhaites.
Effectivement, j'ai remplacé par ce bout de script et cela fonctionne bien mieux. Pour les curieux, voici une partie de mon script. Si vous avez des remarques, je suis ouvert à toute suggestion. # Import des modules time import time import datetime # Définition des dates et heures de début de processus DateDuProcess = time.strftime('%d%m%Y',time.localtime()) HeureDuProcess = time.strftime('%H:%M:%S',time.localtime()) heure,minute=0,0 tempsdep = time.clock() tempsInstr = time.clock() # Définition du chemin du fichier des logs logfilePath = r"\\Vdom2\sig\_ARCGIS\log_" + DateDuProcess + ".txt" # Fonction d'insertion des messages dans le fichier des logs def insertMessageLogFile(inPathLogFile, message): logFile = open(inPathLogFile, "a") logFile.write("\n"+message) logFile.close() print(message) # Fonction de calcule des heures, minutes, secondes def decoupe(tempsEcoule): heure = int(tempsEcoule) /3600 tempsEcoule %= 3600 minute = int(tempsEcoule)/60 tempsEcoule%=60 tempsEcoule = (heure+"H "+minute+"m "+tempsEcoule+"s") insertMessageLogFile(logfilePath, '*'*20) msgLog = ('1.0 Lancement du script de chargement du fichier osm dans la GDB le {0} à {1}').format(DateDuProcess,HeureDuProcess) insertMessageLogFile(logfilePath, msgLog) # Import des modules msgLog = ('1.1 Import des modules') insertMessageLogFile(logfilePath, msgLog) import arcpy import os, sys import urllib2, urllib, re arcpy.ImportToolbox("C:/Program Files (x86)/ArcGIS/Desktop10.3/ArcToolbox/Toolboxes/OpenStreetMap Toolbox.tbx", "osmtools") tempsEcoule = str(round((time.clock() - tempsInstr),3)) msgLog = ('1.1 Modules importés : {0}s').format(tempsEcoule) insertMessageLogFile(logfilePath, msgLog) tempsInstr = time.clock() # Création des variables msgLog = ('1.2 Création des variables') insertMessageLogFile(logfilePath, msgLog) inFolder = r"\\Vdom2\sig\_PROJETS\_CCPRO_OSM\OSMFiles\Automatique" inGDB = r"\\Vdom2\sig\_GDB\OSM_CCPRO.gdb" inFieldLong = "lastmodif" inFieldDate = "osmtimestamp" urlxapi = 'http://overpass-api.de/api/interpreter?' bbox = "(43.98,4.70,44.27,4.99)" timeout = 65 tempsEcoule = str(round((time.clock() - tempsInstr),6)) msgLog = ('1.2 Variables créées : {0}s').format(tempsEcoule) insertMessageLogFile(logfilePath, msgLog) tempsInstr = time.clock() # Compte du nombre de fichiers planet à importer arcpy.env.workspace = inFolder fileCount = 0 fileDone = 1 for osm in arcpy.ListFiles("*.osm"): fileCount += 1 msgLog = ('1.3 Nombre de fichiers planet à importer : {0}').format(fileCount) insertMessageLogFile(logfilePath, msgLog) # Etape 1 - import des données msgLog = ('2.1 Les données vont être importées depuis {0} vers {1}').format(inFolder,inGDB) insertMessageLogFile(logfilePath, msgLog) # Boucle sur tous les fichiers osm du dossier \\Vdom2\sig\_PROJETS\_CCPRO_OSM\OSMFiles\Automatique for osm in arcpy.ListFiles("*.osm"): try: msgLog = ('2.1.1 Fichier planet traité {0}, {1}/{2}').format(osm, fileDone, fileCount) insertMessageLogFile(logfilePath, msgLog) taille = round(os.path.getsize(inFolder + os.sep + osm) / 1024) tempsBoucle = time.clock() msgLog = ('2.1.2 Définition du Prédicat de {0}, {1} kO').format(osm, taille) insertMessageLogFile(logfilePath, msgLog) # requête particulière : parking if osm == 'parking.osm': requete = '["amenity"="parking"]' # requête particulière : buildingpart elif osm == 'buildingpart.osm': requete = '["building:part"]' # requête particulière : housenumber elif osm == 'housenumber.osm': requete = '["addr:housenumber"]' # requête particulière : associatedStreet elif osm == 'associatedStreet.osm': requete = '["type"="associatedStreet"]' # requête particulière : PublicTransport elif osm == 'public_transport.osm': requete = '["route"="bus"]' else: requete = ('["' + osm[:-4] + '"]') msgLog = ('2.1.3 Création de l\'URL de la requête : {0}').format(requete) insertMessageLogFile(logfilePath, msgLog) # exécution de la requête XAPI query ='[out:xml][timeout:{0}];(node{1}{2};way{1}{2};relation{1}{2};);(._;>;);out meta;'.format(timeout,requete, bbox) query = query.encode('utf8') query_string = urllib.urlencode({'data': query}) msgLog = ('2.1.4 Lancement de la requête : {0}').format(requete) insertMessageLogFile(logfilePath, msgLog) try: data = urllib2.urlopen(url=urlxapi, data=query_string).read() except urllib2.HTTPError as e: if e.code == 400: print 'Bad request overpass' # exit() continue # overpass timeout if re.search('Query timed out in', data): print 'Timeout overpass' # exit() continue msgLog = ('2.1.5 Création du fichier osm : {0}').format(requete) insertMessageLogFile(logfilePath, msgLog) # print data open(inFolder + os.sep + osm,'w').write(data) tempsEcoule = str(round((time.clock() - tempsInstr),3)) msgLog = ('2.1.4 import {0} effectué en {1}s').format(osm[:-4],tempsEcoule) insertMessageLogFile(logfilePath, msgLog) tempsInstr = time.clock() tempsEcoule = str(round((time.clock() - tempsBoucle),3)) # time.strftime('%Hh %Mm %Ss', time.gmtime(tempsEcoule)) msgLog = (' 3.0 Données {0} Importées et intégrées : {1}s').format(osm[:-4],tempsEcoule) insertMessageLogFile(logfilePath, msgLog) tempsInstr = time.clock() fileDone += 1 except Exception, exception_retournee: msgLog = (' 99 Erreur rencontrée : {0}').format(exception_retournee) insertMessageLogFile(logfilePath, msgLog) continue tempsEcoule =str(round((time.clock() - tempsdep),3)) DateDuProcess = time.strftime('%d%m%Y',time.localtime()) HeureDuProcess = time.strftime('%H:%M:%S',time.localtime()) # time.strftime('%Hh %Mm %Ss', time.gmtime(tempsEcoule)) msgLog = ('99. script achevé le {0} à {1} en {2}s').format(DateDuProcess,HeureDuProcess,tempsEcoule) insertMessageLogFile(logfilePath, msgLog) ----- Tony EMERY Administrateur OpenStreetMap.fr Mandataire Grand Sud-Est Géomaticien & chef de projets -- View this message in context: http://gis.19327.n5.nabble.com/Requete-overpass-api-python-tp5863030p5876368.html Sent from the France mailing list archive at Nabble.com. _______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr