French Urban Population growth between 2010 and 2014
Studying French population using PostGIS
Hi all !
Sorry this map is in French but it was a school assessment, so… French it is.
Disclaimer: You might encounter a lot of french words and links to french webpages. You are warned.
The main goal was to work wih PostgreSQL and PostGIS on census data. Franc had around 36 000 communes which is the smallest administrative unit. Since it is too small to represent on a map, we worked on the Unités Urbaines1. This urban unities are defined by a more than 200 meters of continuous developed area.
Working with PostgreSQL and Postgis
We previsouly built tables with 2010 and 2014 census population and urban units.
There was several steps:
- define the center of each urban unit from
/*
-- carte des unités urbaines
- faire varier la taille du point selon la pop
- colorer le point selon le taux d'accroissement de la pop
- affecter le point au centroide de la commune centrale
-- étapes
1. construire un dataset communal tel que:
code_uu, code_commune, pop14, pop10
2. aggréger le résultat précédent au niveau de l'unité urbaine
3. calculer le taux d'accroissement
4. récupérer la commune centrale des UU
5. mise en classe de la pop de l'unité urbaine
6. rapprocher les noms de UU (faire une jointure)
7. importer/lier les données géométriques de l'IGN
8. affecter un centroide tel que srid=4356
-- notions abordées:
-> jointures
-> agrégats
*/
-- 1. construire un dataset communal tel que:
-- code_uu, code_commune, pop14, pop10
WITH a AS (
SELECT
a.codgeo
, a.uu2010
, b.pmun10
, c.pmun14
FROM insee.commune as a
LEFT JOIN insee.commune_population_2010 b
on a.codgeo = b.com
LEFT JOIN insee.commune_population_2014 AS c
on a.codgeo = c.com
-- LEFT : on garde les références de la table de gauche mais
-- ne récupère que les valeurs de la table de droite qui matchent.
-- 2. aggréger le résultat précédent au niveau de l'unité urbaine
-- agrégation: synthétisation du jeu de données / réduction selon
)
, b AS (
SELECT
uu2010
, sum(pmun10) as pop10
, sum(pmun14) as POP14
FROM a
GROUP BY uu2010 -- GROUP BY mot clé de l'agrégation
ORDER BY uu2010 -- par défaut ascendant
)
, c as (
-- 3. calculer le taux d'accroissement
SELECT
uu2010
, pop10
, pop14
, round(((pop14::numeric - pop10)/pop10),2) as txAccroissement -- (T1 - T0)/T0::numeric
FROM b
)
, d as (
--4. récupérer la commune centrale des UU
SELECT DISTINCT ON (uu2010) uu2010, codgeo as centre
FROM insee.uu_composition
WHERE statut_2014 in ('I', 'C')
)
SELECT
-- labels, mise en classe pop14
c.*, u.libuu2010, d.centre
, CASE
WHEN pop14 <= 9999 THEN 1
WHEN pop14 BETWEEN 10000 AND 49999 THEN 2
WHEN pop14 BETWEEN 50000 AND 99999 THEN 3
WHEN pop14 BETWEEN 100000 AND 199999 THEN 4
WHEN pop14 BETWEEN 200000 AND 499999 THEN 5
WHEN pop14 BETWEEN 500000 AND 999999 THEN 6
WHEN pop14 BETWEEN 1000000 AND 1999999 THEN 7
WHEN pop14 >= 2000000 THEN 8
ELSE NULL -- ne pas affecter de tranches dans le monde rural
END AS tranche_population
FROM c
LEFT JOIN d
ON c.uu2010 = d.uu2010
LEFT JOIN insee.uu AS u
ON c.uu2010 = u.uu2010
ORDER BY c.uu2010
;
Map design
Map defaults
INSEE Unités Urbaines https://www.insee.fr/fr/metadonnees/definition/c1501↩
Share this post
Twitter
Google+
Reddit
LinkedIn
Email