initR 10: Objets spatiaux

Lise Vaudor

10 octobre 2018

Package sf

Un package R qui fournit des méthodes standardisées pour encoder de la donnée spatiale vectorielle.

sf s’inscrit dans la logique du tidyverse, c’est-à-dire qu’il est compatible (entre autres) avec les principes de dplyr et ggplot2 pour ce qui est, respectivement, de la manipulation des tableaux d’attributs et de la production des cartes.

Géométries

Les géométries peuvent être de type

pour des objets individuels

Lecture/écriture de données spatiales vectorielles

La lecture se fait tout simplement à l’aide de la fonctionst_read()

## [1] "C:/Users/lvaudor/Documents/R/win-library/3.6/sf/shape/nc.shp"
## Reading layer `nc' from data source `C:\Users\lvaudor\Documents\R\win-library\3.6\sf\shape\nc.shp' using driver `ESRI Shapefile'
## Simple feature collection with 100 features and 14 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
## epsg (SRID):    4267
## proj4string:    +proj=longlat +datum=NAD27 +no_defs

plus d’infos sur la nature des attributs ici

Lecture/écriture de données spatiales vectorielles

L’écriture se fait à l’aide de la fonction st_write()

L’ensemble des fichiers auxiliaires (avec le .shp: .shx, .dbf, .proj) est créé par cette commande.

Notez qu’il est possible d’avoir un aperçu de l’ensemble des couches de données spatiales vectorielles présentes dans un dossier:

st_layers(system.file("shape",package="sf"))
## Driver: ESRI Shapefile 
## Available layers:
##            layer_name        geometry_type features fields
## 1                  nc              Polygon      100     14
## 2             olinda1              Polygon      470      6
## 3          storms_xyz       3D Line String       71      0
## 4         storms_xyzm Measured Line String       71      0
## 5 storms_xyzm_feature Measured Line String       71      1
## 6  storms_xyz_feature       3D Line String       71      1

Systèmes de coordonnées et transformations

Connaître le système de coordonnées:

## Coordinate Reference System:
##   EPSG: 4267 
##   proj4string: "+proj=longlat +datum=NAD27 +no_defs"

Indiquer le système de coordonnées:

Exploration graphique

Notez que la méthode plot() permet de prendre connaissance assez rapidement et facilement du contenu de l’objet sf:

sf + dplyr

Le package sf est compatible avec les fonctions de dplyr pour la manipulation de l’objet sf à partir de la table d’attributs. Cela signifie que l’on est en mesure de

sf + ggplot

Les objets de type sf sont par ailleurs compatibles avec la logique de ggplot2. Il est notamment possible de les tracer à l’aide du geom geom_sf().

Géométries: : mesures

L’ensemble des manipulations sur les géométries permises par le package sf sont explicitées dans cette cheatsheet

Il est ainsi possible de réaliser des mesures telles que

## Simple feature collection with 100 features and 2 fields
## geometry type:  MULTIPOLYGON
## dimension:      XY
## bbox:           xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
## epsg (SRID):    4267
## proj4string:    +proj=longlat +datum=NAD27 +no_defs
## First 10 features:
##           NAME             aire                       geometry
## 1         Ashe 1137388604 [m^2] MULTIPOLYGON (((-81.47276 3...
## 2    Alleghany  611077263 [m^2] MULTIPOLYGON (((-81.23989 3...
## 3        Surry 1423489919 [m^2] MULTIPOLYGON (((-80.45634 3...
## 4    Currituck  694546292 [m^2] MULTIPOLYGON (((-76.00897 3...
## 5  Northampton 1520740530 [m^2] MULTIPOLYGON (((-77.21767 3...
## 6     Hertford  967727952 [m^2] MULTIPOLYGON (((-76.74506 3...
## 7       Camden  615942210 [m^2] MULTIPOLYGON (((-76.00897 3...
## 8        Gates  903650119 [m^2] MULTIPOLYGON (((-76.56251 3...
## 9       Warren 1179347051 [m^2] MULTIPOLYGON (((-78.30876 3...
## 10      Stokes 1232769242 [m^2] MULTIPOLYGON (((-80.02567 3...

Opérations géométriques: construction

Il est possible de créer un objet sf en construisant sa géométrie (création de points, création de lignes à partir de points, de polygones à partir de points, etc.)

##      [,1] [,2]
## [1,]    1    1
## [2,]    0    2
## [3,]    2    2

Opérations géométriques: relations

Il est également possible de vérifier les relations géométriques entre objets sf (est-ce que tel objet croise tel autre, est-ce que ces polygones se touchent, se recouvrent, sont disjoints, etc.)

Exemple: est-ce que les polygones contiennent les points?

## Sparse geometry binary predicate list of length 2, where the predicate was `contains'
##  1: 1, 2
##  2: 2
##       [,1] [,2]  [,3]
## [1,]  TRUE TRUE FALSE
## [2,] FALSE TRUE FALSE

Géométries: opérations

Il est possible de réaliser des opérations sur les géométries (différences, intersections, union, etc.)

## Simple feature collection with 2 features and 1 field
## geometry type:  POLYGON
## dimension:      XY
## bbox:           xmin: 0 ymin: 0 xmax: 2.25 ymax: 2.5
## epsg (SRID):    NA
## proj4string:    NA
## # A tibble: 2 x 2
##   nom                                         geometry
##   <chr>                                      <POLYGON>
## 1 pol1                     ((0 0, 2 0, 2 2, 0 2, 0 0))
## 2 pol2  ((1 1.15, 2.25 1.15, 2.25 2.5, 1 2.5, 1 1.15))

On récapitule!