forked from Olav63/outils_OSM
#2 ajout d'une option pour la zone géographique
This commit is contained in:
parent
54e34b0b16
commit
eee92807cf
38
README.md
38
README.md
@ -1,19 +1,39 @@
|
|||||||
|
[[_TOC_]]
|
||||||
|
|
||||||
|
# But
|
||||||
|
Ce script sert à récupérer (en JSON et tableau ods) les infos de stationnement vélo, d'ateliers, d'associations, vendeurs, réparateurs et fabricants de vélo.
|
||||||
|
|
||||||
|
# Options
|
||||||
|
## Zone géographique
|
||||||
|
`-z, --zone,` définit la zone cible du script, par défaut le Puy-de-Dôme.
|
||||||
|
L'identifiant des objets s'obtient depuis la carte openstreetmap.org :
|
||||||
|
- clic-droit dans la zone concernée
|
||||||
|
- interroger les objets
|
||||||
|
- choisir la relation dans les « Objets englobants »
|
||||||
|
- noter l'ID
|
||||||
|
|
||||||
|
|
||||||
# Inspiration :
|
Examples :
|
||||||
|
|Zone | id |
|
||||||
|
|Puy de Dôme | 7406 |
|
||||||
|
|Riom | 1693144 |
|
||||||
|
|Clermont | 110866 |
|
||||||
|
|Romagnat | 138269 |
|
||||||
|
|
||||||
|
# Inspirations / ressources :
|
||||||
### urls ressources
|
### urls ressources
|
||||||
https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
- https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
||||||
https://geo.api.gouv.fr/adresse
|
- https://geo.api.gouv.fr/adresse
|
||||||
https://wiki.cartocite.fr/doku.php?id=umap:10_-_je_valorise_les_donnees_openstreetmap_avec_umap
|
- https://wiki.cartocite.fr/doku.php?id=umap:10_-_je_valorise_les_donnees_openstreetmap_avec_umap
|
||||||
https://sites-formations.univ-rennes2.fr/mastersigat/Cours/Intro_Overpass.pdf
|
- https://sites-formations.univ-rennes2.fr/mastersigat/Cours/Intro_Overpass.pdf
|
||||||
|
|
||||||
### usage des tags :
|
### usage des tags :
|
||||||
https://taginfo.openstreetmap.org/tags/?key=amenity&value=bicycle_parking#combinations
|
- https://taginfo.openstreetmap.org/tags/?key=amenity&value=bicycle_parking#combinations
|
||||||
|
|
||||||
### exemple URL données pour umap :
|
### exemple URL données pour umap :
|
||||||
https://www.velocite63.fr/velocite63/OSM/stationnements_velos_publics.json
|
- https://www.velocite63.fr/velocite63/OSM/stationnements_velos_publics.json
|
||||||
penser à cocher "proxy" dans la rubrique "données distantes" du calque
|
penser à cocher "proxy" dans la rubrique "données distantes" du calque
|
||||||
|
|
||||||
### export ODS :
|
### export ODS :
|
||||||
https://pythonhosted.org/pyexcel-ods/
|
- https://pythonhosted.org/pyexcel-ods/
|
||||||
pip3 install pyexcel-ods3
|
`pip3 install pyexcel-ods3`
|
@ -28,6 +28,7 @@ Module principal :
|
|||||||
|
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
import argparse
|
||||||
from osm_vc63 import errors
|
from osm_vc63 import errors
|
||||||
from osm_vc63 import requetes
|
from osm_vc63 import requetes
|
||||||
from osm_vc63.utils import Utils
|
from osm_vc63.utils import Utils
|
||||||
@ -43,13 +44,6 @@ MAX_RETRY = 4
|
|||||||
RETRY_DELAY = 120
|
RETRY_DELAY = 120
|
||||||
|
|
||||||
|
|
||||||
# id du département "Puy de Dôme" : 7406
|
|
||||||
# id Riom : 1693144
|
|
||||||
# id Clermont : 110866
|
|
||||||
# id Romagnat : 138269
|
|
||||||
# l'id de l'area se calcule en ajoutant 3600000000 au numéro de l'objet OSM
|
|
||||||
AIRE_DE_RECHERCHE = str(3_600_000_000 + 7406)
|
|
||||||
|
|
||||||
# traductions des tags bicycle_parking
|
# traductions des tags bicycle_parking
|
||||||
TRAD_BICYCLE_PARKING = {
|
TRAD_BICYCLE_PARKING = {
|
||||||
"stands": "Arceaux",
|
"stands": "Arceaux",
|
||||||
@ -74,9 +68,34 @@ TRAD_BICYCLE_PARKING = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def init_argparse() -> argparse.ArgumentParser:
|
||||||
|
"""Définition des arguments possibles."""
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
usage="%(prog)s [OPTIONS] ...",
|
||||||
|
description="Exporte les données de la Cyclosphère d'une zone géographique.",
|
||||||
|
)
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
"-z",
|
||||||
|
"--zone",
|
||||||
|
type=int,
|
||||||
|
help="Choisir la zone géographique à inspecter. ",
|
||||||
|
default=7406,
|
||||||
|
)
|
||||||
|
|
||||||
|
return parser
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
"""Routine principale"""
|
"""Routine principale"""
|
||||||
|
|
||||||
|
parser = init_argparse()
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# l'id de l'area se calcule en ajoutant 3600000000 au numéro de l'objet OSM
|
||||||
|
aire_de_recherche = str(3_600_000_000 + args.zone)
|
||||||
|
|
||||||
for req in requetes.REQS:
|
for req in requetes.REQS:
|
||||||
for nb_essai in range(MAX_RETRY): # on tente max_retry fois
|
for nb_essai in range(MAX_RETRY): # on tente max_retry fois
|
||||||
try:
|
try:
|
||||||
@ -85,7 +104,7 @@ def main():
|
|||||||
print(f"{75*'#'}\r\nRequête en cours : {req.nom}")
|
print(f"{75*'#'}\r\nRequête en cours : {req.nom}")
|
||||||
|
|
||||||
# appel overpass
|
# appel overpass
|
||||||
data = utils.run_overpass_query(req.critere, AIRE_DE_RECHERCHE)
|
data = utils.run_overpass_query(req.critere, aire_de_recherche)
|
||||||
nb_resultats = len(data["elements"])
|
nb_resultats = len(data["elements"])
|
||||||
print(f"{nb_resultats} résultats")
|
print(f"{nb_resultats} résultats")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user