add osmose converter
This commit is contained in:
parent
c3a27d42b6
commit
87159cee39
@ -4,6 +4,7 @@
|
||||
import * as fs from 'fs'
|
||||
|
||||
import mappingConfigIRVE from './mappings/converters/configIRVE'
|
||||
import mappingConfigIRVEFromOsmose from './mappings/converters/configIRVE_osmose'
|
||||
import mappingConfigIRVE_simple from './mappings/converters/mappingConfigIRVE_simple'
|
||||
import mappingTest from './mappings/converters/configTest'
|
||||
import mapping_engine from './mappings/engine'
|
||||
@ -20,11 +21,10 @@ let use_mapping_engine = true
|
||||
let mini_arguments: any = minimist(process.argv.slice(2))
|
||||
|
||||
|
||||
// let sourceFilePathGeoJson = './etalab_data/small.json'
|
||||
// let sourceFilePathGeoJson = './output/my_converted_data_set_filtered_zipcode_91.json'
|
||||
// let sourceFilePathGeoJson = './output/my_converted_data_set_filtered_zipcode_91_small.json'
|
||||
let output_supplement = 'phones_france';
|
||||
let sourceFilePathGeoJson = './data_other/'+output_supplement+'.json'
|
||||
|
||||
|
||||
let sourceFilePathGeoJson = './data_other/' + output_supplement + '.json'
|
||||
// wip filter
|
||||
let filterOnBoundingBox = true
|
||||
filterOnBoundingBox = false
|
||||
@ -47,6 +47,10 @@ if (mini_arguments['department']) {
|
||||
filterDepartment = mini_arguments['department']
|
||||
enable_filter_on_department = true
|
||||
}
|
||||
let osmoseFormat = false;
|
||||
if (mini_arguments['osmose']) {
|
||||
osmoseFormat = mini_arguments['osmose']
|
||||
}
|
||||
if (mini_arguments['source']) {
|
||||
sourceFilePathGeoJson = mini_arguments['source']
|
||||
}
|
||||
@ -57,12 +61,18 @@ let Mapping_engine: any;
|
||||
let outname = 'my_data_set_'
|
||||
|
||||
if (mini_arguments['outname']) {
|
||||
output_supplement = mini_arguments['outname'];
|
||||
outname = mini_arguments['outname'];
|
||||
}
|
||||
if (mini_arguments['testingConfig']) {
|
||||
console.log('testing')
|
||||
Mapping_engine = new mapping_engine(mappingTest)
|
||||
} else {
|
||||
}
|
||||
else if(osmoseFormat) {
|
||||
console.log(' *********** we use osmose converter *********')
|
||||
Mapping_engine = new mapping_engine(mappingConfigIRVEFromOsmose)
|
||||
}
|
||||
else {
|
||||
Mapping_engine = new mapping_engine(mappingConfigIRVE)
|
||||
}
|
||||
|
||||
@ -102,7 +112,7 @@ let output_folder = 'output';
|
||||
*/
|
||||
function writeFile(fileName: string, fileContent: any) {
|
||||
let write_path = `./${output_folder}/${fileName}`
|
||||
debugLog('write file ', outname+fileName, write_path)
|
||||
debugLog('write file ', outname + fileName, write_path)
|
||||
|
||||
console.log('write file, write_path', fileName, write_path)
|
||||
|
||||
@ -235,10 +245,10 @@ function convertDataForIRVE(sourceFilePath: string, mapping: any, pointCounterMa
|
||||
if (converted_geo_json.features.length) {
|
||||
|
||||
|
||||
if(output_supplement){
|
||||
output_supplement = '_'+output_supplement;
|
||||
if (output_supplement) {
|
||||
output_supplement = '_' + output_supplement;
|
||||
}
|
||||
let fileNameToWrite = 'my_converted_data_set' + filteredName +output_supplement+ '.json'
|
||||
let fileNameToWrite = 'my_converted_data_set' + filteredName + output_supplement + '.json'
|
||||
console.log('features: ', converted_geo_json.features.length)
|
||||
debugLog('convert : write file ', fileNameToWrite)
|
||||
|
||||
|
13
makefile
13
makefile
@ -5,11 +5,12 @@ get_files:
|
||||
echo "fichiers récupérés"
|
||||
irve:
|
||||
# update the open data sources, convert them to osm file
|
||||
wget https://osmose.openstreetmap.fr/api/0.3/issues.geojson?full=true&status=open&item=8410&limit=20000 -O ./etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json
|
||||
wget https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26 -O ./etalab_data/irve_bornes_recharge/latest.json
|
||||
ts-node convert_to_osm_tags.ts --engine=true --source="etalab_data/irve_bornes_recharge/latest.json" --outname="_irve-latest-etalab_"
|
||||
geojson2osm "output/converted__irve-latest-etalab_.json" > "osm_output/bornes-irve-filetered_latest.osm"
|
||||
# wget https://osmose.openstreetmap.fr/api/0.3/issues.geojson?full=true&status=open&item=8410&limit=20000 -O ./etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json
|
||||
# wget https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26 -O ./etalab_data/irve_bornes_recharge/latest.json
|
||||
ts-node convert_to_osm_tags.ts --engine=true --source="etalab_data/irve_bornes_recharge/latest.json" --outname="_irve-latest-etalab"
|
||||
geojson2osm "output/converted__irve-latest-etalab.json" > "osm_output/bornes-irve-filetered_latest.osm"
|
||||
echo "you can open the irve converted osm file in JOSM : osm_output/bornes-irve-filetered_latest.osm "
|
||||
osmose_irve:
|
||||
ts-node convert_to_osm_tags.ts --engine=true --source="etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json" --outname="_irve-latest-osmose_"
|
||||
geojson2osm "output/converted__irve-latest-etalab_.json" > "osm_output/bornes-irve-filetered_latest.osm"
|
||||
ts-node convert_to_osm_tags.ts --osmose=true --engine=true --source="etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json" --outname="_irve-latest-osmose"
|
||||
geojson2osm "etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json" > "osm_output/osmose-item-irve-8411-intégrables.osm"
|
||||
geojson2osm "output/my_converted_data_set__irve-latest-osmose.json" > "osm_output/my_converted_data_set__irve-latest-osmose.osm"
|
||||
|
@ -22,12 +22,12 @@ const MappingIRVE: MappingConfigType = {
|
||||
enable_coordinates_filter: false,
|
||||
enable_properties_filter: true,
|
||||
// add only geojson points who are found having this regex in the zipcode properties
|
||||
properties: {
|
||||
consolidated_code_postal: '^[76|27]'
|
||||
},
|
||||
bounding_box: [
|
||||
{}
|
||||
]
|
||||
// properties: {
|
||||
// consolidated_code_postal: '^[76|27]'
|
||||
// },
|
||||
// bounding_box: [
|
||||
// {}
|
||||
// ]
|
||||
},
|
||||
add_not_mapped_tags_too: false,
|
||||
tags: {
|
||||
@ -114,7 +114,7 @@ const MappingIRVE: MappingConfigType = {
|
||||
convert_to_boolean_value: true,
|
||||
},
|
||||
accessibilite_pmr: {
|
||||
// key_converted: "wheelchair",
|
||||
key_converted: "wheelchair",
|
||||
// conditional_values: {
|
||||
// "Accessibilité inconnue": {
|
||||
// // value_converted: "",
|
||||
@ -137,31 +137,23 @@ const MappingIRVE: MappingConfigType = {
|
||||
value_converted: "yes"
|
||||
}
|
||||
},
|
||||
station_deux_roues: {
|
||||
remove_original_key: true,
|
||||
conditional_values: {
|
||||
// ajout de trois tags si la valeur est yes
|
||||
"yes": {
|
||||
tags_to_add: [
|
||||
{bicycle: "yes"},
|
||||
{scooter: "yes"},
|
||||
{motorcar: "no"},
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
// station_deux_roues: {
|
||||
// remove_original_key: true,
|
||||
// conditional_values: {
|
||||
// // ajout de trois tags si la valeur est yes
|
||||
// "yes": {
|
||||
// tags_to_add: [
|
||||
// {bicycle: "yes"},
|
||||
// {scooter: "yes"},
|
||||
// {motorcar: "no"},
|
||||
// ]
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
puissance_nominale: {
|
||||
key_converted: 'socket:max:output',
|
||||
socket_output_find_correspondances: true,
|
||||
// transform_function: (original_value:string) => {
|
||||
//
|
||||
// },
|
||||
}
|
||||
// TODO gestion des puissances de bornes
|
||||
// avec une fonction de transformation des valeurs
|
||||
// parmi le domaine du jeu de données
|
||||
// nécessite une clé conditionnelle à la valeur true d'autres clés converties.
|
||||
// c'est compliquay.
|
||||
|
||||
},
|
||||
}
|
||||
|
96
mappings/converters/configIRVE_osmose.ts
Normal file
96
mappings/converters/configIRVE_osmose.ts
Normal file
@ -0,0 +1,96 @@
|
||||
/**
|
||||
* plan de conversion des clés du jeu de données vers les tags OSM
|
||||
* détail dans le tableau
|
||||
* https://wiki.openstreetmap.org/wiki/France/data.gouv.fr/Bornes_de_Recharge_pour_V%C3%A9hicules_%C3%89lectriques
|
||||
*/
|
||||
import MappingConfigType from "../mapping-config.type";
|
||||
|
||||
const MappingIRVEOsmose: MappingConfigType = {
|
||||
config_name: "IRVE config for Osmose IRVE items",
|
||||
config_author: "tykayn <contact@cipherbliss.com>",
|
||||
default_properties_of_point: {
|
||||
'amenity': 'charging_station'
|
||||
},
|
||||
source: {
|
||||
geojson_path: "etalab_data/all.json",
|
||||
url: 'https://osmose.openstreetmap.fr/api/0.3/issues.geojson?full=true&status=open&item=8410&limit=20000'
|
||||
},
|
||||
/**
|
||||
* select only certain points from the source
|
||||
*/
|
||||
filters: {
|
||||
enable_coordinates_filter: false,
|
||||
enable_properties_filter: true,
|
||||
// add only geojson points who are found having this regex in the zipcode properties
|
||||
// properties: {
|
||||
// consolidated_code_postal: '^[76|27]'
|
||||
// },
|
||||
// bounding_box: [
|
||||
// {}
|
||||
// ]
|
||||
},
|
||||
add_not_mapped_tags_too: false,
|
||||
tags: {
|
||||
// ******* nombres
|
||||
// ******* textes
|
||||
amenity: 'amenity', // conserver le tag de base
|
||||
capacity: 'capacity', // conserver le tag de base
|
||||
'owner:ref:FR:SIREN': 'owner:ref:FR:SIREN',
|
||||
operator: 'operator',
|
||||
// telephone_operateur: {
|
||||
// key_converted: 'operator:phone',
|
||||
// convert_to_phone: true, // conversion en format international si possible
|
||||
// },
|
||||
'operator:phone': {
|
||||
key_converted: 'operator:phone',
|
||||
convert_to_phone: true, // conversion en format international si possible
|
||||
},
|
||||
'phone': {
|
||||
key_converted: 'phone',
|
||||
convert_to_phone: true, // conversion en format international si possible
|
||||
},
|
||||
'operator:email': 'operator:email', // ici, on souhaite convertir la clé contact_operateur=bidule en email=bidule
|
||||
'ref:EU:EVSE': 'ref:EU:EVSE',
|
||||
ref: 'ref',
|
||||
|
||||
/**
|
||||
* l'info de gratuité a été mal renseignée par les opérateurs, ils mettent TRÈS souvent que c'est gratuit alors que ce n'est pas vrai.
|
||||
*/
|
||||
fee: 'fee',
|
||||
'authentication': 'authentication',
|
||||
'authentication:none': 'authentication:none',
|
||||
// gratuit: {
|
||||
// key_converted: 'fee',
|
||||
// convert_to_boolean_value: true,
|
||||
// invert_boolean_value: true,
|
||||
// },
|
||||
// paiement_acte:
|
||||
// {
|
||||
// key_converted: 'authentication:none',
|
||||
// convert_to_boolean_value: true, // convertit en yes ou no
|
||||
// },
|
||||
reservation: 'reservation' ,
|
||||
note: 'note',
|
||||
fixme: 'fixme',
|
||||
name: 'name',
|
||||
network: 'network',
|
||||
// ******* dates
|
||||
start_date: 'start_date',
|
||||
// ******** champs booléens
|
||||
'socket:type2_cable':'socket:type2_cable' ,
|
||||
'socket:typee': 'socket:typee',
|
||||
'socket:type2': 'socket:type2',
|
||||
'socket:type2_combo': 'socket:type2_combo',
|
||||
'socket:chademo': 'socket:chademo',
|
||||
// ******** champs plus complexes
|
||||
opening_hours: 'opening_hours', // déjà au bon format
|
||||
'payment:credit_cards': 'payment:credit_cards',
|
||||
wheelchair: "wheelchair",
|
||||
bicycle: "bicycle",
|
||||
scooter: "scooter",
|
||||
motorcar: "motorcar",
|
||||
'socket:max:output': 'socket:max:output'
|
||||
|
||||
},
|
||||
}
|
||||
export default MappingIRVE;
|
@ -269,8 +269,11 @@ export default class {
|
||||
}
|
||||
|
||||
|
||||
// gestion des puissances de bornes
|
||||
// avec une fonction de transformation des valeurs
|
||||
// parmi le domaine du jeu de données
|
||||
// nécessite une clé conditionnelle à la valeur true d'autres clés converties.
|
||||
if (configObject.socket_output_find_correspondances) {
|
||||
// this.current_geojson_point
|
||||
// trouver à quel socket ça correspond
|
||||
// si y'a plusieurs sockets, utiliser socket:max:output
|
||||
let we_use_max_output = false;
|
||||
@ -317,7 +320,7 @@ export default class {
|
||||
// debug land
|
||||
if (has_prise_type_combo_ccs) {
|
||||
newProperties['socket:type_2_combo:output'] = out;
|
||||
// console.log('socket:type_2_combo:output', out, originalValue)
|
||||
this.stats.power_output++
|
||||
}
|
||||
|
||||
if (we_use_max_output) {
|
||||
@ -325,6 +328,7 @@ export default class {
|
||||
} else {
|
||||
if (has_prise_type_2 && prise_type_e) {
|
||||
newProperties['socket:type_2:output'] = out;
|
||||
this.stats.power_output++
|
||||
console.log('2 prises, attribuer la plus haute valeur à la type 2', out)
|
||||
}
|
||||
|
||||
@ -332,17 +336,25 @@ export default class {
|
||||
|
||||
if (has_prise_type_2) {
|
||||
newProperties['socket:type_2:output'] = out;
|
||||
// console.log('socket:type_2:output', out)
|
||||
newProperties['socket:type_2'] = 1;
|
||||
this.stats.power_output++
|
||||
|
||||
}
|
||||
if (has_prise_type_combo_ccs) {
|
||||
newProperties['socket:type2_combo:output'] = out;
|
||||
// console.log('socket:type_2_combo:output', out)
|
||||
newProperties['socket:type2_combo'] = 1;
|
||||
this.stats.power_output++
|
||||
|
||||
}
|
||||
if (prise_type_chademo) {
|
||||
newProperties['socket:chademo:output'] = out;
|
||||
newProperties['socket:chademo'] = 1;
|
||||
this.stats.power_output++
|
||||
}
|
||||
if (prise_type_e) {
|
||||
newProperties['socket:typee:output'] = out;
|
||||
newProperties['socket:typee'] = 1;
|
||||
this.stats.power_output++
|
||||
}
|
||||
} else {
|
||||
console.log('no sockets', this.current_geojson_point.properties.ref)
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
<osm version="0.6" generator="geojsontoosm"><node id="-1" lat="48.61478749999999" lon="2.1082129"><tag k="uuid" v="515d6fc7-bbd2-816d-436b-ede80201b4b3"/><tag k="item" v="8040"/><tag k="class" v="31"/><tag k="source_id" v="425090"/><tag k="elems" v="[object Object]"/><tag k="subtitle" v="arrêt IdFM de Launay-Maréchaux"/><tag k="country" v="france_ile_de_france_essonne"/><tag k="analyser" v="Merge_IdFM_Bus"/><tag k="title" v="Arrêt de bus from IdFM not integrated"/><tag k="level" v="3"/><tag k="timestamp" v="2023-08-10T02:16:52+00:00"/><tag k="menu" v="transport en commun"/><tag k="dat" v="-1"/></node><node id="-2" lat="48.61621830000001" lon="2.1277116000000005"><tag k="uuid" v="389a288b-749d-cc61-e735-18e4e3779791"/><tag k="item" v="8040"/><tag k="class" v="31"/><tag k="source_id" v="425090"/><tag k="elems" v="[object Object]"/><tag k="subtitle" v="arrêt IdFM de Gare autoroutière"/><tag k="country" v="france_ile_de_france_essonne"/><tag k="analyser" v="Merge_IdFM_Bus"/><tag k="title" v="Arrêt de bus from IdFM not integrated"/><tag k="level" v="3"/><tag k="timestamp" v="2023-08-10T02:16:52+00:00"/><tag k="menu" v="transport en commun"/><tag k="dat" v="-1"/></node><node id="-3" lat="48.61623530000001" lon="2.1275757000000004"><tag k="uuid" v="798a6cf4-bafd-471f-b616-1f143e0f1baf"/><tag k="item" v="8040"/><tag k="class" v="31"/><tag k="source_id" v="425090"/><tag k="elems" v="[object Object]"/><tag k="subtitle" v="arrêt IdFM de Gare autoroutière"/><tag k="country" v="france_ile_de_france_essonne"/><tag k="analyser" v="Merge_IdFM_Bus"/><tag k="title" v="Arrêt de bus from IdFM not integrated"/><tag k="level" v="3"/><tag k="timestamp" v="2023-08-10T02:16:52+00:00"/><tag k="menu" v="transport en commun"/><tag k="dat" v="-1"/></node></osm>
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
<osm version="0.6" generator="geojsontoosm"><node id="-1" lat="48.6579437" lon="2.2700457999999997"><tag k="amenity" v="charging_station"/></node></osm>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,304 +0,0 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<osm version='0.6' generator='JOSM'>
|
||||
<node id='-25362' action='modify' visible='true' lat='44.8588889' lon='-0.5843334'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='1c513398-b37a-aee2-8051-f8be4f0d9fbd' />
|
||||
</node>
|
||||
<node id='-25363' action='modify' visible='true' lat='44.8549445' lon='-0.6001111'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='c6601fa2-e950-f969-13c0-bc671c79385d' />
|
||||
</node>
|
||||
<node id='-25364' action='modify' visible='true' lat='47.448894' lon='-0.5628872'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='a31ce43d-02c7-65af-fb18-6620b14c7886' />
|
||||
</node>
|
||||
<node id='-25365' action='modify' visible='true' lat='44.8661389' lon='-0.5607778'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='d188d9a4-f9bf-347b-fcea-e7ab2fafa775' />
|
||||
</node>
|
||||
<node id='-25366' action='modify' visible='true' lat='45.6929897' lon='4.7867915'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Edouard Millaud - Vers la Maison Ricard' />
|
||||
<tag k='ref' v='a5d761e2-9e14-825b-80f8-084787cdcc08' />
|
||||
</node>
|
||||
<node id='-25367' action='modify' visible='true' lat='45.6986067' lon='4.794956'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='45 Avenue Georges Clemenceau - Parc Villa Chapuis' />
|
||||
<tag k='ref' v='ee76c558-d108-89a6-c79e-7feb16542c1f' />
|
||||
</node>
|
||||
<node id='-25368' action='modify' visible='true' lat='47.4808048' lon='-0.5641256'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='1e99edc0-eafb-ce16-e296-12ca3969fee2' />
|
||||
</node>
|
||||
<node id='-25369' action='modify' visible='true' lat='47.2434042' lon='-1.5693466'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='f832ae68-1a1a-4e49-4738-c601c7230815' />
|
||||
</node>
|
||||
<node id='-25370' action='modify' visible='true' lat='47.1693483' lon='-1.6200606'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='d6e4691d-a99d-3fa6-fb14-d702aff165fd' />
|
||||
</node>
|
||||
<node id='-25371' action='modify' visible='true' lat='47.2618953' lon='-1.5346044'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='83cebc90-64c4-27f7-fc16-dc91e4087191' />
|
||||
</node>
|
||||
<node id='-25372' action='modify' visible='true' lat='47.2177147' lon='-1.5624878'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='2a39782e-11eb-d6dc-8d86-7bb10e29bc5b' />
|
||||
</node>
|
||||
<node id='-25373' action='modify' visible='true' lat='47.1845762' lon='-1.5477551'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='4b07e006-530c-6170-ed45-e403f70eeefe' />
|
||||
</node>
|
||||
<node id='-25374' action='modify' visible='true' lat='47.1375981' lon='-1.722317'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='4fc8f6b4-c20c-e131-8b0c-67fdc5cd01bb' />
|
||||
</node>
|
||||
<node id='-25375' action='modify' visible='true' lat='45.7562399' lon='4.8171942'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Des Macchabées' />
|
||||
<tag k='ref' v='f6169a77-30e6-d011-4986-a86da09e0fe5' />
|
||||
</node>
|
||||
<node id='-25376' action='modify' visible='true' lat='44.8736389' lon='-0.5459167'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='9026fd4d-339a-3f7a-0b04-08ea4a256373' />
|
||||
</node>
|
||||
<node id='-25377' action='modify' visible='true' lat='43.6202834' lon='1.435289'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='e4b8451c-6c3d-f9e1-49f5-55712e4b1747' />
|
||||
</node>
|
||||
<node id='-25378' action='modify' visible='true' lat='43.5781322' lon='1.4408387'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='fb09f3ec-79f8-2ae5-ae49-121f407f0eed' />
|
||||
</node>
|
||||
<node id='-25379' action='modify' visible='true' lat='43.5919366' lon='1.4449299'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='ef2c65ea-4f16-89ea-0847-8f54b4acfe71' />
|
||||
</node>
|
||||
<node id='-25380' action='modify' visible='true' lat='43.6105256' lon='1.4398834'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='5bab5a87-6ad6-e8bd-8fb1-2cbd03f483d3' />
|
||||
</node>
|
||||
<node id='-25381' action='modify' visible='true' lat='45.7754463' lon='4.8531544'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée Du Parc Aux Daims - Parc aux daims - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='97fd53cf-2343-d76d-690f-7c4f3810d1f4' />
|
||||
</node>
|
||||
<node id='-25382' action='modify' visible='true' lat='43.6108007' lon='3.8764752'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='ac6f6541-718e-d59d-6606-6c07dee92296' />
|
||||
</node>
|
||||
<node id='-25383' action='modify' visible='true' lat='47.1915185' lon='-1.5695263'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='3c5288ad-22e4-20cc-9aaf-815e32b53493' />
|
||||
</node>
|
||||
<node id='-25384' action='modify' visible='true' lat='47.1769998' lon='-1.5930762'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='c82970ee-00dc-7780-1fa1-7cef2527b612' />
|
||||
</node>
|
||||
<node id='-25385' action='modify' visible='true' lat='47.1763905' lon='-1.6241981'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='a595814f-560a-b16d-9001-4650f5459573' />
|
||||
</node>
|
||||
<node id='-25386' action='modify' visible='true' lat='47.2228205' lon='-1.5277523'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='9f35ed29-c2f8-d0cf-5368-5532ba47002a' />
|
||||
</node>
|
||||
<node id='-25387' action='modify' visible='true' lat='47.2424384' lon='-1.5670145'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='8f678147-05eb-7656-a9b4-37411ab788a1' />
|
||||
</node>
|
||||
<node id='-25388' action='modify' visible='true' lat='47.1857527' lon='-1.7260937'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='a1240c09-b471-cc5e-6043-c18ecacb4071' />
|
||||
</node>
|
||||
<node id='-25389' action='modify' visible='true' lat='47.1709208' lon='-1.5108851'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='1d03e486-314f-395b-29a5-6116ab39f6fd' />
|
||||
</node>
|
||||
<node id='-25390' action='modify' visible='true' lat='47.4598889' lon='-0.5208869'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='28bb6923-d46b-b6ad-f99c-de0f6b5fe531' />
|
||||
</node>
|
||||
<node id='-25391' action='modify' visible='true' lat='47.4514122' lon='-0.5379183'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='94c28bf6-8ce8-5671-bdf6-b97b61815470' />
|
||||
</node>
|
||||
<node id='-25392' action='modify' visible='true' lat='45.7813219' lon='4.8506404'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée Du Lac - Roseraie - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='7aacfcea-a039-e92b-5840-34e9a2fd2ac6' />
|
||||
</node>
|
||||
<node id='-25393' action='modify' visible='true' lat='45.8778336' lon='4.8408109'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Place Du 8 Mai' />
|
||||
<tag k='ref' v='071d4f7f-44c5-63e6-d88c-818a01d0f74c' />
|
||||
</node>
|
||||
<node id='-25394' action='modify' visible='true' lat='45.683623' lon='4.7891905'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='80 Route De Vourles - Dans les vestiaires' />
|
||||
<tag k='ref' v='c040a346-7e72-5ab3-6359-a69f9bd6e652' />
|
||||
</node>
|
||||
<node id='-25395' action='modify' visible='true' lat='45.7037785' lon='4.8723682'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Danielle Casanova - Entre square gabriel péri et rue danielle casanova' />
|
||||
<tag k='ref' v='29e31c67-3b9f-c032-0cef-2160d76557b0' />
|
||||
</node>
|
||||
<node id='-25396' action='modify' visible='true' lat='45.7771205' lon='4.7948299'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='249 Boulevard De La Duchère - ouest' />
|
||||
<tag k='ref' v='9f5243ee-df9b-3c09-c215-77f80f0f4693' />
|
||||
</node>
|
||||
<node id='-25397' action='modify' visible='true' lat='45.7786941' lon='4.8520741'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée Achille Lignon - côté Parc Tête d'Or - Opens: 05:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='118beacd-6f0c-681d-f79f-e923bf4ed6b1' />
|
||||
</node>
|
||||
<node id='-25398' action='modify' visible='true' lat='45.7615321' lon='4.8748475'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Jardin Des Tout Petits Adolphe Lafont' />
|
||||
<tag k='ref' v='57e04e41-d750-59e4-be00-4a236fcf8b3a' />
|
||||
</node>
|
||||
<node id='-25399' action='modify' visible='true' lat='43.579335' lon='1.483536'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='7e062930-2580-8a57-3961-491a189d653e' />
|
||||
</node>
|
||||
<node id='-25400' action='modify' visible='true' lat='45.7671536' lon='4.833732'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='20 Place Des Terreaux - dans cour intérieure - Opens: 10:00 to 18:00 (Monday, Tuesday, Wednesday, Thursday) | 10:30 to 18:00 (Friday) | 10:00 to 18:00 (Saturday, Sunday)' />
|
||||
<tag k='ref' v='a7c71b8f-97dc-e061-583c-aba8c691e664' />
|
||||
</node>
|
||||
<node id='-25401' action='modify' visible='true' lat='45.8051889' lon='4.7985096'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Du Commandant Israël - A côté du cimetière' />
|
||||
<tag k='ref' v='a0918ad5-4f46-9866-2846-b9a5629f7199' />
|
||||
</node>
|
||||
<node id='-25402' action='modify' visible='true' lat='45.7942536' lon='4.7894149'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue De La Mairie - à côté de la place de la Liberté' />
|
||||
<tag k='ref' v='7b3062e4-b690-f795-afe9-37f5f33f8179' />
|
||||
</node>
|
||||
<node id='-25403' action='modify' visible='true' lat='45.742916' lon='4.8150086'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Place De La Capitainerie - Opens: 05:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='9a85035d-120b-82ef-96de-09246a0c175d' />
|
||||
</node>
|
||||
<node id='-25404' action='modify' visible='true' lat='45.7786066' lon='4.8585524'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée Du Chemin De Fer - Chalet des gardes - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='8cd4672b-bd84-9c23-42ee-a012bb807906' />
|
||||
</node>
|
||||
<node id='-25405' action='modify' visible='true' lat='45.7556361' lon='4.7897136'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Joliot Curie' />
|
||||
<tag k='ref' v='105b87f0-6321-65ce-1f1f-2996b8cac793' />
|
||||
</node>
|
||||
<node id='-25406' action='modify' visible='true' lat='45.8759325' lon='4.8383769'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='2811 Quai Pasteur - Vers pont de neuville' />
|
||||
<tag k='ref' v='77c3b427-6a4a-74c4-2aa3-c1ca5c375b6c' />
|
||||
</node>
|
||||
<node id='-25407' action='modify' visible='true' lat='45.7780764' lon='4.8233359'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Henri Gorjus - Opens: 08:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='67fb5b67-4eb2-19ba-30a8-3ba15334b096' />
|
||||
</node>
|
||||
<node id='-25408' action='modify' visible='true' lat='45.757464' lon='4.8907961'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Face Au 31 Avenue Général Leclerc - Opens: 06:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='d9f9a023-ac2d-446c-2c98-e0049d11d79f' />
|
||||
</node>
|
||||
<node id='-25409' action='modify' visible='true' lat='45.8023983' lon='4.8517047'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Avenue Louis Dufour - Cimetière' />
|
||||
<tag k='ref' v='af0884b3-1ae0-e485-6c10-17a8e9645a0f' />
|
||||
</node>
|
||||
<node id='-25410' action='modify' visible='true' lat='45.7535099' lon='4.849836'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='7 Place Aristide Briand - en face - Opens: 06:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='6a9b1744-0d7e-470e-a54e-291c1a8edbc0' />
|
||||
</node>
|
||||
<node id='-25411' action='modify' visible='true' lat='45.7461219' lon='4.8509877'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='2 Ruelle Du Grand Casernement - doûves - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='66ed7ab3-fdd3-624f-e35b-ac87dd1b81fd' />
|
||||
</node>
|
||||
<node id='-25412' action='modify' visible='true' lat='45.6840537' lon='4.785712'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée De L’équinoxe' />
|
||||
<tag k='ref' v='33df5687-b901-0700-4a3a-859d68bb896d' />
|
||||
</node>
|
||||
<node id='-25413' action='modify' visible='true' lat='44.8271944' lon='-0.5579723'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='ebcb4e86-b1b5-88fe-0066-c824563ed9fc' />
|
||||
</node>
|
||||
<node id='-25414' action='modify' visible='true' lat='43.6517002' lon='1.4382583'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='2032afd0-7fe3-6325-9dab-c5119415906d' />
|
||||
</node>
|
||||
<node id='-25415' action='modify' visible='true' lat='43.6084695' lon='3.8795856'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='60e5db64-4974-e268-6b93-2cdf4f5a7485' />
|
||||
</node>
|
||||
<node id='-25416' action='modify' visible='true' lat='43.6285099' lon='3.817422'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='75d377f5-ee2a-bb16-a626-e7a541f76808' />
|
||||
</node>
|
||||
<node id='-25417' action='modify' visible='true' lat='47.4594562' lon='-0.5369829'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='745b6237-6c33-54ba-1c71-8d021225def3' />
|
||||
</node>
|
||||
<node id='-25418' action='modify' visible='true' lat='47.4746977' lon='-0.585873'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='9fc09c55-d958-3c1a-b9b0-3cb58ab5901f' />
|
||||
</node>
|
||||
<node id='-25419' action='modify' visible='true' lat='47.4728871' lon='-0.5545613'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='ref' v='a01ad7a4-46ba-814a-5875-ce37ca639519' />
|
||||
</node>
|
||||
<node id='-25420' action='modify' visible='true' lat='45.6898564' lon='4.7867978'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='179 Avenue De Gadagne - Dans les vestiaires' />
|
||||
<tag k='ref' v='c7eed8a6-71fe-5843-ea73-8039e932eb47' />
|
||||
</node>
|
||||
<node id='-25421' action='modify' visible='true' lat='45.787886' lon='4.9181461'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Avenue Du 8 Mai 1945 - Opens: 09:00 to 18:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday) | 09:00 to 20:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday) | 09:00 to 20:00 (, , , , , , , , , , , , , , , , , , , , , , , ) | 09:00 to 18:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='19369769-d365-bfe6-3c49-38f0a52ca419' />
|
||||
</node>
|
||||
<node id='-25422' action='modify' visible='true' lat='45.6983773' lon='4.8135358'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Chemin Charmet' />
|
||||
<tag k='ref' v='9f1022e1-e09b-a8f0-dd46-16122d0359ff' />
|
||||
</node>
|
||||
<node id='-25423' action='modify' visible='true' lat='45.797594' lon='4.779185'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='12 Chemin Du Coulouvrier' />
|
||||
<tag k='ref' v='56f83393-7a61-fa76-11b7-6b5768a75a62' />
|
||||
</node>
|
||||
<node id='-25424' action='modify' visible='true' lat='45.780005' lon='4.8580574'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Allée Des Ébats - Pelouse des ébats - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='d26e73c3-f033-0b04-3fc4-9ba016964e16' />
|
||||
</node>
|
||||
<node id='-25425' action='modify' visible='true' lat='45.7260336' lon='4.8250354'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='3 Allée Pierre De Coubertin - vers locomotive - Opens: 06:30 to 22:30 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='680a7b9f-9495-9614-2ba4-eea51852c925' />
|
||||
</node>
|
||||
<node id='-25426' action='modify' visible='true' lat='45.6492752' lon='4.794444'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Place De La Mairie' />
|
||||
<tag k='ref' v='05aeb2ce-5bb7-5cd3-cf96-765a19ef94e2' />
|
||||
</node>
|
||||
<node id='-25427' action='modify' visible='true' lat='45.7767311' lon='4.8161598'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='Rue Chazière - Opens: 08:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='6c753e31-4eb1-9330-324a-16a4f52b9461' />
|
||||
</node>
|
||||
<node id='-25428' action='modify' visible='true' lat='45.7886563' lon='4.8012736'>
|
||||
<tag k='amenity' v='toilets' />
|
||||
<tag k='description' v='40 Boulevard De Balmont - Marché de la Duchère - Opens: 05:00 to 22:00 (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)' />
|
||||
<tag k='ref' v='f26e3f48-5069-694d-32f8-d3f8677d001f' />
|
||||
</node>
|
||||
</osm>
|
Loading…
Reference in New Issue
Block a user