refacto extract function, object for allowed configs

This commit is contained in:
Tykayn 2024-10-27 09:37:52 +01:00 committed by tykayn
parent 1920449212
commit 7ceafa92d2
13 changed files with 2628 additions and 167 deletions

View File

@ -20,17 +20,30 @@ import MappingMuseums from "./mappings/converters/configMuseums";
import MappingRouenPAV from "./mappings/converters/configRouen_PAV"; import MappingRouenPAV from "./mappings/converters/configRouen_PAV";
const limitWarningPercentageChangeInPoints = 5; // show a warning when more than N percent of the number of points changed const limitWarningPercentageChangeInPoints = 5; // show a warning when more than N percent of the number of points changed
const allowed_configs = [
'mappingIssy2Roues', 'mappingConfigIRVE', 'mappingConfigIRVEFromOsmose', const allowed_configs = {
'mappingConfigIRVE_simple', 'mappingTest', 'ConfigIRVE', mappingIssy2Roues,
'mappingRouenParkingVelos', 'mappingFINESS', 'MappingArbresIssy', mappingConfigIRVE,
'MappingArbres92', 'MappingMuseums', 'MappingRouenPAV', 'MappingAskAngela', 'MappingPlanningFamlial','MappingSurveillanceRouen' mappingConfigIRVEFromOsmose,
]; mappingConfigIRVE_simple,
mappingTest,
ConfigIRVE,
mappingRouenParkingVelos,
mappingFINESS,
MappingArbresIssy,
MappingArbres92,
MappingMuseums,
MappingRouenPAV,
MappingAskAngela,
MappingPlanningFamlial,
MappingSurveillanceRouen
};
const minimist = require('minimist'); const minimist = require('minimist');
import MappingAskAngela from "./mappings/converters/configAskAngela"; import MappingAskAngela from "./mappings/converters/configAskAngela";
import MappingPlanningFamlial from "./mappings/converters/configPlanningFamilial"; import MappingPlanningFamlial from "./mappings/converters/configPlanningFamilial";
import MappingSurveillanceRouen from "./mappings/converters/configSurveillance"; import MappingSurveillanceRouen from "./mappings/converters/configSurveillance";
import engine from "./mappings/engine";
const debugLog = utils.debugLog; const debugLog = utils.debugLog;
@ -424,43 +437,9 @@ function setMappingConfigFromName(engine_conf_choice: string) {
Mapping_engine.setConfig(mappingConfigIRVEFromOsmose) Mapping_engine.setConfig(mappingConfigIRVEFromOsmose)
} else { } else {
// choisir la config IRVE par défaut si aucune option de config de mapping n'est choisie en CLI
if (engine_conf_choice !== default_engine_conf_choice && Object.keys(allowed_configs).indexOf("mappingIssy2Roues") !== -1) {
if (engine_conf_choice !== default_engine_conf_choice && allowed_configs.indexOf("mappingIssy2Roues") !== -1) { Mapping_engine.setConfig(allowed_configs[engine_conf_choice])
// ['mappingIssy2Roues', 'mappingConfigIRVE', 'mappingConfigIRVEFromOsmose', 'mappingConfigIRVE_simple', 'mappingTest', 'ConfigIRVE']
if (engine_conf_choice == 'mappingIssy2Roues') {
console.log('mappingIssy2Roues', mappingIssy2Roues)
Mapping_engine.setConfig(mappingIssy2Roues)
} else if (engine_conf_choice == 'mappingConfigIRVE') {
Mapping_engine.setConfig(mappingConfigIRVE)
} else if (engine_conf_choice == 'mappingConfigIRVEFromOsmose') {
Mapping_engine.setConfig(mappingConfigIRVEFromOsmose)
} else if (engine_conf_choice == 'mappingConfigIRVE_simple') {
Mapping_engine.setConfig(mappingConfigIRVE_simple)
} else if (engine_conf_choice == 'mappingTest') {
Mapping_engine.setConfig(mappingTest)
} else if (engine_conf_choice == 'ConfigIRVE') {
Mapping_engine.setConfig(ConfigIRVE)
} else if (engine_conf_choice == 'mappingRouenParkingVelos') {
Mapping_engine.setConfig(mappingRouenParkingVelos)
} else if (engine_conf_choice == 'MappingArbresIssy') {
Mapping_engine.setConfig(MappingArbresIssy)
} else if (engine_conf_choice == 'mappingFINESS') {
Mapping_engine.setConfig(mappingFINESS)
} else if (engine_conf_choice == 'MappingArbres92') {
Mapping_engine.setConfig(MappingArbres92)
} else if (engine_conf_choice == 'MappingMuseums') {
Mapping_engine.setConfig(MappingMuseums)
} else if (engine_conf_choice == 'MappingRouenPAV') {
Mapping_engine.setConfig(MappingRouenPAV)
} else if (engine_conf_choice == 'MappingAskAngela') {
Mapping_engine.setConfig(MappingAskAngela)
}else if (engine_conf_choice == 'MappingPlanningFamlial') {
Mapping_engine.setConfig(MappingPlanningFamlial)
}else if (engine_conf_choice == 'MappingSurveillanceRouen') {
Mapping_engine.setConfig(MappingSurveillanceRouen)
}
} else { } else {
console.error('mauvais paramètre de Mapping_engine: '+engine_conf_choice, '.\n Veuillez en sélectionner un parmi ceux autorisés avec l option --engine-config=MaConfigQuiVaBien parmi ceux ci :', allowed_configs) console.error('mauvais paramètre de Mapping_engine: '+engine_conf_choice, '.\n Veuillez en sélectionner un parmi ceux autorisés avec l option --engine-config=MaConfigQuiVaBien parmi ceux ci :', allowed_configs)
return return

View File

@ -1,39 +1,11 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des parking à vélo cargo
# cargo_bike=* # cargo_bike=*
# en France # en France
echo -e "\n récupération de données depuis OpenStreetMap \n"
url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;nwr["cargo_bike"](area.searchArea);out+geom;' url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;nwr["cargo_bike"](area.searchArea);out+geom;'
export_file="cargo_bike_zone_france_from_openstreetmap" export_file="cargo_bike_zone_france_from_openstreetmap"
source ../../update_scripts/functions.sh
echo -e "\n récupération de données depuis OpenStreetMap \n" extract_from_osm $url $export_file
echo " export osm de: $export_file"
# Télécharger le fichier GeoJSON
curl -X GET -o "$export_file.json" -g $url
echo -e "\n Curl OK \n"
date
echo -e "nombre de points extraits depuis overpass turbo :"
jq '.elements | length' "$export_file.json"
# on garde la version OSM brute des données extraites
cp "$export_file.json" "../../osm_output/$export_file.osm.json"
# on convertir en geojson
osm2geojson -q -i 2 --reader json "$export_file.json" "$export_file.geojson" -f
echo -e "\n -> fichier converti: $export_file.geojson "
# on déplace dans le dossier osm_output les versions brutes et converties
mv "$export_file.geojson" "../../osm_output/$export_file.geojson"
echo " -> fichier placé dans ../../osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 geojson_to_csv.py "../../osm_output/$export_file.geojson" -o "../../osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "../../osm_output/$export_file.geojson"

View File

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des points
# tout système produisant de l'énergie, pas seulement élec. # des espaces de coworking
# en France # en France
echo -e "\n récupération de données depuis OpenStreetMap \n" echo -e "\n récupération de données depuis OpenStreetMap \n"
@ -9,30 +9,5 @@ echo -e "\n récupération de données depuis OpenStreetMap \n"
url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;node["amenity"="coworking_space"](area.searchArea);out+geom;' url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;node["amenity"="coworking_space"](area.searchArea);out+geom;'
export_file="coworking_zone_france_from_openstreetmap" export_file="coworking_zone_france_from_openstreetmap"
source ../../update_scripts/functions.sh
echo -e "\n récupération de données depuis OpenStreetMap \n" extract_from_osm $url $export_file
echo " export osm de: $export_file"
# Télécharger le fichier GeoJSON
curl -X GET -o "$export_file.json" -g $url
echo -e "\n Curl OK \n"
date
echo -e "nombre de points extraits depuis overpass turbo :"
jq '.elements | length' "$export_file.json"
# on garde la version OSM brute des données extraites
cp "$export_file.json" "../../osm_output/$export_file.osm.json"
# on convertir en geojson
osm2geojson -q -i 2 --reader json "$export_file.json" "$export_file.geojson" -f
echo -e "\n -> fichier converti: $export_file.geojson "
# on déplace dans le dossier osm_output les versions brutes et converties
mv "$export_file.geojson" "../../osm_output/$export_file.geojson"
echo " -> fichier placé dans ../../osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 geojson_to_csv.py "../../osm_output/$export_file.geojson" -o "../../osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "../../osm_output/$export_file.geojson"

View File

@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des stations et bornes de recharges
# "amenity"="charging_station" # "amenity"="charging_station"
# pour le monde entier # en France
echo -e "\n récupération de données depuis OpenStreetMap \n" echo -e "\n récupération de données depuis OpenStreetMap \n"
url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;node["amenity"="charging_station"](area.searchArea);out+geom;' url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:300];area(id:3602202162)->.searchArea;nwr["amenity"="charging_station"](area.searchArea);out+geom;'
export_file="irve_zone_france_from_openstreetmap" export_file="irve_zone_france_from_openstreetmap"

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des musées en France
# "man_made"="surveillance" en France
echo -e "\n récupération de données depuis OpenStreetMap \n" echo -e "\n récupération de données depuis OpenStreetMap \n"

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des points d'apport volontaire
# amenity=recycling # amenity=recycling
# en France # en France

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des points de planning familial du monde entier
# "harassment_prevention=ask_angela"
# pour le monde entier # pour le monde entier
@ -10,30 +9,6 @@ url='https://overpass-api.de/api/interpreter?data=[out:json][timeout:25];nwr["he
export_file="planning_familial_points_from_openstreetmap" export_file="planning_familial_points_from_openstreetmap"
echo -e "\n récupération de données depuis OpenStreetMap \n"
echo " export osm de: $export_file"
# Télécharger le fichier GeoJSON
curl -X GET -o "$export_file.json" -g $url
echo -e "\n Curl OK \n" source ../../update_scripts/functions.sh
date extract_from_osm $url $export_file
echo -e "nombre de points extraits depuis overpass turbo :"
jq '.elements | length' "$export_file.json"
# on garde la version OSM brute des données extraites
cp "$export_file.json" "../../osm_output/$export_file.osm.json"
# on convertir en geojson
osm2geojson -q -i 2 --reader json "$export_file.json" "$export_file.geojson" -f
echo -e "\n -> fichier converti: $export_file.geojson "
# on déplace dans le dossier osm_output les versions brutes et converties
mv "$export_file.geojson" "../../osm_output/$export_file.geojson"
echo " -> fichier placé dans ../../osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 geojson_to_csv.py "../../osm_output/$export_file.geojson" -o "../../osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "../../osm_output/$export_file.geojson"

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des ponts qui ont un nom
# "harassment_prevention=ask_angela"
# pour le monde entier # pour le monde entier

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des restaurants
# "amenity"="restaurant" en France # "amenity"="restaurant" en France
echo -e "\n récupération de données depuis OpenStreetMap \n" echo -e "\n récupération de données depuis OpenStreetMap \n"

View File

@ -1,38 +1,12 @@
#!/bin/bash #!/bin/bash
# export depuis OSM des points # export depuis OSM des caméras de surveillance
# "man_made"="surveillance" # "man_made"="surveillance"
# en France # en France
echo -e "\n récupération de données depuis OpenStreetMap \n"
url='https://overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D%5Btimeout%3A300%5D%3B%0Aarea(id%3A3602202162)-%3E.searchArea%3B%0Anode%5B%22man_made%22%3D%22surveillance%22%5D(area.searchArea)%3B%0Aout+geom%3B' url='https://overpass-api.de/api/interpreter?data=%5Bout%3Ajson%5D%5Btimeout%3A300%5D%3B%0Aarea(id%3A3602202162)-%3E.searchArea%3B%0Anode%5B%22man_made%22%3D%22surveillance%22%5D(area.searchArea)%3B%0Aout+geom%3B'
export_file="surveillance_zone_france_from_openstreetmap" export_file="surveillance_zone_france_from_openstreetmap"
echo -e "\n récupération de données depuis OpenStreetMap \n" source ../../update_scripts/functions.sh
echo " export osm de: $export_file" extract_from_osm $url $export_file
# Télécharger le fichier GeoJSON
curl -X GET -o "$export_file.json" -g $url
echo -e "\n Curl OK \n"
date
echo -e "nombre de points extraits depuis overpass turbo :"
jq '.elements | length' "$export_file.json"
# on garde la version OSM brute des données extraites
cp "$export_file.json" "../../osm_output/$export_file.osm.json"
# on convertir en geojson
osm2geojson -q -i 2 --reader json "$export_file.json" "$export_file.geojson" -f
echo -e "\n -> fichier converti: $export_file.geojson "
# on déplace dans le dossier osm_output les versions brutes et converties
mv "$export_file.geojson" "../../osm_output/$export_file.geojson"
echo " -> fichier placé dans ../../osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 geojson_to_csv.py "../../osm_output/$export_file.geojson" -o "../../osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "../../osm_output/$export_file.geojson"

View File

@ -0,0 +1,43 @@
#!/usr/bin/bash
# fonction d'extraction d'une requête overpass et conversion du fichier de sortie
extract_from_osm(){
overpass_query=$1
file_name=$2
echo -e "extraction de $file_name"
echo -e "requête: \n $overpass_query"
echo -e "\n récupération de données depuis OpenStreetMap \n"
echo " export osm de: $export_file"
# Télécharger le fichier GeoJSON
curl -X GET -o "$export_file.json" -g $url
echo -e "\n Curl OK \n"
date
echo -e "nombre de points extraits depuis overpass turbo :"
jq '.elements | length' "$export_file.json"
# on garde la version OSM brute des données extraites
cp "$export_file.json" "../osm_output/$export_file.osm.json"
# on convertir en geojson
osm2geojson -q -i 2 --reader json "$export_file.json" "$export_file.geojson" -f
echo -e "\n -> fichier converti: $export_file.geojson "
# on déplace dans le dossier osm_output les versions brutes et converties
mv "$export_file.geojson" "../osm_output/$export_file.geojson"
echo " -> fichier placé dans ../osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 geojson_to_csv.py "../osm_output/$export_file.geojson" -o "../osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "../osm_output/$export_file.geojson"
}
echo "fonction d'extraction depuis OSM chargée"
export extract_from_osm

View File

@ -0,0 +1,62 @@
import requests
import json
import os
def mettre_a_jour_jeu_de_donnees(dataset, headers):
# Mettre à jour le jeu de données
url = f"https://www.data.gouv.fr/api/1/datasets/{dataset['id']}"
response = requests.put(url, headers=headers, data=json.dumps(dataset))
# Vérifier si la mise à jour a réussi
if response.status_code == 200:
print(f"Le jeu de données '{dataset['title']}' a été mis à jour avec succès.")
else:
print(f"Une erreur est survenue : {response.status_code}")
# Mettre à jour le fichier CSV associé au jeu de données
resource_url = f"https://www.data.gouv.fr/api/1/datasets/{dataset['id']}/resources"
files = {"file": open(dataset["resource_url"], "rb")}
response = requests.post(resource_url, headers=headers, data=json.dumps({"title": dataset["resource_title"], "description": dataset["resource_description"], "url": dataset["resource_url"]}), files=files)
# Vérifier si la mise à jour a réussi
if response.status_code == 201:
print(f"Le fichier CSV '{dataset['resource_title']}' a été mis à jour avec succès.")
else:
print(f"Une erreur est survenue : {response.status_code}")
# Remplir les variables suivantes avec vos informations de connexion
username = "votre_nom_d'utilisateur"
password = "votre_mot_de_passe"
token = "votre_token_d'accès"
# Créer l'en-tête de la requête avec le token d'accès
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
}
# Configuration des jeux de données à mettre à jour
datasets = [
{
"id": "identifiant_de_votre_premier_jeu_de_données",
"title": "Nouveau titre de votre premier jeu de données",
"description": "Nouvelle description de votre premier jeu de données",
"categories": ["transport", "open-data"],
"resource_title": "Nouveau titre du premier fichier CSV",
"resource_description": "Description du premier fichier CSV",
"resource_url": "chemin/vers/votre/premier/fichier.csv"
},
{
"id": "identifiant_de_votre_deuxième_jeu_de_données",
"title": "Nouveau titre de votre deuxième jeu de données",
"description": "Nouvelle description de votre deuxième jeu de données",
"categories": ["environnement", "open-data"],
"resource_title": "Nouveau titre du deuxième fichier CSV",
"resource_description": "Description du deuxième fichier CSV",
"resource_url": "chemin/vers/votre/deuxième/fichier.csv"
}
]
# Itérer sur les jeux de données et les mettre à jour
for dataset in datasets:
mettre_a_jour_jeu_de_donnees(dataset, headers)