From 775d7c39705900b52c8a838ce95404dd3eaab586 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Mon, 18 Nov 2024 23:00:32 +0100 Subject: [PATCH 1/6] Add merge analyser for France cher power poles --- .../Analyser_Merge_power_pole_FR_gracethd3.py | 4 +- ...analyser_merge_power_pole_FR_spec_sde18.py | 63 +++++++++++++++++++ osmose_config.py | 4 +- 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 analysers/analyser_merge_power_pole_FR_spec_sde18.py diff --git a/analysers/Analyser_Merge_power_pole_FR_gracethd3.py b/analysers/Analyser_Merge_power_pole_FR_gracethd3.py index 90075fb82..f5ce352f4 100644 --- a/analysers/Analyser_Merge_power_pole_FR_gracethd3.py +++ b/analysers/Analyser_Merge_power_pole_FR_gracethd3.py @@ -21,7 +21,7 @@ ########################################################################### from modules.OsmoseTranslation import T_ -from .Analyser_Merge import Analyser_Merge_Point, SHP, LoadGeomCentroid, Conflate, Select, Mapping +from .Analyser_Merge import Analyser_Merge_Point, GDAL, LoadGeomCentroid, Conflate, Select, Mapping class Analyser_Merge_power_pole_FR_gracethd3 (Analyser_Merge_Point): @@ -37,7 +37,7 @@ def __init__(self, config, source_url, dataset_name, source, srid, conflationDis self.init( source_url, dataset_name, - SHP(source, srid = srid, zip="*.shp"), + GDAL(source, srid = srid, zip="*.shp"), LoadGeomCentroid(), Conflate( select = Select( diff --git a/analysers/analyser_merge_power_pole_FR_spec_sde18.py b/analysers/analyser_merge_power_pole_FR_spec_sde18.py new file mode 100644 index 000000000..4e7a33e6a --- /dev/null +++ b/analysers/analyser_merge_power_pole_FR_spec_sde18.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +#-*- coding: utf-8 -*- + +########################################################################### +## ## +## Copyrights François Lacombe - 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 modules.OsmoseTranslation import T_ +from .Analyser_Merge import Analyser_Merge_Point, SourceDataGouv, GDAL, LoadGeomCentroid, Conflate, Select, Mapping + + +class Analyser_Merge_power_pole_FR_spec_sde18 (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/", + "Supports Eclairage Public du SDE18", + GDAL(SourceDataGouv( + attribution="SDE 18", + dataset="673b1255be2baa1d2a71c950", + resource="a6296c3c-8f51-485c-a6c7-c0cead86d474"), + srid = 2154, + extract="*.shp"), + LoadGeomCentroid(select = {"_type": ["poteau", "Poteau", "POTEAU"]} ), + Conflate( + select = Select( + types = ['nodes'], + tags = {'power': 'pole'}), + conflationDistance = 5, + mapping = Mapping( + static1 = {'power': 'pole'}, + static2 = {'source': self.source, 'highway': 'street_lamp', 'operator':'Enedis', 'operator:wikidata':'Q3587594'}, + mapping1 = { + 'material': lambda res: self.extract_material.get(res['_matiere']), + 'height': lambda res: res['hauteur'] if res['hauteur'] and res['hauteur'].isnumeric() and float(res['hauteur']) > 6.0 else None}, + text = lambda tags, fields: {} ))) + + extract_material = { + 'Bois': 'wood', + 'Béton': 'concrete' + } diff --git a/osmose_config.py b/osmose_config.py index 26a88d58c..8508fffb7 100644 --- a/osmose_config.py +++ b/osmose_config.py @@ -367,7 +367,9 @@ class gen(default_country): 'merge_defibrillators_FR_lorient', ]) -france_departement("centre/cher", 7456, "FR-18") +france_departement("centre/cher", 7456, "FR-18", include=[ + 'merge_power_pole_FR_spec_sde18', +]) france_departement("centre/eure_et_loir", 7374, "FR-28") france_departement("centre/indre", 7417, "FR-36") france_departement("centre/indre_et_loire", 7408, "FR-37") From 437beb44453018265a5d92e3ffeabbee8599b961 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Mon, 18 Nov 2024 23:25:28 +0100 Subject: [PATCH 2/6] Fix extract --- analysers/analyser_merge_power_pole_FR_spec_sde18.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_sde18.py b/analysers/analyser_merge_power_pole_FR_spec_sde18.py index 4e7a33e6a..4ad2ab67b 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_sde18.py +++ b/analysers/analyser_merge_power_pole_FR_spec_sde18.py @@ -40,9 +40,10 @@ def __init__(self, config, logger = None): GDAL(SourceDataGouv( attribution="SDE 18", dataset="673b1255be2baa1d2a71c950", - resource="a6296c3c-8f51-485c-a6c7-c0cead86d474"), - srid = 2154, - extract="*.shp"), + resource="a6296c3c-8f51-485c-a6c7-c0cead86d474", + extract="*.shp" + ), + srid = 2154), LoadGeomCentroid(select = {"_type": ["poteau", "Poteau", "POTEAU"]} ), Conflate( select = Select( From 8ad024d96469af7431010f18004f0c00e1a09134 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Wed, 20 Nov 2024 00:09:59 +0100 Subject: [PATCH 3/6] Fix lint --- analysers/analyser_merge_power_pole_FR_spec_sde18.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_sde18.py b/analysers/analyser_merge_power_pole_FR_spec_sde18.py index 4ad2ab67b..b19e8b320 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_sde18.py +++ b/analysers/analyser_merge_power_pole_FR_spec_sde18.py @@ -38,12 +38,12 @@ def __init__(self, config, logger = None): "https://www.data.gouv.fr/fr/datasets/supports-eclairage-public-du-sde18/", "Supports Eclairage Public du SDE18", GDAL(SourceDataGouv( - attribution="SDE 18", - dataset="673b1255be2baa1d2a71c950", - resource="a6296c3c-8f51-485c-a6c7-c0cead86d474", - extract="*.shp" - ), - srid = 2154), + attribution="SDE 18", + dataset="673b1255be2baa1d2a71c950", + resource="a6296c3c-8f51-485c-a6c7-c0cead86d474", + extract="*.shp" + ), + srid = 2154), LoadGeomCentroid(select = {"_type": ["poteau", "Poteau", "POTEAU"]} ), Conflate( select = Select( From b79b25fddffb342ac9c94cd1f0b02ce10fd28b56 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Fri, 6 Dec 2024 10:16:59 +0100 Subject: [PATCH 4/6] Fix zip --- analysers/analyser_merge_power_pole_FR_spec_sde18.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/analysers/analyser_merge_power_pole_FR_spec_sde18.py b/analysers/analyser_merge_power_pole_FR_spec_sde18.py index b19e8b320..5491d0ade 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_sde18.py +++ b/analysers/analyser_merge_power_pole_FR_spec_sde18.py @@ -40,10 +40,9 @@ def __init__(self, config, logger = None): GDAL(SourceDataGouv( attribution="SDE 18", dataset="673b1255be2baa1d2a71c950", - resource="a6296c3c-8f51-485c-a6c7-c0cead86d474", - extract="*.shp" + resource="3d617c33-05e1-4190-a3ca-802d94dad509" ), - srid = 2154), + srid = 2154, zip="*.shp"), LoadGeomCentroid(select = {"_type": ["poteau", "Poteau", "POTEAU"]} ), Conflate( select = Select( From 542b28ce321f659a25d6945296d18ff641931e78 Mon Sep 17 00:00:00 2001 From: FLacombe Date: Fri, 6 Dec 2024 10:22:11 +0100 Subject: [PATCH 5/6] Move gracethdv2 SHP to GDAL --- analysers/Analyser_Merge_power_pole_FR_gracethd2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analysers/Analyser_Merge_power_pole_FR_gracethd2.py b/analysers/Analyser_Merge_power_pole_FR_gracethd2.py index 299229a82..833b54e86 100644 --- a/analysers/Analyser_Merge_power_pole_FR_gracethd2.py +++ b/analysers/Analyser_Merge_power_pole_FR_gracethd2.py @@ -21,7 +21,7 @@ ########################################################################### from modules.OsmoseTranslation import T_ -from .Analyser_Merge import Analyser_Merge_Point, SHP, LoadGeomCentroid, Conflate, Select, Mapping +from .Analyser_Merge import Analyser_Merge_Point, GDAL, LoadGeomCentroid, Conflate, Select, Mapping class Analyser_Merge_power_pole_FR_gracethd2 (Analyser_Merge_Point): @@ -37,7 +37,7 @@ def __init__(self, config, source_url, dataset_name, source, srid, conflationDis self.init( source_url, dataset_name, - SHP(source, srid = srid, zip="*.shp"), + GDAL(source, srid = srid, zip="*.shp"), LoadGeomCentroid(select = {"modele": ["PBOI", "PBET", "PCMP", "PMET"]}), Conflate( select = Select( From 5782875f1a4a3b20034e1fefa4c48a14cd7dbe8d Mon Sep 17 00:00:00 2001 From: FLacombe Date: Mon, 9 Dec 2024 18:42:32 +0100 Subject: [PATCH 6/6] Remove useless SRID from power poles merge analyzers --- analysers/Analyser_Merge_power_pole_FR_gracethd2.py | 4 ++-- analysers/Analyser_Merge_power_pole_FR_gracethd3.py | 4 ++-- analysers/analyser_merge_power_pole_FR_gracethd2_vendee.py | 1 - analysers/analyser_merge_power_pole_FR_gracethd3_bretagne.py | 1 - analysers/analyser_merge_power_pole_FR_gracethd3_dordogne.py | 1 - analysers/analyser_merge_power_pole_FR_gracethd3_jura.py | 1 - analysers/analyser_merge_power_pole_FR_spec_sde18.py | 4 ++-- analysers/analyser_merge_power_pole_FR_spec_sdey.py | 1 - 8 files changed, 6 insertions(+), 11 deletions(-) diff --git a/analysers/Analyser_Merge_power_pole_FR_gracethd2.py b/analysers/Analyser_Merge_power_pole_FR_gracethd2.py index 833b54e86..a40e595c8 100644 --- a/analysers/Analyser_Merge_power_pole_FR_gracethd2.py +++ b/analysers/Analyser_Merge_power_pole_FR_gracethd2.py @@ -25,7 +25,7 @@ class Analyser_Merge_power_pole_FR_gracethd2 (Analyser_Merge_Point): - def __init__(self, config, source_url, dataset_name, source, srid, conflationDistance, classs, extract_operator = None, logger = None): + def __init__(self, config, source_url, dataset_name, source, conflationDistance, classs, extract_operator = None, logger = None): Analyser_Merge_Point.__init__(self, config, logger) self.def_class_missing_official(item = 8290, id = classs + 1, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], title = T_('Power pole not integrated')) @@ -37,7 +37,7 @@ def __init__(self, config, source_url, dataset_name, source, srid, conflationDis self.init( source_url, dataset_name, - GDAL(source, srid = srid, zip="*.shp"), + GDAL(source, zip="*.shp"), LoadGeomCentroid(select = {"modele": ["PBOI", "PBET", "PCMP", "PMET"]}), Conflate( select = Select( diff --git a/analysers/Analyser_Merge_power_pole_FR_gracethd3.py b/analysers/Analyser_Merge_power_pole_FR_gracethd3.py index f5ce352f4..9343a293e 100644 --- a/analysers/Analyser_Merge_power_pole_FR_gracethd3.py +++ b/analysers/Analyser_Merge_power_pole_FR_gracethd3.py @@ -25,7 +25,7 @@ class Analyser_Merge_power_pole_FR_gracethd3 (Analyser_Merge_Point): - def __init__(self, config, source_url, dataset_name, source, srid, conflationDistance, classs, extract_operator = None, logger = None): + def __init__(self, config, source_url, dataset_name, source, conflationDistance, classs, extract_operator = None, logger = None): Analyser_Merge_Point.__init__(self, config, logger) self.def_class_missing_official(item = 8290, id = classs + 1, level = 3, tags = ['merge', 'power', 'fix:chair', 'fix:survey'], title = T_('Power pole not integrated')) @@ -37,7 +37,7 @@ def __init__(self, config, source_url, dataset_name, source, srid, conflationDis self.init( source_url, dataset_name, - GDAL(source, srid = srid, zip="*.shp"), + GDAL(source, zip="*.shp"), LoadGeomCentroid(), Conflate( select = Select( diff --git a/analysers/analyser_merge_power_pole_FR_gracethd2_vendee.py b/analysers/analyser_merge_power_pole_FR_gracethd2_vendee.py index f9139c3ae..f14f45998 100644 --- a/analysers/analyser_merge_power_pole_FR_gracethd2_vendee.py +++ b/analysers/analyser_merge_power_pole_FR_gracethd2_vendee.py @@ -32,7 +32,6 @@ def __init__(self, config, logger = None): attribution="Vendée Numérique", dataset="673d09a837eab9c52f42268b", resource="cc66ae17-26a2-43f5-aea3-37496775776c"), - srid = 2154, conflationDistance=5, classs=1000, extract_operator = { diff --git a/analysers/analyser_merge_power_pole_FR_gracethd3_bretagne.py b/analysers/analyser_merge_power_pole_FR_gracethd3_bretagne.py index 9d496dd02..e1e9024a6 100644 --- a/analysers/analyser_merge_power_pole_FR_gracethd3_bretagne.py +++ b/analysers/analyser_merge_power_pole_FR_gracethd3_bretagne.py @@ -32,7 +32,6 @@ def __init__(self, config, logger = None): attribution="Mégalis Bretagne", dataset="6613a43e5b40aaa8022d3787", resource="b00051b6-69e5-42c3-8229-f6b556561d83"), - srid = 2154, conflationDistance=5, classs=1000, extract_operator = { diff --git a/analysers/analyser_merge_power_pole_FR_gracethd3_dordogne.py b/analysers/analyser_merge_power_pole_FR_gracethd3_dordogne.py index c62185ace..9cb103d5f 100644 --- a/analysers/analyser_merge_power_pole_FR_gracethd3_dordogne.py +++ b/analysers/analyser_merge_power_pole_FR_gracethd3_dordogne.py @@ -32,7 +32,6 @@ def __init__(self, config, logger = None): attribution="Syndicat Mixte Périgord Numérique", dataset="659d72fb641c7c0d6fe6cc59", resource="82e49c1f-976f-4be7-ab20-0a58e9badb56"), - srid = 2154, conflationDistance=5, classs=1000, extract_operator = { diff --git a/analysers/analyser_merge_power_pole_FR_gracethd3_jura.py b/analysers/analyser_merge_power_pole_FR_gracethd3_jura.py index 077f2c565..ce01e8ef0 100644 --- a/analysers/analyser_merge_power_pole_FR_gracethd3_jura.py +++ b/analysers/analyser_merge_power_pole_FR_gracethd3_jura.py @@ -32,7 +32,6 @@ def __init__(self, config, logger = None): attribution="SIDEC Jura", dataset="66158cdd04686348037417af", resource="3f427bbd-f2bb-49dc-9457-c0aad16b1529"), - srid = 2154, conflationDistance=5, classs=1000, extract_operator = { diff --git a/analysers/analyser_merge_power_pole_FR_spec_sde18.py b/analysers/analyser_merge_power_pole_FR_spec_sde18.py index 5491d0ade..d75ddb116 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_sde18.py +++ b/analysers/analyser_merge_power_pole_FR_spec_sde18.py @@ -42,7 +42,7 @@ def __init__(self, config, logger = None): dataset="673b1255be2baa1d2a71c950", resource="3d617c33-05e1-4190-a3ca-802d94dad509" ), - srid = 2154, zip="*.shp"), + zip="*.shp"), LoadGeomCentroid(select = {"_type": ["poteau", "Poteau", "POTEAU"]} ), Conflate( select = Select( @@ -54,7 +54,7 @@ def __init__(self, config, logger = None): static2 = {'source': self.source, 'highway': 'street_lamp', 'operator':'Enedis', 'operator:wikidata':'Q3587594'}, mapping1 = { 'material': lambda res: self.extract_material.get(res['_matiere']), - 'height': lambda res: res['hauteur'] if res['hauteur'] and res['hauteur'].isnumeric() and float(res['hauteur']) > 6.0 else None}, + 'height': lambda res: res['hauteur'] if res['hauteur'] and res['hauteur'] > 6.0 else None}, text = lambda tags, fields: {} ))) extract_material = { diff --git a/analysers/analyser_merge_power_pole_FR_spec_sdey.py b/analysers/analyser_merge_power_pole_FR_spec_sdey.py index 25c1ea8ff..a2d57f6e0 100644 --- a/analysers/analyser_merge_power_pole_FR_spec_sdey.py +++ b/analysers/analyser_merge_power_pole_FR_spec_sdey.py @@ -40,7 +40,6 @@ def __init__(self, config, logger = None): GDAL(Source( attribution="Syndicat Départemental d'Energies de l'Yonne", fileUrl="https://trouver.ternum-bfc.fr/dataset/bd94f0e8-b76b-4135-828f-c84e9711e348/resource/e21e39bc-5b51-4c23-b737-1e698ad41d0c/download/pt_lum_89_support_poteau.zip"), - srid = 2154, zip="*.shp"), LoadGeomCentroid(select = {"natursupor": ["EP+BT", "EP+BT+FT"]} ), Conflate(