No description
  • Python 69%
  • PLpgSQL 15.7%
  • Shell 15.3%
Find a file
2025-10-17 13:14:46 +02:00
data-cleanup chore: update output file path for map visualization 2025-10-17 13:14:40 +02:00
sql refactor: add LIMIT clause to SQL queries for performance 2025-10-16 15:05:30 +02:00
.gitignore chore: remove unnecessary HTML file from .gitignore 2025-10-17 13:14:46 +02:00
analyse_puissance_solaire_20251016_133153.png feat: query12 et graphiques 2025-10-16 14:22:24 +02:00
carte_ecart_orientation.html feat: query/orientation&pente 2025-10-16 14:23:19 +02:00
carte_ecart_pente.html feat: query/orientation&pente 2025-10-16 14:23:19 +02:00
carte_installations_france.html chore: update output file path for map visualization 2025-10-17 13:14:40 +02:00
cleaned_data.csv refactor: enhance data validation and cleaning logic 2025-10-16 11:19:24 +02:00
communes-france-2024-limite.csv feat: initialize project structure with essential files 2025-10-13 09:50:34 +02:00
data.csv feat: initialize project structure with essential files 2025-10-13 09:50:34 +02:00
data_small.csv feat: enhance data cleaning with communes mapping 2025-10-13 13:15:20 +02:00
MCD.png docs: add images for conceptual and logical data models 2025-10-16 16:26:39 +02:00
Mcd_V1.mcd refactor: make fields nullable in database schema 2025-10-14 08:53:35 +02:00
MLD.png docs: add images for conceptual and logical data models 2025-10-16 16:26:39 +02:00
projet-cipa4-2025-nantes-lancement.pdf first commit 2025-10-13 09:14:01 +02:00
projet-cipa4-2025-nantes.pdf first commit 2025-10-13 09:14:01 +02:00
Présentation projet.md first commit 2025-10-13 09:14:01 +02:00
README.MD docs: add images for conceptual and logical data models 2025-10-16 16:26:39 +02:00
run_results.sh refactor: add LIMIT clause to SQL queries for performance 2025-10-16 15:05:30 +02:00
Scatter_Plot_Query_11.png chore: update output file path for map visualization 2025-10-17 13:14:40 +02:00
Tutoriel PostgreSQL projet cipa.pdf first commit 2025-10-13 09:14:01 +02:00

Projet BDD - Gestion des installations photovoltaïques

🌟 Introduction

Dans le cadre du cours de Base de Données, ce projet vous invite à concevoir et interroger une base de données relationnelle portant sur les installations photovoltaïques résidentielles. Le jeu de données est fourni dans le cas du projet.

🎯 Objectifs

  • Construire un schéma relationnel en 3FN (Troisième Forme Normale).
  • Nettoyer et homogénéiser les fichiers source.
  • Charger les données dans une base de données PostgreSQL.
  • Répondre à un ensemble de requêtes d'analyse.

📊 Fichiers de Base

  • data.csv : Contient les installations avec puissance crête, surface, marques, orientation, etc.
  • communes-france-2024-limite.csv : Référentiel des communes françaises avec code INSEE, commune, département, région et code postal.

📋 Requirements

  • Python 3.x
  • PostgreSQL
  • Poetry (pour la gestion des dépendances)

🚀 Installation

  1. Cloner le dépôt GitHub :

    git clone https://github.com/breizhhardware/projet-bdd-cipa4.git
    cd projet-bdd-cipa4/data-cleanup
    
  2. Installer les dépendances avec Poetry :

    poetry install
    
  3. Configurer la base de données PostgreSQL : Utilisez database.sql pour créer les tables nécessaires (si la base existe déjà, les tables seront supprimées avant d'être recréées).

    psql -U votre_utilisateur -d votre_base_de_donnees -f ../sql/model/database.sql
    
  4. Générer les scripts SQL pour insérer les données nettoyées : ⚠️ Cela peut prendre du temps en raison du traitement par IA (environ 13 min sur un MacBook Air M2).

    poetry run python src/data_cleanup/__init__.py
    
  5. Insérer les données nettoyées dans la base de données :

    psql -U votre_utilisateur -d votre_base_de_donnees -f ../sql/seeder/insert_data.sql
    

▶️ Exécution

  1. Nettoyer et homogénéiser les données :

    poetry run python src/data_cleanup/__init__.py
    
  2. Insérer les données nettoyées dans PostgreSQL :

    psql -U votre_utilisateur -d votre_base_de_donnees -f ../sql/seeder/insert_data.sql
    
  3. Générer des cartes :

⚠️ Il faut avoir exécuté le script de nettoyage des données avant et avoir adapter le .env.example a votre environnement et le nommer en .env.

  • Pour générer la carte des installations photovoltaïques
poetry run python src/data_cleanup/map_visualization.py
  • Pour générer les cartes de comparaison des pentes et orientation optimum
poetry run python src/data_cleanup/map_orientation_pente.py
  1. Visualiser les cartes :
    • Ouvrez le fichier carte_installations_france.html dans votre navigateur.
    • Ouvrez le fichier carte_ecart_orientation.html dans votre navigateur.
    • Ouvrez le fichier carte_ecart_pente.html dans votre navigateur.

📁 Structure du Projet

Voici un aperçu de l'arborescence des fichiers du projet :

projet-bdd-cipa4/
├── analyse_puissance_solaire_20251016_092823.png  # Image d'analyse de puissance solaire
├── cleaned_data.csv                              # Données nettoyées
├── communes-france-2024-limite.csv               # Référentiel des communes françaises
├── data_small.csv                                # Échantillon de données
├── data.csv                                      # Données brutes des installations
├── MCD.png                                     # Image du modèle conceptuel de données (MCD)
├── Mcd_V1.mcd                                    # Modèle conceptuel de données (MCD)
├── MLD.png                                     # Image du modèle logique de données (MLD)
├── Présentation projet.md                        # Présentation du projet
├── projet-cipa4-2025-nantes-lancement.pdf         # PDF de lancement du projet
├── projet-cipa4-2025-nantes.pdf                   # PDF du projet
├── README.MD                                     # Ce fichier
├── run_results.sh                                # Script pour exécuter les requêtes SQL et afficher les résultats dans le dossier sql/results/
├── Tutoriel PostgreSQL projet cipa.pdf           # Tutoriel PostgreSQL
├── data-cleanup/                                 # Dossier pour le nettoyage des données
│   ├── carte_installations_france.html           # Carte interactive des installations
│   ├── poetry.lock                               # Fichier de verrouillage Poetry
│   ├── pyproject.toml                            # Configuration Poetry
│   ├── src/                                      # Code source Python
│   │   └── data_cleanup/
│   │       ├── __init__.py
│   │       ├── clean_data.py                     # Script de nettoyage des données
│   │       ├── config.py                         # Configuration
│   │       ├── detect_encoding.py                # Détection d'encodage
│   │       ├── generate_inserts.py               # Génération des inserts SQL
│   │       ├── map_visualization.py              # Visualisation de la carte
|   |       ├── map_orientation_pente             # Visualisation de cartes sur l'orientation et les pentes
│   │       ├── query_12.py                       # Requête spécifique
│   │       └── utils.py                          # Utilitaires
│   └── tests/                                    # Tests unitaires
│       └── __init__.py
└── sql/                                         # Scripts SQL
    ├── results/                                 # Résultats des requêtes
    ├── model/
    │   └── database.sql                          # Création des tables
    ├── requests/
    │   ├── SqlRequests.sql                       # Requêtes d'analyse
    │   └── testModel.sql                        # Tests du modèle
    └── seeder/
        └── insert_data.sql                       # Insertion des données
  • Racine : Contient les données brutes, les fichiers de présentation et les images.
  • data-cleanup/ : Module Python pour le nettoyage et la visualisation des données.
  • sql/ : Scripts SQL pour la base de données, incluant le modèle, les requêtes et l'insertion des données.

🔍 Requêtes SQL

Les requêtes SQL pour analyser les données sont disponibles dans le dossier sql/requests/. Exécutez-les dans votre base de données PostgreSQL pour obtenir les résultats souhaités.

psql -U votre_utilisateur -d votre_base_de_donnees -f ../sql/requests/SqlRequests.sql

Pour obtenir chaque résultat dans un fichier séparé, utilisez le script run_results.sh :

bash run_results.sh

👥 Auteurs


Projet réalisé dans le cadre du cours de Base de Données à l'ISEN Nantes.