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:
1352
cron/batiments.md
Normal file
1352
cron/batiments.md
Normal file
File diff suppressed because it is too large
Load Diff
226
cron/doc/CHANGELOG.md
Normal file
226
cron/doc/CHANGELOG.md
Normal 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
62
cron/doc/README.md
Normal 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
BIN
cron/doc/documentation.xlsx
Normal file
Binary file not shown.
3956
cron/dump-adresses-202511061203.sql
Normal file
3956
cron/dump-adresses-202511061203.sql
Normal file
File diff suppressed because it is too large
Load Diff
73
cron/init_batiments.sql
Normal file
73
cron/init_batiments.sql
Normal 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
80
cron/test_batiments_35.sh
Normal 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
61
cron/traite_adresses.sh
Normal 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
79
cron/traite_batiments.sh
Normal 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
193
cron/traite_batiments.sql
Normal 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
146
cron/traite_osm.sh
Normal 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
|
||||
Reference in New Issue
Block a user