outils_OSM/osm_vc63/requetes.py
2021-11-01 21:12:11 +01:00

167 lines
5.6 KiB
Python

#!/usr/bin/env python3
# Copyright 2021 Olav63, SebF
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
"""Module des requêtes"""
class Requete:
"""Objet requête"""
nom: str
critere: str
champs: dict
def __init__(self, nom, critere, champs):
self.nom = nom
self.critere = critere
self.champs = champs
REQS = []
CHAMPS_STATIONNEMENT = {
"amenity": {"export_json": "Non", "FR": "aménagement"},
"capacity": {"export_json": "Oui", "FR": "nombre d'emplacements"},
"access": {"export_json": "Oui", "FR": "accès"},
"bicycle_parking": {"export_json": "Oui", "FR": "type"},
"covered": {"export_json": "Oui", "FR": "couvert"},
"operator": {"export_json": "Oui", "FR": "opérateur"},
"operator:type": {"export_json": "Oui", "FR": "type d'opérateur"},
"fee": {"export_json": "Oui", "FR": "frais"},
"check_date:capacity": {"export_json": "Non", "FR": "date_vérification"},
"source": {"export_json": "Non", "FR": "source"},
}
CHAMPS_POI = {
"name": {"export_json": "Oui", "FR": ""},
"description": {"export_json": "Oui", "FR": ""},
"website": {"export_json": "Oui", "FR": ""},
"addr:housenumber": {"export_json": "Oui", "FR": ""},
"addr:street": {"export_json": "Oui", "FR": ""},
"addr:postcode": {"export_json": "Oui", "FR": ""},
"addr:city": {"export_json": "Oui", "FR": ""},
"contact:email": {"export_json": "Oui", "FR": "email"},
"contact:twitter": {"export_json": "Oui", "FR": "Twitter"},
"contact:facebook": {"export_json": "Oui", "FR": "Facebook"},
"contact:phone": {"export_json": "Oui", "FR": "Téléphone"},
"network": {"export_json": "Oui", "FR": "Réseau"},
"office": {"export_json": "Oui", "FR": "Bureau"},
"opening_hours": {"export_json": "Oui", "FR": "Horaires"},
}
CHAMPS_ADRESSE = {
"api_adresse:geometry:coordinates:lon": {
"export_json": "Non",
"FR": "lon_adresse_etalab",
},
"api_adresse:geometry:coordinates:lat": {
"export_json": "Non",
"FR": "lat_adresse_etalab",
},
"api_adresse:properties:label": {"export_json": "Non", "FR": "adresse_etalab"},
"api_adresse:properties:score": {"export_json": "Non", "FR": "score_etalab"},
"api_adresse:properties:housenumber": {"export_json": "Non", "FR": "numero_etalab"},
"api_adresse:properties:type": {"export_json": "Non", "FR": "type_etalab"},
"api_adresse:properties:name": {
"export_json": "Non",
"FR": "numero_et_voie_etalab",
},
"api_adresse:properties:postcode": {
"export_json": "Non",
"FR": "code_postal_etalab",
},
"api_adresse:properties:citycode": {
"export_json": "Non",
"FR": "code_INSEE_etalab",
},
"api_adresse:properties:city": {"export_json": "Non", "FR": "ville_etalab"},
"api_adresse:properties:street": {"export_json": "Non", "FR": "rue_etalab"},
}
# pylint: disable=C0301
STATIONNEMENT_NON_PUBLIC_REQ = r'nwr["amenity"="bicycle_parking"]["access"~"(no|permit|private|customers|permissive)"](area:aire_de_recherche);'
REQS.append(
Requete(
"stationnements_velos_non_publics",
STATIONNEMENT_NON_PUBLIC_REQ,
dict(CHAMPS_STATIONNEMENT, **CHAMPS_ADRESSE),
)
)
REQS.append(
Requete(
"stationnements_velos_publics",
# pylint: disable=C0301
rf'nwr["amenity"="bicycle_parking"](area:aire_de_recherche); - {STATIONNEMENT_NON_PUBLIC_REQ}',
dict(CHAMPS_STATIONNEMENT, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"service:bicycle:diy": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"ateliers_autoreparation",
r'nwr["service:bicycle:diy"="yes"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"association": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"associations_velo",
r'nwr["association"="bicycle"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"craft": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"fabriquants_velo",
r'nwr["craft"="bicycle"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"shop": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"vendeurs_velo",
# pylint: disable=C0301
r'nwr["shop"="bicycle"](area:aire_de_recherche); nwr["service:bicycle:retail"="yes"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"amenity": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"velos_libre_service",
r'nwr["amenity"="bicycle_rental"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)
CHAMP_LOCAL = {"service:bicycle:rental": {"export_json": "Non", "FR": ""}}
REQS.append(
Requete(
"location_velo",
r'nwr["service:bicycle:rental"="yes"](area:aire_de_recherche);',
dict(CHAMP_LOCAL, **CHAMPS_POI, **CHAMPS_ADRESSE),
)
)