2021-10-09 20:40:50 +02:00
|
|
|
#!/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)
|
2021-10-09 20:47:09 +02:00
|
|
|
|
|
|
|
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
|