MNS et MNT

Objet

Les images Sentinel sont faciles d’accès et permettent d’évaluer les changements récents.

Pour le MNS et le MNT, la campagne LIDAR de l’IGN qui se termine actuellement a permis de récupérer des données beaucoup plus précises.

Concernant notre problématique spécifique (richesse / pauvreté commune et administrés), l’idée est d’examniner les mnt / mns de 3 rues importantes de votre commune (pas de départementale), pour voir si la voirie est lisse (= sans nid de poule).

Le MNT issu du Lidar permet-il de repérer les problèmes voirie ?

Définitions MNS MNT MNE

Différence entre un MNT / MNS et une image Sentinel ?

Directive européenne INSPIRE

  • MNT surface nue

  • MNS hauteur de tous les objets placés au sol (sursol)

  • un MNE correspond soit au MNT, soit au MNS

Dans chaque cas, il faut s’interroger.

Charger les dalles correspondant à vos rues

Pour Bondy, les 3 rues sont sur 1 seule dalle (662 / 6867)

Code
dir("data/cours5/", pattern = "6867")
[1] "LHD_FXX_0662_6867_MNS_O_0M50_LAMB93_IGN69.tif"
[2] "LHD_FXX_0662_6867_MNT_O_0M50_LAMB93_IGN69.tif"
Code
library(terra)
terra 1.8.93
Code
mns <- rast("data/cours5/LHD_FXX_0662_6867_MNS_O_0M50_LAMB93_IGN69.tif")
mnt <- rast("data/cours5/LHD_FXX_0662_6867_MNT_O_0M50_LAMB93_IGN69.tif")
  • D’après le nom du fichier, quelle est la précision ?

Récupérer les rues

Récupérer les rues concernées avec overpass turbo, le tag est

(name ~ "anqui" or name ~ "ard Vaillant"  or name ~ "arbusse") and highway <> bus_stop and highway = * in bondy

A commenter

  • le tilde,

  • la casse

  • les opérateurs OR et AND

  • les parenthèses

Couper au tampon

Tampon le plus petit possible

Quelle est la largeur d’une chaussée ?

Code
library(sf)
Linking to GEOS 3.13.1, GDAL 3.11.4, PROJ 9.7.0; sf_use_s2() is TRUE
Code
rue <- st_read("data/cours5/3rues.geojson", quiet = T)
# agréger les géométries par rues
rue <- aggregate(rue [, "name"], by = list(rue$name), length)
rue <- st_transform(rue, 2154)
tampon <- st_buffer(rue,2)
names(tampon) [1:2] <- c("nom", "nb")
library(mapview)
mapview(tampon)
Code
st_write(tampon, "data/cours5.gpkg", "tampon", delete_layer = T, quiet = T)

Couper (= crop / mask)

Pour couper, explorer le menu imagerie / processus et raster functions, quelle est la différence ?

Dans fonctions rasters, tout est dans gestion des données

Code
MNT <- crop(mnt, tampon, mask=T)
MNS <- crop(mns, tampon, mask=T)
Code
plot(MNT)

paramètres à appliquer :

  • ne pas oublier de cocher “couper la géométrie” sinon la coupure se fait par défaut au carré.

Dans Arcgis, ne pas oublier de cocher “couper la géométrie” sinon la coupure se fait par défaut au carré

Symbologie

clic droit au niveau de la fenêtre contenu / symbologie

Rechercher la palette élévation dans le mode continu, appliquer la même palette aux deux couches

Observer les différences entre les 3 rues au niveau du mnt et du mns

Statistiques

Quelle différence dans les étendues min / max ?

Code
freqMNS <- freq(MNS)
freqMNT <- freq(MNT)
head(freqMNT)
  layer value count
1     1    51  4534
2     1    52 14471
3     1    53  5658
4     1    54 14964
5     1    55  6083
6     1    56  4403
Code
par(mf_row = c(1,2))
barplot(MNT, main = "MNT")

Code
barplot(MNS, main = "MNS")

Dans Arcgis, explorer l’outil informations image

La question !

Et surtout peut-on déjà supposer que la route n’est pas totalement lisse ?

MNH : utilisation de la calculatrice raster

Retenir la notion d’algèbre des cartes

Afin d’éliminer le problème de différence d’élévation entre les 3 rues, on va créer un MNH.

Code
MNH <- MNS - MNT 
#writeRaster(MNH, "data/cours5/mnh.tif", overwrite = T)

Tester les modes de visualisation

Les rasters d’élévations sont toujours utilisés avec les mêmes outils :

Essayer notamment ombrage, pente et contour.

Code
# utilisation du contour
contour(MNH, col = "red", border=NA)

Code
# taille pente (en degrés) et exposition
pente <- terrain(MNH, v = c("slope", "aspect"), unit ="degrees")
ombrage <- shade(slope = pente$slope, aspect = pente$aspect)
plot(ombrage, col = gray (0:50/50),legend = F)

Il apparaît très facile avec les différents outils proposés de cerner les anomalies de la voirie.

Dénombrer le nombre d’anomalies par rue

Reprendre par exemple la couche pente.

Proposition d’une méthode :

  • lissage

On agrège les pixels à leurs voisins selon la valeur.

Code
lissage <- focal(pente, w=3, fun = mean, nar.rm=T)
plot(lissage)

  • seuillage (reclassification) : distinguer les pentes > 30 des autres
Code
lissage <- focal(pente, w=3, fun = mean, nar.rm=T)
hist(lissage)

Code
reclassif <- matrix (c(0,5,1,
                       5,83,2),
                     ncol = 3,
                     byrow = TRUE)
lissage2 <- classify(lissage, rcl = reclassif)
pal <- c("white", "blue")
plot(lissage2, col = pal)

Code
freq(lissage2)
    layer value count
1       1     0 23997
2       1     1   520
3       1     2  4774
4       2     2   870
5       2    83    11
6       2    84    20
7       2    85   104
8       2    86     9
9       2    87    10
10      2    88     7
11      2    89     5
12      2    90 24009
13      2    91    13
14      2    92    11
15      2    93     6
16      2    94    13
17      2    95    49
18      2    96     8
19      2    97    13
20      2    98    22
21      2    99    23
22      2   100    36
23      2   101    28
24      2   102    22
25      2   103    20
26      2   104    10
27      2   105   136
28      2   106    18
29      2   107    20
30      2   108    19
31      2   109     9
32      2   110    18
33      2   111    24
34      2   112    12
35      2   113    22
36      2   114    29
37      2   115    76
38      2   116    29
39      2   117    39
40      2   118    33
41      2   119    39
42      2   120    38
43      2   121    28
44      2   122    34
45      2   123    34
46      2   124    24
47      2   125    40
48      2   126    24
49      2   127    21
50      2   128    18
51      2   129    27
52      2   130    23
53      2   131    17
54      2   132    23
55      2   133    25
56      2   134    26
57      2   135    26
58      2   136    26
59      2   137    33
60      2   138    33
61      2   139    22
62      2   140    34
63      2   141    23
64      2   142    32
65      2   143    40
66      2   144    30
67      2   145    22
68      2   146    26
69      2   147    30
70      2   148    28
71      2   149    27
72      2   150    31
73      2   151    23
74      2   152    33
75      2   153    26
76      2   154    39
77      2   155    31
78      2   156    21
79      2   157    29
80      2   158    21
81      2   159    23
82      2   160    30
83      2   161    25
84      2   162    20
85      2   163    27
86      2   164    32
87      2   165    17
88      2   166    20
89      2   167    15
90      2   168    19
91      2   169    27
92      2   170    24
93      2   171    25
94      2   172    23
95      2   173    18
96      2   174    16
97      2   175    13
98      2   176    22
99      2   177    22
100     2   178    22
101     2   179    26
102     2   180    25
103     2   181    25
104     2   182    18
105     2   183    24
106     2   184    28
107     2   185    21
108     2   186    18
109     2   187    17
110     2   188    16
111     2   189    30
112     2   190    16
113     2   191    18
114     2   192    25
115     2   193    22
116     2   194    30
117     2   195    24
118     2   196    27
119     2   197    17
120     2   198    22
121     2   199    27
122     2   200    19
123     2   201    22
124     2   202    16
125     2   203    19
126     2   204    18
127     2   205    16
128     2   206    14
129     2   207    16
130     2   208    18
131     2   209    13
132     2   210    24
133     2   211    20
134     2   212    16
135     2   213    14
136     2   214    20
137     2   215    20
138     2   216    17
139     2   217    20
140     2   218    14
141     2   219    17
142     2   220    15
143     2   221    23
144     2   222    24
145     2   223    21
146     2   224    16
147     2   225    10
148     2   226    15
149     2   227    19
150     2   228    16
151     2   229    16
152     2   230    16
153     2   231    11
154     2   232    18
155     2   233    15
156     2   234    17
157     2   235    18
158     2   236    20
159     2   237     8
160     2   238    18
161     2   239    19
162     2   240     8
163     2   241    21
164     2   242     9
165     2   243    13
166     2   244     9
167     2   245    16
168     2   246    14
169     2   247     5
170     2   248    14
171     2   249    11
172     2   250    13
173     2   251    14
174     2   252    11
175     2   253    12
176     2   254    13
177     2   255    10
178     2   256    15
179     2   257     7
180     2   258     5
181     2   259    15
182     2   260    15
183     2   261     6
184     2   262     9
185     2   263    13
186     2   264    14
187     2   265     8
188     2   266    10
189     2   267    11
190     2   268    11
191     2   269    10
192     2   270    11
193     2   271     3
194     2   272    14
195     2   273     8
196     2   274     9
197     2   275     5
198     2   276     7
199     2   277     4
200     2   278     8
201     2   279     3
202     2   280     4
203     2   281     9
204     2   282    10
205     2   283     4
206     2   284     3
207     2   285     8
208     2   286     5
209     2   287     5
210     2   288     6
211     2   289     6
212     2   290     5
213     2   291     5
214     2   292     7
215     2   293     5
216     2   294     2
217     2   295     5
218     2   296     6
219     2   297     4
220     2   298     6
221     2   299     9
222     2   300     8
223     2   301     7
224     2   302     8
225     2   303     8
226     2   304     6
227     2   305     9
228     2   306     4
229     2   307     3
230     2   308     8
231     2   309     3
232     2   310     7
233     2   311     2
234     2   312     8
235     2   313     8
236     2   314     4
237     2   315     5
238     2   316     4
239     2   317     2
240     2   318     3
241     2   319     6
242     2   320     5
243     2   321     5
244     2   322     3
245     2   323     3
246     2   324     4
247     2   325     5
248     2   326     6
249     2   327     3
250     2   328     1
251     2   329     5
252     2   330     3
253     2   331     5
254     2   332     6
255     2   333     1
256     2   334     2
257     2   335     7
258     2   336     8
259     2   337     8
260     2   338     4
261     2   339     4
262     2   340     6
263     2   341     2
264     2   342     2
265     2   343     3
266     2   344     2
267     2   345     3
268     2   346     3
269     2   348     2
270     2   349     2
271     2   350     1
272     2   351     1
273     2   352     1
  • Convertir raster => vecteur et agréger les polygones contigus
Code
library(sf)
v <- as.polygons(lissage2)
v <- st_as_sf(v)
v <- st_cast(v, "POLYGON")
table(v$slope)

  0   1   2 
 50 225  78 
Code
v <- v [v$slope == 2,]
mapview(v)
  • Comter le nombre de géométries et leur taille
Code
v$aire <- st_area(v)
hist(v$aire)

Code
library(mapsf)
mf_init(v [1:10,])
mf_map(v, "aire", type ="choro", add = T)

Une vérification sur le terrain s’impose bien sûr !