SPB Git

spb/lou-ka Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

HTML 99.7%
5.9 KB

# 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 de da_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.db45 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

bash
# 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