From dfd8d264b44b4a8c8361fb1cdaf8d30ddc1001c5 Mon Sep 17 00:00:00 2001 From: SebF Date: Mon, 1 Nov 2021 18:58:42 +0100 Subject: [PATCH] =?UTF-8?q?m=C3=A9thode=20d'appel=20csv=20g=C3=A9ocodage?= =?UTF-8?q?=20inverse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- osm_vc63/utils.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ rdoo.py | 3 ++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/osm_vc63/utils.py b/osm_vc63/utils.py index b06fafb..d329ebd 100644 --- a/osm_vc63/utils.py +++ b/osm_vc63/utils.py @@ -25,6 +25,7 @@ import os import datetime import shutil import pathlib +import csv from collections import OrderedDict import requests from pyexcel_ods3 import save_data @@ -160,6 +161,18 @@ class Utils: return response.json() + def run_reverse_geocoding_csv(self, lat, lon): + """Retourne une adresse JSON à partir d'une position GPS.""" + + url = self.geo_api_url + "/reverse/" + + response = requests.get(url, params={"lon": str(lon), "lat": str(lat)}) + + if response.status_code != 200: + raise errors.GeoApiError(response.status_code) + + return response.json() + def geocodage(self, data): """Renseigne une adresse pour chaque élément de data""" @@ -224,6 +237,42 @@ class Utils: return data + def geocodage_csv(self, data2): + """ + Renseigne une adresse pour chaque élément de data + en une fois via csv + """ + + url = self.geo_api_url + "/reverse/csv/" + + with open("output.csv", "w", newline="") as data_to_file: + + csv_writer = csv.writer(data_to_file) + + for element in data2["elements"]: + if element["type"] == "node": + csv_writer.writerow([element["lat"], element["lon"]]) + else: + csv_writer.writerow( + [element["center"]["lat"], element["center"]["lon"]] + ) + + response = requests.post( + url, + files=OrderedDict( + [("data", ("output.csv", open("output.csv", "rb").read()))] + ), + ) + + if response.status_code != 200: + raise errors.GeoApiError(response.status_code) + + print(response) + + logging.info("Géocodage inversé terminé") + + return data2 + def traduction(self, tag, dictionnaire, data): """Traduit le champ tag des éléments de data avec dict""" diff --git a/rdoo.py b/rdoo.py index 98762e8..adc8f9d 100644 --- a/rdoo.py +++ b/rdoo.py @@ -169,7 +169,8 @@ def main(): if nb_resultats > 0: if args.geocoding_inverse: # géocodage inverse - data = utils.geocodage(data) + # data = utils.geocodage(data) + data = utils.geocodage_csv(data) # traduction data = utils.traduction(