mirror of
https://forge.chapril.org/tykayn/wololo
synced 2025-10-04 17:04:53 +02:00
add option --wget to replace file
This commit is contained in:
parent
20b9e24eea
commit
5b0271716c
7 changed files with 128 additions and 6 deletions
|
@ -12,6 +12,7 @@
|
||||||
* --outname=nom_fichier : Alias pour --output-file
|
* --outname=nom_fichier : Alias pour --output-file
|
||||||
* --testingConfig : Active le mode test avec la configuration mappingTest
|
* --testingConfig : Active le mode test avec la configuration mappingTest
|
||||||
*/
|
*/
|
||||||
|
import fetch from 'node-fetch';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mesure de l'utilisation de la RAM
|
* Mesure de l'utilisation de la RAM
|
||||||
|
@ -71,7 +72,7 @@ let default_engine_conf_choice: string = 'ConfigIRVE'
|
||||||
let engine_conf_choice: string = 'ConfigIRVE'
|
let engine_conf_choice: string = 'ConfigIRVE'
|
||||||
let filterCoordinates = true
|
let filterCoordinates = true
|
||||||
filterCoordinates = false
|
filterCoordinates = false
|
||||||
|
let wget = false
|
||||||
let enable_filter_on_department = true
|
let enable_filter_on_department = true
|
||||||
enable_filter_on_department = false
|
enable_filter_on_department = false
|
||||||
|
|
||||||
|
@ -117,6 +118,37 @@ if (mini_arguments['testingConfig']) {
|
||||||
Mapping_engine = new mapping_engine(config.allowed_configs.mappingConfigIRVE)
|
Mapping_engine = new mapping_engine(config.allowed_configs.mappingConfigIRVE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// refresh the data from the source specified in the mapping config
|
||||||
|
if (mini_arguments['wget']) {
|
||||||
|
wget = mini_arguments['wget'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async function replaceFile(sourceFilePathGeoJson: string, url: string) {
|
||||||
|
const response = await fetch(url)
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Erreur lors du téléchargement: ${response.status} ${response.statusText}`)
|
||||||
|
}
|
||||||
|
// afficher la taille du fichier téléchargé
|
||||||
|
const contentLength = response.headers.get('content-length')
|
||||||
|
|
||||||
|
const data = await response.text()
|
||||||
|
if (contentLength) {
|
||||||
|
const sizeInMB = (parseInt(contentLength) / (1024 * 1024)).toFixed(2)
|
||||||
|
console.log(`Taille du fichier téléchargé: ${sizeInMB} Mo`)
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// mesurer la taille des données
|
||||||
|
const sizeInMB = (data.length / (1024 * 1024)).toFixed(2)
|
||||||
|
console.log(`Taille des données: ${sizeInMB} Mo`)
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(sourceFilePathGeoJson, data)
|
||||||
|
console.log('fichier téléchargé avec succès:', sourceFilePathGeoJson)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
let filterZipCode = new RegExp(`^${filterDepartment}`)
|
let filterZipCode = new RegExp(`^${filterDepartment}`)
|
||||||
let filterZipCodeAdresse = new RegExp(` ${filterDepartment}`)
|
let filterZipCodeAdresse = new RegExp(` ${filterDepartment}`)
|
||||||
let filteredName = ''
|
let filteredName = ''
|
||||||
|
@ -468,8 +500,33 @@ function setMappingConfigFromName(engine_conf_choice: string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let currentMappingConfig = Mapping_engine.getConfig();
|
let currentMappingConfig = Mapping_engine.getConfig() as MappingConfigType;
|
||||||
|
|
||||||
|
// si on a wget et que le mapping config a une source, on récupère la source définie dans le mapping config
|
||||||
|
if (wget) {
|
||||||
|
// console.log('wget enabled', currentMappingConfig.source)
|
||||||
|
// let geojson_path = currentMappingConfig.source.geojson_path
|
||||||
|
// let filename = sourceFilePathGeoJson.split('/').pop()
|
||||||
|
// télécharger le fichier source depuis l'url du mapping config
|
||||||
|
if (currentMappingConfig.source.geojson_path) {
|
||||||
|
console.log('téléchargement du fichier source depuis', currentMappingConfig.source.geojson_path)
|
||||||
|
console.log('la documentation de la ressource est disponible sur ', currentMappingConfig.source.url)
|
||||||
|
try {
|
||||||
|
|
||||||
|
replaceFile(sourceFilePathGeoJson, currentMappingConfig.source.geojson_path)
|
||||||
convertDataFromSource(sourceFilePathGeoJson, currentMappingConfig, pointCounterMax, boundingBoxCoordinates)
|
convertDataFromSource(sourceFilePathGeoJson, currentMappingConfig, pointCounterMax, boundingBoxCoordinates)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Erreur lors du téléchargement du fichier source:', error)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log('wget enabled, but no geojson_path found in mapping config', currentMappingConfig.source)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
|
||||||
|
convertDataFromSource(sourceFilePathGeoJson, currentMappingConfig, pointCounterMax, boundingBoxCoordinates)
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
* plan de conversion des clés du jeu de données vers les tags OSM
|
* plan de conversion des clés du jeu de données vers les tags OSM
|
||||||
* détail dans le tableau
|
* détail dans le tableau
|
||||||
* https://wiki.openstreetmap.org/wiki/France/data.gouv.fr/Bornes_de_Recharge_pour_V%C3%A9hicules_%C3%89lectriques
|
* https://wiki.openstreetmap.org/wiki/France/data.gouv.fr/Bornes_de_Recharge_pour_V%C3%A9hicules_%C3%89lectriques
|
||||||
|
*
|
||||||
|
* exemple d'exécution de script:
|
||||||
|
* npx ts-node convert_to_osm_tags.ts --source="etalab_data/irve_bornes_recharge/latest.json" --output-file="irve-latest.geojson" --engine-config=mappingConfigIRVE --wget
|
||||||
*/
|
*/
|
||||||
import MappingConfigType from "../mapping-config.type";
|
import MappingConfigType from "../mapping-config.type";
|
||||||
|
|
||||||
|
@ -12,8 +15,10 @@ const MappingIRVE: MappingConfigType = {
|
||||||
'amenity': 'charging_station'
|
'amenity': 'charging_station'
|
||||||
},
|
},
|
||||||
source: {
|
source: {
|
||||||
geojson_path: "etalab_data/all.json",
|
geojson_path: "https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26",
|
||||||
url: 'https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26'
|
url: 'https://www.data.gouv.fr/fr/datasets/r/7eee8f09-5d1b-4f48-a304-5e99e8da1e26',
|
||||||
|
documentation_url: 'https://transport.data.gouv.fr/datasets/fichier-consolide-des-bornes-de-recharge-pour-vehicules-electriques',
|
||||||
|
overpass_query: '[out:json][timeout:300];area(id:3602202162)->.searchArea;nwr["amenity"="charging_station"](area.searchArea);out+geom;'
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* select only certain points from the source
|
* select only certain points from the source
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
*
|
*
|
||||||
* certaines ont une précision "Caméra de sécurité sur borne escamotable"
|
* certaines ont une précision "Caméra de sécurité sur borne escamotable"
|
||||||
* https://wiki.openstreetmap.org/wiki/Tag:man_made=surveillance
|
* https://wiki.openstreetmap.org/wiki/Tag:man_made=surveillance
|
||||||
|
* exemple d'exécution de script:
|
||||||
|
* ts-node convert_to_osm_tags.ts --engine-config configSurveillance --outname surveillance_rouen_20250428 --wget
|
||||||
*/
|
*/
|
||||||
import MappingConfigType from "../mapping-config.type";
|
import MappingConfigType from "../mapping-config.type";
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ interface sourceConfig {
|
||||||
geojson_path: string; // the relative path to the geojson source file to analyse, from the root of this repository
|
geojson_path: string; // the relative path to the geojson source file to analyse, from the root of this repository
|
||||||
url: string; // URL from where the geojson comes online, on a data platform. This URL should be fetchable to get the most recent data of the concerned dataset to convert.
|
url: string; // URL from where the geojson comes online, on a data platform. This URL should be fetchable to get the most recent data of the concerned dataset to convert.
|
||||||
overpass_query?: string; // query to get objects from OSM
|
overpass_query?: string; // query to get objects from OSM
|
||||||
|
documentation_url?: string; // documentation on open data website about this dataset
|
||||||
}
|
}
|
||||||
|
|
||||||
export default interface MappingConfigType {
|
export default interface MappingConfigType {
|
||||||
|
|
|
@ -159,7 +159,7 @@ function convertToYesOrNo(originalValue: any) {
|
||||||
}
|
}
|
||||||
// on ne peut pas conclure ce que l'on doit garder avec une liste
|
// on ne peut pas conclure ce que l'on doit garder avec une liste
|
||||||
if (isEnumeration) {
|
if (isEnumeration) {
|
||||||
this.stats.enumeration_detected++
|
|
||||||
return ''
|
return ''
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
55
package-lock.json
generated
55
package-lock.json
generated
|
@ -12,6 +12,7 @@
|
||||||
"@types/geojson2osm": "^0.0.3",
|
"@types/geojson2osm": "^0.0.3",
|
||||||
"csv": "^6.3.1",
|
"csv": "^6.3.1",
|
||||||
"geojsontoosm": "^0.0.3",
|
"geojsontoosm": "^0.0.3",
|
||||||
|
"node-fetch": "^2.7.0",
|
||||||
"node-fs": "^0.1.7"
|
"node-fs": "^0.1.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -22,6 +23,7 @@
|
||||||
"@turf/turf": "^7.2.0",
|
"@turf/turf": "^7.2.0",
|
||||||
"@types/minimist": "^1.2.2",
|
"@types/minimist": "^1.2.2",
|
||||||
"@types/node": "^20.4.7",
|
"@types/node": "^20.4.7",
|
||||||
|
"@types/node-fetch": "^2.6.12",
|
||||||
"axios": "^1.8.4",
|
"axios": "^1.8.4",
|
||||||
"babel-jest": "^29.6.2",
|
"babel-jest": "^29.6.2",
|
||||||
"csv-parser": "^3.2.0",
|
"csv-parser": "^3.2.0",
|
||||||
|
@ -4824,6 +4826,17 @@
|
||||||
"integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==",
|
"integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/node-fetch": {
|
||||||
|
"version": "2.6.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
|
||||||
|
"integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*",
|
||||||
|
"form-data": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/stack-utils": {
|
"node_modules/@types/stack-utils": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
|
||||||
|
@ -8387,6 +8400,26 @@
|
||||||
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/node-fetch": {
|
||||||
|
"version": "2.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
||||||
|
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"whatwg-url": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "4.x || >=6.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"encoding": "^0.1.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"encoding": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/node-fs": {
|
"node_modules/node-fs": {
|
||||||
"version": "0.1.7",
|
"version": "0.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/node-fs/-/node-fs-0.1.7.tgz",
|
||||||
|
@ -9320,6 +9353,12 @@
|
||||||
"nodetouch": "bin/nodetouch.js"
|
"nodetouch": "bin/nodetouch.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/tr46": {
|
||||||
|
"version": "0.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
|
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/ts-jest": {
|
"node_modules/ts-jest": {
|
||||||
"version": "29.1.1",
|
"version": "29.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz",
|
||||||
|
@ -9595,6 +9634,22 @@
|
||||||
"makeerror": "1.0.12"
|
"makeerror": "1.0.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/webidl-conversions": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||||
|
"license": "BSD-2-Clause"
|
||||||
|
},
|
||||||
|
"node_modules/whatwg-url": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"tr46": "~0.0.3",
|
||||||
|
"webidl-conversions": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/which": {
|
"node_modules/which": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
"@types/geojson2osm": "^0.0.3",
|
"@types/geojson2osm": "^0.0.3",
|
||||||
"csv": "^6.3.1",
|
"csv": "^6.3.1",
|
||||||
"geojsontoosm": "^0.0.3",
|
"geojsontoosm": "^0.0.3",
|
||||||
|
"node-fetch": "^2.7.0",
|
||||||
"node-fs": "^0.1.7"
|
"node-fs": "^0.1.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -37,6 +38,7 @@
|
||||||
"@turf/turf": "^7.2.0",
|
"@turf/turf": "^7.2.0",
|
||||||
"@types/minimist": "^1.2.2",
|
"@types/minimist": "^1.2.2",
|
||||||
"@types/node": "^20.4.7",
|
"@types/node": "^20.4.7",
|
||||||
|
"@types/node-fetch": "^2.6.12",
|
||||||
"axios": "^1.8.4",
|
"axios": "^1.8.4",
|
||||||
"babel-jest": "^29.6.2",
|
"babel-jest": "^29.6.2",
|
||||||
"csv-parser": "^3.2.0",
|
"csv-parser": "^3.2.0",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue