4 Données spatiales

4.1 Les données vectorielles

4.1.1 Qu’est-ce qu’une donnée vectorielle ?

Pour pouvoir représenter une carte, il faut importer un “fond de carte” sur lequel on va appliquer nos valeurs. Il est composé de données dites “vectorielles”, qui correspondent à une géométrie :

  • des polygones, par exemple une zone admistrative : région, département, bassin d’emploi, etc. ;
  • des lignes, comme des routes ou des lignes de train ;
  • des points, à l’instar des centres des communes, de la localisation des agences Pôle emploi ou des adresses des demandeurs d’emploi.

4.1.2 Le format shapefile

La donnée vectorielle est stockée dans un ensemble de fichier qu’on appelle des shapefiles (ou “fichier de forme”).

Il comprend plusieurs fichiers, avec un nom identique et des formats différents, par exemple .shp, .dbf, .prj, etc. Ces fichiers fonctionnent ensemble et on a besoin de l’ensemble pour utiliser la donnée vectorielle. Il est donc important de ne pas les séparer.

4.1.3 A Pôle emploi

On a construit ou récupéré les principaux fonds de carte utilisés à Pôle emploi qui sont disponibles ici :

https://github.com/tvroylandt/r-cartostat/tree/master/data/shp

Ces cartes ne sont pas géographiquement exactes puisqu’elles incluent les DOMs rapprochés de la France métropolitaine ainsi qu’un zoom sur l’Île-de-France. Les cartes sont les suivantes :

  • communes ;
  • bassin BMO ;
  • zone d’emploi ;
  • département ;
  • région.

Le détail de leur construction est disponible en annexe @ref(annexe_fond_carte)

4.2 Importer des données spatiales

La fonction st_read(), du package sf, va nous permettre de lire ces fichiers. Il faut lui spécifier le chemin vers le fichier .shp.

Exemple ici avec l’import des départements.

## Reading layer `FR_DEP_DOM_IDF' from data source `D:\r-cartostat\data\shp\FR_DEP_DOM_IDF.shp' using driver `ESRI Shapefile'
## Simple feature collection with 109 features and 3 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: 99787.91 ymin: 5990209 xmax: 1242106 ymax: 7283675
## epsg (SRID):    NA
## proj4string:    +proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs

On peut en visualiser le contenu. On observe qu’on a un fichier avec une colonne DEP, qui contient le code du département, ainsi qu’une colonne geometry qui contient les spécifications spatiales.

## # A tibble: 109 x 4
##    code_reg code_dep zoom_idf                                                                      geometry
##    <fct>    <fct>    <fct>                                                               <MULTIPOLYGON [m]>
##  1 01       971      0        (((297258.6 6002422, 297216.7 6002231, 297141.1 6002048, 297036.6 6001871, 2~
##  2 02       972      0        (((518815.8 6008072, 518844.2 6007695, 518900.9 6007324, 518965.8 6006944, 5~
##  3 03       973      0        (((677679.3 6060770, 677688 6060670, 677695.9 6060560, 677702.4 6060443, 677~
##  4 04       974      0        (((835236.5 5992620, 833865.5 5993048, 832327.3 5993532, 830654.1 5994059, 8~
##  5 06       976      0        (((980635.2 5995114, 980625.1 5995048, 980614.3 5994980, 980602.9 5994913, 9~
##  6 11       75       0        (((646062 6860110, 645662.4 6860488, 645327.5 6860872, 645051.2 6861254, 644~
##  7 11       75       1        (((1008114 7186024, 1007458 7186473, 1006815 7186963, 1006171 7187507, 10055~
##  8 11       77       0        (((690163.1 6783563, 689622.1 6783296, 689110 6783012, 688623.1 6782731, 688~
##  9 11       77       1        (((1106500 7018251, 1105884 7017931, 1105299 7017572, 1104735 7017177, 11041~
## 10 11       78       0        (((615945.4 6817082, 615325.3 6817245, 614715.2 6817459, 614134.3 6817715, 6~
## # ... with 99 more rows

4.3 Opérations sur données spatiales

De la même façon que pour une table normale, on peut faire des opérations sur un fichier spatial.

4.3.1 Filtre

On peut filtrer sur une zone en utilisant filter(). Par exemple si je ne souhaite que l’Oise.

## # A tibble: 1 x 4
##   code_reg code_dep zoom_idf                                                                       geometry
##   <fct>    <fct>    <fct>                                                                <MULTIPOLYGON [m]>
## 1 32       60       0        (((703447.6 6903189, 703461.8 6903174, 703473.4 6903160, 703482.4 6903146, 70~

4.3.2 Modification de colonnes

Je peux créer des colonnes, par exemple en regroupant les départements en régions.

## # A tibble: 13 x 5
##    code_reg code_dep zoom_idf                                                          geometry REG        
##    <fct>    <fct>    <fct>                                                   <MULTIPOLYGON [m]> <fct>      
##  1 11       75       0        (((646062 6860110, 645662.4 6860488, 645327.5 6860872, 645051.2 ~ Ile-de-Fra~
##  2 11       77       0        (((690163.1 6783563, 689622.1 6783296, 689110 6783012, 688623.1 ~ Ile-de-Fra~
##  3 11       78       0        (((615945.4 6817082, 615325.3 6817245, 614715.2 6817459, 614134.~ Ile-de-Fra~
##  4 11       91       0        (((629406.7 6799447, 628757.5 6799463, 628128.9 6799495, 627514.~ Ile-de-Fra~
##  5 11       92       0        (((650037 6852301, 649917.5 6851597, 649782.8 6850912, 649624.7 ~ Ile-de-Fra~
##  6 11       93       0        (((661319.8 6861886, 660737.6 6861930, 660189.4 6861924, 659659.~ Ile-de-Fra~
##  7 11       94       0        (((658327.2 6847362, 657743 6847279, 657158.7 6847213, 656574 68~ Ile-de-Fra~
##  8 11       95       0        (((611596.3 6885701, 610907.2 6885541, 610210.4 6885323, 609513.~ Ile-de-Fra~
##  9 32       02       0        (((749674.8 6913924, 749180.5 6913589, 748749.5 6913260, 748369.~ Hauts-de-F~
## 10 32       59       0        (((701841.3 7006121, 702092.8 7006483, 702381 7006810, 702703.5 ~ Hauts-de-F~
## 11 32       60       0        (((703447.6 6903189, 703461.8 6903174, 703473.4 6903160, 703482.~ Hauts-de-F~
## 12 32       62       0        (((642473.1 7012641, 641921.7 7012426, 641410.3 7012190, 640911.~ Hauts-de-F~
## 13 32       80       0        (((637389.7 6955501, 636820.5 6955414, 636259.4 6955312, 635691.~ Hauts-de-F~

4.3.3 Regroupement

Je peux regrouper des données pour donner des ensembles plus grands.

## # A tibble: 2 x 2
##   REG                                                                                              geometry
##   <fct>                                                                                       <POLYGON [m]>
## 1 Hauts-de-France ((709388.5 6895230, 709262.8 6895052, 708981.5 6894779, 708655.3 6894520, 708305.9 68942~
## 2 Ile-de-France   ((629406.7 6799447, 628757.5 6799463, 628128.9 6799495, 627514.9 6799543, 626911.8 67996~

De fait, avec un fichier communal et des tables de passages, on peut recréer l’ensemble des niveaux. C’est d’ailleurs ainsi que l’on a procédé pour créer les fonds de carte. –> LIEN VERS LE CODE

4.3.4 Enlever la colonne geometry

Pour enlever la couche de données spatiales, on utilisera st_drop_geometry().

4.4 Ajouter de l’information statistique

On va ensuite ajouter l’information spatiale au fond de carte, en réalisant une jointure.

On part toujours du fond de carte pour la jointure.

On s’aperçoit alors qu’on a, pour chaque zone géographique, la difficulté de recrutement, en %.

## Warning: Column `code_dep`/`dep` joining factor and character vector, coercing into character vector
## # A tibble: 109 x 8
##    code_reg code_dep zoom_idf nb_proj_tot nb_proj_diff part_diff part_diff_class~                  geometry
##    <fct>    <chr>    <fct>          <dbl>        <dbl>     <dbl> <fct>                   <MULTIPOLYGON [m]>
##  1 01       971      0             12938.        5249.      40.6 40-50 %          (((297258.6 6002422, 297~
##  2 02       972      0             11407.        5307.      46.5 40-50 %          (((518815.8 6008072, 518~
##  3 03       973      0              6677.        3296.      49.4 40-50 %          (((677679.3 6060770, 677~
##  4 04       974      0             31667.       10310.      32.6 Moins de 40 %    (((835236.5 5992620, 833~
##  5 06       976      0              5309.        2259.      42.6 40-50 %          (((980635.2 5995114, 980~
##  6 11       75       0            173662.       75181.      43.3 40-50 %          (((646062 6860110, 64566~
##  7 11       75       1            173662.       75181.      43.3 40-50 %          (((1008114 7186024, 1007~
##  8 11       77       0             34753.       17111.      49.2 40-50 %          (((690163.1 6783563, 689~
##  9 11       77       1             34753.       17111.      49.2 40-50 %          (((1106500 7018251, 1105~
## 10 11       78       0             47079.       25389.      53.9 50-60 %          (((615945.4 6817082, 615~
## # ... with 99 more rows

Pour n’avoir qu’une région, il suffit de filtrer en amont sur le fond de carte, exemple avec les Hauts-de-France.

## Warning: Column `code_dep`/`dep` joining factor and character vector, coercing into character vector
## # A tibble: 5 x 8
##   code_reg code_dep zoom_idf nb_proj_tot nb_proj_diff part_diff part_diff_classes                  geometry
##   <fct>    <chr>    <fct>          <dbl>        <dbl>     <dbl> <fct>                    <MULTIPOLYGON [m]>
## 1 32       02       0             18418.        9851.      53.5 50-60 %           (((749674.8 6913924, 749~
## 2 32       59       0             95022.       45883.      48.3 40-50 %           (((701841.3 7006121, 702~
## 3 32       60       0             25263.       12977.      51.4 50-60 %           (((703447.6 6903189, 703~
## 4 32       62       0             45805.       22472.      49.1 40-50 %           (((642473.1 7012641, 641~
## 5 32       80       0             19338.        8677.      44.9 40-50 %           (((637389.7 6955501, 636~