handle jardinage of phones
This commit is contained in:
parent
ee10a3a7aa
commit
8d3be5817d
@ -24,7 +24,7 @@ let mini_arguments: any = minimist(process.argv.slice(2))
|
||||
|
||||
|
||||
// let sourceFilePathGeoJson = './etalab_data/small.json'
|
||||
let sourceFilePathGeoJson = './etalab_data/all.json'
|
||||
let sourceFilePathGeoJson = './data_other/irve_osm_2023-08-30.json'
|
||||
// let sourceFilePathGeoJson = './output/my_converted_data_set_filtered_zipcode_91.json'
|
||||
// let sourceFilePathGeoJson = './output/my_converted_data_set_filtered_zipcode_91_small.json'
|
||||
|
||||
@ -100,11 +100,12 @@ let output_folder = 'output';
|
||||
* @param fileContent
|
||||
*/
|
||||
function writeFile(fileName: string, fileContent: any) {
|
||||
debugLog('write file ', fileName)
|
||||
let write_path = `./${output_folder}/${fileName}`
|
||||
debugLog('write file ', fileName , write_path)
|
||||
|
||||
|
||||
return fs.writeFile(
|
||||
`./${output_folder}/${fileName}`,
|
||||
write_path,
|
||||
fileContent,
|
||||
'utf8',
|
||||
(err) => {
|
||||
@ -234,12 +235,13 @@ function convertDataForIRVE(sourceFilePath: string, mapping: any, pointCounterMa
|
||||
let fileNameToWrite = 'my_converted_data_set' + filteredName + '.json'
|
||||
console.log('features: ', converted_geo_json.features.length)
|
||||
debugLog('convert : write file ', fileNameToWrite)
|
||||
|
||||
console.log('mapping_engine.stats', Mapping_engine.stats)
|
||||
writeFile(fileNameToWrite, JSON.stringify(converted_geo_json, null, 2))
|
||||
|
||||
} else {
|
||||
console.log('convert : no writing of file, because there is no converted feature')
|
||||
}
|
||||
// console.log('convert : converted_geo_json output:', converted_geo_json.features)
|
||||
|
||||
return converted_geo_json
|
||||
}
|
||||
@ -295,7 +297,7 @@ if (use_mapping_engine) {
|
||||
debugLog(' - using mapping engine')
|
||||
debugLog(' - pointCounterMax', pointCounterMax)
|
||||
|
||||
// Mapping_engine.setConfig(mappingConfigIRVE)
|
||||
Mapping_engine.setConfig(mappingConfigIRVE)
|
||||
let currentMappingConfig = Mapping_engine.getConfig();
|
||||
convertDataForIRVE(sourceFilePathGeoJson, currentMappingConfig, pointCounterMax, boundingBoxCoordinates)
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
37767
data_other/irve_osm_2023-08-30.json
Normal file
37767
data_other/irve_osm_2023-08-30.json
Normal file
File diff suppressed because it is too large
Load Diff
7501
data_other/irve_osm_2023-08-30_original.json
Normal file
7501
data_other/irve_osm_2023-08-30_original.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -43,6 +43,10 @@ const MappingIRVE: MappingConfigType = {
|
||||
key_converted: '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
|
||||
},
|
||||
contact_operateur: 'email', // ici, on souhaite convertir la clé contact_operateur=bidule en email=bidule
|
||||
|
||||
// id_station_itinerance: 'ref:EU:EVSE',
|
||||
|
@ -16,10 +16,17 @@ let listOfBooleanKeys = [
|
||||
|
||||
export default class {
|
||||
mapping_config: any = {}
|
||||
private jardinage = true;
|
||||
public stats: any;
|
||||
|
||||
constructor(mappingConfig: MappingConfigType) {
|
||||
|
||||
this.setConfig(mappingConfig)
|
||||
this.stats = {
|
||||
phones_updated: 0,
|
||||
phones_updated_list: [],
|
||||
phones_not_updated: 0
|
||||
}
|
||||
}
|
||||
|
||||
setConfig(mappingConfig: MappingConfigType) {
|
||||
@ -34,10 +41,13 @@ export default class {
|
||||
mapFeaturePoint(featurePointGeoJson: any) {
|
||||
|
||||
let geoJSONConvertedPoint: any = {}
|
||||
|
||||
|
||||
geoJSONConvertedPoint.properties = {...this.mapping_config.default_properties_of_point}
|
||||
geoJSONConvertedPoint.type = featurePointGeoJson.type
|
||||
geoJSONConvertedPoint.geometry = featurePointGeoJson.geometry
|
||||
|
||||
|
||||
// let props = featurePointGeoJson.properties
|
||||
|
||||
// props.forEach((key, value) => {
|
||||
@ -144,6 +154,13 @@ export default class {
|
||||
debugLog(' ------ convertProperty: pointKeyName', pointKeyName)
|
||||
// debugLog('convertProperty: mappingKeys', mappingKeys)
|
||||
|
||||
if (this.jardinage) {
|
||||
debugLog(' ------ on fait du jardinage')
|
||||
debugLog(' ------ mode mise en qualité activé')
|
||||
debugLog(' ------ les données en entrée sont des infos geojson extraites depuis overpass turbo.')
|
||||
debugLog(' ------ les clés des objets sont donc déjà dans le format de tag OSM,' +
|
||||
'ne pas les convertir pour les mettre en qualité selon le modèle de mapping.')
|
||||
}
|
||||
if (this.mapping_config.add_not_mapped_tags_too && (mappingKeys.indexOf(pointKeyName) === -1)) {
|
||||
/**
|
||||
* add all unmapped tags is enabled
|
||||
@ -247,20 +264,24 @@ export default class {
|
||||
debugLog('convertProperty: is NOT having boolean_value_conversion', mappingValueObject)
|
||||
}
|
||||
if (configObject.convert_to_phone) {
|
||||
|
||||
|
||||
/**
|
||||
* nettoyer les numéros de téléphone en ne gardant que les nombres et le préfixe de pays
|
||||
*/
|
||||
debugLog('originalValue', originalValue.substring(1))
|
||||
let original_without_spaces = originalValue.replace(' ','')
|
||||
let original_without_spaces = originalValue.replace(/ /g, '')
|
||||
let cleaned_value = `${original_without_spaces}`
|
||||
cleaned_value = cleaned_value
|
||||
.trim()
|
||||
.replace('Stations-e', '')
|
||||
.replace('(numéro unique)', '')
|
||||
|
||||
.replace(/[a-zA-Zéèà]/ig, '')
|
||||
.replace(/[\(\)\.\- ]/g, '')
|
||||
let original_array = originalValue.split('')
|
||||
let add_prefix = false;
|
||||
if (
|
||||
/^\d/.test(cleaned_value) &&
|
||||
! /^\+33 /.test(originalValue)
|
||||
!/^\+33 /.test(original_without_spaces)
|
||||
) {
|
||||
add_prefix = true
|
||||
}
|
||||
@ -300,6 +321,16 @@ export default class {
|
||||
convertedValue = `+33 ` + convertedValue
|
||||
}
|
||||
|
||||
debugLog('phone: ', originalValue, '=>', convertedValue)
|
||||
|
||||
if (originalValue !== convertedValue) {
|
||||
this.stats.phones_updated++
|
||||
this.stats.phones_updated_list.push(convertedValue)
|
||||
} else {
|
||||
this.stats.phones_not_updated++
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
if (configObject.remove_original_key) {
|
||||
remove_original_key = true
|
||||
@ -393,6 +424,7 @@ export default class {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return newProperties;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import fs from 'fs'
|
||||
|
||||
let show_debug = 0
|
||||
// show_debug = 1
|
||||
show_debug = 1
|
||||
let output_folder = 'output';
|
||||
|
||||
// console.log('----------------------show_debug', show_debug)
|
||||
|
773860
output/build_log.log
Normal file
773860
output/build_log.log
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -122,10 +122,19 @@ describe('mapping properties with rich mapping engine', () => {
|
||||
expect(mapped_point.properties).toStrictEqual({ phone: expected_converted_phone })
|
||||
|
||||
feature_to_test.properties.telephone_operateur = 'Stations-e'
|
||||
|
||||
mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||
expect(mapped_point.properties).toStrictEqual({ })
|
||||
|
||||
feature_to_test.properties.telephone_operateur = '+33 0 7 66 38 74 96'
|
||||
expected_converted_phone = '+33 7 66 38 74 96'
|
||||
mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||
expect(mapped_point.properties).toStrictEqual({ phone: expected_converted_phone })
|
||||
|
||||
feature_to_test.properties.telephone_operateur = '+ 33 1 30 31 30 46 (numéro unique)'
|
||||
expected_converted_phone = '+33 1 30 31 30 46'
|
||||
mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||
expect(mapped_point.properties).toStrictEqual({ phone: expected_converted_phone })
|
||||
|
||||
// +19 0142056650;+19 0664534050
|
||||
})
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user