pylint sur fichier principal

This commit is contained in:
SebF 2021-10-10 16:50:27 +02:00
parent 1c535dd9b9
commit af09edea2b

View File

@ -1,4 +1,11 @@
#!/usr/bin/env python3
"""
Module principal : 
- récupération de données par appel à Overpass
- géocodage inverse
- export des données en JSON pour utilisation avec umap
- sauvegarde des données en ods
"""
# inspiration :
# https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
@ -15,25 +22,21 @@
# https://pythonhosted.org/pyexcel-ods/
# pip3 install pyexcel-ods3
import requests
import json
import time
from pyexcel_ods3 import save_data
from collections import OrderedDict
import os
from osm_vc63 import errors
from osm_vc63 import requetes
from osm_vc63.utils import Utils
overpass_url = "http://overpass-api.de/api/interpreter"
geo_api_url = "https://api-adresse.data.gouv.fr"
dossier_sauvegarde = "resultats/"
OVERPASS_URL = "http://overpass-api.de/api/interpreter"
GEO_API_URL = "https://api-adresse.data.gouv.fr"
DOSSIER_SAUVEGARDE = "resultats/"
# nombre maxi de retries quand echec API
max_retry = 4
MAX_RETRY = 4
# delai en secondes entre les tentatives
retry_delay = 120
RETRY_DELAY = 120
# id du département "Puy de Dôme" : 7406
@ -42,7 +45,7 @@ retry_delay = 120
# id Romagnat : 138269
# l'id de l'area se calcule en ajoutant 3600000000 au numéro de l'objet OSM
aire_de_recherche = str(3600000000 + 110866)
AIRE_DE_RECHERCHE = str(3600000000 + 110866)
# ----------------------------------------------
@ -73,8 +76,16 @@ trad_bicycle_parking = {
def executer_requete_et_exporter_resultats(
nom_req, critere, aire_de_recherche, overpass_query_fields
):
"""
Appelle Overpass et exporte les résultats
utils = Utils(overpass_url, geo_api_url, dossier_sauvegarde)
nom_req : nom de la requête (type d'informations recherchées)
critere : requête passée à Overpass
aire_de_recherche : zone géographique d'intérêt
overpass_query_fields : champs récupérés pour la réponse
"""
utils = Utils(OVERPASS_URL, GEO_API_URL, DOSSIER_SAUVEGARDE)
data = utils.run_overpass_query(critere, aire_de_recherche)
nb_elements = len(data["elements"])
@ -132,34 +143,34 @@ def executer_requete_et_exporter_resultats(
export_json = utils.nettoyage_json_pour_umap(data, overpass_query_fields)
# Sauvegarde
os.makedirs(dossier_sauvegarde, exist_ok=True)
os.makedirs(DOSSIER_SAUVEGARDE, exist_ok=True)
utils.save_as_json(export_json, nom_req)
utils.save_as_ods(overpass_query_fields, data, nom_req)
def main():
for req in requetes.reqs:
"""Routine principale"""
for nb_essai in range(max_retry): # on tente max_retry fois
for req in requetes.reqs:
for nb_essai in range(MAX_RETRY): # on tente max_retry fois
try:
executer_requete_et_exporter_resultats(
req.nom, req.critere, aire_de_recherche, req.champs
req.nom, req.critere, AIRE_DE_RECHERCHE, req.champs
)
break
except errors.ApiError:
if nb_essai == max_retry:
if nb_essai == MAX_RETRY:
print("trop d'erreurs d'API - abandon")
exit()
print("erreur API - on retente dans " + str(retry_delay) + "s")
print("erreur API - on retente dans " + str(RETRY_DELAY) + "s")
time.sleep(retry_delay)
time.sleep(RETRY_DELAY)
print("Fini")
if __name__ == "__main__":
main()