From 497fc8ccdf430742d9b5872ab6d47419fb9cc350 Mon Sep 17 00:00:00 2001 From: Arzhel Younsi Date: Sun, 28 Jul 2024 22:47:10 +0200 Subject: [PATCH] Add Grenoble bike parking integration --- ...lyser_merge_bicycle_parking_FR_grenoble.py | 70 +++++++++++++++++++ osmose_config.py | 5 +- 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 analysers/analyser_merge_bicycle_parking_FR_grenoble.py diff --git a/analysers/analyser_merge_bicycle_parking_FR_grenoble.py b/analysers/analyser_merge_bicycle_parking_FR_grenoble.py new file mode 100644 index 000000000..bd9cc2f9e --- /dev/null +++ b/analysers/analyser_merge_bicycle_parking_FR_grenoble.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +########################################################################### +## ## +## Copyrights XioNoX 2024 ## +## ## +## 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 . ## +## ## +########################################################################### + +from datetime import datetime + +from modules.OsmoseTranslation import T_ +from .Analyser_Merge import Analyser_Merge_Point, SourceDataGouv, GeoJSON, Load_XY, Conflate, Select, Mapping + +class Analyser_Merge_Bicycle_Parking_FR_Grenoble(Analyser_Merge_Point): + def __init__(self, config, logger = None): + Analyser_Merge_Point.__init__(self, config, logger) + self.def_class_missing_official(item = 8150, id = 1, level = 3, tags = ['merge', 'public equipment', 'bicycle', 'fix:survey', 'fix:picture'], + title = T_('Bicycle parking not integrated')) + self.def_class_possible_merge(item = 8151, id = 3, level = 3, tags = ['merge', 'public equipment', 'bicycle', 'fix:survey', 'fix:picture'], + title = T_('Bicycle parking integration suggestion')) + self.def_class_update_official(item = 8152, id = 4, level = 3, tags = ['merge', 'public equipment', 'bicycle', 'fix:survey', 'fix:picture'], + title = T_('Bicycle parking update')) + self.init( + "https://www.data.gouv.fr/fr/datasets/parcs-de-stationnement-velos-de-la-metropole-de-lyon/", + "Localisation des stationnements vélos connus sur le territoire de la Métropole de Lyon", + GeoJSON( + SourceDataGouv( + attribution="data.gouv.fr:Grenoble-Alpes Métropole", + dataset="658053a53e68b91a5a3a5a21", + resource="c9723a83-0ae4-4266-9fbe-ec01da2bb8b8"), + ), + Load_XY("geom_x", "geom_y"), + Conflate( + select = Select( + types = ["nodes", "ways"], + tags = {"amenity": "bicycle_parking"}), + conflationDistance = 10, + mapping = Mapping( + static1 = { + "amenity": "bicycle_parking", + "bicycle_parking": "stands", + }, + static2 = { + "source": self.source, + "operator": "Grenoble-Alpes Métropole", + }, + mapping1 = { + "capacity": lambda res: int(res.get("mob_arce_nb"))*2, + }, + mapping2 = { + "start_date": lambda res: datetime.strptime(res.get("mob_arce_datecre"), "%Y%m%d%H%M%S").strftime("%Y-%m-%d"), + "ref:FR:GrenobleAlpesMetropole": "mob_arce_id", + } + ) + ) + ) diff --git a/osmose_config.py b/osmose_config.py index fbb2d7ef7..bd7be47d9 100644 --- a/osmose_config.py +++ b/osmose_config.py @@ -503,7 +503,10 @@ class gen(default_country): france_departement("rhone_alpes/ain", 7387, "FR-01") france_departement("rhone_alpes/ardeche", 7430, "FR-07") france_departement("rhone_alpes/drome", 7434, "FR-26") -france_departement("rhone_alpes/isere", 7437, "FR-38") +france_departement("rhone_alpes/isere", 7437, "FR-38", include=[ + # Grenoble + 'merge_bicycle_parking_FR_grenoble', +]) france_departement("rhone_alpes/loire", 7420, "FR-42") france_departement("rhone_alpes/rhone", 7378, "FR-69", include=[ # Lyon