From c4c88a96bac3beb4b600502eae18a2c85cbf870b Mon Sep 17 00:00:00 2001 From: FLacombe Date: Sun, 26 Jan 2025 01:04:19 +0100 Subject: [PATCH 1/4] Add merge analyser for French Enedis power distribution poles --- ...nalyser_merge_power_pole_FR_spec_enedis.py | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 analysers/analyser_merge_power_pole_FR_spec_enedis.py diff --git a/analysers/analyser_merge_power_pole_FR_spec_enedis.py b/analysers/analyser_merge_power_pole_FR_spec_enedis.py new file mode 100644 index 000000000..203df10e8 --- /dev/null +++ b/analysers/analyser_merge_power_pole_FR_spec_enedis.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +########################################################################### +## ## +## Copyrights François Lacombe - 2025 ## +## ## +## 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 modules.OsmoseTranslation import T_ +from .Analyser_Merge import Analyser_Merge_Point, SourceDataGouv, CSV, Load_XY, Conflate, Select, Mapping + + +class Analyser_Merge_power_pole_FR_spec_enedis (Analyser_Merge_Point): + def __init__(self, config, logger = None): + Analyser_Merge_Point.__init__(self, config, logger) + self.def_class_missing_official(item = 8290, id = 1001, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], + title = T_('Power pole not integrated')) + self.def_class_possible_merge(item = 8291, id = 1003, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], + title = T_('Power pole integration suggestion')) + self.def_class_update_official(item = 8290, id = 1004, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], + title = T_('Power pole update')) + + self.init( + "https://www.data.gouv.fr/fr/datasets/supports-eclairage-public-du-sde18/", + "Position géographique des poteaux électriques HTA et BT Enedis", + CSV(SourceDataGouv( + attribution="Enedis", + dataset="679574c33c924b19bd3f9ffd", + resource="c047d86c-4922-4934-8ffc-350935bded1a" + )), + Load_XY("lng", "lat"), + Conflate( + select = Select( + types = ['nodes'], + tags = {'power': 'pole'}), + conflationDistance = 3, + mapping = Mapping( + static1 = {'power': 'pole'}, + static2 = {'source': self.source, 'operator':'Enedis', 'operator:wikidata':'Q3587594'}, + text = lambda tags, fields: {} ))) From 7022a87a5e60adafa17414c82c93f9f36054ef3f Mon Sep 17 00:00:00 2001 From: FLacombe Date: Thu, 30 Jan 2025 19:35:42 +0100 Subject: [PATCH 2/4] Back to original Enedis dataset and add to config --- ...nalyser_merge_power_pole_FR_spec_enedis.py | 11 ++++--- osmose_config.py | 29 ++++++++++++++----- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_enedis.py b/analysers/analyser_merge_power_pole_FR_spec_enedis.py index 203df10e8..d1ecf5b52 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_enedis.py +++ b/analysers/analyser_merge_power_pole_FR_spec_enedis.py @@ -35,14 +35,17 @@ def __init__(self, config, logger = None): title = T_('Power pole update')) self.init( - "https://www.data.gouv.fr/fr/datasets/supports-eclairage-public-du-sde18/", + "https://www.data.gouv.fr/fr/datasets/position-geographique-des-poteaux-hta-et-bt/", "Position géographique des poteaux électriques HTA et BT Enedis", CSV(SourceDataGouv( attribution="Enedis", - dataset="679574c33c924b19bd3f9ffd", - resource="c047d86c-4922-4934-8ffc-350935bded1a" + dataset="60b9a555532a9939f42fcb3b", + resource="93186d05-f283-421c-8534-a92149a01a36" )), - Load_XY("lng", "lat"), + Load_XY("Geo Point", "Geo Point", + xFunction = lambda x: x and x.split(',')[1], + yFunction = lambda y: y and y.split(',')[0] + select = {"PREC": ["A : 0 - 50cm", "B : 50cm - 1m 50"]}), Conflate( select = Select( types = ['nodes'], diff --git a/osmose_config.py b/osmose_config.py index 0a77177c1..179d76a5f 100644 --- a/osmose_config.py +++ b/osmose_config.py @@ -424,14 +424,21 @@ class gen(default_country): france_departement("ile_de_france/val_d_oise", 7433, "FR-95", include=include_ile_de_france) france_departement("ile_de_france/yvelines", 7457, "FR-78", include=include_ile_de_france) -france_departement("languedoc_roussillon/aude", 7446, "FR-11") -france_departement("languedoc_roussillon/gard", 7461, "FR-30") +france_departement("languedoc_roussillon/aude", 7446, "FR-11", include=[ + 'merge_power_pole_FR_spec_enedis' +]) +france_departement("languedoc_roussillon/gard", 7461, "FR-30", include=[ + 'merge_power_pole_FR_spec_enedis' +]) france_departement("languedoc_roussillon/herault", 7429, "FR-34", include=[ + 'merge_power_pole_FR_spec_enedis', # Montpellier 'merge_public_equipment_FR_montpellier_toilets', ]) france_departement("languedoc_roussillon/lozere", 7421, "FR-48") -france_departement("languedoc_roussillon/pyrenees_orientales", 7466, "FR-66") +france_departement("languedoc_roussillon/pyrenees_orientales", 7466, "FR-66", include=[ + 'merge_power_pole_FR_spec_enedis' +]) france_departement("limousin/correze", 7464, "FR-19") france_departement("limousin/creuse", 7459, "FR-23") @@ -445,9 +452,12 @@ class gen(default_country): france_departement("lorraine/moselle", 51854, "FR-57") france_departement("lorraine/vosges", 7384, "FR-88") -france_departement("midi_pyrenees/ariege", 7439, "FR-09") +france_departement("midi_pyrenees/ariege", 7439, "FR-09", include=[ + 'merge_power_pole_FR_spec_enedis' +]) france_departement("midi_pyrenees/aveyron", 7451, "FR-12") france_departement("midi_pyrenees/haute_garonne", 7413, "FR-31", include=[ + 'merge_power_pole_FR_spec_enedis', # Toulouse 'merge_public_equipment_FR_toulouse_toilets', 'merge_defibrillators_FR_toulouse', @@ -498,13 +508,18 @@ class gen(default_country): 'merge_public_transport_FR_zou_06', 'merge_public_transport_FR_sillages', 'merge_public_transport_FR_zestbus', + 'merge_power_pole_FR_spec_enedis' ]) - france_departement("provence_alpes_cote_d_azur/bouches_du_rhone", 7393, "FR-13", include=[ 'merge_recycling_FR_ampm', + 'merge_power_pole_FR_spec_enedis' +]) +france_departement("provence_alpes_cote_d_azur/var", 7390, "FR-83", include=[ + 'merge_power_pole_FR_spec_enedis' +]) +france_departement("provence_alpes_cote_d_azur/vaucluse", 7445, "FR-84", include=[ + 'merge_power_pole_FR_spec_enedis' ]) -france_departement("provence_alpes_cote_d_azur/var", 7390, "FR-83") -france_departement("provence_alpes_cote_d_azur/vaucluse", 7445, "FR-84") france_departement("rhone_alpes/ain", 7387, "FR-01") france_departement("rhone_alpes/ardeche", 7430, "FR-07") From 422ad77646fdfb4f754fa3bdda91ccec08daf268 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Thu, 30 Jan 2025 19:39:05 +0100 Subject: [PATCH 3/4] Fix lint --- analysers/analyser_merge_power_pole_FR_spec_enedis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_enedis.py b/analysers/analyser_merge_power_pole_FR_spec_enedis.py index d1ecf5b52..ffc881650 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_enedis.py +++ b/analysers/analyser_merge_power_pole_FR_spec_enedis.py @@ -42,9 +42,9 @@ def __init__(self, config, logger = None): dataset="60b9a555532a9939f42fcb3b", resource="93186d05-f283-421c-8534-a92149a01a36" )), - Load_XY("Geo Point", "Geo Point", + Load_XY("Geo Point", "Geo Point", xFunction = lambda x: x and x.split(',')[1], - yFunction = lambda y: y and y.split(',')[0] + yFunction = lambda y: y and y.split(',')[0], select = {"PREC": ["A : 0 - 50cm", "B : 50cm - 1m 50"]}), Conflate( select = Select( From a795938bdb8c63265a7ab3db52c306c26f6d0c76 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Thu, 30 Jan 2025 23:34:55 +0100 Subject: [PATCH 4/4] Improve filter --- analysers/analyser_merge_power_pole_FR_spec_enedis.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_enedis.py b/analysers/analyser_merge_power_pole_FR_spec_enedis.py index ffc881650..79e0d2e91 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_enedis.py +++ b/analysers/analyser_merge_power_pole_FR_spec_enedis.py @@ -34,6 +34,8 @@ def __init__(self, config, logger = None): self.def_class_update_official(item = 8290, id = 1004, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], title = T_('Power pole update')) + dep_code = config.options.get('dep_code') or config.options.get('country').split('-')[1] + self.init( "https://www.data.gouv.fr/fr/datasets/position-geographique-des-poteaux-hta-et-bt/", "Position géographique des poteaux électriques HTA et BT Enedis", @@ -41,11 +43,14 @@ def __init__(self, config, logger = None): attribution="Enedis", dataset="60b9a555532a9939f42fcb3b", resource="93186d05-f283-421c-8534-a92149a01a36" - )), + ), fields=['Code Département', 'Geo Point', 'PREC']), Load_XY("Geo Point", "Geo Point", xFunction = lambda x: x and x.split(',')[1], yFunction = lambda y: y and y.split(',')[0], - select = {"PREC": ["A : 0 - 50cm", "B : 50cm - 1m 50"]}), + select = { + "Code Département": dep_code, + "PREC": ["A : 0 - 50cm", "B : 50cm - 1m 50"] + }), Conflate( select = Select( types = ['nodes'],