SPB Git

spb/lou-ka Public

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

HTML 99.7%
5.9 KB · 104 lines markdown
Rendered Raw Blame History
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