Observatoire Territorial

Outil d’aide à la décision multi-échelle pour les territoires français

← Retour aux projets

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.

ObTer — Page d’accueil

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.

%%{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

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

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