#!/usr/bin/env python3 import json from pyexcel_ods3 import save_data from collections import OrderedDict class Save: def as_ods(self, fields, data, dossier, nom_req): """Sauvegarde de data dans un classeur ods""" ODSdataSheet = OrderedDict() ODSdata = [] ODSdata.append(fields.keys()) index_line = 2 for element in data["elements"]: line = [] index_col = 0 for field in fields.keys(): if field in element["tags"]: if field == "capacity": val = element["tags"][field] line.append(int(val) if val.isdigit() else val) else: line.append(element["tags"][field]) else: line.append("") index_col = index_col + 1 ODSdata.append(line) index_line = index_line + 1 ODSdataSheet.update({"resultats": ODSdata}) save_data(dossier + nom_req + ".ods", ODSdataSheet) print("Sauvegarde résultats format ODS pour " + nom_req) def as_json(self, export_json, dossier, nom_req): """Enregistrement du JSON""" jsonFile = open(dossier + nom_req + ".json", "w") jsonFile.write(json.dumps(export_json)) jsonFile.close() print("Sauvegarde résultat format JSON/OSM " + nom_req) def nettoyage_json_pour_umap(self, data, overpass_query_fields): """Sélection uniquement des champs export_json == oui""" export_json = { "version": data["version"], "generator": data["generator"] + " and ETALAB API", "osm3s": data["osm3s"], "elements": [], } index_line = 0 for element in data["elements"]: export_json["elements"].append( {"type": element["type"], "id": element["id"]} ) # positionnement des éléments if element["type"] == "node": # noeuds export_json["elements"][index_line]["lat"] = element["lat"] export_json["elements"][index_line]["lon"] = element["lon"] else: # ways et relations export_json["elements"][index_line]["center"] = element["center"] export_json["elements"][index_line]["nodes"] = element["nodes"] # filtrage des tags description = "" for tag in overpass_query_fields.keys(): if overpass_query_fields[tag]["export_json"] == "Oui": if tag in element["tags"]: if overpass_query_fields[tag]["FR"] != "": description = ( description + overpass_query_fields[tag]["FR"] + " : " ) description = description + str(element["tags"][tag]) + "\n" export_json["elements"][index_line]["tags"] = {"description": description} index_line = index_line + 1 return export_json