spb/lou-ka Public
Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 99.7%
1# Recensement 2021 — tables « aires de diffusion » (staging-recensement.db)23Construit le 2026-08-08 par `scripts/build_recensement.py`.4Livrable : `data/staging-recensement.db` (tables `da_poly`, `da_stats`, `meta`).56## Sources78| Donnée | Source | URL |9|---|---|---|10| 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 |11| 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 |1213Attribution (licence ouverte de Statistique Canada) : **« Statistique Canada,14Recensement de la population de 2021 »**.1516## Méthodologie1718### Polygones (`da_poly`)1920- Lecture du shapefile avec **pyshp** ; le fichier StatCan est projeté en21 Lambert conforme conique « NAD83 Statistics Canada Lambert » (**EPSG:3347**),22 reprojeté vers **WGS84 (EPSG:4326)** avec pyproj.23- Filtres : `PRUID = 24` (Québec), puis intersection de la bbox WGS84 de24 chaque AD avec la zone de couverture des annonces Lou-Ka :25 **lat 44,9–47,7 / lng −74,6–−70,2** (Québec, Lévis, Grand Montréal +26 périphérie). Pré-filtre grossier sur la bbox projetée pour éviter de27 reprojeter les géométries hors zone.28- `poly` = JSON, liste d'anneaux `[[lng, lat], …]` ; le 1er anneau d'un29 polygone shapefile est l'anneau extérieur, les suivants sont les trous ou30 les autres parties (multi-polygones). Un test point-dans-polygone31 **pair/impair sur l'ensemble des anneaux** gère correctement trous et32 multi-parties. Coordonnées arrondies à 6 décimales (~10 cm).3334### Statistiques (`da_stats`)3536Le CSV de 6,5 Go est **streamé** (module `csv`, encodage latin-1, jamais chargé37en mémoire). Les `ID_CARACTÉRISTIQUE` sont découverts dynamiquement en scannant38la liste des caractéristiques de la première géographie du fichier (robuste aux39renumérotations) ; les noms ambigus (« Français », « Locataire »,40« Baccalauréat ou grade supérieur » apparaissent plusieurs fois) sont résolus41par position : première occurrence après la ligne « Total » de leur section.4243Variables retenues (valeur = colonne `C1_CHIFFRE_TOTAL`) :4445| Colonne | Caractéristique du profil (ID 2021) | Calcul |46|---|---|---|47| `population` | Population, 2021 (**1**) | direct |48| `densite` | Densité de la population au kilomètre carré (**6**) | direct |49| `age_median` | Âge médian de la population (**40**) | direct |50| `revenu_median` | Revenu total médian des ménages en 2020 ($) (**243**) | direct |51| `pct_locataires` | Locataire (**1416**) / Total ménages privés selon le mode d'occupation (**1414**) | 100 × 1416 ÷ 1414 |52| `loyer_moyen` | Frais de logement mensuels moyens pour les logements occupés par un ménage locataire ($) (**1495**) | direct |53| `pct_francais` | Français (**739**) / Total langue parlée le plus souvent à la maison (**735**) | 100 × 739 ÷ 735 |54| `pct_univ` | Baccalauréat ou grade supérieur (**2024**) / Total plus haut certificat, diplôme ou grade, 25–64 ans (**2014**) | 100 × 2024 ÷ 2014 |5556Notes :57- `loyer_moyen` = « frais de logement mensuels moyens » des ménages locataires58 (loyer + électricité/chauffage/services municipaux, définition StatCan) ;59 c'est la mesure standard du coût mensuel des logements loués dans le profil.60- Valeurs supprimées par StatCan (confidentialité : symboles `x`, `F`, `..`,61 `...`) → **NULL** ; les pourcentages dont le numérateur ou le dénominateur62 est supprimé ou nul → **NULL**. Rien n'est imputé.63- Revenu et scolarité proviennent des **données-échantillon (25 %)** ;64 population, âge et langue des données intégrales (100 %).6566## Validations (exécutées le 2026-08-08, toutes réussies)6768- **11 317 AD** dans `da_poly` (sur 13 805 AD au Québec) — dans la fourchette69 attendue (8 000–13 000). Population couverte : **7 186 380** habitants.70- **Couverture `da_stats` : 11 317 / 11 317 = 100 %** des DAUID de `da_poly`.71- **Point de contrôle** : (46.8139, −71.2329) → DAUID **24231035** ✓72 (identique au résultat de l'API ArcGIS StatCan,73 `geo.statcan.gc.ca/geo_wa/rest/services/2021/Cartographic_boundary_files/MapServer/12`).74- **Échantillon de plausibilité** (point-dans-polygone puis lecture des stats,75 colonnes : revenu_median / pct_locataires / loyer_moyen / pct_francais / pct_univ) :7677 | Secteur | DAUID | Revenu médian | % locataires | Loyer moyen | % français | % univ |78 |---|---|---|---|---|---|---|79 | Saint-Roch (Québec) | 24231032 | 65 000 $ | **79,3 %** | 1 136 $ | 93,3 % | 68,0 % |80 | Sillery (Québec) | 24230224 | **137 000 $** | **14,8 %** | 1 200 $ | 93,6 % | 61,7 % |81 | Plateau Mont-Royal (Mtl) | 24661965 | 57 200 $ | 76,7 % | 1 230 $ | 63,6 % | 76,6 % |8283 Cohérent : Saint-Roch et le Plateau très locatifs, Sillery aisé et84 propriétaire, français plus faible sur le Plateau.85- **Valeurs manquantes (suppression StatCan)** : revenu_median NULL pour 234 AD,86 loyer_moyen NULL pour 2 095 AD (AD avec peu ou pas de locataires),87 pct_locataires/pct_univ NULL pour 118 AD — laissées NULL, rien d'imputé.88- Taille du livrable : `data/staging-recensement.db` ≈ **45 Mo**.8990Note : certaines AD rurales très étendues qui intersectent la zone débordent91au nord (lat_max jusqu'à ~49,0) — comportement attendu du filtre par92intersection de bbox.9394## Reproduire9596```bash97# 1) télécharger les deux sources dans /tmp (URLs ci-dessus), dézipper98# 2) construire :99.venv/bin/python scripts/build_recensement.py \100 --shp /tmp/louka-recensement/lda/lda_000b21a_e.shp \101 --csv /tmp/louka-recensement/profil/98-401-X2021006_Francais_CSV_data_Quebec.csv \102 --db data/staging-recensement.db --etape tout103```104