feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles

- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD)
  * DEV: Clés TEST Pierre (mode test)
  * REC: Clés TEST Client (mode test)
  * PROD: Clés LIVE Client (mode live)
- Ajout de la gestion des bases de données immeubles/bâtiments
  * Configuration buildings_database pour DEV/REC/PROD
  * Service BuildingService pour enrichissement des adresses
- Optimisations pages et améliorations ergonomie
- Mises à jour des dépendances Composer
- Nettoyage des fichiers obsolètes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
pierre
2025-11-09 18:26:27 +01:00
parent 21657a3820
commit 2f5946a184
812 changed files with 142105 additions and 25992 deletions

1352
cron/batiments.md Normal file

File diff suppressed because it is too large Load Diff

226
cron/doc/CHANGELOG.md Normal file
View File

@@ -0,0 +1,226 @@
# Changelog BDNB 2024-10a
## Nouveautés générales:
* Ajout de nouveaux indicateurs d'usages des bâtiments plus complet dans batiment_groupe_synthese_propriete_usage
* Indicateur de surchauffe estivale évalué sur tous les bâtiments résidentiels (BDNB expert)
* Mise à disposition des données SITADEL (permis de construire) dans deux nouvelles tables
* Mise à jour des données socles : fichiers fonciers (2023) + BDTOPO (2024-08) + BAN (2024-10)
* Mise à jour de la plupart des sources de données (consulter le fichier de documentation onglet source)
## Ajouts de tables
* **batiment_groupe_synthese_propriete_usage :** nouvelle table qui contient des indicateurs d'usages consolidées en utilisant de multiples sources en plus des fichiers fonciers.
* usage_principal_bdnb_open : nouvelle variable d'usage principal du bâtiment à utiliser au lieu de usage_niveau_1_txt :
* Résidentiel individuel
* Résidentiel collectif
* Tertiaire
* Secondaire
* Dépendance
* Indifférencié
* categorie_usage_propriete : classification du bâtiment utilisant des informations d'usage et de propriété :
* Résidentiel individuel social
* Résidentiel individuel privé
* Résidentiel collectif social
* Résidentiel collectif copropriété
* Tertiaire public
* Tertiaire privé
* Secondaire
* Dépendance
* **sitadel et parcelle_sitadel :** nouvelles tables disponibles pour traiter des données sur les constructions nouvelles, extensions et démolitions.
* **batiment_groupe_simulations_isb :** indicateur de surchauffe des bâtiments.
## Tables modifiées:
* **batiment_groupe_indicateur_reseau_chaud_froid :** ajout des réseaux de chaleurs en cours de construction.
* **batiment_groupe_dle_elec/gaz/reseau_multimillesime :**
* ajout des données locales de l'énergie 2023 (sauf pour le gaz ⚠️ problème de mise à disposition par le producteur)
* résolution d'un problème sur les clefs de répartition des consommations au batiment_groupe lorsque l'adresse de la DLE est associé à plusieurs bâtiments, la répartition se fait bien en proportion du nombre de logements de chaque bâtiment.
* correction des données locales de l'énergie qui sont affectées "pro" par les distributeurs d'énergies lorsque ces données sont celles concernant des chaudières collectives de bâtiments résidentiels -> elles sont requalifiées en résidentiel.
* **parcelle:** ajout du code_commune_insee dans la table
* **batiment_groupe_adresse :** amélioration de la logique de détermination de l'adresse principale d'un bâtiment basée sur le nombre de locaux du bâtiment associés à cette adresse.
* **dpe_logement/batiment_groupe_dpe_representatif_logement :**
* fix les bâtiments sans logements ne peuvent plus être associés à des DPE logements
* fix le type d'énergie des générateurs d'ECS et de chauffage est toujours cohérent avec le générateur quand les données brutes du DPE sont incorrectes
* **batiment_groupe_rnc :** correction du nombre de lots tertiaires (qui était précédemment mal affecté comme la somme de logements et tertiaire)
* **batiment_groupe_synthese_systeme_energetique_logement (BDNB expert) :** intégration des données de raccordement de réseau de chaleur pour corriger/ajouter les bâtiments effectivement raccordés aux réseaux.
* **batiment_groupe_simulations_dpe/local_simulations_dpe (BDNB expert) :**
* mise à jour de la méthode de calcul avec l'arrêté dit "petites surfaces" du 1er juillet 2024
* mise à jour de la méthode d'imputation des données d'entrées du calcul DPE.
* amélioration de la modélisation des ponts thermiques et de l'estimation des surfaces déperditives.
## ⚠️ Tables supprimées
* **batiment_groupe_osm_building : dépréciée depuis plusieurs millésimes cette table est supprimée définitivement**
## ⚠️ problèmes connus
* **batiment_groupe_simulations_dpe/local_simulations_dpe (BDNB expert) :** un problème non résolu dans les simulations dpe entraine une perte de 4% des bâtiments de logements non simulés. Nos équipes travaillent à identifier la source du problème et à apporter une correction rapidement
## formats d'exports
* projet QGIS géopackage -> passage à une présentation avec une couche multi style pour la couche batiment_groupe (la couche était précédemment dupliquée en plusieurs couches pour chaque représentation d'indicateur)
# Changelog BDNB 2023-11.a
## tables_ajoutees
- rel_batiment_construction_rnb : lien entre les identifiant du référentiel national des bâtiments et les objets de la BDNB
- batiment_groupe_reseau_chaud_froid : nouvelle table qui identifie les bâtiments raccordés aux réseaux de chaleurs ainsi qu'un indicateur de potentiel de raccordement aux réseaux de chaleur existants.
- batiment_groupe_simulations_valeur_verte : nouvelle table qui estime les gains en revalorisation foncière attendus après une rénovation qui fait évoluer l'étiquette DPE du bâtiment
- siren : table des siren (pour pouvoir récupérer des informations sur les entreprises liées à des bâtiments)
- siret : table des siret (pour pouvoir récupérer des informations sur les entreprises liées à des bâtiments)
- rel_batiment_groupe_siret : table de relation entre les bâtiments groupes et les siret (base sirene)
- rel_batiment_groupe_siren : table de relation entre les siren et les groupes de bâtiment (propriété et établissement)
- iris_contexte_geographique : table de synthèse au niveau Iris des différents contextes géographiques utiles pour contextualiser les bâtiments.
- iris_simulations_valeur_verte : nouvelle table qui estime les gains en revalorisation foncière attendus après une rénovation qui fait évoluer l'étiquette DPE du bâtiment (aggrégé iris)
## tables_modifiees
- batiment_groupe_argiles : Table dépréciée qui sera remplacée par une table plus complète à venir sur les risques sur les bâtiments
- batiment_groupe_radon : Table dépréciée qui sera remplacée par une table plus complète à venir sur les risques sur les bâtiments
- rel_batiment_groupe_qpv : Table dépréciée et entièrement remplacée par batiment_groupe_qpv
- rel_batiment_groupe_adresse : amélioration de la méthode de rattachement des adresses à des bâtiments, limitation de faux positifs d'adresses qui étaient raccordés à plusieurs bâtiments par erreur
- rel_batiment_groupe_parcelle : amélioration de la méthode de rattachement des parcelles à des bâtiments, limitation de faux positifs de parcelles qui étaient raccordés à des bâtiments à cause de problèmes d'alignement cadastre BDTOPO (https://gitlab.com/BDNB/base_nationale_batiment/-/issues/823)
- batiment_groupe_rnc : fix d'un bug toutes les copropriétés identifiées par la parcelle sont bien de nouveau remontées dans cette table
- batiment_groupe_adresse : amélioration de la logique de détermination de l'adresse principale.
## tables_supprimees
- batiment_groupe_dpe : suppression de cette table dépréciée -> utiliser batiment_groupe_dpe_statistique_logement
- batiment_groupe_dpe_logtype : suppression de cette table dépréciée -> utiliser batiment_groupe_dpe_representatif_logement
## vues_modifiees
- batiment_groupe_compile : vue dépréciée qui sera remplacée par une vue synthétique de la base de données à venir
- batiment_groupe_compile_compat_v06 : vue dépréciée qui sera remplacée par une vue synthétique de la base de données à venir
# Changelog BDNB 2023-01.a
## tables_ajoutees
- passage_millesime_batiment_groupe_id : Nouvelle table
- rel_batiment_construction_rnb : Nouvelle table expérimentale stockant les identifiants du Référentiel National des Bâtiments (RNB). Dans les prochaines versions, cet identifiant sera intégré dans la table batiment_constuction directement.
## tables_modifiees
- adresse : ["ajout d'un champ libelle_adresse qui concatène l'ensemble des informations", 'suppression de la \'source\' "fichiers fonciers" dans les sources d\'adresse (non pertinente méthodologiquement)']
- batiment : changement de la modalité 'origine' **Cadastre** pour **Autre**
- batiment_construction : 'batiment_groupe_id' et 'batiment_construction_id' au format nano-id
- batiment_groupe : ['fiabilisation du croisement et intégration de nouvelles entrées "bâtiment-construction", réduisant considérablement le différentiel avec le jeux de données BDTopo de l\'IGN', 'batiment_groupe_id -> changement de tous les identifiants pour utiliser un nano-id']
- batiment_groupe_bdtopo_bat : ajout de la colonne 'max_hauteur'
- batiment_groupe_exposition_bruit_logement_social : MAJ des données + nouvelles colonnes : 'exposition_bruit_routier_et_ou_ferroviaire', 'nb_logement_social_expose_bruit_rte_et_ou_fer', 'type_exposition_bruit_routier_et_ou_ferroviaire'
- batiment_groupe_ffo_bat : ['Calcul de nb_log_hlm modifié car auparavant correspondait à hlm + sem', 'modification des descriptions de nb_log_hlm, nb_log_sem, nb_log_soc pour refléter ce qui est réellement réalisé']
- batiment_groupe_rnc : ['Ajout des données open', "nouvelles colonnes -> 'l_siret', 'copro_dans_pvd'"]
- batiment_groupe_rpls : ['Ajout des données open,', 'MAJ 2022,', "Nouvelles colonnes -> 'rpls_open', 'classe_ener_principale', 'classe_ges_principale', 'raison_sociale_principal', 'siret_principal'"]
- parcelle : report du non-id de la parcelle unifiee
- rel_batiment_groupe_adresse : ["classe -> dépréciation de la classe d'association 1.1 -> 9.X", 'lien_valide -> Déprécié', "Ajout d'une colonne 'origine' -> [Fichiers Fonciers, Association Géométrique, Fichiers Fonciers + Association Géométrique]"]
- rel_batiment_construction_adresse : ["Ajout d'une table de relation entre les bâtiments construction et des adresses", "Nouvelle méthodologie d'association des bâtiments construction aux adresses.", 'Cette nouvelle méthode permet de récupérer des adresses non documentées dans les fichiers fonciers et de les lier à des bâtiments construction et des bâtiments groupes.', 'Cette table permet également d\'attribuer des adresses postales aux entrées "bâtiment-construction" non référencées dans les données foncières']
- rel_batiment_groupe_parcelle : ajout d'une propriété 'parcelle_principale' pour documenter s'il s'agit de la parcelle principale du bâtiment groupe.
- rel_batiment_groupe_argile : renommage de la colonne 'argile_niveau' par 'argile_non_officiel_id'
- rel_batiment_groupe_merimee : ['relation entre les batiments_groupe et les references merimées dans un périmère de 500m', 'Ajout des relations entre les batiments_constructions proches (moins de 500m) et les références mérimées']
- rel_batiment_groupe_pees : Nouvelle table
- rel_batiment_groupe_pies : Nouvelle table
- rel_batiment_groupe_rnc : ['MAJ 2022', "renommage de l'index 'rnc_numero_immat' en 'numero_immat'", "ajout colonnes 'fiabilite_globale', 'parcelle_id', 'parcelle_unifiee_id'"]
- rel_batiment_groupe_rpls : ['MAJ 2022', "renommage de l'index 'rpls_non_officiel_id' 'ident_rpls'", "ajout colonnes 'fiabilite_globale', 'batiment_id', 'local_id', 'rpls_open'"]
## tables_supprimees
## vues_modifiees
# Changelog BDNB 2022-10.d
## tables_ajoutees
- rel_batiment_groupe_bruit : nouvelle table
- rel_batiment_groupe_dvf_open : table relationnelle entre les mutations dvf open et les batiment_groupe
- batiment_groupe_dvf_open_representatif : table des mutations représentatives des batiment_groupe associés aux mutations
- batiment_groupe_dvf_open_statistique : table de statistique des mutations à l'échelle du batiment_groupe
- rel_batiment_groupe_dle_elec_2018 : nouvelle_table
- rel_batiment_groupe_dle_elec_2019 : nouvelle_table
- rel_batiment_groupe_dle_elec_2020 : nouvelle_table
- rel_batiment_groupe_dle_elec_2021 : nouvelle_table
- rel_batiment_groupe_dle_gaz_2018 : nouvelle_table
- rel_batiment_groupe_dle_gaz_2019 : nouvelle_table
- rel_batiment_groupe_dle_gaz_2020 : nouvelle_table
- rel_batiment_groupe_dle_gaz_2021 : nouvelle_table
- rel_batiment_groupe_dle_reseaux_2020 : nouvelle_table
- rel_batiment_groupe_dle_reseaux_2021 : nouvelle_table
- batiment_groupe_bdtopo_bat : fix inversion de colonne dans la doc
- batiment_groupe_pie : ajout d'une nouvelle table
- batiment_groupe_rpls : mise à jour de la table batiment_groupe_rpls millésime 2019 par la table batiment_groupe_rpls millésime 2022
- rel_batiment_groupe_rpls : mise à jour de la table rel_baitment_groupe_rpls millésime 2019 par la table rel_baitment_groupe_rpls millésime 2022
- rel_batiment_groupe_dle_elec_multimillesime : nouvelle_table
- rel_batiment_groupe_dle_gaz_multimillesime : nouvelle_table
- rel_batiment_groupe_dle_reseaux_multimillesime : nouvelle_table
- batiment_groupe_dle_elec_multimillesime : nouvelle_table
- batiment_groupe_dle_gaz_multimillesime : nouvelle_table
- batiment_groupe_dle_reseaux_multimillesime : nouvelle_table
- batiment_groupe_exposition_bruit_logement_social : ajout d'une nouvelle table
- rel_batiment_groupe_pie : ajout d'une nouvelle table
- batiment_groupe_synthese_periode_construction : ajout d'une nouvelle table
## tables_modifiees
- batiment_groupe_ffo_bat : ajout des nombres de residences principales et secondaires
- batiment_groupe_bdtopo_bat : fix inversion de colonne dans la doc
- batiment_groupe_synthese_enveloppe : mise à jour des DPE
- batiment_groupe_synthese_systeme_energetique_logement : mise à jour des DPE
- rel_batiment_groupe_dpe_logement : mise à jour des DPE
- dpe_logement : mise à jour des DPE
- batiment_groupe_dpe_representatif_logement : mise à jour des DPE
- batiment_groupe_dpe_statistique_logement : mise à jour des DPE
## tables_supprimees
- batiment_groupe_dle_elec_2020 : DEPRECATED au profit des tables multi-millesime
- batiment_groupe_dle_gaz_2020 : DEPRECATED au profit des tables multi-millesime
- batiment_groupe_dle_reseaux_2020 : DEPRECATED au profit des tables multi-millesime
## vues_modifiees
- batiment_groupe_compile : ajout des nouvelles variables
# Changelog BDNB 2022-10.c
## tables_ajoutees
## tables_modifiees
- filiation_siren (du schéma filiation_siren) : maj de la table avec dernières données dont les fusions/absorptions de bailleurs ALS et complété à partir des info de la table propriétaire
- batiment_groupe_simulations_dvf : nouvelles simulations avec un algorithme plus performant
- batiment_groupe_simulations_valeur_verte : nouvelles simulations avec un algorithme plus performant
- batiment_groupe_simulations_dpe : nouvelles simulations en prenant en compte les nouveaux dpe (suppression des colonnes de type conso_tot car non pertinentes)
- batiment_groupe_synthese_enveloppe : nouvelle table
- batiment_groupe_synthese_systeme_energetique_logement : nouvelle table
- dpe_logement : nouvelle table
- local_simulations_dpe : nouvelle table
- batiment_groupe_dpe_representatif_logement : nouvelle table
- batiment_groupe_dpe_statistique_logement : nouvelle table
- batiment_groupe_ffo_bat : fix problème lié aux usages qui étaient parfois incohérents
- rel_batiment_groupe_dpe_logement : nouvelle table
- batiment_groupe_proprietaire : correction de la colonne propriétaire principal, l'algorithme sort désormais le propriétaire avec la plus grande surface de locaux
- iris_simulations_valeur_verte : nouvelle table
## tables_supprimees
- batiment_groupe_dpe : DEPRECATED (uniquement anciens DPE arrêté 2012) -> est remplacé par batiment_groupe_dpe_statistique_logement (inclus ancien et nouveau DPE)
- batiment_groupe_dpe_logtype : DEPRECATED (uniquement anciens DPE arrêté 2012) -> est remplacé par batiment_groupe_dpe_representatif_logement (inclus ancien et nouveau DPE)
- rel_batiment_groupe_dpe : DEPRECATED (uniquement anciens DPE arrêté 2012)
## vues_modifiees
- batiment_groupe_compile : regénérée pour ajouter de nouvelles colonnes

62
cron/doc/README.md Normal file
View File

@@ -0,0 +1,62 @@
# Bien utiliser la Base Nationale du Bâtiment
Bienvenue sur cette extraction de la Base Nationale du Bâtiment
[TOC]
## Installer les bons outils
En fonction du format de votre extraction, vous aurez besoin d'outils différents.
### Pour un pgdump (.sql)
- Installer le gestionnaire de base de données **Postgresql** et activer l'extension **Postgis**
- Créer votre base de données
- Créer un fichier .pgservice.conf dans votre home
- Y insérer la configuration de votre serveur
```
[nom_de_votre_service]
user=votre_utilisateur
password=votre_mot_de_passe
dbname=votre_base_de_donnees
host=votre_host(default:localhost)
port=votre_port_de_connection(default:22)
```
- Mettez-vous dans le dossier où se trouve le pgdump
- Lancer la commande psql suivante (linux) : `psql service=nom_de_votre_service -f bdnb.sql > log_extract.log 2>log_extract_erreurs.log`
- (alternative windows powershell) : `psql -f bdnb.sql service=local_bdnb *> log_extract.log 2> log_extract_erreurs.log`
### Pour un géopackage (.gpkg)
- Installer et ouvrir le fichier avec le service SIG QGIS
### Pour du csv
- Attention, ce sont des fichiers lourds, difficilement ouvrables avec Excel
- Vous pouvez vous en servir pour de l'exploitation avec Python : module pandas.read_csv avec le paramètre `chunksize`
## Ce que contient cette extraction
Cette extraction contient à minima :
- Vos données
- Les contours géométriques consistants du réferentiel administratif utilisé pour la construction de la BDNB (format gpkg et pgdump)
- Ce fichier de bonnes pratiques
- Un dictionnaire de variable pour vous repérer dans les différentes colonnes de la base de données
## Nous contacter
Vous avez un problème sur vos données, sur leur utilisation ou vous souhaitez nous faire un retour pour nous améliorer, n'hésitez pas à nous contacter en ouvrant un ticket sur le gitlab du projet
Nous y répondrons le plus rapidement possible : https://gitlab.com/BDNB/base_nationale_batiment/-/issues
## License
Les données en open data diffusées dans la BDNB sont soumises à [la licence ouverte v2.0 d'Etalab](https://www.etalab.gouv.fr/licence-ouverte-open-licence/).
Cette licence autorise une utilisation, une réutilisation et une rediffusion sous contrainte simple de citation, y compris pour des usages commerciaux.
Les données à accès restreint disponibles sont documentées dans le dictionnaire de données.
Leur accès est soumis à des restrictions pour les raisons suivantes :
- La donnée source n'est accessible qu'aux ayants droits des données d'origine (exemple des fichiers fonciers) nécessitant une convention de mise à disposition.
- Le producteur d'origine soumet la réutilisation à une redevance d'accès.
Si ces données vous sont nécessaires, vous pouvez contacter l'équipe commerciale BDND du CSTB :
- en créant un [ticket confidential](https://gitlab.com/BDNB/base_nationale_batiment/-/issues/new?issuable_template=template_ticket_commercial&issue[confidential]=true&issue)
- en envoyant un mail directement à `contact-project+bdnb-base-nationale-batiment-gorenove@incoming.gitlab.com`

BIN
cron/doc/documentation.xlsx Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

73
cron/init_batiments.sql Normal file
View File

@@ -0,0 +1,73 @@
-- Script d'initialisation de la base batiments
-- À exécuter avant le premier import
-- Création de la base de données
CREATE DATABASE IF NOT EXISTS batiments
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
USE batiments;
-- Table d'historique des imports
CREATE TABLE IF NOT EXISTS _histo (
id INT AUTO_INCREMENT PRIMARY KEY,
date_import DATETIME NOT NULL,
dept VARCHAR(5) NOT NULL,
nb_batiments INT DEFAULT 0,
INDEX idx_date_import (date_import),
INDEX idx_dept (dept)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- Vue consolidée de tous les départements (à créer après les imports)
-- Cette vue sera créée dynamiquement après l'import de tous les départements
-- Exemple de requête pour créer la vue après imports :
/*
CREATE OR REPLACE VIEW v_batiments_france AS
SELECT * FROM bat01
UNION ALL SELECT * FROM bat02
UNION ALL SELECT * FROM bat03
-- ... etc pour tous les départements
;
*/
-- Index supplémentaires recommandés après import complet
-- À exécuter sur chaque table batXX après import :
/*
ALTER TABLE bat01 ADD INDEX idx_nb_log (nb_log);
ALTER TABLE bat01 ADD INDEX idx_nb_niv (nb_niv_max);
ALTER TABLE bat01 ADD INDEX idx_coords (latitude, longitude);
*/
-- Permissions pour l'utilisateur osm_maj_user
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'localhost';
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'%';
FLUSH PRIVILEGES;
-- Statistiques globales
CREATE OR REPLACE VIEW v_stats_imports AS
SELECT
dept,
MAX(date_import) as derniere_import,
SUM(nb_batiments) as total_batiments
FROM _histo
GROUP BY dept
ORDER BY dept;
-- Exemple de jointure avec la base adresses
/*
-- Depuis la base batiments, joindre avec la base adresses :
SELECT
b.batiment_groupe_id,
b.nb_log,
b.nb_niv_max,
b.nb_pdl_res_princ as nb_compteurs,
a.numero,
a.rue,
a.cp,
a.ville
FROM bat01 b
JOIN adresses.cp01 a ON b.cle_interop_adr = a.id
WHERE b.nb_log > 0
AND b.nb_pdl_res_princ > 0;
*/

80
cron/test_batiments_35.sh Normal file
View File

@@ -0,0 +1,80 @@
#!/bin/bash
# Script de test import BDNB département 35
ladate=$(date +%Y%m%d-%H%M)
lheure=$(date +%H:%M:%S)
mybase=batiments
myuser=osm_maj_user
mypass=d66,OsmMaj.User
log=traite_batiments.log
rm -f $log
touch $log
echo "To: support@unikoffice.com" >> $log
echo "From: support@unikoffice.com" >> $log
echo "Subject: [Import TEST] BATIMENTS BDNB dept 35 - $ladate" >> $log
echo "" >> $log
cd /var/osm
millesime="2024-10-a"
base_url="https://open-data.s3.fr-par.scw.cloud/bdnb_millesime_${millesime}/millesime_${millesime}_dep"
# Création du dossier csv s'il n'existe pas
mkdir -p csv
dept="35"
rm -f batiments-${dept}.zip
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement du departement $dept a $lheure" >> $log
wget ${base_url}${dept}/open_data_millesime_${millesime}_dep${dept}_csv.zip -O batiments-${dept}.zip
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement ne semble ne pas fonctionner pour le dept $dept. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
msmtp support@unikoffice.com < $log
exit 1
else
lheure=$(date +%H:%M:%S)
echo "Telechargement du departement $dept termine a $lheure" >> $log
# Extraction du ZIP (contient déjà un dossier csv/)
unzip -o batiments-${dept}.zip
lheure=$(date +%H:%M:%S)
echo "Extraction terminee" >> $log
# Copie du template SQL et remplacement de 999 par le département
cp traite_batiments.sql traite_batiments_${dept}.sql
sed -i "s/999/$dept/g" traite_batiments_${dept}.sql
lheure=$(date +%H:%M:%S)
echo "Import SQL du departement $dept commence a $lheure" >> $log
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < traite_batiments_${dept}.sql
if [ "$?" -ne "0" ]; then
echo "!!!! Erreur lors de l'import SQL pour le dept $dept !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
else
echo "Import SQL reussi" >> $log
fi
# Nettoyage complet après import
rm -f csv/*.csv
rm -f csv/*.csvt
rm -f csv/*.prj
rm -rf csv/doc
rm -f batiments-${dept}.zip
rm -f traite_batiments_${dept}.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql des batiments du departement $dept terminee a $lheure" >> $log
fi
lheure=$(date +%H:%M:%S)
echo "Fin du traitement a $lheure" >> $log
msmtp support@unikoffice.com < $log

61
cron/traite_adresses.sh Normal file
View File

@@ -0,0 +1,61 @@
#!/bin/bash
ladate=$(date +%Y%m%d-%H%M)
lheure=$(date +%H:%M:%S)
mybase=adresses
myuser=osm_maj_user
mypass=d66,OsmMaj.User
log=adresses.log
rm -f $log
touch $log
echo "To: support@unikoffice.com" >> $log
echo "From: support@unikoffice.com" >> $log
echo "Subject: [Import] ADRESSES dva-maria - $ladate" >> $log
echo "" >> $log
cd /var/osm
rm -f adresses-france.gz
rm -f adresses-france
for dept in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 2A 2B 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 971 972 973 974 975 976 977 978 984 986 987 988 989
do
rm -f adresses-${dept}.gz
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement du departement $dept a $lheure" >> $log
wget https://adresse.data.gouv.fr/data/ban/adresses/latest/csv/adresses-${dept}.csv.gz -O adresses-${dept}.gz
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement ne semble ne pas fonctionner. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
else
lheure=$(date +%H:%M:%S)
echo "Telechargement du departement $dept termine a $lheure" >> $log
gzip -d adresses-${dept}.gz
rm -f cde_dept.sql
touch cde_dept.sql
echo "USE $mybase;" >> cde_dept.sql
echo "DROP TABLE IF EXISTS cp$dept;" >> cde_dept.sql
echo "CREATE TABLE cp$dept (id varchar(25) DEFAULT '', id_fantoir varchar(20) DEFAULT '', numero varchar(5) DEFAULT '', rue_bis varchar(5) DEFAULT '', rue varchar(60) DEFAULT '', cp varchar(5) DEFAULT '', code_insee varchar(5) DEFAULT '', ville varchar(60) DEFAULT '', code_insee_ancien varchar(5) DEFAULT '', ville_ancien varchar(60) DEFAULT '', x varchar(10) DEFAULT '', y varchar(10) DEFAULT '', gps_lng varchar(10) DEFAULT '', gps_lat varchar(10) DEFAULT '', type_position varchar(10) DEFAULT '', alias varchar(1) DEFAULT '', nom_ld varchar(60) DEFAULT '', ville_acheminement varchar(60) DEFAULT '', rue_afnor varchar(60) DEFAULT '', source varchar(10) DEFAULT '', source_rue varchar(10) DEFAULT '', certification tinyint(1) DEFAULT 0, cadastre varchar(14) DEFAULT '', KEY cp (cp), KEY gps_lat (gps_lat), KEY gps_lng (gps_lng)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;" >> cde_dept.sql
echo "LOAD DATA LOCAL INFILE 'adresses-${dept}' INTO TABLE cp$dept CHARACTER SET 'UTF8mb4' FIELDS TERMINATED BY ';' IGNORE 1 LINES (id, id_fantoir, numero, rue_bis, rue, cp, code_insee, ville, code_insee_ancien, ville_ancien, x, y, gps_lng, gps_lat, type_position, alias, nom_ld, ville_acheminement, rue_afnor, source, source_rue, certification, cadastre);" >> cde_dept.sql
echo "INSERT INTO _histo SET date_import=NOW(), dept='$dept', nb_adresses=(SELECT COUNT(*) FROM cp$dept);" >> cde_dept.sql
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < cde_dept.sql
rm -f adresses-${dept}
lheure=$(date +%H:%M:%S)
echo "Importation sql des adresses du departement $dept terminee a $lheure" >> $log
fi
done
lheure=$(date +%H:%M:%S)
echo "Fin des traitements a $lheure" >> $log
msmtp support@unikoffice.com < $log

79
cron/traite_batiments.sh Normal file
View File

@@ -0,0 +1,79 @@
#!/bin/bash
# Script d'import BDNB tous départements de France
ladate=$(date +%Y%m%d-%H%M)
lheure=$(date +%H:%M:%S)
mybase=batiments
myuser=osm_maj_user
mypass=d66,OsmMaj.User
log=traite_batiments.log
rm -f $log
touch $log
echo "To: support@unikoffice.com" >> $log
echo "From: support@unikoffice.com" >> $log
echo "Subject: [Import] BATIMENTS BDNB dva-maria - $ladate" >> $log
echo "" >> $log
cd /var/osm
millesime="2024-10-a"
base_url="https://open-data.s3.fr-par.scw.cloud/bdnb_millesime_${millesime}/millesime_${millesime}_dep"
# Création du dossier csv s'il n'existe pas
mkdir -p csv
for dept in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 2A 2B 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 971 972 973 974 975 976 977 978 984 986 987 988 989
do
rm -f batiments-${dept}.zip
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement du departement $dept a $lheure" >> $log
wget ${base_url}${dept}/open_data_millesime_${millesime}_dep${dept}_csv.zip -O batiments-${dept}.zip
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement ne semble ne pas fonctionner pour le dept $dept. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
else
lheure=$(date +%H:%M:%S)
echo "Telechargement du departement $dept termine a $lheure" >> $log
# Extraction du ZIP (contient déjà un dossier csv/)
unzip -o batiments-${dept}.zip
lheure=$(date +%H:%M:%S)
echo "Extraction terminee" >> $log
# Copie du template SQL et remplacement de 999 par le département
cp traite_batiments.sql traite_batiments_${dept}.sql
sed -i "s/999/$dept/g" traite_batiments_${dept}.sql
lheure=$(date +%H:%M:%S)
echo "Import SQL du departement $dept commence a $lheure" >> $log
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < traite_batiments_${dept}.sql
if [ "$?" -ne "0" ]; then
echo "!!!! Erreur lors de l'import SQL pour le dept $dept !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
else
echo "Import SQL reussi" >> $log
fi
# Nettoyage complet après import
rm -f csv/*.csv
rm -f csv/*.csvt
rm -f csv/*.prj
rm -rf csv/doc
rm -f batiments-${dept}.zip
rm -f traite_batiments_${dept}.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql des batiments du departement $dept terminee a $lheure" >> $log
fi
done
lheure=$(date +%H:%M:%S)
echo "Fin des traitements a $lheure" >> $log
msmtp support@unikoffice.com < $log

193
cron/traite_batiments.sql Normal file
View File

@@ -0,0 +1,193 @@
USE batiments;
-- Table temp pour FFO (nb_niveau, nb_log)
DROP TABLE IF EXISTS tmp_ffo_999;
CREATE TABLE tmp_ffo_999 (
batiment_groupe_id VARCHAR(50),
code_departement_insee VARCHAR(5),
nb_niveau INT,
annee_construction INT,
usage_niveau_1_txt VARCHAR(100),
mat_mur_txt VARCHAR(100),
mat_toit_txt VARCHAR(100),
nb_log INT,
KEY (batiment_groupe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/batiment_groupe_ffo_bat.csv'
INTO TABLE tmp_ffo_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Table temp pour Adresse (lien BAN)
DROP TABLE IF EXISTS tmp_adr_999;
CREATE TABLE tmp_adr_999 (
wkt TEXT,
batiment_groupe_id VARCHAR(50),
cle_interop_adr VARCHAR(50),
code_departement_insee VARCHAR(5),
classe VARCHAR(50),
lien_valide TINYINT,
origine VARCHAR(50),
KEY (batiment_groupe_id),
KEY (cle_interop_adr)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/rel_batiment_groupe_adresse.csv'
INTO TABLE tmp_adr_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Table temp pour RNC (copropriétés)
DROP TABLE IF EXISTS tmp_rnc_999;
CREATE TABLE tmp_rnc_999 (
batiment_groupe_id VARCHAR(50),
code_departement_insee VARCHAR(5),
numero_immat_principal VARCHAR(50),
periode_construction_max VARCHAR(50),
l_annee_construction VARCHAR(100),
nb_lot_garpark INT,
nb_lot_tot INT,
nb_log INT,
nb_lot_tertiaire INT,
l_nom_copro VARCHAR(200),
l_siret VARCHAR(50),
copro_dans_pvd TINYINT,
KEY (batiment_groupe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/batiment_groupe_rnc.csv'
INTO TABLE tmp_rnc_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Table temp pour BDTOPO (altitude)
DROP TABLE IF EXISTS tmp_topo_999;
CREATE TABLE tmp_topo_999 (
batiment_groupe_id VARCHAR(50),
code_departement_insee VARCHAR(5),
l_nature VARCHAR(200),
l_usage_1 VARCHAR(200),
l_usage_2 VARCHAR(200),
l_etat VARCHAR(100),
hauteur_mean DECIMAL(10,2),
max_hauteur DECIMAL(10,2),
altitude_sol_mean DECIMAL(10,2),
KEY (batiment_groupe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/batiment_groupe_bdtopo_bat.csv'
INTO TABLE tmp_topo_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Table temp pour Usage principal
DROP TABLE IF EXISTS tmp_usage_999;
CREATE TABLE tmp_usage_999 (
batiment_groupe_id VARCHAR(50),
code_departement_insee VARCHAR(5),
usage_principal_bdnb_open VARCHAR(100),
KEY (batiment_groupe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/batiment_groupe_synthese_propriete_usage.csv'
INTO TABLE tmp_usage_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Table temp pour DLE Enedis (compteurs électriques)
DROP TABLE IF EXISTS tmp_dle_999;
CREATE TABLE tmp_dle_999 (
batiment_groupe_id VARCHAR(50),
code_departement_insee VARCHAR(5),
millesime VARCHAR(10),
nb_pdl_res INT,
nb_pdl_pro INT,
nb_pdl_tot INT,
conso_res DECIMAL(12,2),
conso_pro DECIMAL(12,2),
conso_tot DECIMAL(12,2),
conso_res_par_pdl DECIMAL(12,2),
conso_pro_par_pdl DECIMAL(12,2),
conso_tot_par_pdl DECIMAL(12,2),
KEY (batiment_groupe_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOAD DATA LOCAL INFILE '/var/osm/csv/batiment_groupe_dle_elec_multimillesime.csv'
INTO TABLE tmp_dle_999
CHARACTER SET 'UTF8mb4'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
IGNORE 1 LINES;
-- Création de la table finale avec jointure et filtre
DROP TABLE IF EXISTS bat999;
CREATE TABLE bat999 (
batiment_groupe_id VARCHAR(50) PRIMARY KEY,
code_departement_insee VARCHAR(5),
cle_interop_adr VARCHAR(50),
nb_niveau INT,
nb_log INT,
nb_pdl_tot INT,
annee_construction INT,
residence VARCHAR(200),
usage_principal VARCHAR(100),
altitude_sol_mean DECIMAL(10,2),
gps_lat DECIMAL(10,7),
gps_lng DECIMAL(10,7),
KEY (cle_interop_adr),
KEY (usage_principal),
KEY (nb_log)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO bat999
SELECT
f.batiment_groupe_id,
f.code_departement_insee,
a.cle_interop_adr,
f.nb_niveau,
f.nb_log,
d.nb_pdl_tot,
f.annee_construction,
REPLACE(REPLACE(REPLACE(REPLACE(r.l_nom_copro, '[', ''), ']', ''), '"', ''), ' ', ' ') as residence,
u.usage_principal_bdnb_open as usage_principal,
t.altitude_sol_mean,
NULL as gps_lat,
NULL as gps_lng
FROM tmp_ffo_999 f
INNER JOIN tmp_adr_999 a ON f.batiment_groupe_id = a.batiment_groupe_id AND a.lien_valide = 1
LEFT JOIN tmp_rnc_999 r ON f.batiment_groupe_id = r.batiment_groupe_id
LEFT JOIN tmp_topo_999 t ON f.batiment_groupe_id = t.batiment_groupe_id
LEFT JOIN tmp_usage_999 u ON f.batiment_groupe_id = u.batiment_groupe_id
LEFT JOIN tmp_dle_999 d ON f.batiment_groupe_id = d.batiment_groupe_id
WHERE u.usage_principal_bdnb_open IN ('Résidentiel individuel', 'Résidentiel collectif', 'Secondaire', 'Tertiaire')
AND f.nb_log > 1
AND a.cle_interop_adr IS NOT NULL
GROUP BY f.batiment_groupe_id;
-- Mise à jour des coordonnées GPS depuis la base adresses
UPDATE bat999 b
JOIN adresses.cp999 a ON b.cle_interop_adr = a.id
SET b.gps_lat = a.gps_lat, b.gps_lng = a.gps_lng
WHERE b.cle_interop_adr IS NOT NULL;
-- Nettoyage des tables temporaires
DROP TABLE IF EXISTS tmp_ffo_999;
DROP TABLE IF EXISTS tmp_adr_999;
DROP TABLE IF EXISTS tmp_rnc_999;
DROP TABLE IF EXISTS tmp_topo_999;
DROP TABLE IF EXISTS tmp_usage_999;
DROP TABLE IF EXISTS tmp_dle_999;
-- Historique
INSERT INTO _histo SET date_import=NOW(), dept='999', nb_batiments=(SELECT COUNT(*) FROM bat999);

146
cron/traite_osm.sh Normal file
View File

@@ -0,0 +1,146 @@
#!/bin/bash
ladate=$(date +%Y%m%d-%H%M)
lheure=$(date +%H:%M:%S)
mybase=osm
myuser=osm_maj_user
mypass=d66,OsmMaj.User
log=osm.log
rm -f $log
touch $log
echo "To: contact@d6soft.fr" >> $log
echo "From: contact@d6soft.fr" >> $log
echo "Subject: [Import] OSM dva-maria - $ladate" >> $log
continent=australia-oceania
country=new-caledonia
cd /var/osm
echo "Demarrage du telechargement de la Nouvelle-Caledonie a $lheure" >> $log
rm -f ${country}-latest.osm.pbf
rm -f ${country}.o5m
rm -f ${country}-streets.csv
rm -f streets.csv
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement de la Nouvelle-Caledonie a $lheure" >> $log
wget http://download.geofabrik.de/${continent}/${country}-latest.osm.pbf -O ${country}-latest.osm.pbf
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement deNouvelle-Caledonie semble ne pas fonctionner. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
# exit 1
else
lheure=$(date +%H:%M:%S)
echo "Telechargement de la Nouvelle-Caledonie terminee a $lheure" >> $log
osmconvert -v ${country}-latest.osm.pbf --all-to-nodes --drop-relations --max-objects=99999999 --out-o5m > ${country}.o5m
lheure=$(date +%H:%M:%S)
echo "Generation du fichier .o5m terminee a $lheure" >> $log
osmconvert ${country}.o5m --csv="@id @lat @lon name place addr:street addr:housenumber addr:city addr:village addr:town" --csv-headline --csv-separator=, -o=${country}-streets.csv
lheure=$(date +%H:%M:%S)
echo "Conversion en .csv terminee a $lheure" >> $log
awk -F, '$4 != "" || $5 != "" || $6 != "" || $8 != ""' ${country}-streets.csv > streets.csv
lheure=$(date +%H:%M:%S)
echo "Filtrage du csv termine a $lheure" >> $log
table="${country//-/_}"
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "DROP TABLE IF EXISTS $table;" >> cde.sql
echo "CREATE TABLE $table (rowid int(11) NOT NULL AUTO_INCREMENT, osm_id int(11) DEFAULT NULL, osm_lat varchar(10) DEFAULT NULL, osm_lng varchar(10) DEFAULT NULL, osm_name varchar(60) DEFAULT NULL, osm_place varchar(60) DEFAULT NULL, osm_street varchar(60) DEFAULT NULL, osm_number varchar(10) DEFAULT NULL, osm_city varchar(60) DEFAULT NULL, osm_date_creat timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;" >> cde.sql
echo "ALTER TABLE $table ADD INDEX osm_lat (osm_lat ASC), ADD INDEX osm_lng (osm_lng ASC);" >> cde.sql
echo "LOAD DATA LOCAL INFILE 'streets.csv' INTO TABLE $table CHARACTER SET 'UTF8mb4' FIELDS TERMINATED BY ',' IGNORE 1 LINES (osm_id, osm_lat, osm_lng, osm_name, osm_place, osm_street, osm_number, osm_city);" >> cde.sql
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql de la Nouvelle-Caledonie dans la table $table terminee a $lheure" >> $log
rm -f ${country}-latest.osm.pbf
rm -f ${country}.o5m
rm -f ${country}-streets.csv
rm -f streets.csv
fi
continent=europe
country=france
cd /var/osm
echo "Demarrage du telechargement des regions a $lheure" >> $log
for region in alsace aquitaine auvergne basse-normandie bourgogne bretagne centre champagne-ardenne corse franche-comte guadeloupe guyane haute-normandie ile-de-france languedoc-roussillon limousin lorraine martinique mayotte midi-pyrenees nord-pas-de-calais pays-de-la-loire picardie poitou-charentes provence-alpes-cote-d-azur reunion rhone-alpes
do
rm -f ${country}-${region}-latest.osm.pbf
rm -f ${country}-${region}.o5m
rm -f ${country}-${region}-streets.csv
rm -f *.csv
lheure=$(date +%H:%M:%S)
echo "Debut du telechargement de la region $region a $lheure" >> $log
wget http://download.geofabrik.de/${continent}/${country}/${region}-latest.osm.pbf -O ${country}-${region}-latest.osm.pbf
if [ "$?" -ne "0" ] ; then
echo "!!!! Désolé, le téléchargement de la carte $region semble ne pas fonctionner. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> $log
# exit 1
else
lheure=$(date +%H:%M:%S)
echo "Telechargement de la region $region terminee a $lheure" >> $log
osmconvert -v ${country}-${region}-latest.osm.pbf --all-to-nodes --drop-relations --max-objects=99999999 --out-o5m > ${country}-${region}.o5m
lheure=$(date +%H:%M:%S)
echo "Generation du fichier .o5m terminee a $lheure" >> $log
osmconvert ${country}-${region}.o5m --csv="@id @lat @lon name place addr:street addr:housenumber addr:city addr:village addr:town" --csv-headline --csv-separator=, -o=${country}-${region}-streets.csv
lheure=$(date +%H:%M:%S)
echo "Conversion en .csv terminee a $lheure" >> $log
awk -F, '$4 != "" || $5 != "" || $6 != "" || $8 != ""' ${country}-${region}-streets.csv > streets.csv
lheure=$(date +%H:%M:%S)
echo "Filtrage du csv termine a $lheure" >> $log
split -l 1000 streets.csv streets_1000_
table="${region//-/_}"
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "DROP TABLE IF EXISTS $table;" >> cde.sql
echo "CREATE TABLE $table (rowid int(11) NOT NULL AUTO_INCREMENT, osm_id int(11) DEFAULT NULL, osm_lat varchar(10) DEFAULT NULL, osm_lng varchar(10) DEFAULT NULL, osm_name varchar(60) DEFAULT NULL, osm_place varchar(60) DEFAULT NULL, osm_street varchar(60) DEFAULT NULL, osm_number varchar(10) DEFAULT NULL, osm_city varchar(60) DEFAULT NULL, osm_date_creat timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (rowid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;" >> cde.sql
echo "ALTER TABLE $table ADD INDEX osm_lat (osm_lat ASC), ADD INDEX osm_lng (osm_lng ASC);" >> cde.sql
mysql --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Creation sql de la region $region $a dans la table $table terminee a $lheure" >> $log
for a in $(find . -name "streets_1000_*" | sort);
do
rm -f cde.sql
touch cde.sql
echo "USE $mybase;" >> cde.sql
echo "LOAD DATA LOCAL INFILE '${a}' INTO TABLE $table CHARACTER SET 'UTF8mb4' FIELDS TERMINATED BY ',' IGNORE 1 LINES (osm_id, osm_lat, osm_lng, osm_name, osm_place, osm_street, osm_number, osm_city);" >> cde.sql
mariadb --local-infile=1 -u$myuser -p$mypass $mybase < cde.sql
lheure=$(date +%H:%M:%S)
echo "Importation sql de %a pour la region $region $a dans la table $table terminee a $lheure" >> $log
done
rm -f ${country}-${region}-latest.osm.pbf
rm -f ${country}-${region}.o5m
rm -f ${country}-${region}-streets.csv
rm -f streets_1000_*
rm -f *.csv
fi
done
lheure=$(date +%H:%M:%S)
echo "Fin des traitements OSM a $lheure" >> $log
ssmtp support@unikoffice.com < $log