mapping-geojson-osm/docs/configuration_de_conversion.md

134 lines
9.2 KiB
Markdown
Raw Normal View History

2024-07-04 23:46:50 +02:00
# Configuration de conversion
Ce fichier de configuration est utilisé pour convertir un jeu de données ouvertes en des données exploitables par des tags OpenStreetMap. Il décrit les règles de conversion pour chaque propriété des données ouvertes et les valeurs attendues pour chaque tag OpenStreetMap.
Structure du fichier de configuration
Le fichier de configuration est un objet JSON du type MappingConfigType qui contient les propriétés suivantes :
2024-07-08 11:27:27 +02:00
| Clé | Sous-clé | Sous-sous-clé | Description |
|-----------------------------|---------------------------| --- | --- |
| config_name | | | le nom de la configuration |
| config_author | | | le nom de l'auteur de la configuration avec son email entre chevrons |
| source | | | infos sur la provenance des données à convertir |
| source | geojson_path | | lien relatif dans ce dépôt vers le fichier téléchargé |
| source | url | | lien absolu de la source, sur le portail datagouv par exemple |
| add_not_mapped_tags_too | | | un boolean indiquant si les tags non détectés par la configuration doivent être ajoutés également aux points convertis |
| default_properties_of_point | | | un objet qui décrit les clés et valeur par défaut à mettre pour les points |
| filters | | | un objet qui décrit les filtres à appliquer aux données ouvertes |
| filters | enable_coordinates_filter | | booléen, permet d'activer un filtre sur les points se trouvant dans certaines coordonnées |
| filters | properties | | objet listant colonne et expression régulières pour ne garder que ce qui correspond |
| filters | properties | consolidated_code_postal | | exemple de regex pour trouver les points dont le code postal commence par 76 ou 27 : '^[76|27]' |
| filters | bounding_box | | tableau décrivant un rectangle de coordonnées: Xstart Ystart Xend Yend |
| filters | enable_properties_filter | | objet décrivant les regex à chercher sur certaines colonnes pour ne garder que les objets concernés |
| tags | | | un objet qui décrit les règles de conversion pour chaque tag OpenStreetMap |
2024-07-04 23:46:50 +02:00
# Propriétés de conversion des tags
Chaque clé donne une colonne du jeu de données à convertir en tag OSM, soit en conservant la valeur si on lui donne une simple chaîne de caractères en valeur, soit en lui apportant des modifications plus précises avec un objet en valeur.
Par exemple, nous avons un jeu de données sur les bornes de recharge électriques et leur numéro de SIREN est donné dans une colonne "siren_amenageur", dans OSM on utilisera une clé 'owner:ref:FR:SIREN'.
```json
{
"config_name": "IRVE config",
"tags": {
"siren_amenageur": "owner:ref:FR:SIREN"
}
}
```
Ce qui équivaut à une utilisation d'objet ainsi
```json
{
"config_name": "IRVE config",
"tags": {
"siren_amenageur": {
"key_converted":"owner:ref:FR:SIREN"
}
}
}
```
2024-07-08 09:39:58 +02:00
Les propriétés possibles sont:
2024-07-08 11:27:27 +02:00
2024-07-08 11:47:51 +02:00
| Clé | Description | Type | Valeur par défaut |
|------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- |
| conditional_values | Valeurs conditionnelles, détail ci après | objet | null |
| convert_to_boolean_value | Convertit la valeur en booléen | boolean | false |
| convert_to_phone | Convertir en numéro de téléphone | boolean | false |
| ignore_if_falsy | Ignorer cette ligne si elle vaut false ou 0 | boolean | false |
| key_converted | Convertir en clé OSM | string | null |
| remove_original_key | Enlever la ligne | boolean | false |
| socket_output_find_correspondances | Chercher une puissance de socket pour borne de recharge électrique | boolean | false |
2024-07-08 09:39:58 +02:00
Exemple:
```json
{
"tags": {
"puissance_nominale": {
"key_converted": "charging_station:output",
"socket_output_find_correspondances": true
},
"accessibilite_pmr": {
"key_converted": "wheelchair",
"conditional_values": {
"Non accessible": {
"value_converted": "no"
},
"Réservé PMR": {
"value_converted": "yes"
}
}
}
}
}
```
## Valeurs conditionnelles conditional_values
Un objet décrivant par ses clés des comportements à faire selon la valeur donnée.
Propriétés:
2024-07-08 11:27:27 +02:00
2024-07-08 11:47:51 +02:00
| Clé | Description | Type | Valeur par défaut |
| --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- |
| ignore_this_data | Ignorer, pour évacuer des valeurs indésirables | | |
| tags_to_add | Tags à ajouter | objet | |
| transform_function | Une fonction à appliquer à la valeur | | |
| convert_to_boolean_value | Convertit en 'yes' si la valeur est Truthy, et en 'no' si elle est Falsy. Et ne change pas la valeur si elle n'est ni Truthy ni Falsy. | | |
| value_converted | valeur à convertir | string ou number | |
| truthy_value | Convertir la valeur dans le cas où elle est Truthy. exemple: le jeu de données dit que la colonne cable_t2_attache vaut "True", mais on veut le convertir en "1". On met donc truthy_value: '1' | boolean | false |
| falsy_value | Convertir la valeur dans le cas où elle est Falsy, comme pour truthy_value. | boolean | false |
| invert_boolean_value | Inverser la valeur booléenne | boolean | false |
2024-07-08 11:27:27 +02:00
2024-07-08 09:39:58 +02:00
### Tags à ajouter
Quand on utilise la clé "tags_to_add", on lui met en valeur un tableau de tags OSM à ajouter.
Ici, ajout de trois tags si la valeur est `yes` pour `station_deux_roues`
```json
{
"tags": {
"station_deux_roues": {
"remove_original_key": true,
"conditional_values": {
"yes": {
"tags_to_add": [
{
"bicycle": "yes"
},
{
"scooter": "yes"
},
{
"motorcar": "no"
}
]
}
}
}
}
}
```