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
|
||||
https://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
||||
https://geo.api.gouv.fr/adresse
|
||||
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://towardsdatascience.com/loading-data-from-openstreetmap-with-python-and-the-overpass-api-513882a27fd0
|
||||
- https://geo.api.gouv.fr/adresse
|
||||
- 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
|
||||
|
||||
### 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 :
|
||||
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
|
||||
|
||||
### export ODS :
|
||||
https://pythonhosted.org/pyexcel-ods/
|
||||
pip3 install pyexcel-ods3
|
||||
- https://pythonhosted.org/pyexcel-ods/
|
||||
`pip3 install pyexcel-ods3`
|
@ -28,6 +28,7 @@ Module principal :
|
||||
|
||||
import time
|
||||
import os
|
||||
import argparse
|
||||
from osm_vc63 import errors
|
||||
from osm_vc63 import requetes
|
||||
from osm_vc63.utils import Utils
|
||||
@ -43,13 +44,6 @@ MAX_RETRY = 4
|
||||
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
|
||||
TRAD_BICYCLE_PARKING = {
|
||||
"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():
|
||||
"""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 nb_essai in range(MAX_RETRY): # on tente max_retry fois
|
||||
try:
|
||||
@ -85,7 +104,7 @@ def main():
|
||||
print(f"{75*'#'}\r\nRequête en cours : {req.nom}")
|
||||
|
||||
# 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"])
|
||||
print(f"{nb_resultats} résultats")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user