-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTraitement-d-images-satellites-avec-Python.tex
5296 lines (4371 loc) · 267 KB
/
Traitement-d-images-satellites-avec-Python.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode,pdfpagemode=UseOutlines,pdfdisplaydoctitle=true,pdfpagelayout=SinglePage,pdfstartpage=1}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
%
\documentclass[
11pt,
letterpaper,
open=any,
twoside=false,
french]{scrbook}
\usepackage{amsmath,amssymb}
\usepackage{iftex}
\ifPDFTeX
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
\usepackage{lmodern}
\ifPDFTeX\else
% xetex/luatex font selection
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\usepackage[top=20mm,left=15mm,right=15mm,heightrounded]{geometry}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\setcounter{secnumdepth}{5}
% Make \paragraph and \subparagraph free-standing
\makeatletter
\ifx\paragraph\undefined\else
\let\oldparagraph\paragraph
\renewcommand{\paragraph}{
\@ifstar
\xxxParagraphStar
\xxxParagraphNoStar
}
\newcommand{\xxxParagraphStar}[1]{\oldparagraph*{#1}\mbox{}}
\newcommand{\xxxParagraphNoStar}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
\let\oldsubparagraph\subparagraph
\renewcommand{\subparagraph}{
\@ifstar
\xxxSubParagraphStar
\xxxSubParagraphNoStar
}
\newcommand{\xxxSubParagraphStar}[1]{\oldsubparagraph*{#1}\mbox{}}
\newcommand{\xxxSubParagraphNoStar}[1]{\oldsubparagraph{#1}\mbox{}}
\fi
\makeatother
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{241,243,245}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.40,0.45,0.13}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\ExtensionTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.28,0.35,0.67}{#1}}
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.46,0.62}{#1}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.68,0.00,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{\textcolor[rgb]{0.00,0.23,0.31}{#1}}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.07,0.07,0.07}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.13,0.47,0.30}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.37,0.37,0.37}{\textit{#1}}}
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}\usepackage{longtable,booktabs,array}
\usepackage{calc} % for calculating minipage widths
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
\usepackage{graphicx}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit in text height/width
\sbox\pandoc@box{#1}%
\Gscale@div\@tempa{\textheight}{\dimexpr\ht\pandoc@box+\dp\pandoc@box\relax}%
\Gscale@div\@tempb{\linewidth}{\wd\pandoc@box}%
\ifdim\@tempb\p@<\@tempa\p@\let\@tempa\@tempb\fi% select the smaller of both
\ifdim\@tempa\p@<\p@\scalebox{\@tempa}{\usebox\pandoc@box}%
\else\usebox{\pandoc@box}%
\fi%
}
% Set default figure placement to htbp
\def\fps@figure{htbp}
\makeatother
% definitions for citeproc citations
\NewDocumentCommand\citeproctext{}{}
\NewDocumentCommand\citeproc{mm}{%
\begingroup\def\citeproctext{#2}\cite{#1}\endgroup}
\makeatletter
% allow citations to break across lines
\let\@cite@ofmt\@firstofone
% avoid brackets around text for \cite:
\def\@biblabel#1{}
\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
\makeatother
\newlength{\cslhangindent}
\setlength{\cslhangindent}{1.5em}
\newlength{\csllabelwidth}
\setlength{\csllabelwidth}{3em}
\newenvironment{CSLReferences}[2] % #1 hanging-indent, #2 entry-spacing
{\begin{list}{}{%
\setlength{\itemindent}{0pt}
\setlength{\leftmargin}{0pt}
\setlength{\parsep}{0pt}
% turn on hanging indent if param 1 is 1
\ifodd #1
\setlength{\leftmargin}{\cslhangindent}
\setlength{\itemindent}{-1\cslhangindent}
\fi
% set entry spacing
\setlength{\itemsep}{#2\baselineskip}}}
{\end{list}}
\usepackage{calc}
\newcommand{\CSLBlock}[1]{\hfill\break\parbox[t]{\linewidth}{\strut\ignorespaces#1\strut}}
\newcommand{\CSLLeftMargin}[1]{\parbox[t]{\csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLRightInline}[1]{\parbox[t]{\linewidth - \csllabelwidth}{\strut#1\strut}}
\newcommand{\CSLIndent}[1]{\hspace{\cslhangindent}#1}
\usepackage{colortbl}
\usepackage[scaled=.8]{cascadia-code}
% Bibliographies in French have raised r and e for the number "édition" e.g. 1re, 3e
\DeclareUnicodeCharacter{1D49}{$^\text{e}$}
\DeclareUnicodeCharacter{02B3}{$^\text{r}$}
% \usepackage{transparent}
\titlehead{\centering\includegraphics[width=4in]{images/couverture-full.png}}
\usepackage{xparse}
\usepackage{tcolorbox}
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{numbers=left,breaklines=true,breakanywhere,commandchars=\\\{\}}
\let\oldverbatim\verbatim
\let\oldendverbatim\endverbatim
\DefineVerbatimEnvironment{verbatim}{Verbatim}{fontsize=\tiny,breaklines=true,fontfamily=courier}
\definecolor{package_color}{HTML}{e2e1f2}
\definecolor{objectif_color}{HTML}{e2efec}
\definecolor{notes_color}{HTML}{eef5fb}
\definecolor{allerloin_color}{HTML}{fcf7de}
\definecolor{astuce_color}{HTML}{f0f6ec}
\definecolor{attention_color}{HTML}{fef4ec}
\definecolor{exercise_color}{HTML}{fbe8f2}
\definecolor{background_color}{HTML}{FAF9FF}
\pdfminorversion=5
\pdfcompresslevel=9
\pdfobjcompresslevel=9
\usepackage{xparse}
\renewcommand{\thepart}{} % Enlever numérotation des parties
\setcounter{secnumdepth}{3} % Activer la numérotation des sections jusqu'au niveau des sous-sections
\makeatletter
\@ifpackageloaded{bookmark}{}{\usepackage{bookmark}}
\makeatother
\makeatletter
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\AtBeginDocument{%
\ifdefined\contentsname
\renewcommand*\contentsname{Table des matières}
\else
\newcommand\contentsname{Table des matières}
\fi
\ifdefined\listfigurename
\renewcommand*\listfigurename{Liste des Figures}
\else
\newcommand\listfigurename{Liste des Figures}
\fi
\ifdefined\listtablename
\renewcommand*\listtablename{Liste des Tables}
\else
\newcommand\listtablename{Liste des Tables}
\fi
\ifdefined\figurename
\renewcommand*\figurename{Figure}
\else
\newcommand\figurename{Figure}
\fi
\ifdefined\tablename
\renewcommand*\tablename{Tableau}
\else
\newcommand\tablename{Tableau}
\fi
}
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{ruled}
\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]}
\floatname{codelisting}{Bloc
de
code}
\newcommand*\listoflistings{\listof{codelisting}{Liste des Listings}}
\makeatother
\makeatletter
\makeatother
\makeatletter
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}}
\makeatother
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
\babelprovide[main,import]{french}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
\usepackage{bookmark}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same} % disable monospaced font for URLs
\hypersetup{
pdftitle={Traitement d'images satellites avec Python},
pdfauthor={Samuel Foucher; Philippe Apparicio; Yacine Bouroubi; Mickaël Germain; Étienne Clabaut},
pdflang={fr},
colorlinks=true,
linkcolor={violet},
filecolor={Maroon},
citecolor={violet},
urlcolor={Green4},
pdfcreator={LaTeX via pandoc}}
\title{Traitement d'images satellites avec Python}
\usepackage{etoolbox}
\makeatletter
\providecommand{\subtitle}[1]{% add subtitle to \maketitle
\apptocmd{\@title}{\par {\large #1 \par}}{}{}
}
\makeatother
\subtitle{Première édition}
\author{Samuel Foucher \and Philippe Apparicio \and Yacine
Bouroubi \and Mickaël Germain \and Étienne Clabaut}
\date{2025-03-28}
\begin{document}
\frontmatter
\maketitle
\renewcommand*\contentsname{Table des matières}
{
\hypersetup{linkcolor=}
\setcounter{tocdepth}{2}
\tableofcontents
}
\listoffigures
\listoftables
\mainmatter
\bookmarksetup{startatroot}
\chapter*{Préface}\label{pruxe9face}
\addcontentsline{toc}{chapter}{Préface}
\markboth{Préface}{Préface}
\renewcommand{\partname}{}
\textbf{Résumé~:} Ce livre vise à décrire une panoplie de méthodes de
traitement d'images satellites avec le langage Python. Celles et ceux
souhaitant migrer progressivement d'un autre logiciel d'imagerie et de
télédétection vers Python trouveront dans cet ouvrage les éléments pour
une transition en douceur. La philosophie de ce livre est de donner
toutes les clefs de compréhension et de mise en œuvre des méthodes
abordées dans Python. La présentation des méthodes est basée sur une
approche compréhensive et intuitive plutôt que mathématique, sans pour
autant négliger la rigueur mathématique ou statistique. Des rappels sur
les fondements en télédétection pourront apparaître au besoin afin
d'éclairer les approches techniques. Plusieurs éditions régulières sont
prévues sachant que ce domaine évolue constamment.
\textbf{Ce projet est en cours d'écriture et le contenu n'est pas
complet}
\includegraphics[width=0.5\linewidth,height=\textheight,keepaspectratio]{images/logos/under-construction-2408062_640.png}\hfill
\textbf{Remerciements~:} Ce manuel a été réalisé avec le soutien de la
fabriqueREL. Fondée en 2019, la fabriqueREL est portée par divers
établissements d'enseignement supérieur du Québec et agit en
collaboration avec les services de soutien pédagogique et les
bibliothèques. Son but est de faire des ressources éducatives libres
(REL) le matériel privilégié en enseignement supérieur au Québec.
\textbf{Mise en page~:} Samuel Foucher, Philippe Apparicio et
Marie-Hélène Gadbois Del Carpio.
© Samuel Foucher, Philippe Apparicio, Yacine Bouroubi, Mickaël Germain
et Étienne Clabaut.
\textbf{Pour citer cet ouvrage~:} Foucher S., Apparicio P., Bouroubi Y.,
Germain M. et Clabaut, E. (2025). \emph{Traitement d'images satellites
avec Python}. Université de Sherbrooke, Département de géomatique
appliquée. fabriqueREL. Licence CC~BY-SA.
\includegraphics[width=0.8\linewidth,height=\textheight,keepaspectratio]{images/introduction/CouvertureP2.png}\hfill
\section*{Un manuel sous la forme d'une ressource éducative
libre}\label{sect001}
\addcontentsline{toc}{section}{Un manuel sous la forme d'une ressource
éducative libre}
\markright{Un manuel sous la forme d'une ressource éducative libre}
\textbf{Pourquoi un manuel sous licence libre?}
Les logiciels libres sont aujourd'hui très répandus. Comparativement aux
logiciels propriétaires, l'accès au code source permet à quiconque de
l'utiliser, de le modifier, de le dupliquer et de le partager. Le
logiciel Python, dans lequel sont mises en œuvre les méthodes de
traitement d'images satellites décrites dans ce livre, est d'ailleurs à
la fois un langage de programmation et un logiciel libre (sous la
licence publique générale
\href{https://fr.wikipedia.org/wiki/Licence_publique_g\%C3\%A9n\%C3\%A9rale_GNU}{GNU
GPL2}). Par analogie aux logiciels libres, il existe aussi des
\textbf{ressources éducatives libres (REL)} «~dont la licence accorde
les permissions désignées par les 5R (\textbf{Retenir --- Réutiliser ---
Réviser --- Remixer --- Redistribuer}) et donc permet nécessairement la
modification~»
(\href{https://fabriquerel.org/rel/}{\textbf{\emph{fabriqueREL}}}). La
licence de ce livre, CC BY-SA (figure~\ref{fig-Licence}), permet donc
de~:
\begin{itemize}
\item
\textbf{Retenir}, c'est-à-dire télécharger et imprimer gratuitement le
livre. Notez qu'il aurait été plutôt surprenant d'écrire un livre
payant sur un logiciel libre et donc gratuit. Aussi, nous aurions été
très embarrassés que des personnes étudiantes avec des ressources
financières limitées doivent payer pour avoir accès au livre, sans
pour autant savoir préalablement si le contenu est réellement adapté à
leurs besoins.
\item
\textbf{Réutiliser}, c'est-à-dire utiliser la totalité ou une section
du livre sans limitation et sans compensation financière. Cela permet
ainsi à d'autres personnes enseignantes de l'utiliser dans le cadre
d'activités pédagogiques.
\item
\textbf{Réviser}, c'est-à-dire modifier, adapter et traduire le
contenu en fonction d'un besoin pédagogique précis puisqu'aucun manuel
n'est parfait, tant s'en faut! Le livre a d'ailleurs été écrit
intégralement dans Python avec \href{https://quarto.org/}{Quatro}.
Quiconque peut ainsi télécharger gratuitement le code source du livre
sur
\href{https://github.com/serie-python-tele/TraitementImagesPythonVol1}{GitHub}
et le modifier à sa guise (voir l'encadré intitulé \emph{Suggestions
d'adaptation du manuel}).
\item
\textbf{Remixer}, c'est-à-dire «~combiner la ressource avec d'autres
ressources dont la licence le permet aussi pour créer une nouvelle
ressource intégrée~»
(\href{https://fabriquerel.org/rel/}{\textbf{\emph{fabriqueREL}}}).
\item
\textbf{Redistribuer}, c'est-à-dire distribuer, en totalité ou en
partie le manuel ou une version révisée sur d'autres canaux que le
site Web du livre (par exemple, sur le site Moodle de votre université
ou en faire une version imprimée).
\end{itemize}
La licence de ce livre, CC BY-SA (figure~\ref{fig-Licence}), oblige donc
à~:
\begin{itemize}
\tightlist
\item
Attribuer la paternité de l'auteur dans vos versions dérivées, ainsi
qu'une mention concernant les grandes modifications apportées, en
utilisant la formulation suivante~:
\end{itemize}
Samuel Foucher, Apparicio Philippe, Mickaël Germain, Yacine Bouroubi et
Étienne Clabaut (2025). \emph{Traitement d'images satellites avec
Python}. Université de Sherbrooke, Département de géomatique appliquée.
fabriqueREL. Licence CC~BY-SA.
\begin{itemize}
\tightlist
\item
Utiliser la même licence ou une licence similaire à toutes versions
dérivées.
\end{itemize}
\begin{figure}
\centering{
\includegraphics[width=0.8\linewidth,height=\textheight,keepaspectratio]{images/introduction/Licence.JPG}
}
\caption{\label{fig-Licence}Licence Creative Commons du livre}
\end{figure}%
\begin{tcolorbox}[colback=background_color, colframe=astuce_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocAstuce.png} \textbf{Astuce}}]
\textbf{Suggestions d'adaptation du manuel}
Pour chaque méthode de traitement d'image abordée dans le livre, une
description détaillée et une mise en œuvre dans Python sont disponibles.
Par conséquent, plusieurs adaptations du manuel sont possibles~:
\begin{itemize}
\item
Conserver uniquement les chapitres sur les méthodes ciblées dans votre
cours.
\item
En faire une version imprimée et la distribuer aux personnes
étudiantes.
\item
Modifier la description d'une ou de plusieurs méthodes en effectuant
les mises à jour directement dans les chapitres.
\item
Insérer ses propres jeux de données dans les sections intitulées
\emph{Mise en œuvre dans Python}.
\item
Modifier les tableaux et figures.
\item
Ajouter une série d'exercices.
\item
Modifier les quiz de révision.
\item
Rédiger un nouveau chapitre.
\item
Modifier des syntaxes en Python. Plusieurs \emph{librairies} Python
peuvent être utilisées pour mettre en œuvre telle ou telle méthode.
Ces derniers évoluent aussi très vite et de nouvelles
\emph{librairies} sont proposées fréquemment! Par conséquent, il peut
être judicieux de modifier une syntaxe Python du livre en fonction de
ses habitudes de programmation en Python (utilisation d'autres
\emph{librairies} que ceux utilisés dans le manuel par exemple) ou de
bien mettre à jour une syntaxe à la suite de la parution d'une
nouvelle \emph{librairie} plus performante ou intéressante.
\item
Toute autre adaptation qui permet de répondre au mieux à un besoin
pédagogique.
\end{itemize}
\end{tcolorbox}
\section*{Comment lire ce manuel?}\label{sect002}
\addcontentsline{toc}{section}{Comment lire ce manuel?}
\markright{Comment lire ce manuel?}
Le livre comprend plusieurs types de blocs de texte qui en facilitent la
lecture.
\begin{tcolorbox}[colback=background_color, colframe=package_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocPackage.png} \textbf{Package}}]
\textbf{Bloc \emph{packages}}
Habituellement localisé au début d'un chapitre, il comprend la liste des
\emph{packages} Python utilisés pour un chapitre.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=objectif_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocObjectif.png} \textbf{Objectif}}]
\textbf{Bloc objectif}
Il comprend une description des objectifs d'un chapitre ou d'une
section.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=notes_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocNote.png} \textbf{Note}}]
\textbf{Bloc notes}
Il comprend une information secondaire sur une notion, une idée abordée
dans une section.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=allerloin_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocAllerPlusLoin.png} \textbf{Aller plus loin}}]
\textbf{Bloc pour aller plus loin}
Il comprend des références ou des extensions d'une méthode abordée dans
une section.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=astuce_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocAstuce.png} \textbf{Astuce}}]
\textbf{Bloc astuce}
Il décrit un élément qui vous facilitera la vie~: une propriété
statistique, un \emph{package}, une fonction, une syntaxe Python.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=attention_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocAttention.png} \textbf{Attention}}]
\textbf{Bloc attention}
Il comprend une notion ou un élément important à bien maîtriser.
\end{tcolorbox}
\begin{tcolorbox}[colback=background_color, colframe=exercise_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocExercice.png} \textbf{Exercice}}]
\textbf{Bloc exercice}
Il comprend un court exercice de révision à la fin de chaque chapitre.
\end{tcolorbox}
\section*{Comment utiliser les données du livre pour reproduire les
exemples?}\label{sect003}
\addcontentsline{toc}{section}{Comment utiliser les données du livre
pour reproduire les exemples?}
\markright{Comment utiliser les données du livre pour reproduire les
exemples?}
Ce livre comprend des exemples détaillés et appliqués en Python pour
chacune des méthodes abordées. Ces exemples se basent sur des jeux de
données ouverts et mis à disposition avec le livre. Ils sont disponibles
sur le \emph{repo GitHub} dans le sous-dossier \texttt{data}, à
l'adresse
\url{https://github.com/serie-tele-pyton/TraitementImagesVol1/tree/main/data}.
Une autre option est de télécharger le \emph{repo} complet du livre
directement sur \emph{GitHub}
(\url{https://github.com/serie-tele-pyton/TraitementImagesVol1}) en
cliquant sur le bouton \texttt{Code}, puis le bouton
\texttt{Download\ ZIP} (figure~\ref{fig-downloaffromgit}). Les données
se trouvent alors dans le sous-dossier nommé \texttt{data}.
\begin{figure}
\centering{
\includegraphics[width=0.4\linewidth,height=\textheight,keepaspectratio]{images/introduction/download_github.png}
}
\caption{\label{fig-downloaffromgit}Téléchargement de l'intégralité du
livre}
\end{figure}%
\section*{Structure du livre}\label{sect004}
\addcontentsline{toc}{section}{Structure du livre}
\markright{Structure du livre}
Le livre est organisé autour de quatre grandes parties.
\textbf{Partie 1. Importation et manipulation de données spatiales.}
Dans cette première partie, nous voyons comment importer, manipuler,
visualiser et exporter des données spatiales de type image (ou de type
matriciel) avec Python, principalement avec les \emph{packages}
\texttt{rasterio}, \texttt{xarray} et \texttt{numpy}
(chapitre~\ref{sec-chap01}). Ce chapitre vous permettra de maîtriser la
manipulation à bas niveau de différents types d'imagerie. Différents
exemples et exercises sont disponibles avec différents capteurs
satellites (multi-spectral, RGB-NIR, SAR, etc.)
\textbf{Partie 2. Transformations des données spatiales}. Cette deuxième
partie comprend deux chapitres~: les transformations spectrales
(chapitre~\ref{sec-chap03}) et les transformations spatiales
(chapitre~\ref{sec-chap04}).
\textbf{Partie 3. Classifications d'images.} Cette troisième partie
comprend deux chapitres~: les classifications supervisées
(chapitre~\ref{sec-chap05}) et non supervisées (à venir dans une
prochaine édition).
\textbf{Partie 4. Données massives.} (à venir dans une édition future).
Cette quatrième et dernière partie comprend un seul chapitre qui est
dédié aux plateformes de mégadonnées, notamment Google Earth Engine.
\section*{Remerciements}\label{sect005}
\addcontentsline{toc}{section}{Remerciements}
\markright{Remerciements}
De nombreuses personnes ont contribué à l'élaboration de ce manuel.
Ce projet a bénéficié du soutien pédagogique et financier de la
\href{https://fabriquerel.org/}{\textbf{\emph{fabriqueREL}}} (ressources
éducatives libres). Les différentes rencontres avec le comité de suivi
nous ont permis de comprendre l'univers des ressources éducatives libres
(REL) et notamment leurs \href{https://fabriquerel.org/rel/}{fameux 5R}
(Retenir --- Réutiliser --- Réviser --- Remixer --- Redistribuer), de
mieux définir le besoin pédagogique visé par ce manuel, d'identifier des
ressources pédagogiques et des outils pertinents pour son élaboration.
Ainsi, nous remercions chaleureusement les membres de la
\emph{fabriqueREL} pour leur soutien inconditionnel~:
\begin{itemize}
\item
José-Miguel Escobar-Zuniga, bibliothécaire à l'Université de
Sherbrooke.
\item
Marianne Dubé, coordonnatrice de la fabriqueREL, Université de
Sherbrooke.
\item
Claude Potvin, conseiller en formation, Service de soutien à
l'enseignement, Université Laval.
\end{itemize}
Nous remercions chaleureusement les personnes étudiantes du
\href{https://www.usherbrooke.ca/admission/programme/271/baccalaureat-en-geomatiqueappliquee-a-lenvironnement/}{Baccalauréat
en géomatique appliquée à l'environnement} et du
\href{https://www.usherbrooke.ca/admission/programme/429/microprogramme-de-1er-cycleen-geomatique-appliquee/}{Microprogramme
de 1er cycle en géomatique appliquée} du
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke} qui utilisent le manuel dans le cadre de cours.
\section*{Introduction aux images de télédétection}\label{sect006}
\addcontentsline{toc}{section}{Introduction aux images de télédétection}
\markright{Introduction aux images de télédétection}
L'imagerie numérique a pris une place importante dans notre vie de tous
les jours depuis une quinzaine d'années. Ces images sont prises
généralement au niveau du sol (imagerie proximale) avec seulement trois
couleurs dans le domaine de la vision humaine (rouge, vert et bleu).
Dans la suite du manuel, on parlera d'images du domaine de la vision par
ordinateur ou images en vision pour faire plus court.
Les images de télédétection ont des particularités et des propriétés qui
les différencient des images ``classiques'', dont les cinq principales
sont:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
Les images sont géoréférencées. Cela signifie que pour chaque pixel
nous pouvons y associer une position géographique ou cartographique.
\item
Le point de vue est très différent. Ces images sont prises avec une
vue d'en haut (Nadir) ou oblique avec une distance qui peut être très
grande; on parle d'images distales.
\item
Elles possèdent plus que 3 bandes. Contrairement aux images en vision,
les images de télédétection possèdent bien souvent plus que trois
bandes. Il n'est pas rare de trouver quatre bandes (Pléiade), 13
bandes (Sentinel-2, Landsat) et même 200 bandes pour des capteurs
hyperspectraux.
\item
Elles peuvent être calibrées. Les valeurs numérique de l'image peuvent
être converties en quantités physiques (luminance, réflectance,
section efficace, etc.) via une fonction de calibration.
\item
Elles sont de grande taille. Il n'est pas rare de manipuler des images
qui font plusieurs dizaines de milliers de pixels en dimension.
\end{enumerate}
\subsection*{Ressources en ligne}\label{ressources-en-ligne}
\addcontentsline{toc}{subsection}{Ressources en ligne}
\subsection*{\texorpdfstring{Listes des \emph{librairies}
utilisés}{Listes des librairies utilisés}}\label{sect0071}
\addcontentsline{toc}{subsection}{Listes des \emph{librairies} utilisés}
Dans ce livre, nous utilisons de nombreux \emph{packages} Python que
vous pouvez installer en une seule fois (voir section~\ref{sec-00-01})
ou chapitre par chapitre.
\bookmarksetup{startatroot}
\chapter*{À propos des auteurs}\label{auteurs}
\addcontentsline{toc}{chapter}{À propos des auteurs}
\markboth{À propos des auteurs}{À propos des auteurs}
\href{https://www.usherbrooke.ca/recherche/fr/specialistes/details/samuel.foucher}{\textbf{Samuel
Foucher}} est professeur au
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke}. Il y enseigne aux
\href{https://www.usherbrooke.ca/geomatique/etudes/programmes}{programmes
de 1\textsuperscript{er} et 2\textsuperscript{e} cycles de géomatique}
les cours \emph{Traitement numérique des images de télédétection},
\emph{Base de données géospatiales} et \emph{Apprentissage profond
appliqué à l'observation de la Terre}. Ses intérêts de recherche portent
sur le traitement d'images et l'application de l'IA aux données
géospatiales.
\href{https://www.usherbrooke.ca/recherche/fr/specialistes/details/philippe.apparicio}{\textbf{Philippe
Apparicio}} est professeur titulaire au
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke}. Il y enseigne aux
\href{https://www.usherbrooke.ca/geomatique/etudes/programmes}{programmes
de 1\textsuperscript{er} et 2\textsuperscript{e} cycles de géomatique}
les cours \emph{Transport et mobilité durable}, \emph{Modélisation et
analyse spatiale} et \emph{Géomatique appliquée à la gestion urbaine}.
Durant les dernières années, il a offert plusieurs formations aux Écoles
d'été du Centre interuniversitaire québécois de statistiques sociales
(\href{https://www.ciqss.org/}{CIQSS}). Géographe de formation, ses
intérêts de recherche incluent la justice et l'équité environnementale,
la mobilité durable, les pollutions atmosphérique et sonore, et le vélo
en ville. Il a publié une centaine d'articles scientifiques dans
différents domaines des études urbaines et de la géographie mobilisant
la géomatique et l'analyse spatiale.
\href{https://www.usherbrooke.ca/geomatique/departement/personnel/personnel-enseignant/mickael-germain}{\textbf{Mickaël
Germain}} est professeur agrégé au
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke}. Ses expertises comprennent les systèmes d'information
géographique (SIG) et leur utilisation sur Internet (SIG web), les
systèmes décisionnels, les bases de données à référence spatiale et le
forage de données massives. Il s'intéresse également à la cartographie
web, à la mobilité, à l'Internet des objets (IoT), à l'apprentissage
machine et à la fusion des données multisources pour l'aide à la
décision. Ses systèmes sont utilisés dans divers domaines de la
géomatique tels que les ressources naturelles, la géologie, les
transports et les écosystèmes. De plus, il se passionne pour le
traitement, la gestion et l'analyse des données de télédétection pour
extraire des paramètres descriptifs facilitant l'identification, la
segmentation ou la classification de l'information.
\href{https://www.usherbrooke.ca/geomatique/departement/personnel/personnel-enseignant/yacine-bouroubi}{\textbf{Yacine
Bouroubi}} est professeur agrégé au
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke}. Il possède plus de vingt ans d'expérience dans le domaine
du traitement des images numériques appliqué à diverses thématiques des
sciences6. Ses travaux de recherche se concentrent principalement sur
l'utilisation de techniques de traitement d'images pour résoudre des
problèmes géographiques. En tant que professeur, il partage son
expertise avec les étudiants et contribue à l'avancement des
connaissances dans son domaine. Bien que les détails spécifiques de sa
carrière ne soient pas fournis, son expérience étendue et son poste
actuel témoignent de sa contribution significative à la géographie et au
traitement d'images numériques.
\href{https://www.linkedin.com/in/\%C3\%A9tienne-clabaut-793a4176/?originalSubdomain=ca}{\textbf{Étienne
Clabaut}} est professeur associé au
\href{https://www.usherbrooke.ca/geomatique/}{Département de géomatique
appliquée} de l'\href{https://www.usherbrooke.ca/}{Université de
Sherbrooke}. Étienne détient un doctorat en télédétection de
l'Université de Sherbrooke. Il se spécialise dans l'utilisation de
l'apprentissage automatique pour l'exploitation de l'imagerie
satellite.s
\part{Partie 1. Importation, manipulation et visualisation de données
satellitaires}
\bookmarksetup{startatroot}
\chapter{Introduction au langage Python}\label{sec-chap00}
Dans ce chapitre, nous présentons quelques éléments essentiels du
langage Python qui nous seront utiles dans ce manuel. Python est un
langage très riche et peut aboutir à des projets logiciels très
sophistiqués. Il est important de comprendre que la programmation Python
n'est pas ici une fin en soi, mais plutôt un outil de scriptage et de
manipulation des données satellitaires.
\begin{tcolorbox}[colback=background_color, colframe=objectif_color, boxrule=0.2mm, leftrule=1mm, coltitle=black, fonttitle=\bfseries, title={\includegraphics[width=0.3cm]{images/BlocObjectif.png} \textbf{Objectif}}]
\textbf{Objectifs d'apprentissage visés dans ce chapitre}
À la fin de ce chapitre, vous devriez être en mesure de~:
\begin{itemize}
\tightlist
\item
connaître les principales distributions de Python;
\item
installer un environnement d'exécution du code de cet ouvrage;
\item
comprendre les structures de base du langage Python;
\end{itemize}
\end{tcolorbox}
Python, créé par
\href{https://en.wikipedia.org/wiki/Guido_van_Rossum}{Guido van Rossum}
en 1991, est un langage de programmation polyvalent et facile à
apprendre, souvent comparé à un couteau suisse numérique pour sa
simplicité et sa polyvalence. Comme un outil multifonction, Python peut
être utilisé pour une variété de tâches, du développement web à
l'analyse de données, en passant par l'intelligence artificielle.
\section{Les distributions}\label{les-distributions}
Il existe plusieurs
\href{https://wiki.python.org/moin/PythonDistributions}{distributions}
du langage Python, ces distributions sont comme différentes saveurs de
votre glace préférée - chacune a ses propres caractéristiques uniques,
mais elles sont toutes fondamentalement Python. Voici un aperçu des
principales distributions :
\begin{itemize}
\item
\href{https://www.python.org/downloads/}{CPython} est la distribution
``vanille'' officielle, comme la recette originale de Python. Elle est
ainsi le choix idéal pour la compatibilité et la conformité aux
standards.
\item
\href{https://www.anaconda.com/download}{Anaconda}. Pensez-y comme à
un sundae tout garni. Elle vient avec de nombreuses bibliothèques
scientifiques préinstallées, ce qui est idéal pour l'analyse de
données et l'apprentissage automatique (\emph{machine learning}).
\item
\href{https://docs.anaconda.com/miniconda/miniconda-install/}{Miniconda}
est une distribution légère de Python qui vous permet d'ajouter au
besoin d'autres bibliothèques.
\item
\href{https://pypy.org/}{PyPy} : est une version turbo de Python,
optimisée pour la vitesse.
\end{itemize}
Chaque distribution a ses forces, que ce soit la simplicité, la vitesse
ou des fonctionnalités spécifiques. Le choix dépend donc de vos besoins,
comme choisir entre une glace simple ou une glace royal (banana split)
élaboré.
\section{Les styles de programmation en
Python}\label{les-styles-de-programmation-en-python}
Il existe plusieurs approches pour programmer en Python. La plus directe
est en version interactive en tapant \texttt{python} et de rentrer des
commandes ligne par ligne.
\subsection{Les outils de
programmation}\label{les-outils-de-programmation}
Un code python prend la forme d'un simple fichier texte avec l'extension
\texttt{.py} et peut être modifié avec un simple éditeur de texte.
Cependant, il n'y aura pas de rétroactions immédiates de l'interpréteur
Python, ce qui rend la correction d'erreurs (débogage) beaucoup plus
laborieux.
Un IDE (\emph{Integrated Developement Environnement}) est comme une
boîte à outils complète pour les programmeurs, vous trouverez :
\begin{itemize}
\item
Un éditeur de texte amélioré pour écrire votre code, avec des
fonctionnalités comme la coloration syntaxique qui rend le code plus
lisible.
\item
Un compilateur qui transforme votre code en instructions que
l'ordinateur peut comprendre.
\item
Un débogueur pour trouver et corriger les erreurs, tel un détective
numérique.
\item
Des outils d'automatisation qui effectuent des tâches répétitives,
comme un assistant virtuel pour le codage.
\item
L'accès à la documentation des différentes librairies.
\end{itemize}
Ces outils intégrés permettent aux développeurs de travailler plus
efficacement, en passant moins de temps à jongler entre différentes
applications et plus de temps à produire du code.
Voici quelques options populaires :
\begin{itemize}
\item
\href{https://www.jetbrains.com/pycharm/}{PyCharm}: est un des outils
les plus utilisés dans l'industrie. Il offre une multitude de
fonctionnalités comme l'autocomplétion intelligente et le débogage
intégré, idéal pour les grands projets. Cependant, cet outil peut être
assez gourmand en mémoire et en CPU. Notez qu'il existe une version
gratuite et une version professionnelle.
\item
\href{https://code.visualstudio.com/}{Visual Studio Code} : gratuit,
léger mais puissant, il est personnalisable avec des extensions pour
Python.
\item
\href{https://www.spyder-ide.org/}{Spyder} : logiciel libre et
gratuit, orienté vers les applications scientifiques.
\item
\href{https://jupyter.org/}{Jupyter Notebooks} : imaginez un cahier
interactif pour le code. Idéal pour l'analyse de données et
l'apprentissage, il permet de mélanger code, texte et visualisations.
Des services gratuits dans le \textbf{cloud} sont disponibles comme
Google Colab et Kaggle. Ces environnements sont néanmoins moins
appropriés pour des grands projets et le débogage. Jupyter peut
souffrir de problèmes de reproductibilité dus à l'exécution arbitraire
des cellules.
\item
\href{https://marimo.io/}{Marimo} se veut une version plus moderne des
\emph{notebooks jupyter}. Contrairement à Jupyter, Marimo garantit la
cohérence entre le code, les sorties et l'état du programme. Il
analyse intelligemment les relations entre les cellules et réexécute
automatiquement celles qui sont affectées par des changements,
éliminant ainsi les problèmes d'état caché.
\end{itemize}
\section{Bonnes pratiques}\label{bonnes-pratiques}
Python est un langage très dynamique, qui évolue constamment. Cela pose
certains défis pour la gestion du code à long terme. Il est fortement
conseillé d'utiliser des environnements virtuels pour gérer vos
différentes bibliothèques (\emph{libraries}). Voici quelques bonnes
pratiques à suivre :
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
\textbf{N'installez par la toute dernière version de Python} : Il est
recommandé d'installer 1 ou 2 version antérieure, par exemple si 3.13
est \href{https://www.python.org/downloads/}{la version plus récente},
installer plutôt la version 3.11. Les versions trop récentes peuvent
être instables. La version de python désirée peut être spécifiée au
moment de la création d'un environnement virtuel (voir plus bas). Vous
pouvez afficher la liste des versions de python avec la commande
\texttt{conda\ search\ -\/-full-name\ python}.
\item
\textbf{N'utilisez pas de version obsolète de Python}. Cela peut
sembler contradictoire avec le point précédent mais c'est l'excès
inverse. Si vous utilisez une version trop ancienne alors toutes vos
librairies cesseront d'évoluer et peuvent devenir obsolètes.
\item
\textbf{Utilisez des environnements virtuels}. Pensez-y comme à des
compartiments séparées pour chaque projet. Cela évite les conflits
entre les différentes versions de bibliothèques (\emph{libraries})et
garde votre système propre. Par exemple, si vous souhaitez vérifier
une nouvelle version de Python, utilisez un environnement :
\texttt{conda\ create\ -\/-name\ test\ python=3.11}
\item
\textbf{Vérifiez l'installation}. Après l'installation, ouvrez un
terminal et tapez \texttt{python\ -\/-version} pour vous assurer que
tout fonctionne correctement.
\end{enumerate}
\subsection{Création d'un environnement virtuel}\label{sec-00-01}
Il y a deux façons d'installer un environnement virtuel selon votre
distribution de Python:
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
\textbf{Option 1}. Vous utilisez
\href{https://www.anaconda.com/download}{Anaconda} ou
\href{https://docs.anaconda.com/miniconda/miniconda-install/}{Miniconda}.
La commande \texttt{conda} est utilisée pour créer un environnement
test avec Python 3.10:
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]