%%{init: {'theme': 'neutral', 'themeVariables': {'fontSize': '13px'}}}%%
graph LR
subgraph SRC["10 bases open data"]
direction TB
A1["INSEE RP<br><small>51K IRIS × 264 cols</small>"]
A2["DVF+ DGFIP<br><small>9,5 M mutations</small>"]
A3["SIRENE INSEE<br><small>2,4 M établissements</small>"]
A4["BDNB · Filosofi<br><small>DPE · revenus</small>"]
A5["FLORES · SITADEL<br>LOVAC · MIGCOM"]
end
subgraph PIPE["Pipeline (R + Python + DuckDB)"]
direction TB
B1["Jointure spatiale<br><small>IGN IRIS → géocodage</small>"]
B2["DVF : filtre CEREMA<br><small>prix · MM3 · séries</small>"]
B3["SIRENE → IRIS<br><small>densité · créations · NAF</small>"]
B4["252 indicateurs<br><small>19 thèmes × 8 échelons</small>"]
B5["Agrégation nationale<br><small>volumes → taux recalculés</small>"]
end
subgraph OUT["Restitution (zéro serveur)"]
direction TB
C1["Parquet partitionné<br><small>par échelon + thème</small>"]
C2["DuckDB WASM<br><small>SQL côté navigateur</small>"]
C3["Observable Framework<br><small>D3 · Plot · Inputs</small>"]
end
A1 --> B4
A2 --> B1
A3 --> B1
A4 --> B4
A5 --> B4
B1 --> B2
B1 --> B3
B2 --> B4
B3 --> B4
B4 --> B5
B5 --> C1
C1 --> C2
C2 --> C3
Observatoire Territorial
Outil d’aide à la décision multi-échelle pour les territoires français
Plateforme interactive pour observer et comparer les dynamiques de développement territorial françaises. L’observatoire couvre le logement, la démographie, l’attractivité, l’économie-emploi et le niveau de vie — du niveau national jusqu’à l’IRIS.

Données : 10 bases, 35 000 communes, 51 000 IRIS
Le pipeline ingère et croise 10 bases de données open data couvrant l’ensemble du territoire métropolitain (96 départements, 2014–2025).
| Base | Producteur | Contenu | Granularité | Volume |
|---|---|---|---|---|
| Recensement (RP) | INSEE | Population, emploi, logement, diplômes, CSP — 3 millésimes (2011, 2016, 2022) | IRIS (51 020) | 264 colonnes × 51K lignes |
| Filosofi | INSEE | Revenu médian, taux de pauvreté, Gini, déciles | Commune + IRIS | 2016 + 2021 |
| DVF+ | DGFIP/CEREMA | Mutations immobilières à titre onéreux — prix, surface, type de bien, VEFA | Mutation (géocodée IRIS) | 9,5 M mutations filtrées (DuckDB 14 Go) |
| SIRENE | INSEE | Établissements actifs — secteur NAF, date création, effectif salarié | Géocodé IRIS | 2,4 M établissements |
| BDNB | CSTB | DPE (classes A→G), année construction (FFO), nombre de logements par bâtiment | Bâtiment → IRIS | 47 600 IRIS |
| FLORES | URSSAF | Emploi salarié privé par secteur (A5, A21, A38) | Zone d’emploi | 2011–2023 |
| SITADEL | SDES | Permis de construire autorisés et commencés (résidentiel + locaux activité) | Commune annuel | 2011–2025 |
| LOVAC | DGFIP | Logements vacants par commune (durée de vacance) | Commune | 2023 |
| MIGCOM | INSEE | Flux migratoires inter-communes (lieu résidence antérieure) | Commune | 2016 + 2022 |
| IGN | IGN | Contours géographiques IRIS, communes, ZE, départements (GPKG + TopoJSON) | Multi-échelon | France métro |
Architecture du pipeline
Le principe : partir des volumes bruts à la maille la plus fine (IRIS, mutation), calculer des taux et indices, puis agréger vers le haut en sommant les volumes et en recalculant les ratios à chaque échelon. On ne moyenne jamais des pourcentages.
Deux pipelines complémentaires :
- pdvf (Python + DuckDB) : ingestion des 9,5 M mutations DVF+ → filtrage aligné méthodologie CEREMA DV3F → jointure spatiale IRIS → agrégation multi-échelle → séries nationales (médiane vraie, pas moyenne de médianes). Base DuckDB de 14 Go, schéma 4 couches (raw → staging → ref → marts).
- ptod (R) : consomme les volumes census INSEE (parquets IRIS + communes) + sorties DVF/SIRENE/BDNB → calcule 252 indicateurs documentés → agrège sur 8 échelons géographiques → exporte Parquet + JSON pour Observable.
8 échelons géographiques : IRIS (51 020) → commune (35 000) → EPCI (1 244) → zone d’emploi (287) → département (96) → région (13) → aire d’attraction (683) → bassin de vie (1 681)
252 indicateurs, 19 thèmes
Chaque indicateur est documenté dans un dictionnaire de données (source de vérité unique pour le pipeline R, Observable et la documentation).
| Thème | Nb | Exemples |
|---|---|---|
| Économie / emploi | 39 | TCAM emploi, emploi privé, part secteurs A5/A21 |
| DVF immobilier | 27 | Prix m² médian, MM3, évolution, volumes transactions |
| SIRENE | 22 | Densité établissements/pop, créations, diversité sectorielle |
| Démographie | 21 | TCAM pop, solde naturel, solde migratoire apparent |
| Diplômes / CSP | 21 | Part cadres, bac+3, ouvriers, CSP détaillée |
| Flux migratoires | 19 | Taux migration, indice captation mobilité, profil migrants |
| Indices composites | 14 | Attractivité résidentielle/économique, gentrification, tension |
| Logement / vacance | 14 | Taux vacance, résidences secondaires, emménagés récents |
| Revenus | 13 | Médiane, pauvreté, D9/D1, évolution |
| Construction | 11 | SITADEL stock/1000 hab, part individuel, locaux activité |
| Vieillissement | 9 | Indice vieillissement, dépendance, jeunesse |
| BPE équipements | 8 | Densité commerces, services, santé |
| Autres (ménages, soc, LOVAC) | 34 | Chômage, ménages mono, LOVAC taux… |
Volets thématiques
Économie
Structure sectorielle, spécialisation (indice de Krugman), évolution de l’emploi salarié par zone d’emploi. Sources FLORES et URSSAF, nomenclatures A5/A21/A38.
Logement
Prix médian DVF (9,5 M mutations), logements vacants (LOVAC), construction neuve (SITADEL), DPE passoires thermiques (BDNB). Cartes choroplèthes et séries temporelles.
Attractivité
Indices composites d’attractivité résidentielle et économique. Scatter plot croisant les deux dimensions, table comparative des zones d’emploi.
Gentrification
Analyse infra-communale à l’IRIS — Paris, petite couronne et Marseille. Prix DVF, évolution CSP, revenus, SIRENE. 1 371 IRIS comparés via indice composite standardisé (z-scores).
252 indicateurs 10 bases 8 échelons 35 000 communes 51 000 IRIS 9,5 M mutations DVF 19 thèmes
Livrables
- Dashboard interactif → (Netlify, Observable Framework)
- Synthèse Gentrification → (rapport Quarto)
- Code source + README technique → (GitHub)
Stack technique
| Couche | Technologies |
|---|---|
| Traitement | DuckDB (OLAP 14 Go) · R (dplyr, arrow, sf) · Python (pandas, duckdb) |
| Frontend | Observable Framework · D3.js · Plot · DuckDB WASM |
| Cartographie | MapLibre GL · tmap · IGN contours IRIS/communes |
| Formats | Parquet (partitionné) · JSON (Observable) · CSV UTF-8 BOM |
| Déploiement | Netlify (auto-deploy) · GitHub Pages (Quarto) |
| Rapports | Quarto (R+Python) · 4 synthèses analytiques |



