Recensement 2021 — tables « aires de diffusion » (staging-recensement.db)
Construit le 2026-08-08 par scripts/build_recensement.py.
Livrable : data/staging-recensement.db (tables da_poly, da_stats, meta).
Sources
| Donnée | Source | URL |
|---|---|---|
| Polygones des AD | Statistique Canada, Fichiers des limites cartographiques 2021 (92-160-X), aires de diffusion, lda_000b21a_e.zip (197 Mo, shapefile) |
https://www12.statcan.gc.ca/census-recensement/2021/geo/sip-pis/boundary-limites/files-fichiers/lda_000b21a_e.zip |
| Statistiques | Profil du recensement 2021, 98-401-X2021006, fichier « Québec » au niveau des aires de diffusion (CSV français, 6,5 Go décompressé) | https://www12.statcan.gc.ca/census-recensement/2021/dp-pd/prof/details/download-telecharger/comp/GetFile.cfm?Lang=F&FILETYPE=CSV&GEONO=006_Quebec |
Attribution (licence ouverte de Statistique Canada) : « Statistique Canada, Recensement de la population de 2021 ».
Méthodologie
Polygones (da_poly)
- Lecture du shapefile avec pyshp ; le fichier StatCan est projeté en Lambert conforme conique « NAD83 Statistics Canada Lambert » (EPSG:3347), reprojeté vers WGS84 (EPSG:4326) avec pyproj.
- Filtres :
PRUID = 24(Québec), puis intersection de la bbox WGS84 de chaque AD avec la zone de couverture des annonces Lou-Ka : lat 44,9–47,7 / lng −74,6–−70,2 (Québec, Lévis, Grand Montréal + périphérie). Pré-filtre grossier sur la bbox projetée pour éviter de reprojeter les géométries hors zone. poly= JSON, liste d'anneaux[[lng, lat], …]; le 1er anneau d'un polygone shapefile est l'anneau extérieur, les suivants sont les trous ou les autres parties (multi-polygones). Un test point-dans-polygone pair/impair sur l'ensemble des anneaux gère correctement trous et multi-parties. Coordonnées arrondies à 6 décimales (~10 cm).
Statistiques (da_stats)
Le CSV de 6,5 Go est streamé (module csv, encodage latin-1, jamais chargé
en mémoire). Les ID_CARACTÉRISTIQUE sont découverts dynamiquement en scannant
la liste des caractéristiques de la première géographie du fichier (robuste aux
renumérotations) ; les noms ambigus (« Français », « Locataire »,
« Baccalauréat ou grade supérieur » apparaissent plusieurs fois) sont résolus
par position : première occurrence après la ligne « Total » de leur section.
Variables retenues (valeur = colonne C1_CHIFFRE_TOTAL) :
| Colonne | Caractéristique du profil (ID 2021) | Calcul |
|---|---|---|
population |
Population, 2021 (1) | direct |
densite |
Densité de la population au kilomètre carré (6) | direct |
age_median |
Âge médian de la population (40) | direct |
revenu_median |
Revenu total médian des ménages en 2020 ($) (243) | direct |
pct_locataires |
Locataire (1416) / Total ménages privés selon le mode d'occupation (1414) | 100 × 1416 ÷ 1414 |
loyer_moyen |
Frais de logement mensuels moyens pour les logements occupés par un ménage locataire ($) (1495) | direct |
pct_francais |
Français (739) / Total langue parlée le plus souvent à la maison (735) | 100 × 739 ÷ 735 |
pct_univ |
Baccalauréat ou grade supérieur (2024) / Total plus haut certificat, diplôme ou grade, 25–64 ans (2014) | 100 × 2024 ÷ 2014 |
Notes :
loyer_moyen= « frais de logement mensuels moyens » des ménages locataires (loyer + électricité/chauffage/services municipaux, définition StatCan) ; c'est la mesure standard du coût mensuel des logements loués dans le profil.- Valeurs supprimées par StatCan (confidentialité : symboles
x,F,..,...) → NULL ; les pourcentages dont le numérateur ou le dénominateur est supprimé ou nul → NULL. Rien n'est imputé. - Revenu et scolarité proviennent des données-échantillon (25 %) ; population, âge et langue des données intégrales (100 %).
Validations (exécutées le 2026-08-08, toutes réussies)
-
11 317 AD dans
da_poly(sur 13 805 AD au Québec) — dans la fourchette attendue (8 000–13 000). Population couverte : 7 186 380 habitants. -
Couverture
da_stats: 11 317 / 11 317 = 100 % des DAUID deda_poly. -
Point de contrôle : (46.8139, −71.2329) → DAUID 24231035 ✓ (identique au résultat de l'API ArcGIS StatCan,
geo.statcan.gc.ca/geo_wa/rest/services/2021/Cartographic_boundary_files/MapServer/12). -
Échantillon de plausibilité (point-dans-polygone puis lecture des stats, colonnes : revenu_median / pct_locataires / loyer_moyen / pct_francais / pct_univ) :
Secteur DAUID Revenu médian % locataires Loyer moyen % français % univ Saint-Roch (Québec) 24231032 65 000 $ 79,3 % 1 136 $ 93,3 % 68,0 % Sillery (Québec) 24230224 137 000 $ 14,8 % 1 200 $ 93,6 % 61,7 % Plateau Mont-Royal (Mtl) 24661965 57 200 $ 76,7 % 1 230 $ 63,6 % 76,6 % Cohérent : Saint-Roch et le Plateau très locatifs, Sillery aisé et propriétaire, français plus faible sur le Plateau.
-
Valeurs manquantes (suppression StatCan) : revenu_median NULL pour 234 AD, loyer_moyen NULL pour 2 095 AD (AD avec peu ou pas de locataires), pct_locataires/pct_univ NULL pour 118 AD — laissées NULL, rien d'imputé.
-
Taille du livrable :
data/staging-recensement.db≈ 45 Mo.
Note : certaines AD rurales très étendues qui intersectent la zone débordent au nord (lat_max jusqu'à ~49,0) — comportement attendu du filtre par intersection de bbox.
Reproduire
# 1) télécharger les deux sources dans /tmp (URLs ci-dessus), dézipper
# 2) construire :
.venv/bin/python scripts/build_recensement.py \
--shp /tmp/louka-recensement/lda/lda_000b21a_e.shp \
--csv /tmp/louka-recensement/profil/98-401-X2021006_Francais_CSV_data_Quebec.csv \
--db data/staging-recensement.db --etape tout