Skip to content

Commit

Permalink
Improve titles in many places
Browse files Browse the repository at this point in the history
  • Loading branch information
HTenkanen committed Oct 5, 2023
1 parent b9d6817 commit 8e48462
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,18 @@ jupyter:
extension: .md
format_name: markdown
format_version: '1.3'
jupytext_version: 1.14.4
jupytext_version: 1.15.2
kernelspec:
display_name: Python 3 (ipykernel)
language: python
name: python3
---

<!-- #region editable=true slideshow={"slide_type": ""} -->
# Motivation

Now that you are familiar with the basics of Python programming and data analysis using `pandas` library, it is time to apply those skills to geographic data analysis. In this part of the book, you will learn how to deal with spatial data and analyze it using Python and various libraries that have been developed for GIS-related tasks.

<!-- #endregion -->

## Why to use Python for geographic data analysis?

Expand All @@ -32,8 +33,8 @@ Python is extremely useful language to learn if you are interested in geographic
- **You can plug-in and chain different third-party softwares** (not necessarily written in Python) which allow you to build e.g. fancy web-GIS applications (using e.g. KeplerGL, Dask or GeoDjango for developing the user interface and having PostGIS as a back-end database).
- **Python libraries are developing fast**: an active open source community is continuously improving existing libraries and adding new functionalities to them, or creating new libraries for purposes that do not yet have an existing tool to work with. However, it is good to be aware that fast development is not necessarily a guarantee of stability or quality. Hence, as for any open source library (with any programming language), it is good to investigate a bit before starting to use a new open source library whether it has been actively maintained and if it seems to have an active community of users developing the library further.


## Python GIS ecosystem: Core libraries for doing GIS and geographic data analysis
<!-- #region editable=true slideshow={"slide_type": ""} -->
## Core libraries for geographic data analysis in Python

We have already used a few Python modules for conducting different tasks, such as `pandas` for doing some basic data analysis tasks or `matplotlib` for visualizing our data. From now on, we will familiarize ourselves with a punch of other Python modules that are useful when for geographic data analysis and different GIS related operations. Python has a large ecosystem of libraries that can be used for doing analysis, visualization or geocomputation with spatial data, as shown in Figure 5.1 which shows how different Python geo-oriented libraries (n=145) are linked to each other. There is a dedicated website at ecosystem.pythongis.org [^ecosystem] that lists and provides useful information for a large set of tools available for doing GIS and Earth Observation (remote sensing) in Python. Naturally, we won't use all of these packages in this book, but we will explore kind many of them. Although the ecosystem is broad, there are a few core libraries that are widely used across the ecosystem:

Expand All @@ -43,10 +44,11 @@ We have already used a few Python modules for conducting different tasks, such a
![_**Figure 5.1**. Python ecosystem for GIS and Earth Observation ({cite}`Tenkanen_2022`)._](../img/python-gis-ecosystem.png)

_**Figure 5.1**. Python ecosystem for GIS and Earth Observation ({cite}`Tenkanen_2022`)._
<!-- #endregion -->


<!-- #region editable=true slideshow={"slide_type": ""} -->
One drawback of such a broad open source ecosystem compared to using a specific GIS software such as ArcGIS, is that open source tools and their documentation are spread under different Python modules and created by different developers. This means that when working you need to familiarize yourself with many different tools and their documentation, whereas in ArcGIS everything is packaged under a same module called arcpy and all the documentation can be found from a single location. However, open source libraries have many other benefits as described earlier.

<!-- #endregion -->

## Footnotes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ jupyter:
extension: .md
format_name: markdown
format_version: '1.3'
jupytext_version: 1.14.4
jupytext_version: 1.15.2
kernelspec:
display_name: Python 3 (ipykernel)
language: python
name: python3
---

<!-- #region editable=true slideshow={"slide_type": ""} -->
# Coordinate reference systems

<!-- #endregion -->

## Georeferencing

Expand Down Expand Up @@ -68,8 +69,8 @@ Figure 5.11 illustrates nine different map projections, where the latitude and l

_**Figure 5.11**. Different map projections that can be used to represent the geographic data on a two-dimensional plane._


## Storing and exchanging the CRS information
<!-- #region editable=true slideshow={"slide_type": ""} -->
## Storing Coordinate Reference System information

The CRS information of a geographic dataset can be stored in various different ways. Some of the most common systems to store the CRS information are EPSG, PROJ and OGC WKT. All of these basically serve the same purpose: they store the key characteristics of a given coordinate reference system in a standardized manner which is essential for being able to work with geographic data using any GIS software or library (not limited to Python). Below, you can find some basic information about the most commonly used systems to store CRS information:

Expand Down Expand Up @@ -111,8 +112,10 @@ PROJCS["ETRS89 / TM35FIN(E,N)",

All of these systems and formats are designed to ensure that CRS information can be stored, transmitted, and used consistently across different systems and applications, which is essential for accurate location-based data analysis and mapping. In Chapters 6 and 7, we will see how to work with coordinate reference systems in Python when working with vector and raster data.

<!-- #endregion -->


<!-- #region editable=true slideshow={"slide_type": ""} -->
## Footnotes

[^PROJ]: <https://proj.org/>
<!-- #endregion -->
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
{
"cell_type": "markdown",
"id": "735a2f13-8070-4e89-aae3-51f65d4fa48b",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Motivation\n",
"\n",
Expand Down Expand Up @@ -34,9 +40,15 @@
{
"cell_type": "markdown",
"id": "dd8c107d-ca86-4d81-b147-70a8ff54e62e",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Python GIS ecosystem: Core libraries for doing GIS and geographic data analysis\n",
"## Core libraries for geographic data analysis in Python\n",
"\n",
"We have already used a few Python modules for conducting different tasks, such as `pandas` for doing some basic data analysis tasks or `matplotlib` for visualizing our data. From now on, we will familiarize ourselves with a punch of other Python modules that are useful when for geographic data analysis and different GIS related operations. Python has a large ecosystem of libraries that can be used for doing analysis, visualization or geocomputation with spatial data, as shown in Figure 5.1 which shows how different Python geo-oriented libraries (n=145) are linked to each other. There is a dedicated website at ecosystem.pythongis.org [^ecosystem] that lists and provides useful information for a large set of tools available for doing GIS and Earth Observation (remote sensing) in Python. Naturally, we won't use all of these packages in this book, but we will explore kind many of them. Although the ecosystem is broad, there are a few core libraries that are widely used across the ecosystem:\n",
"\n",
Expand All @@ -51,7 +63,13 @@
{
"cell_type": "markdown",
"id": "f1f95e26-79a6-4070-82b8-f3d71f94483b",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"One drawback of such a broad open source ecosystem compared to using a specific GIS software such as ArcGIS, is that open source tools and their documentation are spread under different Python modules and created by different developers. This means that when working you need to familiarize yourself with many different tools and their documentation, whereas in ArcGIS everything is packaged under a same module called arcpy and all the documentation can be found from a single location. However, open source libraries have many other benefits as described earlier."
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
{
"cell_type": "markdown",
"id": "1f250ca5-f608-4a2e-a2f7-939b3d433dd7",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Coordinate reference systems"
]
Expand Down Expand Up @@ -100,9 +106,15 @@
{
"cell_type": "markdown",
"id": "8372d4be",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Storing and exchanging the CRS information \n",
"## Storing Coordinate Reference System information \n",
"\n",
"The CRS information of a geographic dataset can be stored in various different ways. Some of the most common systems to store the CRS information are EPSG, PROJ and OGC WKT. All of these basically serve the same purpose: they store the key characteristics of a given coordinate reference system in a standardized manner which is essential for being able to work with geographic data using any GIS software or library (not limited to Python). Below, you can find some basic information about the most commonly used systems to store CRS information:\n",
"\n",
Expand Down Expand Up @@ -148,7 +160,13 @@
{
"cell_type": "markdown",
"id": "37d639d3-eb92-44c0-9b0d-1a5b9d00cde2",
"metadata": {},
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Footnotes\n",
"\n",
Expand Down
4 changes: 2 additions & 2 deletions source/part2/chapter-06/md/01-geodataframe.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,9 @@ temp.head()
```

<!-- #region editable=true slideshow={"slide_type": ""} -->
## Preparing GeoDataFrames from different file formats
## Different file formats for reading and writing geographic data

There are various different GIS data formats available such as [Shapefile](https://en.wikipedia.org/wiki/Shapefile) [^shp], [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) [^GeoJson], [KML](https://en.wikipedia.org/wiki/Keyhole_Markup_Language) [^KML], and [GeoPackage](https://en.wikipedia.org/wiki/GeoPackage) [^GPKG]. Geopandas is capable of reading data from all of these formats (plus many more). In the following, we will show some typical examples how to read (and write) data from different sources. The main point in this section is to demonstrate the basic syntax for reading and writing data using short code snippets. You can find the example datasets in the data-folder. However, most of the example databases do not exists, but you can use and modify the example syntax according to your own setup.
There are various GIS data formats available such as [Shapefile](https://en.wikipedia.org/wiki/Shapefile) [^shp], [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) [^GeoJson], [KML](https://en.wikipedia.org/wiki/Keyhole_Markup_Language) [^KML], and [GeoPackage](https://en.wikipedia.org/wiki/GeoPackage) [^GPKG]. Geopandas is capable of reading data from all of these formats (plus many more). In the following, we will show some typical examples how to read (and write) data from different sources. The main point in this section is to demonstrate the basic syntax for reading and writing data using short code snippets. You can find the example datasets in the data-folder. However, most of the example databases do not exists, but you can use and modify the example syntax according to your own setup.
<!-- #endregion -->

<!-- #region editable=true slideshow={"slide_type": ""} -->
Expand Down
4 changes: 2 additions & 2 deletions source/part2/chapter-06/nb/01-geodataframe.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1121,9 +1121,9 @@
"tags": []
},
"source": [
"## Preparing GeoDataFrames from different file formats\n",
"## Different file formats for reading and writing geographic data \n",
"\n",
"There are various different GIS data formats available such as [Shapefile](https://en.wikipedia.org/wiki/Shapefile) [^shp], [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) [^GeoJson], [KML](https://en.wikipedia.org/wiki/Keyhole_Markup_Language) [^KML], and [GeoPackage](https://en.wikipedia.org/wiki/GeoPackage) [^GPKG]. Geopandas is capable of reading data from all of these formats (plus many more). In the following, we will show some typical examples how to read (and write) data from different sources. The main point in this section is to demonstrate the basic syntax for reading and writing data using short code snippets. You can find the example datasets in the data-folder. However, most of the example databases do not exists, but you can use and modify the example syntax according to your own setup."
"There are various GIS data formats available such as [Shapefile](https://en.wikipedia.org/wiki/Shapefile) [^shp], [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) [^GeoJson], [KML](https://en.wikipedia.org/wiki/Keyhole_Markup_Language) [^KML], and [GeoPackage](https://en.wikipedia.org/wiki/GeoPackage) [^GPKG]. Geopandas is capable of reading data from all of these formats (plus many more). In the following, we will show some typical examples how to read (and write) data from different sources. The main point in this section is to demonstrate the basic syntax for reading and writing data using short code snippets. You can find the example datasets in the data-folder. However, most of the example databases do not exists, but you can use and modify the example syntax according to your own setup."
]
},
{
Expand Down

0 comments on commit 8e48462

Please sign in to comment.