# Automating GIS Processes {{year}}
**Welcome to the *Automating GIS processes* course {{year}}!** Through interactive
lessons and hands-on exercises, this course introduces you to geographic data
analysis using the Python programming language. If you are new to Python, we
recommend you first start with the *Geo-Python* course
([geo-python.readthedocs.io](https://geo-python.readthedocs.io/)) before diving
into using it for GIS analyses in this course.
*Geo-Python* and *Automating GIS processes* (‘AutoGIS’) have been developed at
the Department of Geosciences and Geography, University of Helsinki, Finland,
and the teaching material is openly available for anyone interested.
:::{admonition} Open Access
:class: info
Course material and videos are **open for everyone**. The aim of this course is
to share the knowledge and help people to get started with their journey
towards doing GIS analyses more efficiently and in a better reproducible
manner: using Python and its manifold modules. Feel free to share this website
with anyone interested, and use the provided material in your own teaching.
Read more about the license and terms of usage
here.
:::
After completing this course, a student is able to manage, analyse, and
visualise spatial data efficiently and in a systematic manner, using Python.
They also know how to evaluate available methods critically. Besides learning
how to handle, manipulate, and analyse geographic data (e.g., read and write
files, manage coordinate reference systems, conduct overlay analysis or network
analysis), students also get to know good programming practices, the benefits of
using a version control system (`git`), and how to document and communicate
their analysis workflow in an online repository (GitHub).
:::{admonition} Interactive content
:class: info
Each lesson in this course can be turned into an interactive programming session
in the browser. You’ll find buttons for activating the python environment using
Binder at the top of each
programming lesson. Students at Finnish higher education institutions are
encouraged to use CSC’s *Notebooks*.
:::
## Course format
The majority of this course will be spent in front of a computer learning to
program in the Python language. The course consists of interactive lectures and
weekly exercises. The exercises will focus on developing basic programming
skills using Python and applying those skills to manipulate and analyse
geographic information.
Most exercises in this course involve real world examples and data. For each
exercise, you may be asked to submit the Python codes you have written, output
figures and answers to related questions. You are encouraged to discuss and
work together with other students while working on the weekly exercises. The
final exercise must be completed individually and must clearly reflect your own
work.
:::{admonition} Students at the University of Helsinki
:class: hint
The *Automating GIS processes* course is part of the Master's
Programme in Geography, its course code is
`GEOG-329-2`.
We recommend you complete *Introduction to advanced geoinformatics*
(`GEOG-G301`)
before enrolling into this course, and expect basic skills in Python programming, which you can acquire, for instance, in *Geo-Python*
(`GEOG-329-1`).
:::
## Course topics by week
Over the course of six weeks, we will dive into manipulating and analysing
geographic data in Python. This course builds upon the skills introduced in the
*[GeoPython](https://geo-python.readthedocs.io/)* course, which focusses on
learning the basics of Python programming.
At the University of Helsinki, the *Automating GIS processes* course runs for
seven weeks during the second teaching period in the autumn semester, starting
on {{starting_date}}.
During the teaching period, this web page is updated each week before the lecture.
| week | theme |
| ----- | ----------------------------------------------------------------------------------------- |
| **1** | Shapely and geometry objects (points, lines and polygons) |
| **2** | Managing spatial data with GeoPandas (reading and writing data, projections, table joins) |
| **3** | Geocoding and spatial queries |
| **4** | Reclassifying data, overlay analysis |
| **5** | Visualisation: static and interactive maps |
| **6** | OpenStreetMap data (osmnx) and Network analysis (networkx) |
| | |
## Earlier versions of this course
The course pages and material of earlier years are available at:
- [2022](https://autogis-site.readthedocs.io/en/2022/)
- [2021](https://autogis-site.readthedocs.io/en/2021/)
- [2020](https://autogis-site.readthedocs.io/en/2020_/)
- [2019](https://autogis-site.readthedocs.io/en/2019/)
- [2018](https://autogis-site.readthedocs.io/en/2018_/)
- [2017](https://automating-gis-processes.github.io/2017/)
- [2016](https://automating-gis-processes.github.io/2016/)
## Contents
```{toctree}
---
caption: Course information
maxdepth: 1
---
course-info/general-information
course-info/course-environment
course-info/grading
course-info/learning-goals
course-info/installing-python
course-info/create-python-gis-environment
course-info/ai-tools
course-info/resources
course-info/license
```
```{toctree}
---
caption: Lesson 1
maxdepth: 2
---
lessons/lesson-1/overview
lessons/lesson-1/course-motivation
lessons/lesson-1/geometry-objects
lessons/lesson-1/exercise-1
```
```{toctree}
---
caption: Lesson 2
maxdepth: 2
---
lessons/lesson-2/overview
lessons/lesson-2/key-concepts
lessons/lesson-2/managing-file-paths
lessons/lesson-2/vector-data-io
lessons/lesson-2/geopandas-an-introduction
lessons/lesson-2/map-projections
lessons/lesson-2/exercise-2
```
```{toctree}
---
caption: Lesson 3
maxdepth: 2
---
lessons/lesson-3/overview
lessons/lesson-3/geocoding
lessons/lesson-3/geocoding-in-geopandas
lessons/lesson-3/point-in-polygon-queries
lessons/lesson-3/intersect
lessons/lesson-3/spatial-join
lessons/lesson-3/exercise-3
```
```{toctree}
---
caption: Lesson 4
maxdepth: 2
---
lessons/lesson-4/overview
lessons/lesson-4/overlay-analysis
lessons/lesson-4/vector-data-aggregating
lessons/lesson-4/simplifying-geometries
lessons/lesson-4/reclassifying-data
lessons/lesson-4/exercise-4
```
```{toctree}
---
caption: Lesson 5
maxdepth: 2
---
lessons/lesson-5/overview
lessons/lesson-5/static-maps
lessons/lesson-5/interactive-maps
lessons/lesson-5/exercise-5
```
% ```{toctree}
% ---
% caption: Lesson 6
% maxdepth: 2
% ---
% lessons/lesson-6/overview
% lessons/lesson-6/retrieve-data-from-openstreetmap
% lessons/lesson-6/network-analysis
% ```
```{toctree}
---
caption: Final Assignment
maxdepth: 2
---
final-assignment/final-assignment
final-assignment/final-assignment-grading
final-assignment/final-assignment-hints
```
% ```{toctree}
% ---
% caption: "Extra: PyQGIS"
% maxdepth: 2
% ---
% extra/pyqgis/overview
% extra/pyqgis/pyqgis
% extra/pyqgis/additional_pyqgis_functions
% ```
% ```{toctree}
% ---
% caption: "Extra: Raster handling in Python"
% maxdepth: 2
% ---
% extra/raster/overview
% extra/raster/download-data
% extra/raster/reading-raster
% extra/raster/plotting-raster
% extra/raster/clipping-raster
% extra/raster/raster-map-algebra
% extra/raster/raster-mosaic
% extra/raster/zonal-statistics
% extra/raster/read-cogs
% ```