-
-
Notifications
You must be signed in to change notification settings - Fork 16
/
preface.qmd
174 lines (145 loc) · 6.86 KB
/
preface.qmd
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
# Preface {.unnumbered}
## Who this book is for
Anyone interested in **geospatial data science** will benefit from
reading this book. If you are a student with basic-to-intermediate
programming experience, you will learn a valuable set of tools
for your career. If you are an experienced data scientist, you
may still be surprised by the generality of the framework
presented here.
This is **not** a book on geostatistics. Although some chapters
and examples will cover concepts from geostatistical theory,
that is only to illustrate what is possible after you master
geospatial data science with the
[![](images/julia.svg){fig-alt="Julia" width=40px}](https://julialang.org)
programming language.
## Why Julia?
An effective implementation of the framework presented in this book
requires a language that can:
- Generate high-performance code
- Specialize on multiple arguments
- Evaluate code interactively
- Exploit parallel hardware
This list of requirements eliminates Python, R and other
mainstream languages used for data science.
## How to read this book
If this is your first encounter with
[![](images/julia.svg){fig-alt="Julia" width=40px}](https://julialang.org)
or with programming in general, consider reading the open source book
[*Think Julia: How to Think Like a Computer Scientist*](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html)
by @Lauwens2018. It introduces the language to
first-time programmers and explains basic concepts that you will
need to know to master the material here.
If you are an experienced programmer who just wants to quickly
learn the syntax of the language, consider checking the
[Learn Julia in Y minutes](https://learnxinyminutes.com/docs/julia)
website. If you are seeking more detailed information, consider
reading the [official documentation](https://docs.julialang.org/en/v1).
Assuming that you learned the basics of the language, you can proceed
and read this book. It is organized in five parts as follows:
```{mermaid}
flowchart LR
preread["Julia basics ✅"] --> partI
subgraph partI["Part I: Foundations"]
chapter1["1. What is geospatial data?"]
chapter2["2. Scientific visualization"]
chapter3["3. Interfacing with GIS"]
chapter4["4. Geometric processing"]
chapter1 --> chapter2
chapter2 --> chapter3
chapter3 --> chapter4
end
subgraph partII["Part II: Transforms"]
chapter5["5. What are transforms?"]
chapter6["6. Map projections"]
chapter7["7. Building pipelines"]
chapter5 --> chapter6
chapter6 --> chapter7
end
subgraph partIII["Part III: Queries"]
chapter8["8. Split-apply-combine"]
chapter9["9. Geospatial joins"]
chapter8 --> chapter9
end
subgraph partIV["Part IV: Interpolation"]
chapter10["10. Geospatial correlation"]
chapter11["11. Simple interpolation"]
chapter10 --> chapter11
end
subgraph partV["Part V: Applications"]
chapter12["12. Mineral deposits"]
chapter13["13. Agricultural fields"]
chapter14["14. Petroleum reservoirs"]
chapter12 --> chapter13
chapter13 --> chapter14
end
partI --> partII
partI --> partIII
partI --> partIV
partII --> partV
partIII --> partV
partIV --> partV
```
The chapters were written to be read in sequence, but there is
some flexibility on how to read the parts. I recommend reading
**Part I** first to understand the framework and vision. After
that, you will have the necessary background to follow the code
examples in **Part II**, **Part III** and **Part IV**. Finally,
you can explore the applications in **Part V** to solidify the
concepts.
## Software installation
If you want to reproduce the examples in the book, copy and paste
the code below in the Julia REPL:
```julia
using Pkg
# assert Julia version
@assert VERSION ≥ v"1.11" "requires Julia v1.11 or later"
# create fresh environment
pkg"activate @GDSJL"
# install framework
pkg"add GeoStats@0.71.3"
# install IO module
pkg"add GeoIO@1.19.2"
# install viz modules
pkg"add CairoMakie@0.12.2"
pkg"add PairPlots@2.9.3"
# install other modules
pkg"add DataFrames@1.7.0"
```
If you need to reproduce the exact same environment with
fixed versions of indirect dependencies, please download the
[Project.toml](https://github.com/JuliaEarth/geospatial-data-science-with-julia/blob/main/Project.toml) and
[Manifest.toml](https://github.com/JuliaEarth/geospatial-data-science-with-julia/blob/main/Manifest.toml)
files that are stored on GitHub.
Some examples require data files that are also stored on GitHub at
[this link](https://github.com/JuliaEarth/geospatial-data-science-with-julia/tree/main/data).
Click on any file of interest and press the download button.
## Acknowledgements
I would like to acknowledge all the [contributors](https://github.com/JuliaEarth/GeoStats.jl#contributors) of the
[![](images/geostats.svg){fig-alt="GeoStats.jl" width=110px}](https://github.com/JuliaEarth/GeoStats.jl) framework.
You are the reason this book exists! [![](images/juliahearts.gif){fig-alt="JuliaHearts" width=30px}](https://julialang.org)
The implementation of the framework is only possible thanks to the amazing programming language advances by @Benzanson2017.
A special thanks to [Elias Carvalho](https://github.com/eliascarv)
for his outstanding contributions to the software stack,
to Prof. [Douglas Mazzinghy](https://scholar.google.com.br/citations?user=yfnHmeEAAAAJ) (UFMG),
Prof. [Leandro Martínez](https://scholar.google.com.br/citations?user=4eLEzHAAAAAJ&hl=pt-BR) (UNICAMP) and
Prof. [Fernando Moraes](https://www.linkedin.com/in/fernando-sergio-de-moraes-3464014a) (UENF)
for organizing the first training courses at universities,
to Prof. [Francisco Heron](https://scholar.google.com/citations?user=6-kN0tMAAAAJ) (UFC)
for his contributions on high-performance computing,
to Dr. [João Pinelo](https://www.linkedin.com/in/joaopinelo) (AIRCentre)
for organizing the [JuliaEO](https://github.com/Arpeggeo/JuliaEO2023) workshop,
and to colleagues in industry who support this work through research and development projects, including
[Patrice Mazzoni](https://www.linkedin.com/in/patrice-mazzoni),
[Keila Gonçalves](https://www.linkedin.com/in/keila-gon%C3%A7alves-013a9512),
[Fabio Duarte](https://www.linkedin.com/in/fabio-terra-passos-duarte-89362555),
[Mariana Menezes](https://www.linkedin.com/in/mariana-menezes-42085852),
[Givago Azevedo](https://www.linkedin.com/in/givagovalentedeazevedo/),
[Fernando Villanova](https://www.linkedin.com/in/fernando-villanova-46a56534),
[Luis Gomide](https://www.linkedin.com/in/luis-gomide-junior).
Thanks to all the reviewers of the first draft, including
[Maciel Zortea](https://www.linkedin.com/in/mzortea),
[Max de Bayser](https://www.linkedin.com/in/max-de-bayser-13a44521),
[Bogumił Kamiński](https://www.linkedin.com/in/bogumilkaminski),
[Ronan Arraes](https://www.linkedin.com/in/ronan-arraes),
[Erick Chacón Montalván](https://www.linkedin.com/in/erick-chacon-montalvan-7bba9141),
[Kyle Beggs](https://www.linkedin.com/in/kylebeggs).