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

Répondre à