This commit is contained in:
Tykayn 2025-01-15 22:20:14 +01:00 committed by tykayn
commit 996524bc6d
107 changed files with 1295536 additions and 0 deletions

View file

@ -0,0 +1,15 @@
#!/bin/bash
# convertir tous les jeux de données présents pour AskAngela
# toulouse
ts-node convert_to_osm_tags.ts --source=etalab_data/askangela/toulouse_askangela.json --output-file=toulouse_askangela.json --engine-config=MappingAskAngela
#bordeaux
ts-node convert_to_osm_tags.ts --source=etalab_data/askangela/bordeaux_askangela.json --output-file=bordeaux_askangela.json --engine-config=MappingAskAngela
# poitiers
ts-node convert_to_osm_tags.ts --source=etalab_data/askangela/poitiers_askangela.json --output-file=poitiers_askangela.json --engine-config=MappingAskAngela
# lyon
ts-node convert_to_osm_tags.ts --source=etalab_data/askangela/lyon_askangela.json --output-file=lyon_askangela.json --engine-config=MappingAskAngela

35
update_scripts/convert_data.sh Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
# get the updated geojson
#wget https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26 -P ./etalab_data -O ./etalab_data/all.json
#wget https://www.data.gouv.fr/fr/datasets/r/8d9398ae-3037-48b2-be19-412c24561fbb -P ./etalab_data -O ./etalab_data/all.csv
# https://www.data.gouv.fr/fr/datasets/r/8d9398ae-3037-48b2-be19-412c24561fbb pour le jeu de données irve schema v2, non utilisé dans ce script
# filter its tags
echo "refresh de la data"
echo " ce script utilise plusieurs dépendances: nvm, pnpm, geojsontoosm "
echo " c'est parti "
nvm use stable
pnpm i
pnpm start
# convert the new geojson to osm file
geojsontoosm etalab_data/all.json > osm_output/bornes-irve-all-from-etalab-opendata.osm
geojsontoosm output/my_converted_data_set_filtered_zipcode_91.json > osm_output/bornes-irve-filetered-from-etalab-opendata.osm
echo ' conversion faite.'
du -sch osm_output/bornes-irve-filetered-from-etalab-opendata.osm
echo ""
echo " vous pouvez ouvrir JOSM et mettre dedans les fichiers osm pour tenter une conflation
osm_output/bornes-irve-filetered-from-etalab-opendata.osm
osm_output/bornes-présentes-dans-osm.osm
pour mettre en valeur les données manquantes, vous pouvez sélectionner toutes les données existantes et rendre actif le calque de nouvelles données.
Cela fera des points de couleur sur fond de ronds plus gros en gris. Les points de couleur non entourés sur le fond de ronds plus gros sont à importer.
vérifiez ensuite les données du fichier osm en cliquant sur un point du calque bornes-irve-filetered-from-etalab-opendata.osm
"
# done

22
update_scripts/convert_irve.sh Executable file
View file

@ -0,0 +1,22 @@
#!/bin/bash
echo "convertir les fichiers de données depuis etalab_data/irve_bornes_recharge en fichier osm "
overpass_website="https://overpass-api.de/api/interpreter"
# personnaliser les scripts:
# aire Essonne: id 3600007401
# aire IDF: id 3600008649
# aire FR: id 3602202162
output_file_name='irve_osm_latest'
echo " - mapping du fichier IRVE publié par Etalab "
ts-node convert_to_osm_tags.ts --source="etalab_data/irve_bornes_recharge/latest.json" --output-file="_irve-latest-etalab.geojson" --engine-config=mappingConfigIRVE
echo " - mapping des analyses Osmose sur l'item 8411 (charging_station)"
ts-node convert_to_osm_tags.ts --osmose=true --source="etalab_data/irve_bornes_recharge/osmose-item-irve-8411-intégrables.json" --output-file="irve-latest-osmose.geojson" --engine-config=mappingConfigIRVE
echo "fichier généré: $PWD/output/converted__irve-latest-etalab.json"
cd update_scripts

View file

@ -0,0 +1,4 @@
#!/bin/bash
# convertir la liste de planing familial
ts-node convert_to_osm_tags.ts --source=etalab_data/planing_familial/antennes_planning_familial.json --output-file=antennes_planning_familial.geojson --engine-config=MappingPlanningFamlial

View file

@ -0,0 +1,5 @@
#!/bin/bash
# convertir tous les jeux de données présents pour AskAngela
# rouen
ts-node convert_to_osm_tags.ts --source=etalab_data/recycling/rouen_pav.geojson --output-file=rouen_pav.json --engine-config=MappingRouenPAV

View file

@ -0,0 +1,11 @@
#!/bin/bash
echo "convertir les fichiers de données en fichier geojson pour JOSM "
output_file_name='rouen_surveillance_from_umap.geojson'
mappingType='MappingSurveillanceRouen'
ts-node convert_to_osm_tags.ts --source="etalab_data/surveillance/rouen_surveillance.json" --output-file="$output_file_name" --engine-config="$mappingType"
echo "fichier généré: $PWD/output/$output_file_name"

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" "$www_folder/mapping-osm-geojson/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" "$www_folder/mapping-osm-geojson/osm_output/$export_file.geojson"
echo " -> fichier placé dans $www_folder/mapping-osm-geojson/osm_output/$export_file.geojson "
# on convertit le geojson en csv
python3 "$www_folder/mapping-osm-geojson//mappings/extractors/geojson_to_csv.py" "$www_folder/mapping-osm-geojson/osm_output/$export_file.geojson" -o "$www_folder/mapping-osm-geojson/osm_output/$export_file.csv"
rm "$export_file.json"
echo "nombre de features dans l'export geojson :"
jq '.features | length' "$www_folder/mapping-osm-geojson/osm_output/$export_file.geojson"
}
echo "fonction d'extraction depuis OSM chargée"
export extract_from_osm

56
update_scripts/get_datasets.sh Executable file
View file

@ -0,0 +1,56 @@
#!/bin/bash
# get the updated geojson
# personnaliser les scripts:
# aire Essonne: id 3600007401
# aire IDF: id 3600008649
# aire FR: id 3602202162
##################
## IRVE data
##################
echo "- récupérer les infos de bornes de recharge électrique"
wget https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26 -O "latest.json"
wget https://www.data.gouv.fr/fr/datasets/r/8d9398ae-3037-48b2-be19-412c24561fbb -O "latest.csv"
# wget https://www.data.gouv.fr/fr/datasets/r/b9731c6f-c0d7-422e-9e1c-19edd51687ce -O "finess_idf.json"
echo "- OK IRVE"
echo "- récupérer les données présentes dans OpenStreetMap"
curl --header "Content-Type: plain/text" --data @content_irve_geojson.txt --trace-ascii website-data.log "https://overpass-api.de/api/interpreter" > "irve_osm_latest.geojson"
echo "- récupérer les données présentes dans Osmose"
wget "https://osmose.openstreetmap.fr/api/0.3/issues.geojson?full=true&status=open&item=8410&limit=20000" -O "osmose-item-irve-8411-intégrables.json"
echo "- OK Osmose"
##################
# moving datasets to the source folder etalab_data
##################
echo " - déplacement des datasets des IRVE dans le dossier etalab_data/irve_bornes_recharge"
mv latest.json ../etalab_data/irve_bornes_recharge/
#mv finess_idf.json ../etalab_data/finess/
mv irve_osm_latest.geojson ../etalab_data/irve_bornes_recharge/
mv clean_french_irve.csv ../etalab_data/irve_bornes_recharge/
mv osmose-item-irve-8411-intégrables.json ../etalab_data/irve_bornes_recharge/
##################
# other sources of data should be placed in data_other folder
##################
echo "- récupérer les données de cyclabilité d'Issy"
wget "https://data.issy.com/api/explore/v2.1/catalog/datasets/parkings-2-roues/exports/geojson?lang=fr&timezone=Europe%2FBerlin" -O "issy_les_mx_cyclabilité.json"
echo "- récupérer les données des arbres d'Issy"
wget "https://data.issy.com/api/explore/v2.1/catalog/datasets/arbres-remarquables-issy-les-moulineaux/exports/geojson?lang=fr&timezone=Europe%2FBerlin" -O "issy_les_mx_arbres.json"
echo "- récupérer les données de cyclabilité de Rouen"
wget "https://data.metropole-rouen-normandie.fr/api/explore/v2.1/catalog/datasets/liste-des-stationnements-cyclables-metropole-rouen-normandie/exports/geojson?lang=fr&timezone=Europe%2FBerlin" -O "rouen_parking_velos.json"
mv "issy_les_mx_arbres.json" ../data_other/arbres/issy_les_mx_arbres.json
mv "geojson?lang=fr" ../data_other/cyclabilité/issy_les_mx_cyclabilité.json
mv "rouen_parking_velos.json" ../data_other/cyclabilité/rouen_parking_velos.json
# clean logs and finish
rm website-data.log
cd ..
echo "- refresh de la data OK"

View file

@ -0,0 +1,88 @@
/**
prendre un CSV,
examiner toutes les colonnes et leurs valeurs,
garder en mémoire les valeurs uniques de chaque colonne
faire un nouveau csv qui ne montre que les valeurs uniques pour chacune des colonnes
et qui compte le nombre de valeurs
**/
import utils from '../mappings/utils'
import {parse} from 'csv'
const fs = require('fs')
const minimist = require('minimist')
interface VarianceType {
[key: string]: Array<string>
}
let csv_content = 'variance de dataset\n';
let separator = ';';
// let columns_headings = [];
let data_variance: VarianceType = {};
const inputPath = '../etalab_data/arbres/arbres_ech.json'
// const inputPath = './etalab_data/small.csv'
let columns_headings: Array<string> = [];
let lines_count = 0;
let longest_variance_count = 0;
console.log('open file ', inputPath)
fs.readFile(inputPath, function (err: any, fileData: any) {
if (err) {
throw new Error(err)
} else {
parse(fileData, {columns: false, trim: true}, function (err: any, rows: any) {
if(err){
throw new Error(err)
}
console.log('line ', lines_count)
console.log('rows', rows)
console.log('longest_variance_count', longest_variance_count)
})
}
console.log('parsing done')
})
/**
* écrit un csv avec les données de variance du dataset donné
*/
function writeCSVVariance() {
let csv_content = ';variance de ' + inputPath + ';' + new Date() + '\n'
let columns = Object.keys(data_variance);
// add headings
columns_headings.forEach((heading: string) => {
csv_content = csv_content + separator + heading
})
csv_content = csv_content + '\n'
// add max length of variance for each column
let ii = 0
columns.forEach((column: string) => {
// console.log('column', column, data_variance[column].length)
csv_content = csv_content + separator + data_variance[column].length
ii++
})
csv_content = csv_content + '\n\n'
// add content of values
for (let ii = 0; ii < longest_variance_count; ii++) {
csv_content = csv_content + '\n'
columns.forEach((column: any) => {
if (ii < data_variance[column].length) {
let currentValue = data_variance[column][ii]
csv_content = csv_content + separator + currentValue
} else {
csv_content = csv_content + separator
}
})
}
return csv_content;
}

View file

@ -0,0 +1 @@
import osm2geojson

View file

@ -0,0 +1,19 @@
#!/bin/bash
# hackerspaces : https://www.data.gouv.fr/fr/admin/dataset/671f6e8fa0f72ffb985b07b3/
# nécessite la package python pip "httpie"
source $HOME/Nextcloud/ressources/workflow_nextcloud/secrets_vars.sh
echo "mise à jour des hackerspaces"
http -f POST $API/datasets/$DATASET_HACKERSPACE/resources/$RESOURCE_HACKERSPACE/upload/ X-Api-Key:$API_KEY file@$HACKERSPACE_FILEPATH
echo "mise à jour des ask angela"
http -f POST $API/datasets/$DATASET_ASKANGELA/resources/$RESOURCE_ASKANGELA_GEOJSON/upload/ X-Api-Key:$API_KEY file@$ASKANGELA_FILEPATH_GEOJSON
http -f POST $API/datasets/$DATASET_ASKANGELA/resources/$RESOURCE_ASKANGELA_CSV/upload/ X-Api-Key:$API_KEY file@$ASKANGELA_FILEPATH_CSV
echo "mise à jour des musées"
http -f POST "$API/datasets/$DATASET_MUSEUMS/resources/$RESOURCE_MUSEUMS/upload/" X-Api-Key:$API_KEY file@$MUSEUMS_FILEPATH
echo "mise à jour des parking cargo"
http -f POST "$API/datasets/$DATASET_CARGO/resources/$RESOURCE_CARGO/upload/" X-Api-Key:$API_KEY file@$CARGO_FILEPATH

View file

@ -0,0 +1 @@
[out:csv(::id,::uid,::user,::changeset,::lon,::lat,'addr:postcode','addr:city',covered,layer,charging_type,'current:ac','current:dc','charging_station:output',capacity,voltage,amperage,socket,'note:location',access,charging_type,name,owner,network,operator,'operator:wikidata','operator:wikipedia','owner:ref:FR:SIREN',ref,'ref:EU:EVSE','email','contact:email','contact:phone',phone,contact,'socket:typee','socket:schuko','socket:type1','socket:type2','socket:type2:output','socket:type2_cable','socket:type2_combo','socket:type2_combo:output','socket:type3c','socket:type3c:output','socket:chademo','socket:chademo:output',fee,charge,'payment:contactless','parking:fee','payment:app','payment:credit_cards',reservation,authentication,'authentication:nfc','authentication:membership_card','authentication:none',bicycle,scooter,bus,hgv,motorcar,wheelchair,'survey:date',start_date,opening_hours,source,wikidata,description,note,fixme,shop,mapillary,panoramax)][timeout:25];area(id:3602202162)->.searchArea;(node["amenity"="charging_station"](area.searchArea););out meta;>;out meta qt;

View file

@ -0,0 +1 @@
[out:json][timeout:25];area(id:3600008649)->.searchArea; (node["amenity"="charging_station"](area.searchArea);); out center;

View file

@ -0,0 +1,10 @@
#!/bin/bash
# Query Overpass API (https://wiki.openstreetmap.org/wiki/Overpass_API)
# Usage:
# ```sh
# echo "[out:json];(way(109849152); node(1985407312);); out;" | ./query-overpass.sh
# ```
curl -d @- -X POST http://overpass-api.de/api/interpreter
#> data_other/output_query_irve_from_overpass.json

View file

@ -0,0 +1,13 @@
#!/bin/bash
# chemin du dossier à parcourir
dir_to_search="."
# recherche tous les fichiers .sh dans le dossier et ses sous-dossiers
find "$dir_to_search" -type f -name "convert*.sh" -print0 | while IFS= read -r -d '' file; do
echo $file
# exécute chaque fichier .sh trouvé
bash $file
done

View file

@ -0,0 +1,14 @@
#!/bin/bash
# chemin du dossier à parcourir
source functions.sh
dir_to_search="../mappings/extractors"
# recherche tous les fichiers .sh dans le dossier et ses sous-dossiers
find "$dir_to_search" -type f -name "*.sh" -print0 | while IFS= read -r -d '' file; do
echo $file
# exécute chaque fichier .sh trouvé
bash $file
done

View file

@ -0,0 +1,7 @@
#!/bin/bash
# run this to update the data, convert it, and get the latest data from OSM at once.
source functions.sh
bash get_datasets.sh
bash run_all_extractors.sh
bash run_all_converters.sh