4.1 Leçon
4.1.1 Télécharger les données
Dans les sections 4.1.3 à 4.1.6 du présent module vous apprendrez à lire et visualiser des données déjà existantes. Afin de faciliter le téléchargement de ces multiples données, l’ensemble des couches d’informations spatiales peuvent être téléchargées en cliquant sur un seul lien: données pour le module 4. Sauvegardez le dossier compressé (zip
) dans votre répertoire de travail Module4_donnees
pour ce module, et dézippez-le. Le dossier comprend lui même deux dossiers compressés et un fichier csv
:
Montreal_Velo.zip
Donnees_Ouvertes_MEES.gbd.zip
nz_capitales.csv
Dézipper chacun des deux dossiers. Le premier dossier, Montreal_Velo
sera utilisé aux sections 4.1.3-4.1.5. Il contient les données vectorielles relatives au réseau de pistes cyclables de la ville de Montréal et aux accidents routiers impliquant des bicyclettes. Il contient trois sous-dossiers:
accidents
pistes
terre
.
Le deuxième dossier, Donnees_Ouvertes_MEES.gbd
est la geodatabase du Ministère de l’Éducation et de l’Enseignement Supérieur du Québec (MEES); nous l’utiliserons à la section 4.1.6.
Le fichier nz_capitales.csv
contient les coordonnées géographiques des capitales des régions administratives de la Nouvelle-Zélande; nous l’utiliserons à la section exercices à la fin de ce module.
4.1.2 Créer des données vectorielles
Pour créer, lire et manipuler des données vectorielles, nous allons utiliser la bibliothèque sf
. Notez que la bibliothèque rgdal
se charge automatiquement lorsque sf
se charge.
library(sf)
Créer des géométries simples
Nous avons appris à la leçon 2 que les données vectorielles peuvent avoir différentes géométries (point, ligne, polygone, etc.). La bibliothèque sf
possède des fonctions pour créer ces géométries simples, c’est-à-dire pour créer des objects de la classe sfg
(pour simple feature geometry).
La fonction st_point()
permet de transformer un vecteur numérique représentant les coordonnées d’un point en un objet de type point. Par exemple,
<- c(3,5)
p <- st_point(p)
point point
POINT (3 5)
Remarquez que la classe de l’objet formé est sfg
:
class(point)
[1] "XY" "POINT" "sfg"
La fonction st_multipoint()
permet de créer une géométrie multipoint. Nous devons fournir à cette fonction une matrice où chaque rangée définie les coordonnées d’un des points:
<- rbind( c(3,5), c(5,5), c(4,1), c(2,3))
M <- st_multipoint(M)
multi_point multi_point
MULTIPOINT ((3 5), (5 5), (4 1), (2 3))
La fonction st_linestring()
permet de créer une ligne. Nous devons également lui fournir une matrice contenant les coordonnées des extrémités de la ligne.
<- st_linestring(M)
ligne ligne
LINESTRING (3 5, 5 5, 4 1, 2 3)
Un polygone se crée de façon similaire, cette fois en utilisant la fonction st_polygon()
. Les coordonnées des extrémités du polygone doivent toutefois être définies dans une liste, et non une matrice. Il s’agit alors d’utiliser la fonction list()
pour convertir une matrice en liste.
<- list(rbind( c(3,5), c(5,5), c(4,1), c(2,3), c(3,5)))
L <-st_polygon(L)
polygone polygone
POLYGON ((3 5, 5 5, 4 1, 2 3, 3 5))
Noter que pour créer un polygone la première extrémité doit être identique à la dernière.
Dans un même ordre d’idées, pour créer des multilignes ou des multipolygones nous devons aussi recourir à des listes où chaque élément de la liste correspond à une ligne ou à un polygone respectivement.
<- rbind( c(3,5), c(5,5), c(4,1), c(2,3))
M1 <- rbind( c(1,2), c(2,2), c(2,1))
M2 <- list(M1, M2)
L <- st_multilinestring(L)
multi_ligne multi_ligne
MULTILINESTRING ((3 5, 5 5, 4 1, 2 3), (1 2, 2 2, 2 1))
<- list(rbind( c(3,5), c(5,5), c(4,1), c(2,3), c(3,5)))
L1 <- list(rbind( c(1,2), c(2,2), c(2,1), c(1,2)))
L2 <- list(L1, L2)
L <- st_multipolygon(L)
multi_polygone multi_polygone
MULTIPOLYGON (((3 5, 5 5, 4 1, 2 3, 3 5)), ((1 2, 2 2, 2 1, 1 2)))
Attribuer un SCR
Nous venons d’apprendre les fonctions de base de la bibliothèque sf
pour créer des géométries simples. Or, les données vectorielles ne sont pas uniquement des géométries, ce sont des géométries géoréférencées. Ceci signifie qu’on doit attribuer aux géométries un datum et une projection. Pour ce faire, nous devons créer des objets de la classe sfc
, c’est-à-dire simple feature columns.
Un objet sfc
est une liste d’objets sfg
qui permet, en plus, de contenir l’information relative au système de coordonnées de référence (SRC) utilisé.
La fonction st_sfc()
permet de transformer un objet de classe sfg
en un objet de classe sfc
. Par exemple, transformons le point créé plus haut:
<- st_sfc(point) point_sfc
Alors que l’objet point
contenait seulement la géométrie de l’objet:
point
POINT (3 5)
L’objet point_sfc
contient la géométrie de l’objet et il possède la structure pour définir le SCR (CRS en anglais), bien que pour l’instant ce dernier ne soit pas défini (valeur de NA):
point_sfc
Geometry set for 1 feature
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 3 ymin: 5 xmax: 3 ymax: 5
CRS: NA
POINT (3 5)
La fonction st_sfc()
peut être utilisée sur les autres géométries. Elle permet également de combiner des géométries. Par exemple:
<- list(rbind( c(3,5), c(5,5), c(4,1), c(2,3), c(3,5)))
L1 <- st_polygon(L1)
polygone1 <- list(rbind( c(1,2), c(2,2), c(2,1), c(1,2)))
L2 <- st_polygon(L2)
polygone2 <- st_sfc(polygone1, polygone2)
polygone_sfc polygone_sfc
Geometry set for 2 features
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 1 ymin: 1 xmax: 5 ymax: 5
CRS: NA
POLYGON ((3 5, 5 5, 4 1, 2 3, 3 5))
POLYGON ((1 2, 2 2, 2 1, 1 2))
Pour connaître le SCR d’un object vectoriel, il s’agit d’utiliser la fonction st_crs()
de la bibliothèque st
:
st_crs(polygone_sfc)
Coordinate Reference System: NA
Dans le cas présent, le SCR est indéfini.
Il existe plusieurs façons de définir le SCR. La façon la plus simple est d’utiliser le code EPSG associé au SCR que l’on désire utilisé. Par exemple, utilisons le EPSG 32198 correspondant au système de coordonnées conique conforme de Lambert dans le datum NAD83 pour définir le CRS de polygone_sfc
:
<- st_sfc(polygone1, polygone2, crs = 32198)
polygone_sfc st_crs(polygone_sfc)
Coordinate Reference System:
User input: EPSG:32198
wkt:
PROJCRS["NAD83 / Quebec Lambert",
BASEGEOGCRS["NAD83",
DATUM["North American Datum 1983",
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4269]],
CONVERSION["Quebec Lambert Projection",
METHOD["Lambert Conic Conformal (2SP)",
ID["EPSG",9802]],
PARAMETER["Latitude of false origin",44,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8821]],
PARAMETER["Longitude of false origin",-68.5,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8822]],
PARAMETER["Latitude of 1st standard parallel",60,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8823]],
PARAMETER["Latitude of 2nd standard parallel",46,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8824]],
PARAMETER["Easting at false origin",0,
LENGTHUNIT["metre",1],
ID["EPSG",8826]],
PARAMETER["Northing at false origin",0,
LENGTHUNIT["metre",1],
ID["EPSG",8827]]],
CS[Cartesian,2],
AXIS["easting (X)",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["northing (Y)",north,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Topographic mapping (medium and small scale)."],
AREA["Canada - Quebec."],
BBOX[44.99,-79.85,62.62,-57.1]],
ID["EPSG",32198]]
Nous pouvons également utilisé la notation proj4string
:
st_crs(polygone_sfc)$proj4string
[1] "+proj=lcc +lat_0=44 +lon_0=-68.5 +lat_1=60 +lat_2=46 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"
st_sfc(point, crs = "+proj=lcc +lat_0=44 +lon_0=-68.5
+lat_1=60 +lat_2=46
+x_0=0 +y_0=0 +datum=NAD83
+units=m +no_defs")
Geometry set for 1 feature
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 3 ymin: 5 xmax: 3 ymax: 5
Projected CRS: +proj=lcc +lat_0=44 +lon_0=-68.5
+lat_1=60 +lat_2=46
+x_0=0 +y_0=0 +datum=NAD83
+units=m +no_defs
POINT (3 5)
Ou encore référé au SCR d’un autre objet:
st_sfc(point, crs = st_crs(polygone_sfc))
Geometry set for 1 feature
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 3 ymin: 5 xmax: 3 ymax: 5
Projected CRS: NAD83 / Quebec Lambert
POINT (3 5)
Définir des attributs
Les attributs sont les variables non-géographiques permettant de décrire les données vectorielles. Les attributs peuvent, par exemple, correspondre au nom de chaque objet ou à d’autres caractéristiques qualitatives ou numériques.
Les attributs sont répertoriés dans un objet de classe data.frame
, qui est en quelque sorte une matrice dont les colonnes peuvent accueillir des données de différents types (numérique, caractère, logique, facteur, etc.).
Afin de démontrer comment joindre des attributs à des géométries géoréférencées, créons d’abord un objet sfc
constitué de quatre points.
# Créer quatre vecteurs numériques
<- c(3,5)
p1 <- c(5,5)
p2 <- c(4,1)
p3 <- c(2,3)
p4 # Créer des géométries de type point
<- st_point(p1)
point1 <- st_point(p2)
point2 <- st_point(p3)
point3 <- st_point(p4)
point4 # Créer un simple feature column
# et attribuer un SRC
<- st_sfc(point1,point2,point3,point4, crs = 32198)
points_sfc points_sfc
Geometry set for 4 features
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 2 ymin: 1 xmax: 5 ymax: 5
Projected CRS: NAD83 / Quebec Lambert
POINT (3 5)
POINT (5 5)
POINT (4 1)
POINT (2 3)
Supposons que les points désignent des écoles primaires pouvant être publiques ou privées. Utilisons la fonction data.frame()
, une fonction de base de R
pour créer une table des attributs.
<- data.frame(
points_attribut nom = c("École A", "École B", "École C", "École D"),
nombre_eleves = c(403, 357, 280, 296),
ecole_publique = as.logical(c(1, 1, 0, 1))
) points_attribut
nom nombre_eleves ecole_publique
1 École A 403 TRUE
2 École B 357 TRUE
3 École C 280 FALSE
4 École D 296 TRUE
Remarquer que chaque colonne est associée à un attribut de classe différente, comme le permet la classe data.frame
.
Pour associer cette table d’attributs à l’objet points_sfc
, il s’agit d’utiliser la fonction st_sf()
de la bilbiothèque sf
:
<- st_sf(points_sfc, points_attribut)
points_sf points_sf
Simple feature collection with 4 features and 3 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 2 ymin: 1 xmax: 5 ymax: 5
Projected CRS: NAD83 / Quebec Lambert
nom nombre_eleves ecole_publique points_sfc
1 École A 403 TRUE POINT (3 5)
2 École B 357 TRUE POINT (5 5)
3 École C 280 FALSE POINT (4 1)
4 École D 296 TRUE POINT (2 3)
L’objet points_sf
résultant de cette opération contient deux classes:
class(points_sf)
[1] "sf" "data.frame"
La composante de classe sf
(pour simple feature) contient les attributs spatiaux des données tandis que la composante de classe data.frame
contient les attributs non-spatiaux.
Cette dualité est une caractéristique importante des objets de classe sf
: ceux-ci sont essentiellement des data.frames
avec une extension spatiale et nous pouvons ainsi les manipuler comme des data.frames
. Nous reviendrons sur ce concept au Module 7 portant sur la manipulation de données vectorielles.
La fonction st_as_sf()
La fonction st_as_sf()
de la bibliothèque sf
permet de créer un objet de classe sf
à partir d’un objet d’une autre classe. En particulier, elle permet de convertir en un objet sf
de type points un data.frame
qui contient des colonnes donnant les coordonnées de chaque élément.
Donnons un exemple. Considérons le tableau suivant:
<- data.frame(
point_df points = c("alpha" ,"beta" ,"gamma", "delta"),
x = c(10, 20, 30, 40),
y = c(25, 5, 15, 35)
)
Utilisons la fonction st_as_sf()
avec l’argument coords
.
<- st_as_sf(point_df, coords = c("x","y"))
points_sf points_sf
Simple feature collection with 4 features and 1 field
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 10 ymin: 5 xmax: 40 ymax: 35
CRS: NA
points geometry
1 alpha POINT (10 25)
2 beta POINT (20 5)
3 gamma POINT (30 15)
4 delta POINT (40 35)
Nous pouvons également définir un SCR en utilisant l’argument crs
.
<- st_as_sf(point_df, coords = c("x","y"), crs = 32182)
points_sf points_sf
Simple feature collection with 4 features and 1 field
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 10 ymin: 5 xmax: 40 ymax: 35
Projected CRS: NAD83 / MTM zone 2
points geometry
1 alpha POINT (10 25)
2 beta POINT (20 5)
3 gamma POINT (30 15)
4 delta POINT (40 35)
4.1.3 Lire un shapefile et interpréter sa géométrie
Lire les données
Nous allons lire les trois shapefiles suivants :
- Des données vectorielles de type polygone représentant la frontière de notre zone d’étude, ici, l’île de Montréal.
- Des données vectorielles de type ligne représentant les pistes cyclables sur l’île de Montréal, et
- Des données vectorielles de type point représentant la position d’accidents impliquant des bicyclettes.
Dans un premier temps, nous allons ouvrir les données vectorielles de type polygone qui contiennent les limites terrestres de l’île de Montréal. Pour lire ces données nous utiliserons la fonction st_read()
de la bibliothèque sf
. Pour utiliser st_read()
nous devons spécifier le chemin menant au fichier shapefile à lire.
<- st_read("Module4/Module4_donnees/Montreal_Velo/terre/terre_shp.shp") limites_terrestres
Reading layer `terre_shp' from data source
`D:\Dropbox\Teluq\Enseignement\Cours\SCI1031\Developpement\Structure_test\sci1031\Module4\Module4_donnees\Montreal_Velo\terre\terre_shp.shp'
using driver `ESRI Shapefile'
Simple feature collection with 72 features and 1 field
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 267500 ymin: 5029000 xmax: 306700 ymax: 5063000
Projected CRS: NAD83 / MTM zone 8
La fonction st_read()
vous permet d’ores et déjà d’obtenir certaines informations sur la structure des données vectorielles que vous venez de lire: le type de géométrie (Geometry type
), la dimension des données (Dimension
), l’étendue spatiale des données (Bounding box
), et le système de coordonnées projetées (Projected CRS
). Nous explorerons ces propriétés en détail plus bas.
Nous allons maintenant lire les données vectorielles de type ligne, en utilisant encore la fonction st_read()
.
<- st_read("Module4/Module4_donnees/Montreal_Velo/pistes/pistes_cyclables_type.shp") pistes_cyclables
Reading layer `pistes_cyclables_type' from data source
`D:\Dropbox\Teluq\Enseignement\Cours\SCI1031\Developpement\Structure_test\sci1031\Module4\Module4_donnees\Montreal_Velo\pistes\pistes_cyclables_type.shp'
using driver `ESRI Shapefile'
Simple feature collection with 6395 features and 1 field
Geometry type: MULTILINESTRING
Dimension: XY
Bounding box: xmin: 268000 ymin: 5029000 xmax: 306300 ymax: 5063000
Projected CRS: Transverse_Mercator
Finalement, nous allons lire les données vectorielles de type point, en utilisant toujours la fonction st_read()
.
<- st_read("Module4/Module4_donnees/Montreal_Velo/accidents/accidents2018_Mtl_velo.shp") accidents_velo
Reading layer `accidents2018_Mtl_velo' from data source `D:\Dropbox\Teluq\Enseignement\Cours\SCI1031\Developpement\Structure_test\sci1031\Module4\Module4_donnees\Montreal_Velo\accidents\accidents2018_Mtl_velo.shp'
using driver `ESRI Shapefile'
Simple feature collection with 796 features and 1 field
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 269500 ymin: 5030000 xmax: 305400 ymax: 5059000
Projected CRS: Transverse_Mercator
Remarquez que le type de géométrie (Geometry type
) diffère pour les trois classes de données lues comme nous nous y attendions.
Explorer les métadonnées d’un shapefile
Les informations contenues dans un shapefile sont appelées des métadonnées. Nous sommes particulièrement intéressées aux métadonnées géospatiales.
Les métadonnées fondamentales d’un shapefile sont :
- Le type de géométrie : le type de classes des données vectorielles téléchargées.
- La projection : le système de coordonnées de référence utilisé pour représenter les données.
- L’étendue spatiale : la superficie géographique couvrant les données vectorielles.
Le type de géométrie
Nous pouvons explorer chacune de ces métadonnées en utilisant des fonctions de la librairie sf
. Le type de géométrie est obtenu par la fonction st_geometry_type()
. Par exemple, pour les limites terrestres de la ville de Montréal, cette fonction nous donne:
st_geometry_type(limites_terrestres)
[1] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[7] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[13] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[19] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[25] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[31] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[37] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[43] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[49] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[55] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[61] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
[67] POLYGON POLYGON POLYGON POLYGON POLYGON POLYGON
18 Levels: GEOMETRY POINT LINESTRING ... TRIANGLE
Nous avons ainsi la confirmation que ces données vectorielles correspondent à des polygones (plus exactement, 72 polygones). Les 18 niveaux donnés en dessous constituent une liste des classes possibles de géométrie.
En comparaison, pour les données de type ligne et de type point nous obtenons plutôt :
st_geometry_type(pistes_cyclables)
[1] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[4] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[7] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[10] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[13] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[16] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[19] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[22] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[25] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[28] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[31] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[34] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[37] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[40] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[43] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[46] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[49] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[52] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[55] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[58] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[61] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[64] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[67] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[70] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[73] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[76] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[79] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[82] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[85] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[88] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[91] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[94] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[97] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[100] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[103] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[106] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[109] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[112] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[115] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[118] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[121] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[124] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[127] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[130] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[133] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[136] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[139] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[142] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[145] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[148] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[151] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[154] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[157] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[160] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[163] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[166] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[169] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[172] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[175] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[178] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[181] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[184] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[187] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[190] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[193] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[196] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[199] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[202] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[205] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[208] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[211] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[214] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[217] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[220] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[223] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[226] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[229] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[232] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[235] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[238] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[241] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[244] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[247] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[250] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[253] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[256] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[259] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[262] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[265] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[268] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[271] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[274] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[277] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[280] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[283] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[286] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[289] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[292] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[295] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[298] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[301] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[304] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[307] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[310] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[313] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[316] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[319] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[322] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[325] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[328] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[331] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[334] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[337] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[340] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[343] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[346] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[349] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[352] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[355] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[358] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[361] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[364] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[367] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[370] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[373] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[376] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[379] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[382] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[385] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[388] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[391] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[394] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[397] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[400] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[403] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[406] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[409] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[412] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[415] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[418] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[421] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[424] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[427] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[430] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[433] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[436] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[439] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[442] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[445] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[448] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[451] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[454] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[457] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[460] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[463] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[466] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[469] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[472] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[475] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[478] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[481] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[484] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[487] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[490] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[493] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[496] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[499] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[502] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[505] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[508] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[511] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[514] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[517] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[520] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[523] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[526] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[529] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[532] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[535] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[538] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[541] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[544] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[547] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[550] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[553] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[556] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[559] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[562] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[565] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[568] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[571] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[574] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[577] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[580] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[583] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[586] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[589] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[592] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[595] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[598] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[601] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[604] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[607] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[610] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[613] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[616] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[619] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[622] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[625] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[628] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[631] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[634] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[637] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[640] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[643] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[646] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[649] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[652] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[655] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[658] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[661] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[664] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[667] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[670] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[673] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[676] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[679] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[682] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[685] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[688] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[691] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[694] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[697] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[700] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[703] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[706] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[709] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[712] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[715] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[718] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[721] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[724] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[727] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[730] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[733] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[736] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[739] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[742] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[745] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[748] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[751] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[754] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[757] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[760] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[763] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[766] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[769] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[772] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[775] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[778] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[781] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[784] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[787] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[790] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[793] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[796] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[799] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[802] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[805] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[808] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[811] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[814] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[817] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[820] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[823] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[826] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[829] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[832] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[835] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[838] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[841] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[844] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[847] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[850] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[853] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[856] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[859] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[862] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[865] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[868] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[871] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[874] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[877] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[880] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[883] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[886] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[889] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[892] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[895] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[898] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[901] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[904] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[907] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[910] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[913] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[916] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[919] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[922] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[925] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[928] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[931] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[934] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[937] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[940] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[943] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[946] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[949] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[952] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[955] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[958] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[961] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[964] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[967] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[970] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[973] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[976] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[979] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[982] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[985] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[988] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[991] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[994] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[997] MULTILINESTRING MULTILINESTRING MULTILINESTRING
[1000] MULTILINESTRING
[ reached getOption("max.print") -- omitted 5395 entries ]
18 Levels: GEOMETRY POINT LINESTRING ... TRIANGLE
st_geometry_type(accidents_velo)
[1] POINT POINT POINT POINT POINT POINT POINT POINT
[9] POINT POINT POINT POINT POINT POINT POINT POINT
[17] POINT POINT POINT POINT POINT POINT POINT POINT
[25] POINT POINT POINT POINT POINT POINT POINT POINT
[33] POINT POINT POINT POINT POINT POINT POINT POINT
[41] POINT POINT POINT POINT POINT POINT POINT POINT
[49] POINT POINT POINT POINT POINT POINT POINT POINT
[57] POINT POINT POINT POINT POINT POINT POINT POINT
[65] POINT POINT POINT POINT POINT POINT POINT POINT
[73] POINT POINT POINT POINT POINT POINT POINT POINT
[81] POINT POINT POINT POINT POINT POINT POINT POINT
[89] POINT POINT POINT POINT POINT POINT POINT POINT
[97] POINT POINT POINT POINT POINT POINT POINT POINT
[105] POINT POINT POINT POINT POINT POINT POINT POINT
[113] POINT POINT POINT POINT POINT POINT POINT POINT
[121] POINT POINT POINT POINT POINT POINT POINT POINT
[129] POINT POINT POINT POINT POINT POINT POINT POINT
[137] POINT POINT POINT POINT POINT POINT POINT POINT
[145] POINT POINT POINT POINT POINT POINT POINT POINT
[153] POINT POINT POINT POINT POINT POINT POINT POINT
[161] POINT POINT POINT POINT POINT POINT POINT POINT
[169] POINT POINT POINT POINT POINT POINT POINT POINT
[177] POINT POINT POINT POINT POINT POINT POINT POINT
[185] POINT POINT POINT POINT POINT POINT POINT POINT
[193] POINT POINT POINT POINT POINT POINT POINT POINT
[201] POINT POINT POINT POINT POINT POINT POINT POINT
[209] POINT POINT POINT POINT POINT POINT POINT POINT
[217] POINT POINT POINT POINT POINT POINT POINT POINT
[225] POINT POINT POINT POINT POINT POINT POINT POINT
[233] POINT POINT POINT POINT POINT POINT POINT POINT
[241] POINT POINT POINT POINT POINT POINT POINT POINT
[249] POINT POINT POINT POINT POINT POINT POINT POINT
[257] POINT POINT POINT POINT POINT POINT POINT POINT
[265] POINT POINT POINT POINT POINT POINT POINT POINT
[273] POINT POINT POINT POINT POINT POINT POINT POINT
[281] POINT POINT POINT POINT POINT POINT POINT POINT
[289] POINT POINT POINT POINT POINT POINT POINT POINT
[297] POINT POINT POINT POINT POINT POINT POINT POINT
[305] POINT POINT POINT POINT POINT POINT POINT POINT
[313] POINT POINT POINT POINT POINT POINT POINT POINT
[321] POINT POINT POINT POINT POINT POINT POINT POINT
[329] POINT POINT POINT POINT POINT POINT POINT POINT
[337] POINT POINT POINT POINT POINT POINT POINT POINT
[345] POINT POINT POINT POINT POINT POINT POINT POINT
[353] POINT POINT POINT POINT POINT POINT POINT POINT
[361] POINT POINT POINT POINT POINT POINT POINT POINT
[369] POINT POINT POINT POINT POINT POINT POINT POINT
[377] POINT POINT POINT POINT POINT POINT POINT POINT
[385] POINT POINT POINT POINT POINT POINT POINT POINT
[393] POINT POINT POINT POINT POINT POINT POINT POINT
[401] POINT POINT POINT POINT POINT POINT POINT POINT
[409] POINT POINT POINT POINT POINT POINT POINT POINT
[417] POINT POINT POINT POINT POINT POINT POINT POINT
[425] POINT POINT POINT POINT POINT POINT POINT POINT
[433] POINT POINT POINT POINT POINT POINT POINT POINT
[441] POINT POINT POINT POINT POINT POINT POINT POINT
[449] POINT POINT POINT POINT POINT POINT POINT POINT
[457] POINT POINT POINT POINT POINT POINT POINT POINT
[465] POINT POINT POINT POINT POINT POINT POINT POINT
[473] POINT POINT POINT POINT POINT POINT POINT POINT
[481] POINT POINT POINT POINT POINT POINT POINT POINT
[489] POINT POINT POINT POINT POINT POINT POINT POINT
[497] POINT POINT POINT POINT POINT POINT POINT POINT
[505] POINT POINT POINT POINT POINT POINT POINT POINT
[513] POINT POINT POINT POINT POINT POINT POINT POINT
[521] POINT POINT POINT POINT POINT POINT POINT POINT
[529] POINT POINT POINT POINT POINT POINT POINT POINT
[537] POINT POINT POINT POINT POINT POINT POINT POINT
[545] POINT POINT POINT POINT POINT POINT POINT POINT
[553] POINT POINT POINT POINT POINT POINT POINT POINT
[561] POINT POINT POINT POINT POINT POINT POINT POINT
[569] POINT POINT POINT POINT POINT POINT POINT POINT
[577] POINT POINT POINT POINT POINT POINT POINT POINT
[585] POINT POINT POINT POINT POINT POINT POINT POINT
[593] POINT POINT POINT POINT POINT POINT POINT POINT
[601] POINT POINT POINT POINT POINT POINT POINT POINT
[609] POINT POINT POINT POINT POINT POINT POINT POINT
[617] POINT POINT POINT POINT POINT POINT POINT POINT
[625] POINT POINT POINT POINT POINT POINT POINT POINT
[633] POINT POINT POINT POINT POINT POINT POINT POINT
[641] POINT POINT POINT POINT POINT POINT POINT POINT
[649] POINT POINT POINT POINT POINT POINT POINT POINT
[657] POINT POINT POINT POINT POINT POINT POINT POINT
[665] POINT POINT POINT POINT POINT POINT POINT POINT
[673] POINT POINT POINT POINT POINT POINT POINT POINT
[681] POINT POINT POINT POINT POINT POINT POINT POINT
[689] POINT POINT POINT POINT POINT POINT POINT POINT
[697] POINT POINT POINT POINT POINT POINT POINT POINT
[705] POINT POINT POINT POINT POINT POINT POINT POINT
[713] POINT POINT POINT POINT POINT POINT POINT POINT
[721] POINT POINT POINT POINT POINT POINT POINT POINT
[729] POINT POINT POINT POINT POINT POINT POINT POINT
[737] POINT POINT POINT POINT POINT POINT POINT POINT
[745] POINT POINT POINT POINT POINT POINT POINT POINT
[753] POINT POINT POINT POINT POINT POINT POINT POINT
[761] POINT POINT POINT POINT POINT POINT POINT POINT
[769] POINT POINT POINT POINT POINT POINT POINT POINT
[777] POINT POINT POINT POINT POINT POINT POINT POINT
[785] POINT POINT POINT POINT POINT POINT POINT POINT
[793] POINT POINT POINT POINT
18 Levels: GEOMETRY POINT LINESTRING ... TRIANGLE
Vous remarquez alors que les pistes cyclables sont composées de nombreuses multilignes. Une multiligne étant elle-même un ensemble de lignes. Quant aux accidents de vélo, ce sont des points qui désignent la position précise des accidents. On en compte 796 en 2018.
La projection
Vérifions maintenant la projection des shapefiles en utilisant la fonction st_crs()
de la bibliothèque sf
. Pour le shapefile limites_terrestres
nous obtenons:
st_crs(limites_terrestres)
Coordinate Reference System:
User input: NAD83 / MTM zone 8
wkt:
PROJCRS["NAD83 / MTM zone 8",
BASEGEOGCRS["NAD83",
DATUM["North American Datum 1983",
ELLIPSOID["GRS 1980",6378137,298.257222101,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4269]],
CONVERSION["MTM zone 8",
METHOD["Transverse Mercator",
ID["EPSG",9807]],
PARAMETER["Latitude of natural origin",0,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8801]],
PARAMETER["Longitude of natural origin",-73.5,
ANGLEUNIT["degree",0.0174532925199433],
ID["EPSG",8802]],
PARAMETER["Scale factor at natural origin",0.9999,
SCALEUNIT["unity",1],
ID["EPSG",8805]],
PARAMETER["False easting",304800,
LENGTHUNIT["metre",1],
ID["EPSG",8806]],
PARAMETER["False northing",0,
LENGTHUNIT["metre",1],
ID["EPSG",8807]]],
CS[Cartesian,2],
AXIS["easting (E(X))",east,
ORDER[1],
LENGTHUNIT["metre",1]],
AXIS["northing (N(Y))",north,
ORDER[2],
LENGTHUNIT["metre",1]],
USAGE[
SCOPE["Engineering survey, topographic mapping."],
AREA["Canada - Quebec between 75°W and 72°W.; Canada - Ontario - east of 75°W."],
BBOX[44.98,-75,62.53,-72]],
ID["EPSG",32188]]
La fonction st_crs()
donne beaucoup d’informations. Pour connaitre la projection utilisée, le datum, le code ESPG, ou l’unité de mesure de la projection nous pouvons préciser la sortie désirée de la fonction, de la manière suivante:
st_crs(limites_terrestres)$Name
[1] "NAD83 / MTM zone 8"
st_crs(limites_terrestres)$proj4string
[1] "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs"
st_crs(limites_terrestres)$epsg
[1] 32188
st_crs(limites_terrestres)$units
[1] "m"
Ainsi, la projection du shapefile pistes_cyclables
est:
st_crs(pistes_cyclables)$proj4string
[1] "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs"
Et la projection du shapefile accidents_velo
est:
st_crs(accidents_velo)$proj4string
[1] "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs"
Les données de tous les shapefiles sont dans la projection de Mercator transverse (+proj=tmerc
) et utilisent le Système de référence géodésique nord-américain de 1983 (+datum=NAD83
).
L’étendue spatiale
L’étendue spatiale d’un objet spatial dans R
, appelée le Bounding box
, représente les limites géographiques des données, ou la localisation des données les plus au sud, nord, est et ouest. Pour connaître l’étendue spatiale des shapefiles nous utilisons la fonction st_bbox()
de la librairie sf
:
st_bbox(limites_terrestres)
xmin ymin xmax ymax
267517 5029232 306669 5062642
st_bbox(pistes_cyclables)
xmin ymin xmax ymax
267984 5029291 306349 5062582
st_bbox(accidents_velo)
xmin ymin xmax ymax
269489 5029752 305368 5059058
Les attributs
Finalement, nous pouvons visualiser toutes les métadonnées et les attributs d’un shapefile simplement en écrivant son nom dans la console R
:
limites_terrestres
Simple feature collection with 72 features and 1 field
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 267500 ymin: 5029000 xmax: 306700 ymax: 5063000
Projected CRS: NAD83 / MTM zone 8
First 10 features:
DefaultAtt geometry
1 <NA> POLYGON ((299608 5038364, 2...
2 <NA> POLYGON ((301350 5036978, 3...
3 <NA> POLYGON ((300403 5038997, 3...
4 <NA> POLYGON ((300744 5039496, 3...
5 <NA> POLYGON ((302032 5043372, 3...
6 <NA> POLYGON ((302299 5043145, 3...
7 <NA> POLYGON ((302508 5040978, 3...
8 <NA> POLYGON ((304719 5062024, 3...
9 <NA> POLYGON ((304927 5062499, 3...
10 <NA> POLYGON ((305396 5062622, 3...
pistes_cyclables
Simple feature collection with 6395 features and 1 field
Geometry type: MULTILINESTRING
Dimension: XY
Bounding box: xmin: 268000 ymin: 5029000 xmax: 306300 ymax: 5063000
Projected CRS: Transverse_Mercator
First 10 features:
TYPE_VOIE
1 Piste cyclable sur rue
2 Piste cyclable en site propre
3 Chaussée désignée
4 Bande cyclable
5 Piste cyclable en site propre
6 Piste cyclable en site propre
7 Piste cyclable en site propre
8 Chaussée désignée
9 Piste cyclable en site propre
10 Piste cyclable en site propre
geometry
1 MULTILINESTRING ((297752 50...
2 MULTILINESTRING ((305050 50...
3 MULTILINESTRING ((299076 50...
4 MULTILINESTRING ((287779 50...
5 MULTILINESTRING ((300752 50...
6 MULTILINESTRING ((300953 50...
7 MULTILINESTRING ((299010 50...
8 MULTILINESTRING ((276415 50...
9 MULTILINESTRING ((293077 50...
10 MULTILINESTRING ((304787 50...
accidents_velo
Simple feature collection with 796 features and 1 field
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 269500 ymin: 5030000 xmax: 305400 ymax: 5059000
Projected CRS: Transverse_Mercator
First 10 features:
FID geometry
1 0 POINT (279673 5041015)
2 1 POINT (277292 5039169)
3 2 POINT (275581 5036314)
4 3 POINT (274728 5035946)
5 4 POINT (283935 5040875)
6 5 POINT (280442 5039871)
7 6 POINT (279626 5040700)
8 7 POINT (277734 5038853)
9 8 POINT (276487 5038090)
10 9 POINT (278357 5040125)
4.1.4 Visualisation de shapefiles sous R
Visualisation avec la librairie Mapview
Vous allez maintenant apprendre à visualiser des données shapefile en utilisant la fonction mapview()
de la librairie mapview
. Cette bibliothèque est une des plus simples à utiliser pour visualiser rapidement des données spatiales. Commençons par charger cette bibliothèque dans la console R
:
library(mapview)
Dans un premier temps, visualisons les limites terrestres de la ville de Montréal.
mapview(limites_terrestres, col.regions = "white")
Remarquez que nous avons choisi la couleur blanche pour représenter l’intérieur des polygones délimitant la ville de Montréal. La couleur par défaut (c-à-d si on ne précise pas de couleur) est bleue.
Passez votre curseur sur la carte ainsi créée et remarquez que vous pouvez cliquer sur chacun des polygones contenus dans cette couche de données.
Remarquez aussi la légende dans le coin supérieur gauche de la carte créée et approchez-y votre curseur. Vous pouvez alors sélectionner l’un des arrière-plans disponibles. L’option “OpenStreetMap” affichera la carte produite par ce gratuiciel de cartographie pour la région entourant le polygone illustré. L’option “ESRI.WorldImagery”, quant à elle, affichera une image satellitaire de la région.
Dans un deuxième temps, visualisons les pistes cyclables. Utilisons toujours la fonction mapview()
et demandons que la couleur du trait des lignes soit vert foncé. Pour définir la couleur des lignes, nous utilisons l’argument color
et non l’argument col.regions
.
mapview(pistes_cyclables, color = "darkgreen")
Il existe 657 couleurs prédéfinies dans R
. Taper la commande colors()
dans votre console R
pour voir afficher le nom des couleurs. Celles-sont sont listées par ordre alphabétique sauf pour la première couleur, qui est le blanc (white
). Ainsi, vous pouvez utiliser une couleur en assignant son nom ou son numéro. Pour produire la figure précédente, color = "darkgreen"
aurait pu être remplacé par
color = colors()[81]
. Essayez pour voir.
Pour en apprendre davantage sur les couleurs dans R
, vous êtes invité à consulter le site Earl Glynn et à conserver dans vos notes son tableau synthèse des couleurs dans R
. Nous discuterons plus en détail des couleurs dans le Module 6 portant sur la cartographie.
Dans la carte des pistes cyclables, remarquez la légende apparue dans le coin supérieur droit. Celle-ci identifie les différentes catégories de pistes cyclables. Cette information correspond aux différentes valeurs que peut prendre l’attribut “TYPE_VOIE” du shapefile pistes_cyclables
. Nous y reviendrons plus bas.
Finalement, visualisons les accidents de la route impliquant des bicyclettes.
mapview(accidents_velo, color = "red", col.regions = "red", cex = 1, legend = NULL)
La position des accidents est représentée par des points dont le contour et l’intérieur, dénotés par les arguments color
et col.regions
respectivement, sont de couleur rouge.
L’argument cex
, quant à lui, indique la taille des cercles, la taille par défaut utilisée dans mapview
est 2. Ici, nous avons demandé une taille plus petite afin de mieux différencier chacun des points.
Visualiser des données vectorielles par attribut
Lorsque nous avons affiché les métadonnées du shapefile pistes_cyclables
, vous avez peut-être observé que ce dernier comprenait l’attribut TYPE_VOIE
qui caractérise le type de pistes cyclables de chaque multiligne. Affichons les métadonnées à nouveau:
pistes_cyclables
Simple feature collection with 6395 features and 1 field
Geometry type: MULTILINESTRING
Dimension: XY
Bounding box: xmin: 268000 ymin: 5029000 xmax: 306300 ymax: 5063000
Projected CRS: Transverse_Mercator
First 10 features:
TYPE_VOIE
1 Piste cyclable sur rue
2 Piste cyclable en site propre
3 Chaussée désignée
4 Bande cyclable
5 Piste cyclable en site propre
6 Piste cyclable en site propre
7 Piste cyclable en site propre
8 Chaussée désignée
9 Piste cyclable en site propre
10 Piste cyclable en site propre
geometry
1 MULTILINESTRING ((297752 50...
2 MULTILINESTRING ((305050 50...
3 MULTILINESTRING ((299076 50...
4 MULTILINESTRING ((287779 50...
5 MULTILINESTRING ((300752 50...
6 MULTILINESTRING ((300953 50...
7 MULTILINESTRING ((299010 50...
8 MULTILINESTRING ((276415 50...
9 MULTILINESTRING ((293077 50...
10 MULTILINESTRING ((304787 50...
Utilisons la fonction factor()
pour convertir la classe de l’attribut TYPE_VOIE
de caractère (chr
) à facteur (Factor
). Puis, utilisons la fonction levels()
pour connaître ces types de voie cyclable. La fonction levels
donne les différentes valeurs que peut prendre un attribut.
$TYPE_VOIE <- factor(pistes_cyclables$TYPE_VOIE)
pistes_cyclableslevels(pistes_cyclables$TYPE_VOIE)
[1] "Bande cyclable"
[2] "Chaussée désignée"
[3] "Piste cyclable au niveau du trottoir"
[4] "Piste cyclable en site propre"
[5] "Piste cyclable sur rue"
[6] "Sentier polyvalent"
Si vous ne connaissez pas la distinction entre ces types d’aménagement cyclable, consulter ce document sommaire de la Ville de Montréal31
Dans la figure précédente illustrant les pistes cyclables, celles-ci étaient illustrées en vert peu importe leur type. Nous voulons maintenant représenter les six types de voie cyclable par six couleurs différentes. Un des avantages de la fonction mapview()
est qu’elle est capable d’emblée de distinguer les différentes valeurs que peut prendre un attribut. Ainsi, nous pouvons simplement demander:
mapview(pistes_cyclables)
Le shapefile pistes_cyclables
contient un seul attribut, “TYPE_VOIE”. Si un shapefile contient plus d’un attribut, il faut spécifier celui qu’on veut représenter en argument à la fonction mapview()
. Dans le cas présent, nous aurions plutôt demandé: `mapview(pistes_cyclables, z = “TYPE_VOIE”).
Par défaut, la fonction mapview()
pour les données vectorielles utilise la palette de couleur viridis. Une palette de couleur est un ensemble de plusieurs couleurs prédéfinies et stockées dans un vecteur. Il existe plusieurs palettes de couleur prédéfinies et nous y reviendrons également au Module 6 portant sur la cartographie. La palette viridis forme un gradient allant du mauve au jaune en passant par le bleu et le vert (Fig 4.1):
Un utilisateur de R
peut utiliser des palettes prédéfinies, ou encore définir les siennes. Par exemple, si nous trouvons que les couleurs de la palette viridis ne permettent pas de bien différencier les différents types de piste cyclable, nous pouvons nous-même créer une palette contenant six couleurs (car il y a six valeurs possibles pour cet attribut).
<- c("black","goldenrod", "cornflowerblue", "darkcyan", "hotpink", "mediumpurple") couleurs_voie
Nous pouvons ajouter cet argument à la fonction mapview()
:
mapview(pistes_cyclables, color=couleurs_voie, layer.name = "Types de pistes cyclables", lwd = 1 )
Remarquez que nous avons changé le titre de la légende en utilisant l’argument layer.name
, et que nous avons réduit l’épaisseur des lignes en utilisant l’argument lwd
.
Visualiser plusieurs shapefiles
Nous allons maintenant représenter les données vectorielles limites terrestres
, pistes_cyclables
et accidents_velo
au sein d’une même figure. Il s’agit de définir individuellement chacune des cartes comme un objet mapview
et de les additionner en utilisant l’opérateur +
.
<- mapview(limites_terrestres, col.regions = "darkgray", legend = NULL)
map_limites_terrestres <- mapview(pistes_cyclables, color=couleurs_voie,
map_pistes_cyclables layer.name = "Types de pistes cyclables", lwd = 1)
<- mapview(accidents_velo, color = "red",
map_accidents col.regions = "red", cex = 1, legend = NULL)
+ map_pistes_cyclables + map_accidents map_limites_terrestres
4.1.5 Reprojection de données vectorielles sous R
Dans cette section, vous apprendrez à manipuler le système de coordonnées de référence de données vectorielles. Nous avons vu en début de leçon que les données utilisées sont dans la projection de Mercator transverse (tmerc
) et utilisent le Système de référence géodésique nord-américan de 1983 (NAD83
). Par exemple, pour connaître la projection des données limites_terrestres
, nous avions fait:
st_crs(limites_terrestres)$proj4string
[1] "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 +y_0=0 +datum=NAD83 +units=m +no_defs"
Nous allons maintenant transformer le SCR vers la projection de Robinson (robin
) et le Système géodésique mondial de 1984 (WGS84
). Pour ce faire, nous utilisons la fonction st_transform()
de la bibliothèque st
.
##limites_terrestres_rob <- st_transform(limites_terrestres,
## CRS("+proj=robin +datum=WGS84"))
<- st_transform(limites_terrestres, CRS("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs" )) limites_terrestres_rob
Comparons les données transformées avec les données initiales. Pour ce faire, nous voulons représenter les deux cartes l’une à côté de l’autre. La bibliothèque leafsync
associée à la bibliothèque leaflet
permet de créer facilement des figures avec des panneaux multiples. Nous discuterons plus en détail de ces bibliothèques dans le Module 6 portant sur la cartographie. Installez la bibliothèque leafsync
si ce n’est pas déjà fait, et chargez-là dans votre session de travail.
library(leafsync)
Représentons maintenant les deux projections différentes en utilisant la fonction latticeView()
de la bibliothèque leafsync
. Puisque cette fonction existe à la fois dans la bibliothèque leafsync
et dans la bibliothèque mapview
mais qu’elle est obsolète dans cette dernière, nous devons préciser que nous voulons la fonction latticeView()de la bibliothèque
leafsyncen utilisant la notation suivante:
leafsync::latticeView`.
<- mapview(limites_terrestres, legend = FALSE, col.regions = "red")
map_mercator <- mapview(limites_terrestres_rob, legend = FALSE)
map_robinson <- leafsync::latticeView(map_mercator,map_robinson, ncol = 2)
Map Map
Nous remarquons que les deux cartes sont identiques (outre la couleur)! Comment cela est-ce possible sachant que nous venons de transformer la projection ? Ceci s’explique par le fait que la fonction mapview()
représente par défaut toutes données spatiales dans la projection Pseudo-Mercator (ou Mercator Web), qui est la projection utilisée par l’application OpenStreetMap. Ainsi, la fonction mapview
calcule elle-même le changement de projection avant de représenter des données spatiales. Pour conserver la projection originale, il faut utiliser l’argument native.crs=TRUE
.
Représentons à nouveau les cartes des limites terrestres de la région de Montréal, cette fois en précisant que nous voulons conserver le CRS d’origine.
<- mapview(limites_terrestres, col.regions = "red", legend = NULL, layer.name = "Mercator Web")
map_web <- mapview(limites_terrestres, col.regions = "yellow", legend = NULL, layer.name = "Mercator", native.crs=TRUE)
map_mercator <- mapview(limites_terrestres_rob, legend = NULL, layer.name = "Robinson", native.crs=TRUE)
map_robinson
<- leafsync::latticeView(map_web,map_mercator,map_robinson, ncol = 3)
Map Map
Remarquez que nous avons utilisé l’argument ncol
dans la fonction latticeview
pour spécifier le nombre de colonnes - c-à-d le nombre de panneaux verticaux qu’aura cette image.
Finalement, pour sauvegarder des données vectorielles, nous utilisons la fonction st_write()
de la bibliothèque st
, de la même façon que nous avons utilisé la fonction st_read()
en début de leçon. Par exemple, sauvegardons les données limites_terrestres_rob
que nous venons de créer.
4.1.6 Lire une géodatabase et explorer ses couches
Dans cette section, nous allons explorer les données vectorielles d’une géodatabase du Ministère de l’Éducation et de l’Enseignement supérieur du Québec (MEES).
Ces données se trouvent dans le dossier Donnees_Ouvertes_MEES.gbd
que vous avez normalement téléchargé au début de la leçon.
Lire les données
Dans la section portant sur le format des données vectorielles du Module 2, nous avons expliqué qu’une géodatabase est une façon de rassembler et d’organiser des données propres à un sujet dans une unique base de données.
La géodatabase Donnees_Ouvertes_MEES.gdb
contient plusieurs couches de données vectorielles (layers) sur les établissements d’enseignement au Québec.
Pour lire et explorer une géodatabase, on continue à utiliser la bibliothèque sf
. Chaque couche peut être lue individuellement en utilisant la fonction st_read()
: st_read("nom_de_la_geodatabase.gdb", layer = "nom_de_la_couche")
. Il est donc nécessaire de connaître d’abord les noms donnés aux couches composant la géodatabase - information qui nous est, pour l’instant, inconnue.
Pour connaître les couches d’une géodatabase, nous utilisons la fonction st_layers()
.
<- st_layers("Module4/Module4_donnees/Donnees_Ouvertes_MEES.gdb")
couches_mees couches_mees
Driver: OpenFileGDB
Available layers:
layer_name geometry_type features
1 CS_STA Multi Polygon 3
2 CS_FRA Multi Polygon 60
3 CS_ANG Multi Polygon 9
4 CS_STA_GEN Multi Polygon 3
5 CS_ANG_GEN Multi Polygon 9
6 CS_FRA_GEN Multi Polygon 60
7 CS_FRA_SDA Multi Polygon 60
8 CS_ANG_SDA Multi Polygon 9
9 CS_STA_SDA Multi Polygon 3
10 PPS_Public_SSocial_Org Point 2748
11 PPS_Prive_Installation Point 350
12 PPS_Prive_Etablissement Point 261
13 PPS_Gouvernemental Point 37
14 PPS_Public_SSocial_CS Point 72
15 ES_Universitaire Point 22
16 PPS_Public_Ecole Point 5202
17 PPS_Public_Immeuble Point 4641
18 ES_Collegial Point 311
fields crs_name
1 9 WGS 84 / Pseudo-Mercator
2 9 WGS 84 / Pseudo-Mercator
3 9 WGS 84 / Pseudo-Mercator
4 9 WGS 84 / Pseudo-Mercator
5 9 WGS 84 / Pseudo-Mercator
6 9 WGS 84 / Pseudo-Mercator
7 9 WGS 84 / Pseudo-Mercator
8 9 WGS 84 / Pseudo-Mercator
9 9 WGS 84 / Pseudo-Mercator
10 24 WGS 84 / Pseudo-Mercator
11 24 WGS 84 / Pseudo-Mercator
12 15 WGS 84 / Pseudo-Mercator
13 22 WGS 84 / Pseudo-Mercator
14 16 WGS 84 / Pseudo-Mercator
15 17 WGS 84 / Pseudo-Mercator
16 29 WGS 84 / Pseudo-Mercator
17 22 WGS 84 / Pseudo-Mercator
18 17 WGS 84 / Pseudo-Mercator
Nous observons que la géodatabase contient 18 couches différentes. Nous pouvons connaître le nom donné à chaque couche (layer_name
), leur géométrie (geometry_type
), le nombre d’objets vectoriels qu’elles contiennent (features
), et le nombre d’attributs qu’elles décrivent (fields
).
Les couches dont le nom commence par CS_
contiennent des données vectorielles relatives aux centres de services scolaires32. Puisque chacun de ces centres couvre un territoire qui leur est propre, ces données sont des multipolygones.
Les couches dont le nom commence par PPS_
et ES_
contiennent des données vectorielles relatives aux établissements d’enseignement primaire, secondaire et supérieur. Puisque chacun de ces établissements est identifié par une paire de coordonnées, ces données sont des points.
Lisons les données vectorielles de la couche PPS_Public_Ecole
en utilisant la fonction st_read()
.
<- st_read("Module4/Module4_donnees/Donnees_Ouvertes_MEES.gdb", layer = "PPS_Public_Ecole") ecoles_pub
Reading layer `PPS_Public_Ecole' from data source
`D:\Dropbox\Teluq\Enseignement\Cours\SCI1031\Developpement\Structure_test\sci1031\Module4\Module4_donnees\Donnees_Ouvertes_MEES.gdb'
using driver `OpenFileGDB'
Simple feature collection with 5202 features and 29 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -8849000 ymin: 5623000 xmax: -6360000 ymax: 8958000
Projected CRS: WGS 84 / Pseudo-Mercator
Cette couche donne la localisation des 5202 écoles primaires et secondaires publiques de la province ainsi que 28 autres attributs associés à ces établissements.
Notez que le système de coordonnées de référence: le datum WGS84 et la projection Pseudo-Mercator (ou Mercator Web) sont utilisés.
Notez aussi que cette couche de la géodatabase possède la même structure que celle d’un shapefile.
Nous pouvons visualiser la position des écoles publiques du Québec en utilisant la fonction mapview()
de la bibliothèque mapview
.
mapview(ecoles_pub)