documentation sur la conversion de parking

This commit is contained in:
Tykayn 2024-10-03 15:55:12 +02:00 committed by tykayn
parent c19e27dd1a
commit de76b9ec38
5 changed files with 419 additions and 13 deletions

View File

@ -120,9 +120,9 @@ let output_folder = 'output';
*/ */
function writeFile(fileName: string, fileContent: any) { function writeFile(fileName: string, fileContent: any) {
let write_path = `./${output_folder}/${fileName}` let write_path = `./${output_folder}/${fileName}`
debugLog('write file ', outname + fileName, write_path) debugLog("write file \n", outname + fileName, write_path)
console.log('write file, write_path', fileName, write_path) console.log("-------- write file \n", fileName, "\n", write_path)
return fs.writeFile( return fs.writeFile(
write_path, write_path,
@ -161,7 +161,7 @@ function convertDataFromSource(sourceFilePath: string, mapping: any, pointCounte
if (data_transformed.features) { if (data_transformed.features) {
debugLog('data found, features:', data_transformed.features.length) console.log('data found in source, features:', data_transformed.features.length)
// find interesting list of points to use // find interesting list of points to use
let list_of_points: any = data_transformed.features let list_of_points: any = data_transformed.features
@ -243,6 +243,7 @@ function convertDataFromSource(sourceFilePath: string, mapping: any, pointCounte
// output new geojson // output new geojson
debugLog('convert : convertedGeoJson.features.length', converted_geo_json.features.length) debugLog('convert : convertedGeoJson.features.length', converted_geo_json.features.length)
// write file on disk // write file on disk
if (converted_geo_json.features.length) { if (converted_geo_json.features.length) {
@ -251,7 +252,8 @@ function convertDataFromSource(sourceFilePath: string, mapping: any, pointCounte
output_supplement = '_' + 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) console.log('converted features:', converted_geo_json.features.length)
console.log('diff: ', data_transformed.features.length - converted_geo_json.features.length)
debugLog('convert : write file ', fileNameToWrite) debugLog('convert : write file ', fileNameToWrite)
// console.log('mapping_engine.stats', Mapping_engine.stats) // console.log('mapping_engine.stats', Mapping_engine.stats)

24
docs/parking_vélo.md Normal file
View File

@ -0,0 +1,24 @@
# Parkings vélo et 2 roues
En exemple, l'open data des parkgin 2 roues (vélo et moto) d'Issy les Moulineaux.
Le jeu de données est publié sur la plateforme data de la ville et un convertisseur est proposé ici.
Il pourrait être étendu avec les autres moyens de transport en précisant des tags sur les abris, les trottinnettes, les emplacements de vélo cargo.
Le jeu de données présente environ 350 points géolocalisés avec des informations de situation, de nature, de capacité de parking et d'équipements voisins.
Pour convertir le jeu de données dans un schéma utilisable sur OSM, on écarte les informations de voisinage et on garde les informations de nature, la date de mise en service, le nombre de places dédiées vélo et moto, et l'identifiant donné par Issy dans un référentiel personnel en sous clé de `ref:FR:` inventé à l'occasion.
# procédure
Création d'un mapping, inclusion de la config dans le code de l'Engine afin de pouvoir choisir cette configuration en option de l'appel en ligne de commande à `convert_to_osm_tags.ts`.
Fichier de mapping: `mappings/converters/configIssy_OpenData_2roues.ts`
Fichier de données: `etalab_data/cyclabilité/issy_les_mx_cyclabilité.json`
Commande de conversion:
```bash
ts-node convert_to_osm_tags.ts --source=etalab_data/cyclabilité/issy_les_mx_cyclabilité.json --o
utput-file=issy_parking_2roues.json --engine-config=mappingIssy2Roues
```
Résultat: `output/my_converted_data_set__mappingIssy2Roues.json`
Conversion en fichier OSM avec le paquet python pip geojson2osm:
```shell
geojsontoosm output/my_converted_data_set__mappingIssy2Roues.json > osm_output/issy_parkings_2r.osm
```

View File

@ -5,7 +5,7 @@
*/ */
import MappingConfigType from "../mapping-config.type"; import MappingConfigType from "../mapping-config.type";
const MappingIssyOpenData: MappingConfigType = { const mappingIssy2Roues: MappingConfigType = {
config_name: "mappingIssy2Roues", config_name: "mappingIssy2Roues",
config_author: "tykayn <contact@cipherbliss.com>", config_author: "tykayn <contact@cipherbliss.com>",
default_properties_of_point: { default_properties_of_point: {
@ -15,29 +15,50 @@ const MappingIssyOpenData: MappingConfigType = {
geojson_path: "cyclabilité/issy_les_mx_cyclabilité.json", geojson_path: "cyclabilité/issy_les_mx_cyclabilité.json",
url: 'https://data.issy.com/explore/dataset/parkings-2-roues/table/?disjunctive.commune=&disjunctive.type_aire=&disjunctive.type_vehicule=&disjunctive.etat=&disjunctive.pres_abri=&disjunctive.acces_reglement=&disjunctive.position=&sort=nb_places' url: 'https://data.issy.com/explore/dataset/parkings-2-roues/table/?disjunctive.commune=&disjunctive.type_aire=&disjunctive.type_vehicule=&disjunctive.etat=&disjunctive.pres_abri=&disjunctive.acces_reglement=&disjunctive.position=&sort=nb_places'
}, },
/**
* select only certain points from the source
*/
filters: { filters: {
}, },
add_not_mapped_tags_too: false, add_not_mapped_tags_too: false,
boolean_keys: [ boolean_keys: [
"acces_reglement", "acces_reglement",
"abri",
], ],
tags: { tags: {
// ******* nombres // ******* nombres
nb_places: 'capacity', nb_places: 'capacity',
nb_pl_velo: 'capacity:bike', nb_pl_velo: 'capacity:bike',
nb_pl_moto: 'capacity:motorcycle', nb_pl_moto: 'capacity:motorcycle',
// ******* textes
annee_crea: 'start_date', annee_crea: 'start_date',
abri: 'abri', // ******* textes
type_aire: {
"remove_original_key": true,
"conditional_values": {
"Poteaux": {
"tags_to_add": [
{
"bicycle_parking": "bollard"
},
]
},
"Arceaux": {
"tags_to_add": [
{
"bicycle_parking": "bollard"
},
]
},
"Anneaux": {
"tags_to_add": [
{
"bicycle_parking": "stands"
},
]
},
}
},
// type_aire: 'nb_pl_moto', // Poteaux => bicycle_parking=bollard, Arceaux, Anneaux => bicycle_parking=stands, Marquage, null, Non renseigné, Range-vélos, Sans, Trottoir // type_aire: 'nb_pl_moto', // Poteaux => bicycle_parking=bollard, Arceaux, Anneaux => bicycle_parking=stands, Marquage, null, Non renseigné, Range-vélos, Sans, Trottoir
// id_r2roues: 'ref:FR:issy_r2roues', id_r2roues: 'ref:FR:r2roues_issy_les_mx',
// acces_reglement: 'access', // acces_reglement: 'access',
} }
} }
export default MappingIssyOpenData; export default mappingIssy2Roues;

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff