From ce98011aab1172bc7b86c22a03bf6621f1709ef5 Mon Sep 17 00:00:00 2001 From: Robinlovelace Date: Fri, 11 Aug 2023 12:58:31 +0000 Subject: [PATCH] Deploy commit: Minor change to test #183 solution dc6ec8950dd0a07e209cb8062d2c1c1f7ad0a2a7 --- 02-spatial-data.html | 272 +-- 03-attribute-operations.html | 18 +- 04-spatial-operations.html | 76 +- 05-geometry-operations.html | 80 +- 06-raster-vector.html | 58 +- 07-reproj.html | 60 +- 08-read-write-plot.html | 1801 +++++++++++++++++ .../figure-html/cell-14-output-1.svg | 1 + .../figure-html/cell-17-output-1.png | Bin 0 -> 58773 bytes .../figure-html/cell-18-output-1.png | Bin 0 -> 78242 bytes .../figure-html/fig-ne-airports-output-1.png | Bin 0 -> 33624 bytes .../figure-html/fig-ne-counties-output-1.png | Bin 0 -> 25490 bytes .../fig-read-shp-query-output-1.png | Bin 0 -> 131511 bytes 09-mapping.html | 803 ++++++++ .../figure-html/fig-basic-plot-output-1.png | Bin 0 -> 48296 bytes .../figure-html/fig-basic-plot-output-2.png | Bin 0 -> 62184 bytes .../figure-html/fig-basic-plot-output-3.png | Bin 0 -> 73121 bytes .../fig-plot-raster-and-vector-output-1.png | Bin 0 -> 174931 bytes .../fig-plot-raster-and-vector-output-2.png | Bin 0 -> 148221 bytes .../fig-plot-raster-and-vector-output-3.png | Bin 0 -> 145045 bytes .../figure-html/fig-raster-plot-output-1.png | Bin 0 -> 144858 bytes robots.txt | 1 + search.json | 408 ++++ sitemap.xml | 43 + 24 files changed, 3339 insertions(+), 282 deletions(-) create mode 100644 08-read-write-plot.html create mode 100644 08-read-write-plot_files/figure-html/cell-14-output-1.svg create mode 100644 08-read-write-plot_files/figure-html/cell-17-output-1.png create mode 100644 08-read-write-plot_files/figure-html/cell-18-output-1.png create mode 100644 08-read-write-plot_files/figure-html/fig-ne-airports-output-1.png create mode 100644 08-read-write-plot_files/figure-html/fig-ne-counties-output-1.png create mode 100644 08-read-write-plot_files/figure-html/fig-read-shp-query-output-1.png create mode 100644 09-mapping.html create mode 100644 09-mapping_files/figure-html/fig-basic-plot-output-1.png create mode 100644 09-mapping_files/figure-html/fig-basic-plot-output-2.png create mode 100644 09-mapping_files/figure-html/fig-basic-plot-output-3.png create mode 100644 09-mapping_files/figure-html/fig-plot-raster-and-vector-output-1.png create mode 100644 09-mapping_files/figure-html/fig-plot-raster-and-vector-output-2.png create mode 100644 09-mapping_files/figure-html/fig-plot-raster-and-vector-output-3.png create mode 100644 09-mapping_files/figure-html/fig-raster-plot-output-1.png create mode 100644 robots.txt create mode 100644 search.json create mode 100644 sitemap.xml diff --git a/02-spatial-data.html b/02-spatial-data.html index 8c4288c9..d4df9791 100644 --- a/02-spatial-data.html +++ b/02-spatial-data.html @@ -484,7 +484,7 @@

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ + +
+ + + +
+ +
+
+

7  Geographic data I/O

+
+ + + + +
+ + + + +
+ + +
+ +
+

7.1 Prerequisites

+

Let’s import the required packages:

+
+
import numpy as np
+import fiona
+import geopandas as gpd
+import shapely
+import rasterio
+import rasterio.plot
+
+

and load the sample data for this chapter:

+
+
nz = gpd.read_file('data/nz.gpkg')
+nz_elev = rasterio.open('data/nz_elev.tif')
+
+
+
+

7.2 Introduction

+

This chapter is about reading and writing geographic data. Geographic data import is essential for geocomputation: real-world applications are impossible without data. Data output is also vital, enabling others to use valuable new or improved datasets resulting from your work. Taken together, these processes of import/output can be referred to as data I/O.

+

Geographic data I/O is often done with few lines of code at the beginning and end of projects. It is often overlooked as a simple one step process. However, mistakes made at the outset of projects (e.g. using an out-of-date or in some way faulty dataset) can lead to large problems later down the line, so it is worth putting considerable time into identifying which datasets are available, where they can be found and how to retrieve them. These topics are covered in Section 7.3, which describes various geoportals, which collectively contain many terabytes of data, and how to use them. To further ease data access, a number of packages for downloading geographic data have been developed, as described in Section 7.4.

+

There are many geographic file formats, each of which has pros and cons, described in Section 7.6. The process of reading and writing files in formats efficiently is covered in Sections Section 7.7 and Section 7.8, respectively. The final Section Section 7.9 demonstrates methods for saving visual outputs (maps), in preparation for Chapter 8 on visualization.

+
+
+

7.3 Retrieving open data

+

A vast and ever-increasing amount of geographic data is available on the internet, much of which is free to access and use (with appropriate credit given to its providers).1 In some ways there is now too much data, in the sense that there are often multiple places to access the same dataset. Some datasets are of poor quality. In this context, it is vital to know where to look, so the first section covers some of the most important sources. Various ‘geoportals’ (web services providing geospatial datasets such as Data.gov) are a good place to start, providing a wide range of data but often only for specific locations (as illustrated in the updated Wikipedia page on the topic).

+

Some global geoportals overcome this issue. The GEOSS portal and the Copernicus Open Access Hub, for example, contain many raster datasets with global coverage. A wealth of vector datasets can be accessed from the SEDAC portal run by the National Aeronautics and Space Administration (NASA) and the European Union’s INSPIRE geoportal, with global and regional coverage.

+

Most geoportals provide a graphical interface allowing datasets to be queried based on characteristics such as spatial and temporal extent, the United States Geological Survey’s EarthExplorer being a prime example. Exploring datasets interactively on a browser is an effective way of understanding available layers. Downloading data is best done with code, however, from reproducibility and efficiency perspectives. Downloads can be initiated from the command line using a variety of techniques, primarily via URLs and APIs (see the Sentinel API for example). Files hosted on static URLs can be downloaded with the following method, as illustrated in the code chunk below which accesses the Natural Earth Data website to download the world airports layer zip file and to extract the contained Shapefile. Note that the download code is complicated by the fact that the server checks the User-agent header of the request, basically to make sure that the download takes place through a browser. To overcome this, we add a header corresponding to a request coming from a browser (such as Firefox) in our code:

+
+
import urllib.request
+import zipfile
+
+# Set URL+filename
+url = 'https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_airports.zip'
+filename = 'output/ne_10m_airports.zip'
+
+# Download
+opener = urllib.request.build_opener()
+opener.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0')]
+urllib.request.install_opener(opener)
+urllib.request.urlretrieve(url, filename)
+
+# Extract
+f = zipfile.ZipFile(filename, 'r')
+f.extractall('output')
+f.close()
+
+

The Shapefile that has been created in the output directory can then be imported and plotted (Figure 7.1) as follows:

+
+
ne = gpd.read_file(filename.replace('.zip', '.shp'))
+ne.plot();
+
+
+
+

+
Figure 7.1: World airports layer, downloaded using Python from the Natural Earth Data website
+
+
+
+
+
+
+

7.4 Geographic data packages

+

Many Python packages have been developed for accessing geographic data, some of which are presented in Table 7.1. These provide interfaces to one or more spatial libraries or geoportals and aim to make data access even quicker from the command line.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7.1: Selected Python packages for geographic data retrieval
PackageDescription
cartopyDownload layers from Natural Earth Data
...
...
...
+
+

Each data package has its own syntax for accessing data. This diversity is demonstrated in the subsequent code chunks, which show how to get data using three packages from Table 7.1. Country borders are often useful and these can be accessed with the cartopy.io.shapereader.natural_earth function from the cartopy package, as follows.

+
+
import cartopy
+filename = cartopy.io.shapereader.natural_earth(
+    resolution='10m',
+    category='cultural',
+    name='admin_2_counties'
+)
+counties = gpd.read_file(filename)
+counties
+
+
/usr/local/lib/python3.11/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/10m_cultural/ne_10m_admin_2_counties.zip
+  warnings.warn(f'Downloading: {url}', DownloadWarning)
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FEATURECLASCALERANKADM2_CODE...NAME_ZHNAME_ZHTgeometry
0Admin-2 scale rank0USA-53073...霍特科姆县霍特科姆縣MULTIPOLYGON (((-122.75302 48.9...
1Admin-2 scale rank0USA-53047...奥卡诺根县奧卡諾根縣POLYGON ((-120.85196 48.99251, ...
2Admin-2 scale rank0USA-53019...费里县費里縣POLYGON ((-118.83688 48.99251, ...
........................
3221Admin-2 scale rank0USA-72149...維拉爾巴維拉爾巴POLYGON ((-66.44407 18.17665, -...
3222Admin-2 scale rank0USA-72121...大薩瓦納大薩瓦納POLYGON ((-66.88464 18.02481, -...
3223Admin-2 scale rank0USA-72093...馬里考馬里考POLYGON ((-66.89856 18.18790, -...
+ +

3224 rows × 62 columns

+
+
+
+

The layer of counties is plotted in Figure 7.2:

+
+
counties.plot();
+
+
+
+

+
Figure 7.2: US counties, downloaded from the Natural Earth Data website using package cartopy
+
+
+
+
+

Other layers can be accessed the same way:

+
    +
  • you need to locate the resolution, category, and name of the requested dataset, then
  • +
  • run the cartopy.io.shapereader.natural_earth, which downloads the file(s) and returns the path, and
  • +
  • read the file into the Python environment, e.g., using gpd.read_file
  • +
+

This is an alternative approach to “directly” downloading files (Section 7.3).

+
+
+

7.5 Geographic web services

+

To complete…

+
+
+

7.6 File formats

+

Geographic datasets are usually stored as files or in spatial databases. File formats can either store vector or raster data, while spatial databases such as PostGIS can store both. The large variety of file formats may seem bewildering, but there has been much consolidation and standardization since the beginnings of GIS software in the 1960s when the first widely distributed program (SYMAP) for spatial analysis was created at Harvard University [@coppock_history_1991].

+

GDAL (which should be pronounced “goo-dal”, with the double “o” making a reference to object-orientation), the Geospatial Data Abstraction Library, has resolved many issues associated with incompatibility between geographic file formats since its release in 2000. GDAL provides a unified and high-performance interface for reading and writing of many raster and vector data formats. Many open and proprietary GIS programs, including GRASS, ArcGIS and QGIS, use GDAL behind their GUIs for doing the legwork of ingesting and spitting out geographic data in appropriate formats.

+

GDAL provides access to more than 200 vector and raster data formats. Table 7.2 presents some basic information about selected and often used spatial file formats.

+
+ + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7.2: Commonly used spatial data file formats
NameExtensionInfoTypeModel
ESRI Shapefile.shp (the main file)Popular format consisting of at least three files. No support for: files > 2GB;mixed types; names > 10 chars; cols > 255.VectorPartially open
GeoJSON.geojsonExtends the JSON exchange format by including a subset of the simple feature representation; mostly used for storing coordinates in longitude and latitude; it is extended by the TopoJSON formatVectorOpen
KML.kmlXML-based format for spatial visualization, developed for use with Google Earth. Zipped KML file forms the KMZ format.VectorOpen
GPX.gpxXML schema created for exchange of GPS data.VectorOpen
FlatGeobuf.fgbSingle file format allowing for quick reading and writing of vector data. Has streaming capabilities.VectorOpen
GeoTIFF.tif/.tiffPopular raster format. A TIFF file containing additional spatial metadata.RasterOpen
Arc ASCII.ascText format where the first six lines represent the raster header, followed by the raster cell values arranged in rows and columns.RasterOpen
SQLite/SpatiaLite.sqliteStandalone relational database, SpatiaLite is the spatial extension of SQLite.Vector and rasterOpen
ESRI FileGDB.gdbSpatial and nonspatial objects created by ArcGIS. Allows: multiple feature classes; topology. Limited support from GDAL.Vector and rasterProprietary
GeoPackage.gpkgLightweight database container based on SQLite allowing an easy and platform-independent exchange of geodataVector and (very limited) rasterOpen
+
+

An important development ensuring the standardization and open-sourcing of file formats was the founding of the Open Geospatial Consortium (OGC) in 1994. Beyond defining the simple features data model (see Section 1.2.4), the OGC also coordinates the development of open standards, for example as used in file formats such as KML and GeoPackage. Open file formats of the kind endorsed by the OGC have several advantages over proprietary formats: the standards are published, ensure transparency and open up the possibility for users to further develop and adjust the file formats to their specific needs.

+

ESRI Shapefile is the most popular vector data exchange format; however, it is not an open format (though its specification is open). It was developed in the early 1990s and has a number of limitations. First of all, it is a multi-file format, which consists of at least three files. It only supports 255 columns, column names are restricted to ten characters and the file size limit is 2 GB. Furthermore, ESRI Shapefile does not support all possible geometry types, for example, it is unable to distinguish between a polygon and a multipolygon. Despite these limitations, a viable alternative had been missing for a long time. In the meantime, GeoPackage emerged, and seems to be a more than suitable replacement candidate for ESRI Shapefile. GeoPackage is a format for exchanging geospatial information and an OGC standard. The GeoPackage standard describes the rules on how to store geospatial information in a tiny SQLite container. Hence, GeoPackage is a lightweight spatial database container, which allows the storage of vector and raster data but also of non-spatial data and extensions. Aside from GeoPackage, there are other geospatial data exchange formats worth checking out (Table 7.2).

+

The GeoTIFF format seems to be the most prominent raster data format. It allows spatial information, such as the CRS definition and the transformation matrix (see Section 1.3.2), to be embedded within a TIFF file. Similar to ESRI Shapefile, this format was firstly developed in the 1990s, but as an open format. Additionally, GeoTIFF is still being expanded and improved. One of the most significant recent addition to the GeoTIFF format is its variant called COG (Cloud Optimized GeoTIFF). Raster objects saved as COGs can be hosted on HTTP servers, so other people can read only parts of the file without downloading the whole file (see Sections 8.6.2 and 8.7.2…).

+

There is also a plethora of other spatial data formats that we do not explain in detail or mention in Table 7.2 due to the book limits. If you need to use other formats, we encourage you to read the GDAL documentation about vector and raster drivers. Additionally, some spatial data formats can store other data models (types) than vector or raster. It includes LAS and LAZ formats for storing lidar point clouds, and NetCDF and HDF for storing multidimensional arrays.

+

Finally, spatial data is also often stored using tabular (non-spatial) text formats, including CSV files or Excel spreadsheets. This can be convenient to share spatial datasets with people who, or software that, struggle with spatial data formats.

+
+
+

7.7 Data input (I)

+

Executing commands such as geopandas.read_file (the main function we use for loading vector data) or rasterio.open+.read (the main functions used for loading raster data) silently sets off a chain of events that reads data from files. Moreover, there are many Python packages containing a wide range of geographic data or providing simple access to different data sources. All of them load the data into the Python environment or, more precisely, assign objects to your workspace, stored in RAM and accessible within the Python session.

+
+

7.7.1 Vector data

+

Spatial vector data comes in a wide variety of file formats. Most popular representations such as .shp, .geojson, and .gpkg files can be imported and exported with geopandas functions read_file and to_file (covered in Section @ref(sec-data-output)), respectively.

+

geopandas uses GDAL to read and write data, via fiona (the default) or pyogrio packages (a recently developed alternative to fiona). After fiona is imported, the command fiona.supported_drivers can be used to list drivers available to GDAL, including whether they can (r), append (a), or write (w) data, or all three:

+
+
fiona.supported_drivers
+
+
{'DXF': 'rw',
+ 'CSV': 'raw',
+ 'OpenFileGDB': 'raw',
+ 'ESRIJSON': 'r',
+ 'ESRI Shapefile': 'raw',
+ 'FlatGeobuf': 'raw',
+ 'GeoJSON': 'raw',
+ 'GeoJSONSeq': 'raw',
+ 'GPKG': 'raw',
+ 'GML': 'rw',
+ 'OGR_GMT': 'rw',
+ 'GPX': 'rw',
+ 'MapInfo File': 'raw',
+ 'DGN': 'raw',
+ 'S57': 'r',
+ 'SQLite': 'raw',
+ 'TopoJSON': 'r'}
+
+
+

Other, less common, drivers can be “activated” by manually supplementing fiona.supported_drivers. The first argument of the geopandas versatile data import function gpd.read_file is filename, which is typically a string, but can also be a file connection. The content of a string could vary between different drivers. In most cases, as with the ESRI Shapefile (.shp) or the GeoPackage format (.gpkg), the filename argument would be a path or a URL to an actual file, such as geodata.gpkg. The driver is automatically selected based on the file extension, as demonstrated for a .gpkg file below:

+
+
world = gpd.read_file('data/world.gpkg')
+world
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
iso_a2name_longcontinent...lifeExpgdpPercapgeometry
0FJFijiOceania...69.9600008222.253784MULTIPOLYGON (((-180.00000 -16....
1TZTanzaniaAfrica...64.1630002402.099404MULTIPOLYGON (((33.90371 -0.950...
2EHWestern SaharaAfrica...NaNNaNMULTIPOLYGON (((-8.66559 27.656...
........................
174XKKosovoEurope...71.0975618698.291559MULTIPOLYGON (((20.59025 41.855...
175TTTrinidad and TobagoNorth America...70.42600031181.821196MULTIPOLYGON (((-61.68000 10.76...
176SSSouth SudanAfrica...55.8170001935.879400MULTIPOLYGON (((30.83385 3.5091...
+ +

177 rows × 11 columns

+
+
+
+

For some drivers, such as a File Geodatabase (OpenFileGDB), filename could be provided as a folder name. GeoJSON string can also be read from a character string:

+
+
gpd.read_file('{"type":"Point","coordinates":[34.838848,31.296301]}')
+
+
+ + + + + + + + + + + + + + + +
geometry
0POINT (34.83885 31.29630)
+ +
+
+
+

Alternatively, the gpd.read_postgis function can be used to read a vector layer from a PostGIS database.

+

Some vector formats, such as GeoPackage, can store multiple data layers. By default, gpd.read_file automatically reads the first layer of the file specified in filename. However, using the layer argument you can specify any other layer.

+

The gpd.read_file function also allows for reading just parts of the file into RAM with two possible mechanisms. The first one is related to the where argument, which allows specifying what part of the data to read using an SQL WHERE expression. An example below extracts data for Tanzania only (Figure …). It is done by specifying that we want to get all rows for which name_long equals to "Tanzania":

+
+
tanzania = gpd.read_file('data/world.gpkg', where='name_long="Tanzania"')
+tanzania
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
iso_a2name_longcontinent...lifeExpgdpPercapgeometry
0TZTanzaniaAfrica...64.1632402.099404MULTIPOLYGON (((33.90371 -0.950...
+ +

1 rows × 11 columns

+
+
+
+

If you do not know the names of the available columns, a good approach is to just read one row of the data using the rows argument, which can be used to read the first N rows, then use the .columns property to examine the column names:

+
+
gpd.read_file('data/world.gpkg', rows=1).columns
+
+
Index(['iso_a2', 'name_long', 'continent', 'region_un', 'subregion', 'type',
+       'area_km2', 'pop', 'lifeExp', 'gdpPercap', 'geometry'],
+      dtype='object')
+
+
+

The second mechanism uses the mask argument to filter data based on intersection with an existing geometry. This argument expects a geometry (GeoDataFrame, GeoSeries, or shapely) representing the area where we want to extract the data. Let’s try it using a small example—we want to read polygons from our file that intersect with the buffer of 50,000 \(m\) of Tanzania’s borders. To do it, we need to (a) transform the geometry to a projected CRS (such as EPSG:32736), (b) prepare our “filter” by creating the buffer (Section 4.3.3), and (c) transform back to the original CRS to be used as a mask:

+
+
tanzania_buf = tanzania.to_crs(32736).buffer(50000).to_crs(4326)
+tanzania_buf.iloc[0]
+
+

+
+
+

Now, we can apply this “filter” using the mask argument.

+
+
tanzania_neigh = gpd.read_file('data/world.gpkg', mask=tanzania_buf)
+tanzania_neigh
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
iso_a2name_longcontinent...lifeExpgdpPercapgeometry
0MZMozambiqueAfrica...57.0991079.823866MULTIPOLYGON (((34.55999 -11.52...
1ZMZambiaAfrica...60.7753632.503753MULTIPOLYGON (((30.74001 -8.340...
2MWMalawiAfrica...61.9321090.367208MULTIPOLYGON (((32.75938 -9.230...
........................
6BIBurundiAfrica...56.688803.172837MULTIPOLYGON (((30.46967 -2.413...
7UGUgandaAfrica...59.2241637.275081MULTIPOLYGON (((33.90371 -0.950...
8RWRwandaAfrica...66.1881629.868866MULTIPOLYGON (((30.41910 -1.134...
+ +

9 rows × 11 columns

+
+
+
+

Our result, shown in Figure 7.3, contains Tanzania and every country within its 50,000 \(m\) buffer. Note that the last two expressions are used to add text labels with the name_long of each country, placed at the country centroid:

+
+
fig, axes = plt.subplots(ncols=2, figsize=(9,5))
+tanzania.plot(ax=axes[0], color='lightgrey', edgecolor='grey')
+tanzania_neigh.plot(ax=axes[1], color='lightgrey', edgecolor='grey')
+tanzania_buf.plot(ax=axes[1], color='none', edgecolor='red')
+axes[0].set_title('where')
+axes[1].set_title('mask')
+tanzania.apply(lambda x: axes[0].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1)
+tanzania_neigh.apply(lambda x: axes[1].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1);
+
+
+
+

+
Figure 7.3: Reading a subset of the vector data using a where query (left) and a mask (right)
+
+
+
+
+

Often we need to read CSV files (or other tabular formats) which have x and y coordinate columns, and turn them into a GeoDataFrame with point geometries. To do that, we can import the file using pandas (e.g., pd.read_csv or pd.read_excel), then go from DataFrame to GeoDataFrame using the gpd.points_from_xy function, as shown earlier in the book (See Section 1.2.6 and Section 3.3.4). For example, the table cycle_hire_xy.csv, where the coordinates are stored in the X and Y columns in EPSG:4326, can be imported, converted to a GeoDataFrame, and plotted, as follows:

+
+
cycle_hire = pd.read_csv('data/cycle_hire_xy.csv')
+geom = gpd.points_from_xy(cycle_hire['X'], cycle_hire['Y'], crs=4326)
+geom = gpd.GeoSeries(geom)
+cycle_hire_xy = gpd.GeoDataFrame(data=cycle_hire, geometry=geom)
+cycle_hire_xy.plot();
+
+

+
+
+

Instead of columns describing ‘XY’ coordinates, a single column can also contain the geometry information. Well-known text (WKT), well-known binary (WKB), and the GeoJSON formats are examples of this. For instance, the world_wkt.csv file has a column named WKT representing polygons of the world’s countries. To import and convert it to a GeoDataFrame, we can apply the shapely.wkt.loads function (Section 1.2.5) on WKT strings, to convert them into shapely geometries:

+
+
world_wkt = pd.read_csv('data/world_wkt.csv')
+world_wkt['geometry'] = world_wkt['WKT'].apply(shapely.wkt.loads)
+world_wkt = gpd.GeoDataFrame(world_wkt)
+world_wkt.plot();
+
+

+
+
+
+
+
+ +
+
+Note +
+
+
+

Not all of the supported vector file formats store information about their coordinate reference system. In these situations, it is possible to add the missing information using the .set_crs function. Please refer also to Section 6.4 for more information.

+
+
+

As a final example, we will show how geopandas also reads KML files. A KML file stores geographic information in XML format—a data format for the creation of web pages and the transfer of data in an application-independent way (Nolan and Lang 2014 …). Here, we access a KML file from the web. First, we need to “activate” the KML driver, which isn’t available by default (see above):

+
+
fiona.supported_drivers['KML'] = 'r'
+
+

This file contains more than one layer. To list the available layers, we can use the fiona.listlayers function:

+
+
u = 'https://developers.google.com/kml/documentation/KML_Samples.kml'
+fiona.listlayers(u)
+
+
['Placemarks',
+ 'Highlighted Icon',
+ 'Paths',
+ 'Google Campus',
+ 'Extruded Polygon',
+ 'Absolute and Relative']
+
+
+

Finally, we can choose the first layer Placemarks and read it, using gpd.read_file with an additional layer argument:

+
+
placemarks = gpd.read_file(u, layer='Placemarks')
+
+
+
+

7.7.2 Raster data

+

Similar to vector data, raster data comes in many file formats with some of them supporting multilayer files. rasterio.open is used to create a file connection to a raster file, which can be subsequently used to read the metadata and/or the values, as shown previously (Section 1.3.2). For example:

+
+
src = rasterio.open('data/srtm.tif')
+src
+
+
<open DatasetReader name='data/srtm.tif' mode='r'>
+
+
+

All of the previous examples read spatial information from files stored on your hard drive. However, GDAL also allows reading data directly from online resources, such as HTTP/HTTPS/FTP web resources. The only thing we need to do is to add a /vsicurl/ prefix before the path to the file. Let’s try it by connecting to the global monthly snow probability at 500 m resolution for the period 2000-2012 (T. Hengl 2021 add reference…). Snow probability for December is stored as a Cloud Optimized GeoTIFF (COG) file (see Section 7.6). To read an online file, we just need to provide its URL together with the /vsicurl/ prefix:

+
+
url = "/vsicurl/https://zenodo.org/record/5774954/files/clm_snow.prob_esacci.dec_p.90_500m_s0..0cm_2000..2012_v2.0.tif"
+src = rasterio.open(url)
+src
+
+
<open DatasetReader name='/vsicurl/https://zenodo.org/record/5774954/files/clm_snow.prob_esacci.dec_p.90_500m_s0..0cm_2000..2012_v2.0.tif' mode='r'>
+
+
+

In the example above rasterio.open creates a connection to the file without obtaining any values, as we did for the local srtm.tif file. The values can read, into an ndarray, using the .read method of the file connection (Section 1.3.2). This allows us also to just read a small portion of the data without downloading the entire file. This is very useful when working with large datasets hosted online from resource-constrained computing environments such as laptops.

+

Another option is to extract raster values at particular points, directly from the file connection, using the .sample method (see Section 3.4.1). For example, we can get the snow probability for December in Reykjavik (70%) by specifying its coordinates and applying .sample:

+
+
values = src.sample([(-21.94, 64.15)])
+list(values)
+
+
[array([70], dtype=uint8)]
+
+
+

The example above efficiently extracts and downloads a single value instead of the entire GeoTIFF file, saving valuable resources. The /vsicurl/ prefix also works for vector file formats, enabling you to import datasets from online storage with geopandas just by adding it before the vector file URL.

+

Importantly, /vsicurl/ is not the only prefix provided by GDAL—many more exist, such as /vsizip/ to read spatial files from ZIP archives without decompressing them beforehand or /vsis3/ for on-the-fly reading files available in AWS S3 buckets. You can learn more about it at https://gdal.org/user/virtual_file_systems.html.

+

(To add example of reading rectangular extent…)

+
+
+
+

7.8 Data output (O)

+

Writing geographic data allows you to convert from one format to another and to save newly created objects for permanent storage. Depending on the data type (vector or raster), object class (e.g., GeoDataFrame), and type and amount of stored information (e.g., object size, range of values), it is important to know how to store spatial files in the most efficient way. The next two sections will demonstrate how to do this.

+
+

7.8.1 Vector data

+

The counterpart of gpd.read_file is the .to_file method that a GeoDataFrame has. It allows you to write GeoDataFrame objects to a wide range of geographic vector file formats, including the most common, such as .geojson, .shp and .gpkg. Based on the file name, .to_file decides automatically which driver to use. The speed of the writing process depends also on the driver.

+
+
world.to_file('output/world.gpkg')
+
+

Note: if you try to write to the same data source again, the function will overwrite the file:

+
+
world.to_file('output/world.gpkg')
+
+

Instead of overwriting the file, we could add a new layer to the file with mode='a' (“append” mode, as opposed to the default mode='w' for “write” mode). Appending is supported by several spatial formats, including GeoPackage. For example:

+
+
world.to_file('output/world_many_features.gpkg')
+world.to_file('output/world_many_features.gpkg', mode='a')
+
+

Here, world_many_features.gpkg will contain a polygonal layer named world with two “copies” of each country (that is 177×2=354 features, whereas the world layer has 177 features).

+

Alternatively, you can create another, separate, layer, within the same file. The GeoPackage format also supports multiple layers within one file. For example:

+
+
world.to_file('output/world_many_layers.gpkg')
+world.to_file('output/world_many_layers.gpkg', layer='world2')
+
+

In this case, world_many_layers.gpkg has two “layers”, world_many_layers (same as the file name, when layer is unspecified) and world2. Incidentally, the contents of the two layers is identical, but this doesn’t have to be so. Each layer from such a file can be imported separately, as in:

+
+
gpd.read_file('output/world_many_layers.gpkg', layer='world_many_layers').head(1)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
iso_a2name_longcontinent...lifeExpgdpPercapgeometry
0FJFijiOceania...69.968222.253784MULTIPOLYGON (((-180.00000 -16....
+ +

1 rows × 11 columns

+
+
+
+
+
gpd.read_file('output/world_many_layers.gpkg', layer='world2').head(1)
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
iso_a2name_longcontinent...lifeExpgdpPercapgeometry
0FJFijiOceania...69.968222.253784MULTIPOLYGON (((-180.00000 -16....
+ +

1 rows × 11 columns

+
+
+
+
+
+

7.8.2 Raster data

+

To write a raster file using rasterio, we need to pass a raster file path to rasterio.open, in writing ('w') mode. This implies creating a new empty file (or overwriting an existing one). As opposed to read ('r', the default) mode, the rasterio.open function needs quite a lot of information, in addition to the file path and mode:

+
    +
  • An array with the raster values
  • +
  • Metadata describing the raster format and spatial properties
  • +
+

The metadata needs to specify the following properties:

+
    +
  • driver—The file format (The recommendation is 'GTiff' for GeoTIFF)
  • +
  • height—Number of rows
  • +
  • width—Number of columns
  • +
  • count—Number of bands
  • +
  • nodata—The value which represents “No Data”, if any
  • +
  • dtype—The raster data type, one of numpy types (e.g., np.int64)
  • +
  • crs—The CRS, using an EPSG code (e.g., 4326)
  • +
  • transform—The transform matrix
  • +
  • compress—A compression method to apply, such as 'lzw'. This is optional and most useful for large rasters. Note that, at the time of writing, this doesn’t work well for writing multiband rasters.
  • +
+

Once the file connection with the right metadata is ready, we do the actual writing using the .write method of the file connection. If there are several bands we may execute the .write method several times, as in .write(a,n), where a is the array with band values and n is the band index (starting from 1, see below). When done, we close the file connection using the .close method. Some functions, such as rasterio.warp.reproject used for resampling and reprojecting, directly accept a file connection in 'w' mode, thus handling the writing (of a resampled or reprojected raster) for us.

+

Most of the properties are either straightforward to choose, based on our aims, (e.g., driver, crs, compress, nodata), or directly derived from the array with the raster values itself (e.g., height, width, count, dtype). The most complicated property is the transform, which specifies the raster origin and resolution. The transform is typically either obtained from an existing raster (serving as a “template”), or created from scratch based on manually specified origin and resolution values (e.g., using rasterio.transform.from_origin), or calculate automatically (e.g., using rasterio.warp.calculate_default_transform).

+

Earlier in the book, we have already demonstrated the four most common scenarios of writing rasters:

+
    +
  • Creating from scratch (Section 1.3.3)—We created and wrote two rasters from scratch by associating the elev and grain arrays with an arbitrary spatial extent. The custom arbitrary transform created using rasterio.transform.from_origin.
  • +
  • Aggregating (Section 4.4.3)—We wrote an aggregated a raster, by reading a resampled array from an exising raster, then updating the transform using .transform.scale.
  • +
  • Resampling (Section 4.4.4)—We resampled a raster into a custom grid, manually creating the transform using rasterio.transform.from_origin, then resampling and writing the output using rasterio.warp.reproject.
  • +
  • Reprojecting (Section 6.9)—We reprojected a raster into another CRS, by automatically calculating an optimal transform using rasterio.warp.calculate_default_transform, then resampling and writing the output using rasterio.warp.reproject.
  • +
+

A miminal example of writing a raster file named r.tif from scratch (i.e., the 1st scenario), to remind some of these concepts, is given below:

+
+
# An array with raster values
+r = np.array([1,2,3,4]).reshape(2,2).astype(np.int8)
+r
+
+
array([[1, 2],
+       [3, 4]], dtype=int8)
+
+
+
+
# Calculating the transform
+new_transform = rasterio.transform.from_origin(
+    west=-0.5, 
+    north=51.5, 
+    xsize=2, 
+    ysize=2
+)
+new_transform
+
+
Affine(2.0, 0.0, -0.5,
+       0.0, -2.0, 51.5)
+
+
+
+
# Creating the file connection with the metadata
+dst = rasterio.open(
+    'output/r.tif', 'w', 
+    driver = 'GTiff',
+    height = r.shape[0],
+    width = r.shape[1],
+    count = 1,
+    dtype = r.dtype,
+    crs = 4326,
+    transform = new_transform
+)
+dst
+
+
<open DatasetWriter name='output/r.tif' mode='w'>
+
+
+
+
# Writing the array values into the file
+dst.write(r, 1)
+
+
+
# Closing the file
+dst.close()
+
+

This code section creates a new file output/r.tif, which is a \(2 \times 2\) raster, having a 2 decimal degree resolution, with the top-left corner placed over London.

+

To summarize, the various scenarios differ in two aspects:

+
    +
  • The way that the transform for the output raster is obtained: +
      +
    • Imported from an existing raster (see below)
    • +
    • Created from scratch, using rasterio.transform.from_origin (Section 1.3.3)
    • +
    • Calculate automatically, using rasterio.warp.calculate_default_transform (Section 6.9)
    • +
  • +
  • The way that the raster is written: +
  • +
+

To make the picture of raster export complete, there are three important concepts we haven’t covered yet: array and raster data types, writing multiband rasters, and handling “No Data” values.

+

Arrays (i.e., ndarray objects defined in package numpy) are used to store raster values when reading them from file, using .read (Section 1.3.2). All values in an array are of the same type, whereas the numpy package supports numerous numeric data types of various precision (and, accordingly, memory footprint). Raster formats, such as GeoTIFF, support exactly the same data types, which means that reading a raster file uses as little RAM as possible. The most relevant types are summarized in Table 7.3.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 7.3: Numeric numpy data which are commonly used for rasters
Data typeDescription
int8Integer in a single byte (-128 to 127)
int16Integer in 16 bits (-32768 to 32767)
int32Integer in 32 bits (-2147483648 to 2147483647)
uint8Unsigned integer (0 to 255)
uint16Unsigned integer (0 to 65535)
uint32Unsigned integer (0 to 4294967295)
float16Half-precision (16 bit) float (-65504 to 65504)
float32Single-precision (32 bit) float (1e-38 to 1e38)
float64Double-precision (64 bit) float (1e-308 to 1e308)
+
+

The raster data type can be specified when writing a raster (see above). For an existing raster file, the data type is accessible through the .dtype property of the metadata:

+
+
rasterio.open('output/r.tif').meta['dtype']
+
+
'int8'
+
+
+

The file r.tif has the data type np.int8, which we specified when creating it according to the data type of the original array:

+
+
r.dtype
+
+
dtype('int8')
+
+
+

When reading the data back into the Python session, the array with the same data type is recreated:

+
+
rasterio.open('output/r.tif').read().dtype
+
+
dtype('int8')
+
+
+

Writing multiband rasters is similar to writing single-band rasters, only that we need to:

+
    +
  • Define the number of layers (the count property in the metadata) that are going to be in the file we are creating
  • +
  • Execute the .write method multiple times, once for each layer
  • +
+

For completeness, let’s demonstrate writing a multi-band raster named r3.tif, which is similar to r.tif, but having three bands with values r, r*2, and r*3 (i.e., the array r multiplied by 1, 2, or 3). Since most of the metadata is going to be the same, this is also a good opportunity to (re-)demonstrate updating an existing metadata object rather than creating one from scratch.

+

First, let’s make a copy of the metadata we already have in r.tif:

+
+
dst_kwds = rasterio.open('output/r.tif').meta.copy()
+dst_kwds
+
+
{'driver': 'GTiff',
+ 'dtype': 'int8',
+ 'nodata': None,
+ 'width': 2,
+ 'height': 2,
+ 'count': 1,
+ 'crs': CRS.from_epsg(4326),
+ 'transform': Affine(2.0, 0.0, -0.5,
+        0.0, -2.0, 51.5)}
+
+
+

Second, we update the count entry, replacing 1 (single-band) with 3 (three-band):

+
+
dst_kwds.update(count=3)
+dst_kwds
+
+
{'driver': 'GTiff',
+ 'dtype': 'int8',
+ 'nodata': None,
+ 'width': 2,
+ 'height': 2,
+ 'count': 3,
+ 'crs': CRS.from_epsg(4326),
+ 'transform': Affine(2.0, 0.0, -0.5,
+        0.0, -2.0, 51.5)}
+
+
+

Finally, we can create a file connection using the updated metadata and then write the values of the three bands:

+
+
dst = rasterio.open('output/r3.tif', 'w', **dst_kwds)
+dst.write(r,   1)
+dst.write(r*2, 2)
+dst.write(r*3, 3)
+dst.close()
+
+

As a result, a three-band raster named r3.tif is created.

+

Rasters often contain “No Data” values, representing missing data, e.g., unreliable measurement due to clouds or pixels outside of the photographed extent. In a numpy ndarray object, “No Data” values may be represented by the special np.nan value. However, due to computer memory limitations, only arrays of type float can contain np.nan, while arrays of type int cannot. For int rasters containing “No Data”, we typically mark missing data with a specific value beyond the valid range (e.g., -9999). The missing data “flag” is stored in the file (set through the nodata property of the file connection, see above). When reading an int raster with “No Data” back into Python, we need to be aware of these flags. Let’s demonstrate through examples.

+

We will start with the simpler case, rasters of type float. Since float arrays may contain the “native” value np.nan, representing “No Data” is straightforward. For example, suppose that we have a float array with np.nan:

+
+
r = np.array([1.1,2.1,np.nan,4.1]).reshape(2,2)
+r
+
+
array([[1.1, 2.1],
+       [nan, 4.1]])
+
+
+
+
r.dtype
+
+
dtype('float64')
+
+
+

When writing the array to file, we do not need to specify any particular nodata value:

+
+
dst = rasterio.open(
+    'output/r_nodata_float.tif', 'w', 
+    driver = 'GTiff',
+    height = r.shape[0],
+    width = r.shape[1],
+    count = 1,
+    dtype = r.dtype,
+    crs = 4326,
+    transform = new_transform
+)
+dst.write(r, 1)
+dst.close()
+
+

This is equivalent to nodata=None:

+
+
rasterio.open('output/r_nodata_float.tif').meta
+
+
{'driver': 'GTiff',
+ 'dtype': 'float64',
+ 'nodata': None,
+ 'width': 2,
+ 'height': 2,
+ 'count': 1,
+ 'crs': CRS.from_epsg(4326),
+ 'transform': Affine(2.0, 0.0, -0.5,
+        0.0, -2.0, 51.5)}
+
+
+

Reading from the raster back into the Python session reproduces the same exact array, with np.nan:

+
+
rasterio.open('output/r_nodata_float.tif').read()
+
+
array([[[1.1, 2.1],
+        [nan, 4.1]]])
+
+
+

Now, suppose that we have an np.int32 array with missing data, which is inevitably flagged using a specific int value such as -9999 (remember that we can’t store np.nan in an int array!):

+
+
r = np.array([1,2,-9999,4]).reshape(2,2).astype(np.int32)
+r
+
+
array([[    1,     2],
+       [-9999,     4]], dtype=int32)
+
+
+
+
r.dtype
+
+
dtype('int32')
+
+
+

When writing the array to file, we must specify nodata=-9999 to keep track of our “No Data” flag:

+
+
dst = rasterio.open(
+    'output/r_nodata_int.tif', 'w', 
+    driver = 'GTiff',
+    height = r.shape[0],
+    width = r.shape[1],
+    count = 1,
+    dtype = r.dtype,
+    nodata = -9999,
+    crs = 4326,
+    transform = new_transform
+)
+dst.write(r, 1)
+dst.close()
+
+

Examining the metadata confirms that the nodata=-9999 setting was stored in the file r_nodata_int.tif.

+
+
rasterio.open('output/r_nodata_int.tif').meta
+
+
{'driver': 'GTiff',
+ 'dtype': 'int32',
+ 'nodata': -9999.0,
+ 'width': 2,
+ 'height': 2,
+ 'count': 1,
+ 'crs': CRS.from_epsg(4326),
+ 'transform': Affine(2.0, 0.0, -0.5,
+        0.0, -2.0, 51.5)}
+
+
+

If you try to open the file in GIS software, such as QGIS, you will see the missing data interpreted (e.g., the pixel shown as blank), meaning that the software is aware of the flag. However, reading the data back into Python reproduces an int array with -9999, for the same reason stated before:

+
+
src = rasterio.open('output/r_nodata_int.tif')
+r = src.read()
+r
+
+
array([[[    1,     2],
+        [-9999,     4]]], dtype=int32)
+
+
+

The Python user must thefore be mindful of “No Data” int rasters, for example to avoid interpreting the value -9999 literally. For example, if we “forget” about the nodata flag, the literal calculation of the .mean would incorrectly include the value -9999:

+
+
r.mean()
+
+
-2498.0
+
+
+

There are two basic ways to deal with the situation:

+
    +
  • Converting the raster to float
  • +
  • Using “No Data” masks
  • +
+

First, particularly with small rasters where memory constraints are irrelevant, it may be more convenient to go from int to float, to gain the ability of the natural np.nan representation. Here is how we can do this with r_nodata_int.tif. We detect the missing data flag, conver the raster to float, and assign np.nan into the cells that are supposed to be missing:

+
+
mask = r == src.nodata
+r = r.astype(np.float64)
+r[mask] = np.nan
+r
+
+
array([[[ 1.,  2.],
+        [nan,  4.]]])
+
+
+

From there on, we deal with np.nan the usual way, such as using np.nanmean to calculate the mean excluding “No Data”:

+
+
np.nanmean(r)
+
+
2.3333333333333335
+
+
+

The second approach is to read the values into a so-called “masked” array, using the argument masked=True. A masked array can be thought of as an extended ndarray, with two components: .data (the values) and .mask (a corresponding boolean array marking “No Data” values):

+
+
r = src.read(masked=True)
+r
+
+
masked_array(
+  data=[[[1, 2],
+         [--, 4]]],
+  mask=[[[False, False],
+         [ True, False]]],
+  fill_value=-9999,
+  dtype=int32)
+
+
+

Using masked arrays is beyond the scope of this book. However, the basic idea is that many numpy operations “honor” the mask, so that the user does not have to keep track of the way that “No Data” values are marked, similarly to the natural np.nan representation. For example, the .mean of a masked array ignores the value -9999, because it is masked, taking into account just the valid values 1, 2, and 4:

+
+
r.mean()
+
+
2.3333333333333335
+
+
+

Keep in mind that, somewhat confusingly, float rasters may represent “No Data” using a specific value (such as -9999.0), instead, or in addition to (!), the native np.nan representation. In such cases, the same considerations shown for int apply to float rasters as well.

+
+
+
+

7.9 Visual outputs

+

Visual outputs can be exported to a file using the plt.savefig function. For example, the following code section recreates Figure 7.3 (see above), but this time the last expression saves the image to a JPG image named plot_geopandas.jpg:

+
+
fig, axes = plt.subplots(ncols=2, figsize=(9,5))
+tanzania.plot(ax=axes[0], color='lightgrey', edgecolor='grey')
+tanzania_neigh.plot(ax=axes[1], color='lightgrey', edgecolor='grey')
+tanzania_buf.plot(ax=axes[1], color='none', edgecolor='red')
+axes[0].set_title('where')
+axes[1].set_title('mask')
+tanzania.apply(lambda x: axes[0].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1)
+tanzania_neigh.apply(lambda x: axes[1].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1);
+plt.savefig('output/plot_geopandas.jpg')
+
+

Figures with rasters can be exported exactly the same way. For example, the following code section (see next chapter…) creates an image of a raster and a vector layer, which is then exported to a file named plot_rasterio.jpg:

+
+
fig, ax = plt.subplots(figsize=(5, 5))
+rasterio.plot.show(nz_elev, ax=ax)
+nz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='r');
+plt.savefig('output/plot_rasterio.jpg')
+
+

Image file properties can be controlled through the plt.subplots and plt.savefig parameters. For example, the following code section exports the same raster plot to a file named plot_rasterio2.svg, which has different dimensions (width = 5 \(in\), height = 7 \(in\)), a different format (SVG), and different resolution (300 \(DPI\):)

+
+
fig, ax = plt.subplots(figsize=(5, 7))
+rasterio.plot.show(nz_elev, ax=ax)
+nz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='r');
+plt.savefig('output/plot_rasterio2.svg', dpi=300)
+
+
+
+

7.10 Exercises

+ + +
+
+
+
    +
  1. For example, visit https://freegisdata.rtwilson.com/ for a list of websites with freely available geographic datasets.↩︎

  2. +
+
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/08-read-write-plot_files/figure-html/cell-14-output-1.svg b/08-read-write-plot_files/figure-html/cell-14-output-1.svg new file mode 100644 index 00000000..2956e51a --- /dev/null +++ b/08-read-write-plot_files/figure-html/cell-14-output-1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/08-read-write-plot_files/figure-html/cell-17-output-1.png b/08-read-write-plot_files/figure-html/cell-17-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4dcfd2ed01b4322f0d9c9e99b09e651710b671db GIT binary patch literal 58773 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
r(2+JXKzr#Gpj<=rU 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 z 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 literal 0 HcmV?d00001 diff --git a/08-read-write-plot_files/figure-html/fig-ne-airports-output-1.png b/08-read-write-plot_files/figure-html/fig-ne-airports-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..85e5375cef191b530a088fb19d6f712a65fa6ab6 GIT binary patch literal 33624 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 literal 0 HcmV?d00001 diff --git a/08-read-write-plot_files/figure-html/fig-ne-counties-output-1.png b/08-read-write-plot_files/figure-html/fig-ne-counties-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a44cc9624478097334000c55cb5c92407bfdb52 GIT binary patch literal 25490 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 literal 0 HcmV?d00001 diff --git a/08-read-write-plot_files/figure-html/fig-read-shp-query-output-1.png b/08-read-write-plot_files/figure-html/fig-read-shp-query-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4ca8742a99e6e76fea8ced79004f7328a46661cf GIT binary patch literal 131511 zcmd43bySwyyEgjTiHJdmf?^;bNJ*N20wM+=-H3EI*rJq(3W|V%igY85ASEJ#(xrq* zch|Y5tM+&PIpd6R#`!+SaR2sNOL^btnRDLvRrkDm_KXbGddBq>3We&F?1^&}%BmO& zWyQ9&tMPBn(&@0_e-7K7RJA*AX=LZ9Yhy@J(6zHNv$Qia(c9r*Xk%+)X>o{0h=>2c zj>~p-R<@$NyypM@0Uk>mW8S^L>GkkK)>+A3vZYX1?vUTh{JTaBDa$C7QzwpIaC+9? z;^?G2v9L7K9h$Re-KncLH}2@C+On4E`t{{kYLsKME=JcVXPKp@wKXbx)}*QK-%p#` zzS3}C;k8ej#MZ4_w&mFBoi`37mAEf0dL33M)!}q3?z7g+5ScpME!pk9XII9UX!zJ- z@Bv!yRW$$o;z~|*SjPU}ujlz{C;t5qkm_ZgFh$Ei))E;2)W& z(^k)7rlGm<|M{06Uu$Aw5-iUt&$;#6Tg5fc)6yPyl?NTN{UyJA#R_W&2Tp$e2jTOb zdkhQ=1jM8@G?=NyhbcGKP#4$KY-eL*Gpcx66m>D0$7!*n#DC1+bN)t=H{BttA4i&- zn-kL0ODZeq#SJK?r8*Jhl5b=muj3|(X6J6Ty`E7oi>_*ro4 zz@?;{uVnnS#z)l7UAk2E@}##cs45-O(N+*Vk4gIhiApmqBRN|^I6hQ;x>QdMdXM~4fklkIw{Y11VZ z#=p(?D0*h<_)bnvW>2?!i_iXk6+3wT+_?hsQ-ZWToIiBT%+5Xt4{tMDz&cc@Tjs3F zuZ>mrrQ{{Pe90b{x9E~)*|sS^;#6RLg6;}QNl7~Kc(2l~q~!nhFiY&4H@8D9GVg|p zIc{NQ{(ODahTq@bQXf8iI7Th?9$q*3y!n~2Qwj=QT|wHvmKKMWtZZ!b7UyR+vPm*0 zH+;qiHl&#|QI-~`^6uWd*FM=~Y3Y!goh|-ca%H%H$(G}{H-0E7S;NG{l$4ZIpJ~r^ z>eQ+4-@gxk3t!yk=;%0@J2yycnm0F?<(tr0RTU5%On-Y5%e}X6_iW$3-N4Am=12ar zO)R2z4dLN2F$aECgvcB_wwyB7UD;hoE%mXes4K~TAG-~oK*2u;(dA|_M+}qr;&g}j z()^f+hzNZj-gwF9Cx;r+E!imPtu9>A%CUOCzrKjk%zC`IFeiMt*tSxlWXNMmjIx@F z@w*>dVd+tLb=eAv?3pv1e0+%w zl2a{?Y{Jb}$D?%x^Uc#+io=)YjVbrMy=Q*hpnf`FJN)CQ{>&b!nN#@hM|5;_LSj#< zB^g(;zL9^Tce5sMzKi!#qTa27D>OX^|1CoiGP8wji(h-w$^!Rv3=Eiy=i;e*umQa1 z8tdz=TI}l>{F&~23hJF}TgpwGA4qQ#YSL0sF+LC!6r?@rtTx(U9L|R$`6W!kyUd{d zb&yv3Om}!*RQG0@jLn*?TmLF(0jzrt9=!jv@J@P$;^oVGZ{4~@`5Y>iUg6HvXh(T= z*!E3@ySKOZVYlgn@7}$8Cg$iD6%|E0C3ohGMViG&FPh>}Io_O)*w4Wdt_~sHS@f29 z3qs^&q^73UH#H^e72TtCwf6Q(5&pLwXm}+Fyq%#)29^EVHYc6K<_D z6B2I9)hk-hDIc7VHFZ$JvKSf~diSBqEZH=fr!)8~J`?#+{aSA31GUEyRaN?hxvB25 zJ>i|--<_wk4^xz!S?OK0JU`xZ!Sq%QyWYirSM5Zj(z$b6q!vf~eRs??n#LP;eR{Nu zlk=Ras_ey!+tItci>meN-6e6*T3v@E+B-UC$Y#PDMCB7s3m3J&N2l!;aBan!(IL;J zx$7nB*-nXx^CeP?0sc~p)BIYm@nA3hZE_JTIisJraC#}j(;fa}Sn`n@Z1Yz?+*s4m z)phH}jT?!U*485@*&I=C=4UEBjk>>tZlj|cLvI*EePtMsi;9k(DO2<)=nnU6{blVj z`z?I5T8?+w+4JWMW7AtdkvctLc+X2?`~P^vs=<~l-!AO&Zu7yA`}eIbbz3<&7&WGt zh)*@!J`=HiSr*yzS}sUyct&cjp>i5ue%TRobM7`&q#4vx-e_8y0IvV}5Zh^K8Ou=) z%?DitrG=WBn#Q8F7d|;Xd-lvtsnWGSvBYVnE9lzn*V#2v)60f(rdqexaj@I$`>zkD zaA<35>pNo?#SR8NeE88cKF6V^a;U%Gt!hqkw3Oq3X6ClQvJ;w`ERL&Z zdZkGJ3jt)so{HK>CC-;}_}>o+X)+71uUGx`B~%W(BBaD+ai)8w%HQK-YmTdW%iG9E zueSML!rWm?dgAlLh1pmE>B|c^toKRD4YJ!v6HsnwJh1#9IFXqw!|Hq!tJ(JO(IXl* zHbo~V5fn6zpFe+IP*F)Xt>Zztx>uz4^NDfTPt+Uz=#r?&$RAjvZv1|0*_JE+OeA30 ziq$_*?5wT%_U+r}Hrw;|VNlSD32s@B5pQh`n+me!5)%`D;$`z0B|pg;%4I??&~$9E zZwOyQ6X5+nU-zmtYsRW%*sROB)6c4@oi;Jqhhysy=#G9)7R+g~!MJH-3=1=}PuJ(q z^8AMmskb=($iL<`UL`Z$^Q}9n*W<^vH3_MyUDwvI=9>xGVny_XLNdC;TzUGO*xBih z|Bu(2HQ8u-*WbUph)&y}{4saL+qe40#xgoOJF2Rxnq7x-Wu%cI-r#utZtF9%GGs_D{2m>r>MC2Hrf<5o)hI< z28%n@=DD<;Mdd_<;Qy`fqYgZ^Q~GB?PMi?^{|%-^gdBPz53DphHDoz(?w@ba81e5B z#=rW1^=%w#d5-+~F`cJtYHJ?^1T4FH=gt}-A;u66JY{w3XQM;AckiZ*_tjC0WpVk3 zYzJ6X{b1=a#&Wv{Tx8;RDd&Vp-E>17zZ~%v#8eO~ZWS(ELaph<+lVyU*H_iuvfn}AI zB}GNIe*DlO5bp-HWNH4j6;0x|%M6z9*tP3sN{RrgbhJvm5sD(SsGV1TzZu#IfgosW zmZQy2pE4@PX_U=Q^flypN;x|_itfU%O#L zvI7Gt@Dj>buIzvD;)RMEGwCwQ2lb0LawN27+M9Y`vq#kxa~u?44L@vqJ0fD&YHHSI zv$k0EbjEV?RVf!QUTk)3bC1!;NGhA1pLY|oZ2b(3G1D2S=+qtR$m4Wz{E>>*&$_(D zRO{WTNA2wePo6vpj59J?&O4UXw%|ufnmKFqQ6(js^cDxE5Mj&QAGu9w<{fcagYD>2 z6=|;{BJMwUPyi@cRB&s9Gk&U-t!-8$)zs8bZr-}Z=Q?SIRl3t)#<_3b zUHiUTB`vKl=+XdJKl|eIid$QAEAWI7eWSy}2Opn5e|}_iG)ar^&tjcWQVOsRQtz13 zS1B+^R6U^5CCkoka|%$Xz>h`j>TFZ++~h!$!CZ2sWI5a7@S6UC0iYggFpg%sZwdgx zQDq(|a9TMoN~)?}{{Gb1CknF;LMhFc6Rdt7Yjqo|F!C(T8?TlVANjbIg0~eA8tNMu zcs@B(C0?tdLbz??_ccXm0i91x<4n@p05~tDT&8*Q9L;K3FR4GpKRM=I~}pF&vn?Addt$s)@)K5vons&Sa}ZL&kTSrgofn#fH0DP_kq(sytF#edzTgs`rZGfFKKYT~Zj8=KY z_+U#27Og5?TZ;1dz@=j*COxZ6H~-CW`;+KN=qu)ypzPnjzdqU6KT*3d*SIol zHxEx-SuS1Erj@-i3}PZ8DVaICodWrQ8zJUxU^G}Hia6RW5MH`-E}wq!LDSj;&n3;I z90xT*=9YR@@(LOnGHM3!qq-KR+ScsYzyIDzZ`xF6ao{0Vx8bADC2uZ)uQWAl|9w7U zv6`+oB?621yHx4^&%ZZvHEKL(G#W<(8!c<*d{nzIw-;5MM3k4qA z+S-PgTZ;FJa&o?@&=;f^yt3`Al;|9)k@=vQ=i&{*b4FUs_x#&40Z*S^F*9BJf`x?zWU2t%RJZW9V8iN(ox^G7O_brWF?}$X z*syqPuJ@UlX_o@Q8WNk&&G{7Gp=K)o_C}%5fM0XCV`(98$yj_3FK>K}t*evMW_tR1 zBX{3Q0yr06erXd~Y1ubV&If+!xf84v6PYSmOZ8$L(9q{DHPa-{r{%lo=oP(tgv@?- zH#==}kW+hlWW>!k+)^kc#9YdCvVWC-6%KWha=NpN3&7Wav&Y|0l_)7@O1Fc(Iey$2sURvrWhhb1>T7krR_ek9qiw-nl-}ueT$ZxySr}}Q~+%o9XG*BDT`*2 zFt^dNO%i#3>ntg}sViw{64}?RS;H}2@#V{}-&L=q*ADdde!}PYy65EN_^w--4$`Nf zKqcnTPuT%dgA$hNngiKE=rPk&;Nad`$^U-ZpFZK>!Pa*>-{sT8eV{7o?}t!!8WQ#I zR0U>mG+v{CpO&b40NRLlKJ%@3Dp>wIIR|ZS{e}%<*{lD4SQDu~D-~m1KM!(XHT>g) zQ6G~)%EDeQt`5Qtyh|=Cded^h1cW={etEH0-BNShmYcSGd$<(7V2EWd!&TevFC$~& zOWDUOdH-5{_JO~)yf2#+tFW*zC3m`gLvL^I)yJ;qWMpLYja8%;^3kJwCs?+tiiwJj zwtMq3`jf>B^IUY^&&8$g{slDm538W|oGy$$S4hYxS~tZBdp@JXPpq_}!rXqTxmjaz zBHokFW&C%v%|9E(M2f(qkDvPc`$^Xg5i;km#b)9+`W$RDmzkAy$e~|#vcEw;rmrrZ z4fvJi99KSfdUFB!L~v$Bp!_`i)S0HX#p3>kWCjtd9bdkDdHC?5)oAA_yx)?$TlY|c zr92le9`-zOVkMi~@G^pgp)8;WKd6aTIfULV?aO!zas!~Zfw3{+&YM`py&BA*9!*3& z`=>B8`a{+VIHQBssIa{6-TAkArlw8px!B8QTT~st|L!d&D$eRn%%%GN64DkHJTo&h z*EURHe_sn5 zS!dB}W5>H6H(nEHokDY!i>@5lOPc-$Iv!G7&04dcfF%Zohbx{uxe9^=5E!WysDc}5 z52%9n|F|fz6shz|#P0XzaQ8_D)7lta&@ntCB%SNY$%mFLTegu^Jb2&vH-z2unbjvm zyZrMFGG^szD~|2{vqdyDbai)vEm5{@+x7#>K-WD|EHm>aov7cOqWeEf#SBf|@K0l* z37B-8pSDJU0(5(&o#z2`XBxDt+UGxgGQfgINa!&ZVfirnG*MiBe7M0N?sRbH&Yku3 zku*2#Hm#2lQ^hW0U|^s)IXV5la}5Cy?g7=gi9(I8t$fab#*a| zJKaakY47a(`26S%0+)fLla(8)Z|wU^V+x2K1hnB070s*};Njt6QT4?GRE|TxNwV)# z?ic|sShs1@YMt+qN?70fj~<;=R;I-draLQ=tn%0F*Npv* zvL+Nr4XIvs@7_J1tY*eMw!q1b{(hg3kdV}Js6Gb(cOl?`G8}br5d}$ba&ZCV|JGU9 z)Rd*!B!B4uEpT;ddAWY+{hcCWV(Cp85w1XJKvcryHw6n;?9bL_@G%7nb6p)BIQMO8 zwle^~mo8m`*h~M@URU=;5?7BES*4D!8Z9j?0)i45Q7;3+WNh*BN@q~aL|n%A_Vo0C z3gln|__MxFN!b=T zwBWh4FlEZRI%9`-Q2_vQ5$ejdSsfQZB(T%BHQo4{**Q5Qlas{_4Ns2W*<^n8NF)O~(YzF2~`+Pw=vhN5>W1Qz(^mZtyxsPE!(!CN}S*c`+K*W2m?z82^O3^(WwU}pX@lK1t21a(g8J_XesZrvb4wf z9EMt3cEzMY8*1D&Jv)o#x)B@8P3wK@)2Gwu-ut+@U&qA6l-Zb@n|n_PrYOH>269=s zYE=OC4X6(k0Rq=Ae|=sq`NmEge@`Jqh=z%2!}mKift(8LJ9gxMdURKV@o#m`rbYtj z?HNR<>gsdM%*=ROIw$@`Vd_PafUVa7WqhZ_WtJ%oLUOXY~ya z4^Nfrb%5Sj9;cZl;x=s+_}mGK4EU0Dg<#!5AcYNn?|Js`=XaTJY-r%K@4b+noqh0$ ze8r^T6M5`6?A7Le(<_Opkx@}sXbn^@TsW(uQrBKG!!5&zL;CftBHQeE&kaC+&cM6* z`9~c3>zCz&bvO@ySR=UShJbFO>U4i{Wj$2ovuw&TCr?&oIa+e5aN6|zEfkerbnGmp z(a*@teERX@i7i{VUP?1#;LV+8_XlX*&GxONr2ER_y*4#C2vE2`LWtA#iE4oyfx2!y zKRvRMQD7~ACYMTsy`cP&_qN?t6yb(oI0EZ$9u*=!raB4Z#hcS1eyne^7@~;?MT><;&}k z`+~uL?mP`TdUbZlccQP3v_guRxjDh1ZEbC2;aLA!xQq4m^#_f=Fk55|2o?J>$+YFV zTie_3hT8!eaFZy^sE@km9Q8TS<3au}LnKtMp1nYx-9Bk()6-65mT z^u>NGuBW)UTtt%_t{prY-~iHh*=OUvy?fvH zN2il^Xfra-8e>Z;%K10)Kk*Hwr>B87%H%R%FC61OT2N3xarb?#e^FVP)K{D_(-bFc zx{dS)De$7soj+d&I5f%(Sjx`9!64-!j$Xr^7Jh#=>kx29Df&l9>H><15!@$IUmEsy zU`4U;hppRJqI%HT$C-S4V}JK*d`ikg@UsVvjcO3mAS(!e`0$~YM=s{0nNTtmYMk9` zvk3%l;vj2PS)=O{C_o{^aUB&^PW8FhOs4)*4UD>fS&uC2u+hkWB#a8JfUFczZZyZo zwjYx-)=MPp*BF`_R7Hlqh532VoQKwYZxq8NiBSLj`vp=tu`7*|8!iWSba$7$x9*@n zY}2`Fj(chw%KyjW;v~-{4`9X+vke`4L9H*0<$K;AL_B%vs*O^!m~;hI?vkX8K~%!F#2>gzXe*-`*=hUeX*djM7X z#XdVhh9NcKmyhH(DmDiP2ThBcu2xnDVXC18o!8L#3^8M-bt<>6OY4qCF6xH+-4B-9yf(-1RTE2|yi;?IVMhq)Nt2Y>#wJ~ePB^SaV2X{EDgj{wg=G$leE z(9Wf-13eU2FmBU7?=VYwFh?#)J`uIw4{b+ffO*rVO~s>+xz&k|ff|u>rGzeH^WSx( zS{EjZ{(6XH*bF;JjUqwQ7M6#+6Ua!KJ>{3_&_Qvsg97&`ro9Jp z3~q1N^J6}|{QH!zgO%0umoHzIdE~fE=;0`>T)jFfr|9G`D#!HjPc%U#yc5_dPSDPI zM5^;79zA+wjdlbwj3@qWG&V7$7DE;vKV?gHL4SUSdnu97)<;;>U96m;g31D&xr1)Z6FJ zuOiHW2H#|$_X($jBL=+-HSrF-iOWgvfiY>0f@v9ldA5_6*S{h}I9cbz^-ZxKU=g%` zT!)r=!p0`4isx;1_OmC4j2$j>w*ZlD2gMGn5^e)l!*jO(`c-SuZD(hS zQ9al#={k8}4K-`$@Xx}Bj~@#)<-+Yje|{T2p#qe1?-7^E9|hmrdjpnx;Qmm^?J{P^ z!RAvQ9+Hrnr7y>BkgpDtr&XA0cmd_X*RmH2Ffl;P+a8JwbuAwd)LtGQ3tKicW;j5e z!}%+yHEL}8Ob-kgl7`%x!xWi!h=__Tjlba41U`Lw8em#bP_TIR{{77m5@e1XIdZ3_ z`T@ye3}y{2-@I)bF?3_p6crzZgp}hwWlu~L zAxwZyitvVyHwP9J)!zn4h2x0%=koFm5cc$&uvV(?t$x-x2S}U+Pa4V|^RrIB6&=lm zhb}5AdVRbvGB(x_fV#7*i@{!C{AHdhsFD0rfwEqyIdB1Y#b3EhC{c>hIG2RszOFZMq1jziRxTsTN_cq1D-vT$5*z@o#Dg>aH9U+ zzki>$sT9NnA67`x9o{?NDu!F6g`;+Xl>gYh`wSReT2}TVCdLO(pfPH_ zWy=<_<$-gmZbnse`X&tOFwUU6u~!oeH21AeH7*VNL(6qQ5Y7Mv*vaPY+7^@zfboOS zKZ-@6TEBetYTdeZADWt&jE%cDnb19eJ0Uidy#m{Sg0f~YWqZ00HHlPzG%khOrp89( zP~_o(L+@F+a;4R;&kVKk+Lkw8oMn>_XOm9fy<^8!Jmc2Qo4+1#`~2w>KhGpMhc%oI ztq)v%&hQdjo9M>eNAng1jQ1&}$*H;78H3Y~Dqrf>~Qz7kA$BJuE8PJ}}@5 zngIF1`fOm-F!Aj@sD?fSD=B^^byGpmi1@bMY=Vc2)0En?kr`DB=#A@@!up;t#2S zC+t`jpR9JBkX8IjNroW8sGAxdu6;*d$8jHuHxLAQ>-r^r*q+S>Df%d*sJeVw$Mvzv zrNi|sEiGN91{JVqt*xy=0{g|dxhvL2L-2@A$P6TLA+Q-VSd^5qva+4R!a+DjjLYmh zyqR-cr;GsZ6gY>WDqOaHc_O*Nt?I+eG6OwyF*o>56gRlxSm1rZ*;h%^#d37$-GE*P zLsvvpR4pTkOP~J{TL78mjfQF`3k}|7IS#$S_D137 zH*ZWi!}l&u@Nb!fhGyoBjSc^rP0W~NcSQZ#J39ug?1?2E)^u>_&F6I(HukpM6C%3 z36Vp?!aD=C^Mcu>Wp~iwUE3Of9Maa1Zz5d+ARQ<&<5|!*4rWQWU@9gddXD?cI2E3L z?<(vqhATv*(mje{yLfo~&=ujAJ5SW8z^&x0)38{#Ub%DTFAP3>@v!>+Eb*RNk+yMBG|*Rf4Z zLO!rd^g)ovzbU?pi!*{)BEk7En;!4M4R(L=l$JiU0yNTB9o|=Dz^~E4^i%B7h5#c; zDhH}WlGV=w3-=OfEiG2yT|8}ES>=!0lEXm#yLRn5tEyUx=##?-?>jAz{*m+ohPKht zE}wW6lr_uU3u!Gj%@GIc!i5X>!^16oGR?)=vvga+BwRtr@WM;zufP1{%Vi{~E2r3rP;X?W*46{gA2S)Yr_TP3nW*E2wS92Cyll68_QEWtdYC zcOPyn^eE&8K{Xl-p!zWpL@OdvPp?TeA@PgA3bbzu@IP@LAqw+c!Ty&zT;-0!l~6(2(Wp z^{=Cm(BkKOd}CIOf)y(P(#)!mZS+<`jtF??u+#AK#5lY}A2zAnQ+=T@xC0+OTJ@EK z=Q+wDd|zojy_X}&#UDOgL*5W-Qp@W_f8a7Ac!DbwK^+V+8ygwX1qB6cO`Uyu#ncq> z!SIm@;V1I2YTkaEoL1Ipq5AEcB3q}Tq9Oy07<=2?BPC6-kmzsi5JHJUrTxH5HvQj+ z#O_QoDBD88dV(28JmTsVC#?yf4P=wZ>sUAR8Bs$g_D~g2>A9&P;p-w-QM&l_~{V8os=CMW`z?Bjru_-3syzbq*V#9QwbQ8Pm z;$?TEqocQT^|(Px0<5p|x{|>TQHF$!9zNXG-rkNQ`mv-WFf_CR-cEJwnlb!SGWI3N z=`zwh5GshxHG&%j^Q90V#ix5}poxyaiRcDKI8DKl?wNdzjri_>{aVgl+sTgbqTvv2 zxdk%&g&eO<%py8&?k_wH?7+jZO|v@_puWQMIN03MLed|!-mlAU`FR^Asy0d_SWv@% ziO|GW!RqjcoyZLi_(a8~IdD7RHdh?662V;#XuQ9F^(uu+g_tDOwu0juS6NwGCu;3v zZwW3lz`t7#kP66l9P%#lf{^}1&|&GpkQpBLnS?7Xgl7kq*XD_;AXyw79EJ2Bzl(^N zt4c0uUmYK}18Or6pPc%m1Jd=&v25FR0^b}Z1Z@-;xwtvQHojJ_Hw7vKsa@#KXwpg= z8U#FolI%oIV$}v(SQ@ZFe2tO%F^?j_+Jn9I#pg;e7MP3gybiG3B|;wz)dl|XCa>F4K%EP{1^Js-e0 z1)oX*_W$MDHWyY!H|2))0ZBlkq16{KK?Oqd!8iEP-~Sn;k{;12=sH;uc_RdpJM_~- z>D|N4JrK1p&=0!^#t&~stRMIaI+7v40tHM8(7RdRL%IR#uHEmmXz2A>j=bmqub>da zE)7K15n=FH2bs^1TL`D=Eu4UWq@G%1eERe~8f8~!=fulZFVECTcIlZ^7j1e|rW3OV zg=)I1#;NnB1_KhY4IDnahD&}MABa6I(%UH^5lVs!9MuY(TfsUEkg8Cb_!Q$MtN8k# z&X7G)%mlxr{rB%uq|;+G{bc^MnH>Q8J>q^g3o#tRehu=9Uqvy&WP((=ci%n} z2Mt9<#oJU&#V7@88@>B_d$BnVN-K4Db)~9?L-D{uAexeOsxP28v2lh*y-**D8WuY4 z_nAi22(rJPFJ5oNcI25;)x3zn-(Q-=XVq?~+W0O!Q4=Q-(gL1S>GJ!91=aFgut&*A zNKDkNjk%;8x-AJffkbw^i>|{*nQC?Ag%HAGGf2GC{LC9YzIG-1_wGG-toN};52EUj zBehYG@%KOIB?` zmgNLkcoK|y*yiTVn=6x&lS9nY)6@6t-RtGCF#EH+`)&S3(NG9gD5l>#70v_UdfmPI z0)n-2j6Bj})vgJHirV@a=g_%HT6y*Jzp}4YpSIr}m&f5kfDd%l#~vi57^4X&%le^U z{(y9a-@YXm>34Q_2g2PnGWvD0GSuEyOix@ zeW&&t>(Gbqg=(3%Knfu%Kwg&()YhRw5ni``JqdnbM>j=D+&aM%fq$5unIW2A$K!a^ z@yEQ{U+{CD2%0K;TYmaeh(`qnwasHaBH7PLU2%a63#k>mM9$tmm8MwG%#!|MOCv=f zu|JE!bMycdL6AdMY_H+b zQD|r@u)V}3Bz&obh0{5IT3)#lMWc)y3O|w|(SF%dF5{6S3s~wB9LLO}mWK5)ugifO zIKYjtCC-G2H^itsgbPH@`an}qetv#*^()zkSD=nanb6|{?s|J4vJkxI@4p8<6N5l} zhMyjC=6w6>{cNYBV=9-h|M*hYxEk&r$(aINgsi+DBzm<3dEn>Icc4f{zI#WiKL8y4 zQG1m+59$pY4lM^}b>mXecgKq(Jf}<)qd_<8(0~udV0cGkU4wyK4)|wPvy67fh5}j{R9{bC-60LnC4As))32#zC0^~NS0Z&{Q}wz zjp>!<4K+`f-SnFGhcbv)RV*$A)hFX+mcqcm0J_S~UAsE3JgWZ*retMj7Xc*^!jfsw zw|#IJ^%rBuh<>4yPeJHd5gZ6U2lhUWb(PtUUEkLiB%FZb;G?mcQGlAVLH3YM^e-B?z#yO9C76~!(6>P?&q5AF2Cv{sPb~psUS2yO!r_aaJ9myCJ>-B9UiQXl30j-J zyu%JaLv}hvj+m38Z;P*`s=3#iu8mn%{p}kAzkwGB!7P3VfTW52rWJrE-~ecH2>Pkn zTclt^qn>U!5-#Z;Ean(jbH#)=G(9l8bQLr}!Vfw|P-=NxerX59eFn1$;E*AO9$e3N z0%-=rp6b^mGz9q1rM#Db)(JReBtIwI-3I|Tz1HMZp@|Lc{K(-Bo=JC>k~~yQpa6?+zn)R5`A~@Xh$a@hgn- z$rNP3W5JY_)>c-R`Hu#9sj773nFuIelz?v3(S706sk@J&1N_dZsWlq#q$8GxVG_ff z>x}^(8{~o<2U6=8+nxiY0RyO|?+DoRYiOtvS#o4uV)z&%v6o1S%B+DOw63oqgqLN`Iw!Q3tO)vH$w2X(GKioSwu z-Rp8&J3E7_mnVxm(ElS@u8)gAnt<4N2!T?V628#`1j?h0le})`MR^p72u#@&(d)+M zlMh=P10@AuSvl^_*yU#0U4ZrX9?8lO-xYm|0_e@}K5N%U`~Ax{Rk?KH90DsZL;27J z!)8?4FYy2y6LQOLPR`qCVGMo9G81tJDA+x4(T8lE<&eCKBL$6(jk#1f*nOW=7#$fn z@}*8Bp*Hka%ipH@5qHzCnCW}hlpfdH8h^&+A;ibcn>SOAKz!PB=2?QxN%q=~_IB{9 zt-*Zyx2>at0bh|;&7L1EH*3q)O!vKuee5Q)mFJ$F7S)Za%#M#XDkMW7?fnpgeH`^c zgRkMF1A8u?a8!nLTS0bcM%3h6oMI|)0*mYs>5d@PW5=#@vfXE`EGZ#2{UP0gl~AuJ zk#TXq%6an)upiO6PdIXrv+G~?b<;}topwU&W7Lh%O0mhW&Q>ZFuGQ#~ymIAAeU59o zHJ=^`6~eyi8Bu;1Fv;AGoVihD7}fVSp>0e|(a}ED9VkesfhC|v3=nHaq~q~DFGedT zV)_cwU5v(Se3;jSz~E98SuiD?mP{-!Q#pW5y4KD=Q4DZnnM;=#D5wv_5%_e`9x?yw z0r}vA*C0}nDLXV>oYXBn%;>rd;LgZzE40?bIZkk!v5{Py*4N*%hHUw;mkn%oqZZMlNC!g1tJntGhcH zUNZ%d=FhRhBNsFJ(?cprD!yiKWb|e`S3vY@n9?|a6zDDrM~+-Y(R0GtYho0&+sh&C zLwOFr4rkyJ&ia{B1AZEM`chO;0wW+L9a$JKz;kw_)@gm~WFenv?mkjPSG;N#2?D@M zQ=}6k_*T`@{eo56d>DHXifh~>t_RWY-Y#mL)8TGu#9#G>a!Wx;$!y$Py`Drd*x7*$ zVQm!r_O(aDB-XCv^p6$mF{b@z%aqmxK7K3>vPc2yM$)np5V3TIF@2>HbziMu*sHyK zd{r*Dyfk*>LDX%bSzxNOxB~~|oRSg@fD@v^h;vE%F_+;<)^6M=P|GIa@(?p?NzP+N z?$kJKvO&g)s`W{Rn4y4xBXNbFD{;C@B=Wexne@acxtGvO+WAFNuI~ZGGK|IlrcH(gKLB`SAo+eZ)O%#bzY7XtY{z} z4lyyNt1v-G_tgmSN;wh8qs5Gu)xkppBNCen|F-lIqWKa9aI1VcCrEZ7B0@ETJs|D_ zoT^L7MtneE`pWHSCqfp@r68f`74LZ{f1U**X(6I=tG@f|F-f|;Cp*73a(8KwDQcpi zU=4XwtMH~|FzjK7Hzl1s3l|ykX^h4r**e&pM9znDvzwoP3scCfHVdh`7`-A@_i6oc zJVd4sBt0h24ba|y4h~w7MF)r%EKZVEO|O6rNKH-s+~dBIiOD-GefjIhJMd|1AU+wR zfS@|w0G^174=mjcoxvEXkB=We3OsqZ7YM_!{4tS4;UdMTz95CE34E>|nXI#H9#pL2 z^;maVb;dQd@Txgr2LjP^DSvks+$eB`5dXgI95%O5+Wq-4*G-~8d-w0J?$2Nk`hYnl z2&`mO2*~#8Y;-Q9J>#+myGgmVWJicL;ynDghkV!Upb&udE62%3xXun(dX@vS^JaE^ zc`9h?vjBcz8e@4`ZY_oe%OT*Av2J2aA}iHY5&dm?%<3>=9==r>RPM8{O}{~9Va+$- zPXs~k2-3pt#d}naI~`#<3TYD%3pH&S!1wdql4gvPmtp>t@CpBguKhR=q2B;ceY=2g zxs-ueNCXE`D8qoni^Vf{L8{2c0=p*hH$W8Sn4~dOnOz86Ot*EPir~Uglkmf&7>2tJ zvJSOmrI(pYBRmB+38IAlU~|Sskh0%gDiLu$CbfIDc?`zktDJ)+` z(=$)}c0WHOY)_C&frekeNUx(r!!eV|n%hxNI054K0sWQdaiypL)i2&xzxvdo#FrNE@hhY9`%0&rGOAndY*g{1;o8%dSJ z1;nPzMQMiSnU7~;Kuk+oh#bp1CYKp>jE(C$3o^azs1T{|#!yT*8Vkwib%LVLj=Rxx@yWNBOcyRF-|*YsxS>*4XSLZehF=Fzz<;FJOsl*R9k2aD7#? zLz6k(Jagx-U!#~sO-4?SB;TNqLt`O1AW$|EIRrRADl5Adhj2yjn%|m(yZrRrB~o{L zEjR6{A|&L(g>A5mBG6|Lr99+3YH;f^yUI0mJ&ZwM0ZA$WNi(blI&hLjizv`xNa~;9 zxCu4bN@r&$Wg@*?I4ob`glIZimB&Q1cB1pxFU~$Ju4?L)?J|DMKM@Zy8>7cv6Gyxk zo>e|OT!gQxdMbDRTtMV3sVrlg&cILg&xHW#C6c_UqDuhirNo96-mL| zAEtp{jy`z^6AZNb=wAd3k8mGP>E!f2wR}sD(ElSdd3D#HoV=Du7BAVlRJ)#Y95I`y zsg02=fN^slhGsHUMxr3JEl#Ej`J*Yz;w3|~c@38ZG6Saf6pV~Gv8jwPyh4It#Nx#K z?CYA2811|;6by^Z9?smUoS`c4RiX=hdc;M>v*FVIBD2SdC9I~C&Ez4aRVBb%1~a-@ z37rM+g#kxHW;fv9o9Frs4_hJlMDPGC3T%pV7zTu+OO_?vbMY|7#HDc5BRrQDLC7hj zEF)l4{VVacZ8a%~pWx~;S!M^+X}S7hX^})5`1luF+Cob!{g*d?WP$BIHkUpbXABXl z2;PBrbE5N#$>lYA{7)czCD;hE+a!*Tj*_}{maVqcV{QP#BTQuh#JrtUhexYJKX&)Kb(*(0ml=31xJSbjcz@}vxQ&L@A5aSr`Z024*2 zg_No|eZ0ns<$Z`HCSZe7$YmajcrvCYFxBanA&)!wlSI@HiSI!0$THa;&O1o+9q36~ zE*StJrTY%e+PBud9Hs7Bm-EX5Xh?Pjj?%s zm=BNM`(g{DkYa@%!?{&7j2HF<+IM`BIZF8Q9a2)^kdXu$(vVW6Ami>lTDC{sZ4oo2 zvQS@n5=Y^QK0X^=tiiyS=1Uz3CZekC@oKl`R=YH;2fI$qOQJ z!2v_2K?l+tsb3KN;c>jsCZN>jB#5EW#?wk-n*-urVCV)KNFw6zB(R3b5PevUU@t;V zo^Y4ox4*B@4-(zD-5fvtJOk{jq#^rC-W`mpAkpW(H7qR=BpUF zNoibPg%m52xrr_ly+Yb0Am6GvE`oP9v9KfKH#%zb*~m7~9WEla`x_h?7#e&!`B#Pf z_l2q`vRrtVueK7r2ysnDM9!)M&?b>AAc_@^7{eit?(S}qmLfY;UVbC?eJ#&LY{|^X z;#a#@z|2*>>!sm?&?($ohz{GfZ(p_6PLSt9pSEvRqq&L6 zxx&>@reZBjpY4W-A<*D3J8nV&WN8$iy44uSgH3=tcC;^eHGExd0P}>dStTMFcyKu? zCSy75G10KUsj7g$LkJW2V2Z4Qf?-3FA&EDEaHfbnJw{3jH&vitLsJvd_GVpIPPnXw zov5Dy&8w{AF+!H~<#2aE=~mD$v&Bs%xUl4^x3^q$6B#?fl`9x*ARcTp&KK~)Lrmck z2^r%cF#8blr=&E5C8So>(4hu+d=TYLamN58vDy&096<581=$75j8G?F5M~sLaC6Su z@9CN;$;p^rZ%?{Ho5+a*Adqt%bnv4K$yOZHU5@+=$xog=dljD!c?o9LRy0__I*o6? zLM{?=Rm`~D6s~V7XdWOTzl=D%2jEob`wPH?PfuA;@ysBe)UpTHpB3r0!VbGBz zLC^q+=7$kSe0+>*;&s!wjN3A7?kShPx%A}X-k*puKEydN{f1M|57$cnf<1BvS##NJsu*c_3n0^H8vxsR1jk{6kp6!noQ7Bjaj7DBw>PIlJ7C9 zW0SjGD#VmZ&&5L|!$(2Z_D7A1c1>kdbmZGj-+QgE*<-IzASIHCO)di7ktoO6Ai4pj zn>OX=El%);x%BQceY~GVRssi&7rYGO6U1K={xJt>>DA>yyxrvUJkrR$U;?#JPQGf; zv$H_dBk}BI30G?NpLr%y)$TzCpV3=|)pVO(`eGGwRp6gkZq%6ZTpC(Rr5Ck?90;bJ zswM}ug;Jkk`<7-_C=D}fsH?VoynRXBYAI_Ysb4R(EzNmy4~}8>pWHUp%ZKFehI|AH zTJ*d!Y`RYC3pjTyG;R4uxohPf zxX_QGAw^^Wz3F(3u*H1n`IcV|(sH?rSHY!nfCVC}YG+iB~C}qk&}H_9y_? zVdv3Z@!6y6(I74dUgI0k1$`v$Erp<*Jz-AQQ4EPj1i#f2x7#>Dz4NuoiLE0Md;%j$ zvw|OstDJt_qSN|;-n&_>e$RnbMi-z_p21LIpsZg81AWd3E zOHIuqGWm~vN9M^Sm*#CfrVH5|&f4p7Q*j>!!x4NEBD<#>x3(bt2TOe?Oc2;aXgV{9 zr5%QOjJXg!NVl2$$(dKM$f+Yf{B{`Yp?YTErQ?)}aDXgtc zYe*xP%D@35AB#z-4``}SC8l27VQn8NVOw+A!H3D>{WUTx0hs#~-aQWUmMme^G;kQ`6UPylGOddqUx!{R-CJ2^bQIT^fL{bV&jsME`y&l*UDK1K7z?0+-B}_~uQ`Vp6&<4gb89fSR2GiK;FEdygXV$ii#p4CN_pz zH1hKfTav?o8onvs7yOr-(Bp}g8pg=$TPSirba z`%H-|1qixI+hb<;*|wxET$p1za_snx_}tlh2o-Loqm#j4FSG_COQTVNSf$bKDIk$r z>4!_?=Y#T-`2g~L5#Lz0nU(cRdy#hr<`+Y{M98&U_-Z(~*AXjEn|X>Ek7Dd2i2OgI z<8uqXecKvIeQ)cQErj^u4+5wu!2m>51anG|r))77;aIv98YX+qegkrkzJ?HOAT_YO z*1eh9`thC}H#i>v1b_?~2?I<(^aV-WLfma~(!gMs?XS5ONxNBsXrtnK?Y56-GZANT9?7ue*g0}lN!sa(6BIzXVI_q;ab@sHcWn}x%eTv ztDJ7$nw?QG`#e|0LA~U1WCz01lGwge>dm=imZ;5M4#FlW7v#6EJ*c7^&Uf)7A`Izr zV)uJ{uXs!*hmRoLzdXTdL=STj4a$|omBRG`ryK^G8~R0%8YZzjmx(J#Dm@ZX&jk9i zYIC3Z(^>kEi2>%_vvcP)GKr;-*5cIROMEV@6?h$h2{&t#USa|^1_d6T$<3OxQUTo< z&#i6m6Se7F3tFm+>*vT7QSi3X)Rwv~&(EFah$$j1LEjnRHE4dm*2rxYbg9f|4SeVV9LN2Wff&*5MBQS3?n@Eu=z|VWUNOV#9CjE zpTu0kbxNOcQv~!#a{mX!HlmkcOlunkCD)R>2D~|9mo1J4+k6)!vTE)tt`FSW&>&+A>zer=f@0Eu23DE3nFY9bSps1s)sBCem1 zDh-h+DK7`|So;fM444e^fF!tJ;8JqFdYt^60z)I2N*T!+a`(r1AoLDRJ67|7-PPL; zJB~!FjGu@wB}yzX24G(C`)W<3wD85qa4c+?p~Q4$h*jg;s0NN4Auj0+{2)3lPpp1^16HlH5B!rek%chzepmz+v*huDVuqj)7ms4VmB%D0v!H;q$}gb) z>dmZhP9E%*bNSphj&qJO!l-KmIIsgN?p#cs> z0*)w&iDGLBjGo483IS=Yc7~SrWxA;evp+SbhSk~!2fvUjKXJ~G1bms0a36675GW!C zfG82Hi~;Zzm6=dnlSiysr0#LsBW^uP)2t-7btR#E!}XBWz+JNtI{|D>M|dXC(;3Uj zop2{v+RTJ7=h@tT^}Li+o^p8I{htDEJYO6;e1*5Lu~p)8v8t9f^S3uzL1KceF6cUl z%rOy;5LV38S@2zROv@Zj-3S%IT7w<&m!*hRn^bS>wU!J2EXj8Vh?Q&w5*J#x98c>V@X=>mYo z9O88V3Mn#92Ld$*xZ3Od=u*Z;$ICl}*vJA8MBJWsMrqZo%*@`YOt0-1RaBU^u4u&gkvVf`HM#gP*6f9cos~=% zJ>Eg~aKVQ8eq*T)U}{|;L2=v~3;iqN6qkQ7M+>>X3$D0WMDAlKMEsVm;*v9+TT!?4 zSJqO!ipHFIFtSw1-G*>}^-DHUJjO!WtZ>O;iqrh##v2+`zMjSt-)U+kT&jz3-DTL) zT;9?OOen4*Hr7Dxb1l*M+cdSv?Z6r&UOvkQ1O6&Zi;vpJ>v@0w$ICcILPn(!Av7c!q(O+HftD6YX{eOa9*$&{P$4Z;(q3LIDnh9w zrJ;?MN?Ut1jSjfu@`0l~dU*HcR=ywvVs{1_myu zSi+U*-&i>S={2cXk85cBQ_;==TVT4P5QyGMq!fvMnnCZ}kI${mIJ^r2Bf~QjU?omQ z=I4V;Re*s)RW`*5$0YayD!6{Ihn>*Vvk;WfUAOBLBx*RRa*HYzudH3AMfL1=>Qqjn zH$_3K9KX&f$?N{QaoKg{7eQ_kn+bJS<=NxD85z5X)ka8WZHp3h*tTx0%lS3c)rY?7 z#2k$4#!;puKWD`M23ukpG6oG_*z9jIGru$+QuQCFX2v!Ezh3lJ%kaDOvUu3v9ANv7$xq50hDH0Lx*?Xt4QhI1a z)0ZVqcKqjtwGQ8yVTmB{fWnV)#y~RjwL0B$H~b)Kx9@Y;uE6l*%FXPK;J`~BoQMF0f`f;y=WtTi=Y+Kq@W!q@X*v8igo z^(T<{Di8MxlNJIJsChv+%jCCtvZw1atWk^8a;G)%h%6uwNK3JY;|yl=ukoRYTB*|cSm&rCT?pyO~2k;#&x9+CY}zGim!^Ajpr zU)SE>re~(xaOCje#}I^A^thv+>Te6Oy0q8m3@ffE`B5??KX!X3r>eRXx;65>KYR!r zk`?k-ig%WF9u_qx%OY=xO7q?*pv3QGB6-W*P^+OjVt!p(x&-<{2y*7)Nl`?y;YKTn zIFXOQuu-3BMj{Z1?F{rlyAk++C`odRM1?xtBpg)=3EgB)qi|IE6~8trTj#fvqoW8? z=x{p#XcRk{bb4Rx1U!uc?lU9qQold%M{m}TfX4v9Jc&xfnP>-*Th@lyN7Dz7a0bJN zP_X!6r!_8iE_0K4s5yR}f3J8TB9*#8RI7Nb0J98!XUL+HCN_{zT_|h+GN;;TVYw;_ zwBK=Y8<~jPG~km`G=Kw1{6ICr!>hcFCa;0K&=64;xHB)#oo-DM?Ea5Rm~sp zNqc~Q>oSwt{1DF?ZWkwzE`VG-`W?XCAv#Jc`Dua`z)vPv$8CTmYo&8$u7j{B96!Q! zU4F1KBrZi~;eD4EFcu|GXzDv&#d$dLHTD}XuaETbSHq7%623@MM8c#JESM;H2u?uY zW+2_QRojkbWez&Sn^RyWRb%QrvZY5Erv;S#J7wGxdpQQx!;46T5;f zIg}tf+zm|I-KSl^q81`B0EwIk%T9QLd*#&R4-QJ`&`40rN=4y@a99*@ml^U}r(XR} z?t!Bn+(q%a$ExoGpFg1@jZ1GXiY+R_sPxL5G}R&flY zqs^x(;ITFFYxiM2}e4rR#oZPEuTLsmltnW%7f-2t=O@)|JHD`ufUP za}+v&6=jHeW6`P|5d|X~mf!7(HxNC6EHkWCE9)?**U&ao{5aq>_0vL{dJvF_WJZOA ztO2D(x|a4oxsr!8yQX@tLg{#1O>Is^Q(^QC=0u`=3h?V(_l}kwTcL1@#-#zRP71(N zs5#)t8ycdX9ikMU81}odpZ-=%5J-_w72aYj4g7JWD4D-_u`yI8TtYBpRb8Gvj|mEr zAqp|Gx{ZLBen(xTh#uKr+?hAjOOTYVBK(4Z11l;ba()0#n*yY5lCE0ZD`h2 zw4r!RN-i$1ti?DwXGZ`~0LOUQ*VlKYz>2$}c~w>S!8SpCPzvr3DPFVJ!9+oGDj-F{ z*1me}+BG|tm28=iPN#TZT8Ey`qKBJ{tBAs@02Z^~YJDo-gaS1!E8alu5dsJ)Jbmw! zt{5UqNUV*lxQ7I_X_(`N+d&6z_{eDBQ;#Hm1&%K|&@5A5gfkdwkfUstyrO%bwT z&?IQYC?9az0V6&lmdt;re=07Xy$-lA0;zzNz_Opx_yJ}<^2Z8-{C$Ze{xrZf(Bj^F z`Ep{eZ{p>7HX@K&``qFNYzJ@>5wmwgqt?g$1C3pH|3MwsoH;-HEo>ordZ4MTT~ue4 z+t9-C6lPFdQxMLW*v!KO6A;emO8CHplFsYM5jfFX@n5#0y8ie`>=qu_@TdeIZ#hHk z#c7XmmP;0wgb3CHgR&hL=l#AGkQ@a(U zFaSkxtvJq?adMh;-#c)i_ADYnP?X|9Aq(Q}y?g({;Dqn|zxwZRou-2k#kh0D?hEkq z*Vd=^UxKaSmSm2TQ_)p5b@f%nW(&5Qp{N#8vYmRAKYIWqN5=KC6Nj|Si;i^+0Oa?P z)#u_HLz}bkKfn$^sHsgdm8IZZ{0UZfOcmxWuK|%ztn~?LQx}`Cc9{SX3ri-kXWq%@ zkXv!@hL%dRg3VC2gMrxs-g0P1I@r17*W(E8FpIcuyBnk?d}nNH*7!hXfFk=0D4PF- z0aNFf-`z$g8u`)Sd-uxQa#;P0@Pbs+<%-qA!J>|XZ`chfV851qf$qau=69cw*7;jk z7fZ#=X%t)O&`$6^DELoAh&vlU*yVBAR}xSWqTnoV@yWe@_?#H(aV9#JI%V+Ef$%*p zoaWWs-@M1KLPGPMB-fHO5UIZXBUvw$FEd^|i<))^Z{8r+ER%@JPa_U$jUs^l08;+D zzP^5~n2GuH7fNXjv2V=$W--jmTV)G(;%o?IifA>|pKHjnlTUJhbir23qI`;OW;^W2 zKY1DHy{kpectWd+RHouFr}2h!B=t0Ld9MLWz3n`Z5HJvW1EDEL3uowx-U_IIA+9DR z<5L`L9fCbsUE83NXCAFgbgPVuJce7YRBCV$Ayx2&=Ds!e?}_bixK9vJKUb69PKUnJ zN^VYfot$=Ujqi%)*#0X{&*MWS4gbj!0QHPf5__@1fhI%b0$TYiJghKkP!t>}6@*d> z=pB%}2I#3DiB|*fmaFu^Km|v=oEz-rUvk~uv8TrXmni{SXM$hssr;KF^#Ftq3!-!W zbEl9nEdSsJSleO#I^BA+cApZfxVrjRHH|Yd&tE@FSr!x%Gb7|aVqo@avO)ZdeQBzx z!(_un3x572{|7r`GB`cVmMl4+f4jB*g=uim?&Y_(#dmMJHr4SZ!>Z2f#PMa9 zu3kMYe#M8CU8io`-QxV~sfvZ!xi){92(ss;lEHCZlH| zAawOhRKI?1Xr~9$C#n89I9G-e6`Z`ia=QqjU_p@%O5z$2+dmFa8ypE&3(r19_9$f^ zA&eAaHXMDVohN+>WPa%NiF=KMfn`48kPV=}n*`~=hgec1t3cfiQC=IAQB)XHeHTbY zj*tmNp7FXqhf8TVPV+?KU)$HjJzoQ8^V-`=94zavAJMI^+?ISoWRK*TOE!5wT0B8q zaqZc&FgK{~&C3@n(x37&tp-In%8~oH<%`O0^fDFW6FSLecW+}8XR#t{6Y{1l!opFo zYk`19aw>26w!bP$l2(!D4)1~q#+8#fF1w-IJ`G@m>fCfywvK*qdJt46Us_eZA7sMp zAr1!=4dx^*xc{_wmWBuFBK_Zk=WpHY8=br;C1H_g*QPib26x)}I?U9_e8hdGI-S~45UU#Ayzw<|~tTR=l}?s5+yksWdQb$~%wSDvoEM&a(H<2+!1@A zT)jip{a>>fCxcj1L)Ju|c&56;ep}>nz6xJ{OOtB`$rb5?+k>7Yd>S2@v}?DrO3N+$ zox45D`cD0VT1)iOF%u)3C+u^>FZ7=omzfe(F7P#U?pf_RJ$lHc(LHP@SUjU@UBm9< zk+Yv~x_+3$e)`=lvZzO)OM~g=5t>BA{lOPS9xvz%?}G@WEOekG(WJ~T7YcarK%&Dh z0rsOciPq1n+MGXSNjlARo%-$6?86rx4X(}KhexH~uKL&xb9TGXP$AjeClZW!p|5pc z^q#)T4@=DtD=vDnUt#RqY$u^px0|{W4Nsi7GMH@WDbvTa=}Xi_l+e$6nwl1_JmTEd z;r^1IaCrZGbEQ{Xc%_kp!V6O-Kz3B;063q*@dgkdM(ZPR@d7kLp`eAknC)(C8wduF zuC)&f^5JqI@v-Kn@tvM8<{n*nSnmot2G7m$c*ORxz4UJ|BcP|Y*6qGX$L+WQStLbZ z;tc-(T-YGB{2+NG>lYu#7+TRRF2MI-rbmH2c+0jmG&Dd5!+Yt{_)g7;odc(`D(1&_ z)i)G6wXH(hmE=M0#pdP$NtUV&i9D+?uc*d#V!q4wxxs$-wpUh_cZJyZX{XwU`jR2QrGz zc`!0DYs2tL%e5MCTDAN{@sD;35WPoD!rSIB$bxDPl)h*-5yrZer3t7 z!FS7pgT$3MW@YVy`j|3H{$`_tY}9@ku{g4+t=t0FE+khV`YCAnZts5zLpYDWM+6hS)oJr=~H!#LL(3)UwQ5TtJi+J>K z6nEWwcrDIv(ayN@WB0{Ao#cP@t#WQC8Ev|4YU(L9z9n+`=6h4OPW^s(YgR)U;MW?! zQA}`}grm~IcOc6V9gHh+FoJ~MkLw#rHCzVkc?Z_~?cEQeJp=#x1m?*9JP}YD2kx=o zM)mupKtNDJ&@nZW^9jXNK4u;YgV4GTJbb0VayAoZPll4|)*hH9_P&3-Z^bF+?zz62 zXgoo#p#hV&+^Y>#i}bG zgSh7i1R73Xu-~~wi zg{!e{5x@EDSs%s+!?upTSu)?@`&`{6Yv182NOckm<(9ZN@_Ke~_Mo!h?c3eMIdB6ub z;nIbQ<280{QNT^$L=W!Vq3Q&Qd$T&*O-T0(SAj;t(RWV3V^E)BX4Svw_>;gQt#$gj zek~?Zm_MjG^Stv;sHLE0+S0hFh=>ay=di(aq@E$S4w42f!TaK}9_&04-m1t(wbP9sWkwuOsuW}Sj6oUY zy~hV4QIbGkGVMm`Z7YCAHb0;cy?-+(z;s}{=#wa#3(_cH zJtQHl6}SOE0#tMc0Krk+zt*Zo_7Kv(VL-lx{g8ay9d#-QH+B!GjL|WVA`rk4lo6ik z85jp~CU1viCAOlvYQFi2@O4=UWg}KjPLjlDWMyU5Tm){?ftdkNFy*~@^Zlk7#9!Q? z190bG8yjptRhBH7hq@49BInTc;#iuk3fKVW{(e+rhU!6 zhCqYtrUo?AdqBzGvc9?#+786tP;N|l=6|Ixiuu!?O#jhY)WktLbR<+z9$k!0C4xvn z_lquwg*@RXgxW9~C!+#^M;NA}xzITv?D^yVCDQLsO%HGwhJh^7O3rfi`)P(jX{d+5;tomi7copWuRSUk`ZF; zhYk(&Wo5y@s-0hHQnQqEuE0Mi}eT=m6lQ@vqr-6 zDZ2a5;h3t2cqL!B2ns`M7Fb<0lJ5060Umu z%_TKLG(o4PQ2D=@$OO~utk+n*+c?jpJxG(+()7B*y_o5Pvk5Yn{O8{( zDgzdyoVoUFUw< zz8

o*5|q>i;0UtLqMB%#q=^tehBh+`hOEh9jL_B6Y~Mh>Z_CaPjjQd>lY6b@3bAA%2%K&P-lQmz50FgV0I=K1Nq=_wZ(qlJ!< zk;K2v`38>mH9B=jWs;#FBKLVk`s6DZTrzN?*9BilLKH4Au0har*6>a0>gmz=1X&!r zNRI5BE9(wW{|~teEDPie%D;b+ri(ZTSZi;PGp1Ae$~;!CcOJ~M(ZS|g?}HBc5f%)< zlRU(>Y|}EVe0@10dz|00E{&}(J@>oqz(zEoqq)Oejc{*$QgK%-W0mlTw>b1_W99*z zeJChy6U#)V2|8Enxf|Ym4k1sgIn->h$EHG|fKwPC5FP*}wgbE8E${e`0{oi?u|ZgP zi3d(D^vH0vljlr&SX_yXEpr@j)IpT2ssQ^ZTd@q>zbkAG3IQkC#GH z^z)|)s37RyqW+JG4QV%IV%u$VHr>S!H_93k$3gbF`uP$g%GHG{Ii6gjl-9!pztFiC zipwL?IR5j&dq_ZhQ2iP6bpq6++;sOK|+iN zIZ9c)W0A{-X_u7UL5d61G6cW_ouGhX(n~@p>GWn#JWTl?fHuOm^zJVsi97S~(W5PJ z_6U>JjAWcZ)4Nxkq`@tyHONB)lMbXdOo(j#4u#D+Fd!h2MLS#@ytAd}VsPcb!S?2v z&e+jcBWuMOj9om^ia)bQj_e zr{4iAG0;<;#C3PKoyE-{f9pDp7%fSYm{Y>~-PVxR;5W2t%t)$K@#`j^p@0C32Xx`E zS|VKu+U)lzIeZp;2b6$%bq~28Wyi~WK^7>5-anDZ;CSS5TGI?7Z?@(zNH9~!q0Vs)cWuB4S^^)|2>^tc6?X4HU#!Z(Xp4juYe-W08RsF#o1MKj99+3Pc zq18)8;W~m<(kxCzL4hV6&?LYD`|jPt@S1P@cE0}UISh@-A4h>kmltjpRav>0-<6Hg z8e)WV5i~v!!_?2JNbjD%WJy%Zc-Pk3H<({1mz`}yD`A9Zo^Ob_W?Y7s(eC2VpSw;* zCa1>SJma$%&`)GY`cX)osk^2`0P%d8gp7Z)y+I@X&q}d#Tuc4%Sqqy8j@gfpV$a3(U=V2zQ z@K~jcTK$S;2b|`>{{fop5D9OtqWW@Ta70MQ#j7be6* z;Vo0VDQIg(p-?p1ymo=DTMaOw33tIC$uvj~I-%Ns!|a%z(TL6#C05RRw{j+^=L!JJ zpK9rfL70Utl=q#ygAESTpRu;U5iKloRLv7)SM(@c>dgk z{dQY>`w2*^QFTMX$o1gLy!8^*U)Msc7uSP+4reN)Q**bsoiP3Uc`-BLbV50oJiv)T zEN1iOC3EiNz!8~=Upwg(a~_T>GY(JoDyt8oLu=^Xhi+4kIP`^rCcj%^;^NMtRu`J)UB-5o<)Xd)X3Xrv#SmU<^45hJ z5b1hxadyN0`$fi0em2=;| zeItGs#tX9@%;&&iQ+y-}x$F!7oH0LA_T&BPrliaDm}@)PP+ic`qA)(wvibK+zpu5F z+bii)Ub>!My?4ECDF8if#d_jbAN zsuzqYEB6U*6tGO+ki&Z#znMaVmGldGbGovT;`uq`#)AhOzzv~*eDl!#pUy+?$jSsx z6Mz;5z}8d-)Q3&`H+NN^s4$t6TbH1Bpx$NYKKIEDY3EAQ>df!3#Ky&)-;rs2&O+zn zZpv%Gkl+HO3Cp89zC5nOCbl5_`iB76%3zJau6To*T2q|+!#Y00?y>*sj{hg}= z>w+ZaIj>7fe4qd~%-hbExg9Jz9e?EgR+4C#^BSEujl$EZ&s~3E+uxFq1|K|q$_u&7 zK>#a#xv$3|?AyEZ2vTTktLy7W06!Vr@O(bfW;ruXGiOf^ z@*LG0y;!jlWhU$j%tX@M3=FWUk-)GfzVNpPTFNJ(@~0YTTGn}FP2<^2nG2Ia zw!)HIB3En?GFqv9sb-z?l`TJ1-f!5p`q1i(mAga33*rk{pFZ8Cb@N}3MK$w3G^SqZ z$sRd6FtMS;T<**9#}>71)4CiSR)aE*7o%1w^^Can%!5EAP+_2G-Nuav6#7uPzl(5Z z?1S0|(=};A5S}-`Aq-+ZKvi}mpccieiVP{ml!6$a_-Dg&vIO);a(Z7~tTfZxzi-Z7 zOfB@E6W4#{UYlCFEE35Tplw^+(@k{(b({ zrB7pU&p$aH9W#lXs|W~TY`dy_NYF_D!`K|JNZl-3g}{cN(3qDSGLi$~g~bUYsQu#k zKC2P@vDgh7W7R0w=wnFdm2~=YdHIvwJE!$vs;Vj$5ggi89e}3=+MUVuK;=&F&o&oVfp zF1DMkH56SAhlO7B;-+N7LyT%*Hk#wkVbad`X?_oUwzSz$Sx0%tCUCvN>%&o0HSQ*A zj86nm>WTJ7psUm)M|ccJ8zL{iRZiH(sxXaL7?qt6ygbr) z%g^Og;zh}j+bu0;ae(DR?dIPe3-|_>^_HB8p0}l?rFqAygcP(`VvQyXl-cJlm%Bb* zmSS`SWJ@9XSpT9>a2xoo#@|19E`2(Ti$LMXk!I+pDeZ!!kw7YTxJ^1J=$_iJ-%e~V zT4V0X;p%vusExuwTp`Mb;0VCkMt(vnWa(^9SqqT~KmQM&nbAY>%KDtkN~y2Lh2SBx zFXZ9F=dWl29kUk14QM}#9tyzO#IIhB6}`jRneI$JzP3j_zRwQc;(xHpT~ngx{i5yR zDNBYS)xqzv2L6^#qW4ax(af~5nxf5$@FvennH)ZeY|cnA#s5_%hWYqzFaM<{5izFe7N;Na{RB$ z+boYFPMz*D)I>!K<^rUkhX((WJX{v3y0hh$Rpptj($qSVr#*jtr>|nV_eAa9Z1xngQhp?_vuw(NN8C3XIlkbV3yfg7Puo+vWJmD$E^Ww>n zaDj|LAfrB@4><~pA;Oh8fW1nbe0WsNsH3yfoPo(`N3MC`crE;4gYEhZ1s6GG0E@7M zC>LPj5fT4_oJL=&IM=p!*>#j}V#>1Z$b$od2O>}f*e+zJelJJ#iig5o4YaLL)Tr}| zmZ&Quf4J<){&|sC<$>eIC|yT1;BA;zQKoBwrG{}@qNWL)5(%lvKBSSE5c4Wn;}%Dd z?lWuaCwT=?MOw|CbO#s8K$TBLG5x17VG{ODv(Jy_<5FAB&Yllc51~I1ctIXH0diQ= zV?e0?MDt^bKiH7g{Z zz5SA5%!J86bF3yqf+5me9LqiX8(MZ~YF}e+&yw0Si(9BqAt9o7N&-;?ooOg+zan$8 zVLCdhZ@fD_xA&0h(&R8#ub!I=&9*CPafiJUfjoUSIuRCBSUhVaZC?XDZ+SUQO%H@L zvDrL`!fiq0WQ-Wi7w2o1L6ZPg8ATqD&mL-K{nYd67dA1pX$lF}viR05@YtL~{||pi zZ)aG8I{&~SA6}bo?R%#jF5fIVDSFA&^o4Wl%71%aEpHD$)HP@+>WJe5Rs@QbYRyCz zLO$BpJnT3tu|l&u3(XDQM{K&jR8CZ?S(vL$Bbh_)`m?iWrU)azp_7cw13XsUBESys zG|X*$D|+?KklFzW!y_pM4d&Pucn*sowx-Kx_3nFk?KDD>Y9ibSqv#IFF$g9Kk}?YJ zB+qChhbfp-8sCdN12FwiaO@$xAGlG`-tet;ZSay(K|cT#5vql2^5IYLqfmSTKww4F zRjPi_n5H7mXL@o_1y%pCXf@>2ls`Sll4alf2|6g#drVoqITJL`5cZ#T;Jv5u$jJ7L zJ$W}UPyzdB6z)Q1a7W)TMu^%!V32SzsbB;J^o6#+zTO2>3$;NU|BZN@wjec4YyvZ7 zssLgfOWO>c5@2n}U7pwQAN%a?`}LLMPWQ?Fd59)JJ_LnWX{TFaB#kR2Z{UZ`?d<*K zM1N@R^f-$LRNs*{zZE%z_0PiB3Zz0UP^0mg5;xuXI3i4t;!xA2=Qtw)JrGJ|Ie1XO zue~s@zKtYbYb0bmR65Ev^C=f-wV5AsD&h?>5XPgUw<#ERN6uIqHx*;hYN2k027&C_ zXl$=@CF-m>BKzq-`wbS}Qsm73owz|u8YRJ_sSwUH;&^J$3kNgZXQs(esGcwaB~rCR zFmCOpvom-jM-gWeYKD(ITiA5TWv-$WRn4X=?S$0Wm6`X!0N$f&l(uXf4Qc zMJ{lz<;`gRKt!oI_PoR-)NE&aIzi~6qjAteBtKr1W}|STEu*~_T)8z8&j1C1zrBC~ z8bA}7DGCN>B35!aezRX=wPtxu&0Ta)Ek}doW8dF0&2$orxw$a-Q&?29>&RV+Pb=cppzybR3{={Sot`?3x!4z#^F)8pn8(?Jg8)N0|aTfbBM z!8IPY=P9M1y}kiTqj4j(_tz2B7_fCJpB^qqjuWi|SZy%cyg@4nY?Kux*_+bR#MQf9JmKaL6wBZGW8`o{*0 z+{Rit8UbfwY3Mgwth#5AkCc!x4BV-~S0S3oM?KE&zd;aN3Ri!YZ3l2yihGOb0y>I1 zCogpkT0=DZ1BNcKOcf^hsmZ>B6GQ|_RF@!>YqTC;PAg2I&{j@%}&MBTt}n=&3>ngWftUukqf~ zky%dOSSF5`O$gz3Mqw+?itm8=gHhE}y=$DvjldlQLYb5oWS};oG6*6!GnE(hAEs!; zAt)K$9G5^GS>a_SpF3>nA3)fk(~yT0`se_^W_iX-KMbosJJmGv9mcz|Gb5Hv_32gx zP)O`JSIRf_WCJy(K*yThe@&oL= z%rp&2`i^zBkqJwr8JfIs9APL1F2a+J0Gl2Z@4YiiBVK8tzysrLo9qOdLSqG8~MS*+W(QBCu&RfZ`KoQapGGkj8G*p#bSO zK~)Glo7wW!pprMj<&Fl5`Y)vO9l#*%<2UAyhce(BI|IkcoIe6{AMmd6 zV2?Iow_j)$P8XUCh4PA$`e$E24s@z@1&wNg|5X;y>GMi63K>Vs2e0>`s4r|B90gdD z@9~BbCd3o?aFu;duOnJMV2a}15R4a}vaSgit{e_3=BXQ3AWHog?-wSz(jc@Nd=0FVKGEvGU#AV20oODNDIVW?p$T~JOUHqHt*cI+yk@? z=C_w1ex2eF7c5#7fiOS(9-44)FF5$)JRXkM%;02=lXm+3 z8h{xz^yKlz8W@8O-4u6V;YVhB`;pkj&HLrPe)`noRlPFfZoyAQ@`piJL*6ZtQXtiw zvQ_}k6`&~|L;ph^J|gKvGWB8J0|dH3NQe~`1`(&o%=;G?%>&_6f5Mv4!WcKr?)>3K zS2Kis^c6t-mUY-teg(Dw=ps-g?{TcQ_p-L^kqh3}_v+~@#~Ky) zO?FF^uXXlDd-$d*>x4f7Emo*+Q>{Ts9;>Wz1v_u0-$4$v8Q+l@7OoMCKIYFBWC5J@ z784jy$MXl6V{tIQ(*-$=TqQN9-lMZhXR^I>&d&qxpv+E8QD9l-wpMO8A2 zply0t@9-iWe2K7K8E=;A{vatJ#aM{sXq~GYE(jOB2Xo9~#@`j%Hf%{V#xy1*mlcT(R&;3xQV^hOUP$4%lEK zUnQ`b|I4X=#EdbX6`!DMtXHkU&!qGB%;L5ae+ieX=7TNz^#n?t(M; zZxAQUju4hTtu))}>sv6Kn47`lnnF{qUx7g9yP*t5iPD?38D{U%h!^7;D#gT_0FgHB zQr)d0B5a>?C7Mjs$9<&aH5Fm}!rKuyUGoLvBX(i^j}V_?_}e+GHuYsysJM@_%ef#K z0a}Kb6jE6O3cHS{!IryzwFxF8XAPqwt{&gcN>YPt*Y2KSF zHzvo8X2@1GsaY@__Y?OYi#@&HmsVmgJ=tpM4rmx0+%nn3>qjy|@VAhtn z`}m9JQr6Nt+nJ*265_!tVgh**q&xkd;}m3aawv{sLOSD*NBgsL;QEXfHvm_r8>wCP z`g0-!j(lWM<(Km0TNY0+sy|H2uD zvuE}7rCFF~TaMS;z>b7}^xI$y+ttdtN5X{9qexMT#Q)kO?=b&|! ziRh$8=Fe{si+tpZsxT8n7m#9e{_TSGN49S~%8Hd0>#DL-%^V>4MSQ0h+CpfTe+;A; z#mzd-e2AMHhiC!n`M>l3Zr~OGFIxEVV+1t&h-kd~;6c>Jez;-H)OTBsx||FeUN08i zRbYbZ-FPAxC#AsVrKlryjB=ki$%=|rY&>bP`YmpwrgbB4K|dknZl}|46R2VWig)hV z@ip_}X0Z9kob)w|^Syr6S#FpdX;N_i#{42+GuxUC8x}aUut_5EX7RCOVm#riBwfc} z*vOfHR+g}pV`NeT%J|cOYEg(1wgFu4Prr1;ooTgOe_+t~=MtCJi5i$Dn5Q0;3QWjx zo7bdlLK96@IpjxJk|&Kmg2?cHHyQv6-@m()Ul*tqfF?*8HKON8Bz$~{9GO_3i||dN zt^uQ%4?#mAQMh|ST%ip7hk~khM4L%ryk3f)Uh9*6IJI!uM_VuY>HH=EF;Qr3mj9i~ z460B)|NXmnxNNFI1`-#u5yTc84eY?ww;No3#SHZ@ z--~cx!RxtqDDk8RK=Ut<_Yh2mG!&)Udd@wNXuvE*!z(CfSRyzs``&tuD_}FXvaHuH z9QD+M*cKNa9}@ZQ#0k3X^fqmH1e+@0pV(|AY-=>oXclQQ=}?-()`zD?zl@5Iv(l2AwGb7$-|T zBL)jg&vanVJY-HCfA&ilM<^ht%1#H(PfNEW3qP*k$t%Jh3k;VuqjRT=^rETsl4J%W z5{dxgBNQgosPX#9MpIhkwVaBBc?^kW^$p#D=cRV)t5Z>9w#O zeV6*4s?n+ENlB`XJTC-<3zAm+dLOaTC_lgQg<0iIR0|c78n`J??pclwxeJwUcx$Nk zW#YI}?#}(Oez<~sRJJ_|8aor0+IvKt=nc%mg#0X92mz z4xNoh#-(y5Al>3fo^$Wr-Ol0`jjkN+JI|?_ioVdz=JJIa#QEp?6aqMp?TKoWi~53e z!jAxK{fjZ#Rjq67?~;&7c7S)(cqA=q7T!_LeqerC1u_Y@76uFWy{{fztEso?lAUW< z;r*LSznfEPpb@LCe<~a$;=8kJutqp%W!PJ7n;G5E zkAyhKt}3RlE$v_0t}OW}YWR;(n$)=pCac=NE8R~ zm~6EUCY#hPWdfm`$I%^@SXbUNw!{ zpQx)^$C%otQMap;KT|i%H?==Gv2}#y8OsK)oG;Kp4}d+I2U^f=^!q#9lV z=S+{zsM2ph9bIJJbnf#yT>k7SH{1s+4h+eb$$oVRF;x@*|T*=Ddyf*4E*0Ko1R{SY&r=`-P!V$qY76626;s*tXoMi_nm~JS}f}ioJd1?Z!}RP9OT9R z&oLht=B;nl264;r--=x&ARvIS-@Fz{FN^&{-{8<^hPNQ;cwqzHi)4rS`O(Qna2IBN zl^)9sT}3Q|&P;|pT`!I9TQTS+PRf#ql^!r@l=n)lU;o|9s#rIO+0d&!9fF|3LKf%n zt&?Iy7bIQ?XFdWfqxmxN=~Fq!o~jD=cI}Gx=JU^IdBx_+aw?Zsc=gW;YGdzvxi;Uo zl%cVJTUq{vWdoPpgKeCTvff2TJX~XS*tpYH63knIwANAQkfslE0o8+?t4>92uKYn_VS zwJ1^SBFdjAwa3FC?lcNsKEk!J$F4KtVx4ajSKA(dhm)M9!#EH3eTzqph!G>H_^N@+Lf$fAmp-6y&w$g_qexpi=)AZf%! zJ+?xw*gu!4zQLZBVxGH)H={KR%MK8nUss z*Hm`t0i9554K;IR=;zGPc5S`-C2%OwFlubJayfYj2-w)(062u;H_Pn%>8rj=ZY1U^ zSH!5V(9kG~wUv~rPK+w9h<-8tgGJ4*V*HuRD*gS?sv`E@=NjB}=&=LofAPbYQ8C7$ zo@R`eT;pJP8RWD7_$}Fkk}vVg+^wEVcQ=4c5gM0Hfx|`MIi?&rZ49M>@+mk>DYU$a#JZpvhr;1dPlCm0O0fbYFM}U)dQ<_ zcAIMXCj%=Xz8WVTWK7Sp(=mXgBbuIxmH2%zp(>$+Et zsfE0kQTj3e7FtDF{jq#rW-_~1R*K$YjJGT#q19j(1O6X z?jhm$ibSKs6>&Ga;mo%6_|iZ6T6+emXu_VWp^hb-6mB; zZDicD%Q>O4b&BXpvSk!{U;WEf7GifPL_e!-)KVDfIp99Xnhe8)Y3l-2J8O}6*_q(S zGZV7E5|6uDD&Uf($brbGS%~YZuKZG8dl;3e4}wDpxS}p}YK1rR?0=B$s=N8bimO;V zw|#tkjwf$iU=BiA9l_0zqEn00+6vcWDa@FJTl|Eh2Mb67#0=gw*{4tq#Hk1w-&Y@GA&pKri4T+Us7ODFC8dfWi8o1?~} zz-gc~t)Mj81J8v<4~tW^3b>X2*j-R*0}F*#b`a>_0}AXJ_gf3kR-%pG{=5+YBm|RE zwe1LF(D!Qu1~C#|TYY)PiqfbVaO4KCGJvA+lNMmCORSVcm{Vu8WVe`JnC~EH{#GPF-Rm*bf+POp<3cnC_yhH%s5)E4|i*BkRdE`z8XM;~$$0YMfJ3C5TRfI-Pnb8^)= z=oVj$m+85t9nXhQE4;xVDIR=A4FrO?<90fizxGr-IQ>xM!1OS8VX4fmX9HH34b@hx zY5(|Unm_)Q;3iqwQ_(*pLYdbmD6{LW(4gE9Sh=>Go52K5vQEC3#U?kO1x(x17cbP7 zRmokKHwOtK)}tA%2G%JQOWK>*=RKAPy#ceh9q=UK-C)U7yS17-o4mxauo2xOFf^b5i5z`Udo z+lCH3r zQ$r5a#S!?9|GUa&U)kF@`Vi&y1K^vO#tv@&Cnc0RggcV9Gd@ABrYZWwW*WzqdT=kH zwM5f_)c{o$uNW|ZalkO_aU#{aQ@yu~`WV0jAA$Q>iNDzeU`#UcLOhOXWb^_Wx`)95 z{$LkL*@0iF{LN$%0Lx0VkRMwO89e6`4?eqf%a(7lGh<6YK?^W}5aAUSeNmMR`1cwf zh7J65tto&W=>EeAx*tJHAdwW0JcjJc3A+;?fsJ;pT!Ta%ikN2Ee$e#V;-gZw*PA?Q zEG-ppv3)M>c}@}|Xk>O_VA36%Kp^cogVKB_ailW`Jr@fIP{R0*cA(g`FC^ zy6Lmkj3SDkS75cJCi~tp!F+Zb^@sW@3D9;FI&IdR%LZtbRI@}QQ6MAot0NEId;`oD zu0~#@q8JOD2n`*HN6v*y$#sT!HMHJxwaG;;ilMDNPs}V01ta0bl#vFf$|$3DzL8wVXyb zf~V={=XV9m1Z`Q7>Zh#CWQ8+EjlVRMkKid zrc~4;Gz{|iTrFK)@9b=81OVH1*9O4t@fnF?UAL`4^#H6-K??zrb{{x)q@@wEi_;qn zR2ct_UjkF$()o~KK!-YLFj%}}l(Z@%aJ^ANCkh4lfT3W|pb?vxnt=IS*HGYK4BWe} z>{tf4K`E$G^- zk%`tKwkF~O%M$eVKx9Ef5ixO1)LELLT|%@Lz9vyrIDdhc(Znq**g%Z;teNw8H>m;e zIpi(H0`o&O5iA$brqTd$pdq?ndgIf8rY>H%@C@!L`bwmFShFTxD#{s|e#Cshu36ao z6Ak6LfM(rS4tFuQp&UO6>D3U&?W$xA&G~GwY`6zDlXW32F;zZX#I$P%1YwcxnRxC{ zi|pFHyYlOgCvho4?^c{H<+kdB#)%RPAG;?2a%}GGRD{^4<7@H;=*2d}g@?(~W-7xa zh;5@E8^d^@)qn!8NM^r^F&a$(8Send6n^;dI4Nl7Ha}(R6OT{24>L1<5I+>-_gD8Ze-qm&z0mNqQij*(7sImt243_-ivXD)lENO>=^6f z7^)o!?ZT-Umhi3=t+)<3%Poy#T34Vjrm z6??`ORZSKe);rKugI1LF^JYfN5vMPrXfbg6IbecX37^8jwc6%`Kr=zqwA8lF zBHbFWJL!cnE=12F4q^Ja0X6KJpHkp&Q&T=nL*>{l8r1v%K9STJzOTqQiO(xc7}_}R zXfRdbjr~9{$fz|q7@K@GR_T&>NR-lBaS0BeAZ`x(UnXkmRoKRS;8p?1>$~(HG-57l zdnO}uMXa>RKgkKTC~S!!!*jP3c7ou5{+zGS4D9}#U~iejiaJa2xBA|)Rza~9E97)@ zp(gXfCAMXTj$536W8lhuR>hNf93^{?$jiO0L)&}8ES@`{>J$QA^cb4zU3>OuMtj=P zgvGdXsw=o|CfLMH@VGzBmPUdc^cj{ZhkG?VG2**j?V^~=WnuXUBm3qDHy~93v zh?kG$f-C{MS#SGAiA-dWfy234oOhLFj1+Gf-P%~17vR5gh*4!Cz?h*8e#eBE=Mv3$fwL zf*&yohSh=p`21rd5Jo=49NWiMMh5kbPt%&Nm4uwl+HvfBeR1tW+%c#)4#aC{Iy`h7Evv4~taUr01HCnNGFVM9(x3dT!)sukMN=m1 zuE96mj_LrFjo|8TA819-0`SL^e%)e40#+ch;b=#S>=Y$09nd_PeV&J-`gF3sk6?y_ zA#_fn+~6_DlZYc@?@R%5?%yc#tXU8J^EHw`Jsl&USTG8uZqX%7icI+s{X`u$Jq4d? zl_N)DZ2}3NI^)Gq=;N}4xVNHZ;Hix3hpcY#S5|+6R0B-P=D)(TkOhn=T1t1D^N-A)yU{9d{2c81_UUbd* zbB8j0mke*+`n59Y=ehlUb2+TM)wFII?~AScZ`(n?yd60d3L1D58(P18d+f3x+EV=z zzK)U~zD`mwSQewYjJ>b#e1L~BAx&!?G|u1|QYTOq_{VhMu#0tb+gY!F^ytw5*Fxc( z`LFMD`JRr+is^Yot^yCVGMYM1^e_n!BL9T3udJq^=t%cK17h3TQ9mq4LK`mm9hUXG z@YB3QEpIr`ShpGgHG0US>{+i;R5JHD8qK|EcvP#driKLlEQh}QK75s7!j7=Z{cwFh z?u`-ym}5L*ECfL8hGJwM#25gRiJ-l1obOO}&~!n$twlptW%>H+=4v<@u@OCT{apV6 zLFAEh+!3cO&AQ;Lj)#~MJ$>}>SNv39v-t}MjfN5<`jQLcMNrF-Ux0*QSjPMl^%7Qm zD;>JIdg_MMv`TRq;hGJxTBvws7dC?vp+q2RfF};9BG#gIo z@1Ffyd=Iy}wTR@->;&$6SY*vD5`2$d!C42;g2e+`A{0{oXBm*UGJD1F{M|FWfLJTS zkgSEm#NQq84b8wnoip9<>%L`WIc@=rtJcZXKYjXf`Px5K7$(x7d_-Vg395aEzBltQ z-C{oKt;)u<{zX87TexE5APL2cHx?!&1kV9P#tXJBSa#-Ydu-y4`4{4bYt{8s^0I)G z!#A_W19f&E6hNdffnXWTOFMa@A)q6jYqiVyvJ2kl7ODj$iFdMDJP6k9712{VaKIDa z?+R@qQ&gLiD7cDBAx1dyX?!8h`g)8XJ96X*kO7gCTJX&r__7J0Lnq+PvC`Pvs~|i; zpI{SE45OYp)ol1!$FBHv2mJDP#p{ACm75Z(&hwaG1UV9;*HVh!g0gxsq2~^SKg(65 z3{rB1l73yD$C+ts$|#UfK7L9ikLw#kp4V^MbQNdgAjF}4`1SA?4+PAlW@11f(5NH2 zk)iFQ9S_t_pRsAahpXa3qcwZP)g08}P29>7T3cINj^UZN-k19W1vg0ng$`L)6WtQaaX%+&kYn7s#&R|?q2)sLSoXD#w| zKX&YHjUPw;0&^&@ze}oIsDBRE5aK!_CZ&vu{JG8vUGI#xt#*E-sQUn@gAtdKhQ@sb z;kDKlq+>?yw%})J<83Z6n%&KEXcKHUX@ItoI=Sm{??nubQS-}*lB?MCU-^_luM9FJ zWKdGDzR;T6OP}7R5*7d%^Y}s5Jyj|9DhH#&OeV&=nEV;$hgwu*pV(d8xknst3pM1{ z1=jc+I8|<3yH?=S#9X!!dt801M(_?J#el%TVG$AAKyjt9-S+jn?qPVFDC=l2Tuczj z96EVk*hd#@5SNt;L9&AK627x8ih8EGypHG zvx^_cqum?T|I{7)7iL(usf7GL9@;4f4fPFXO^Kg)Pr3 z2Leu9Z+o}PKriUNZ0A$n$uL)TyOXP!NYks}yVkfsAJ-!^`TR{o($dn9Io*r9$m>5> z>dE+3j-5TZVa2kOd(k2@eT|G--q-hbG-pbjKYVz{(0beg&}1<|K!H~8{tETRbz{HR zJz9ZU93gkl;^gb$^^jD{S+xNB+6k#+BpU))JMVYzAcdviY+S!{=a;-P{QC?I#ATyV zRvz2EWy=SfH}DtLGx*}_Fo<=rhzL`Q&uWFX2K%5j5B&VzQWYLHH8r(L+UZ5`?`2GU z2X9txietWsG||b9%{#1e^)f#?kJeYcaMqTi>3FMKJD0PS#p8l$-r0tp6MpdWR#P$5yiA>&Eij5NFxK;CKp>d z3u77&X=!P#kr#R-34+^b4+hhp-S^hO?eviO{h znJ5?SJ(p7y&2;?w221aaaR>h&UGE)_b^C`8Unr50BuS|hk`W?`hODBHy|c0@3dydJ zGO{ZYiR_UbLMozU?^dY(V}+?C!_c-3ialE53LVg7l zjPxH% zTD>G|+ExYp0b~n@Dz#-*sr5f5^YMD<{VP(ahi)C&`Tfe8f|Dv)(dA^G!>*4egcwq~ zT`=aRcW6_9WQBN~jfFaZe1Ga~0XZ7mz^vVT#QOl!a1&cAR;CcH7ceTJt%*P;CNR1dN-?`B5v;w-CUd%lfjfK4s;EQw!lUV zZ(<~Oq^w0NiWVp1kQ4^wM2-f7q5Q|~rX7X6E=k^UBiZ>Wx%ap}T=>e7X#Mtu&vV-H zXLs+B>FYfBI3K6aa7A6BY8wa18@8shz(^>-Id+MPwiX`4r_Ydr5)BY0DWK9!u`Fpl z9=!!hi6-rfq#k?@Fp?CV$?DcvP|xAz|CUw>##g~pLCmU&Eqdf73Ib4Tj_K;^&gp4qzN(&*-08P`H|73e zs)9ZI$xE+AI==n>tnvBN8NEZ&iE7GZ&k9E4UM3CeKPlH$M5(1)VoU|v03HtbwQvBM;869fAqBa)XM>c zfus8P{;o}`i2xm-R7}I&YO+EpK*THPllhB&Ht(5iz4Cg<=lI0Yl^bvCX(_jajmEvP z_6JBz^J7dM_AtmI%^3XDc00w|9ZL`c6oHmsL|<%#hf!~#6+`mML(sBit&Z)*OK47l zR|3Ff!kli}c@%3fNMDN|S6RO<4Yy|EmeNDAP7pkZ?M+q?3c8NBKD(+x&&_%Df$%jK z9J6zKsj%EhyN@%Y{NyH!>Sa#V{kscD2MkJevbr2I9RGZ;u{WzA9uTotyOs%pIP_om zR9Z9rQl+J-M;G~TgQKnK=STU9!u+1hCg@5ObqozBIYI}nxPE*0d+}Rv24ur+M;l=- ze;KT{v-?|=Qgd=bF}~%uF_uS*Jv&>BJ4?qc^Z<_$Fk2i>2G!!aG-&wAzSI93P2KkF z-D?ex6!34hw(ib{>$ymX&{}h*Vnah~n+-(qU~jd#^S`yST+7^J2y8b9*Ex9GL`%0uULAyje3gj^4*-f;<2x* zAd^m(`BwWlZt@ccYqx!gq4kSk6VWCXJKqoa-TD(J9MIV+Ql6@{JH_FI?j|-i{@s-n!f`gpqou>=dhre z1Qi&2fI^I5up2H+7)%Xgv^Za3Xk!CUu=799SKKJguf7RBXn16#D_}IuB#*0a05J@_ zrJY?J7gTc%=t9Q4} z&eSFUUL=Ght&f)X_b)>%SHpt8E`(DljdI(qu>+5JIATHm3W z5_~EaXqA?pPQ1B3OjmamHkIS6SOPC36B)#7OftZ>-vyZif}J>uSm-G%zObMVHXub` z&B}6Rp*u0OfOSvQoK=ABTM5qor$5(j+ae{fDfZ8TbG6p)k;8`@-7cl~6x(IUxXMm` z(j9#O2?_)k`I^RNuz&d8wCVwi+p%0-Vp)JwL^i%)po(0K6r(f?xvb5r}5GC;%qRzQiGm@SP@0E`k57e_n3 zsW)ovL4-)XQH;&8-sDubG+B2*ROu*9uHtSfbRgT*gF63$l(DagDF)Clo;Dr@@z1b( z%dK8wrvU1^4O`iE3B2>yYijJZr#z)yr1V28$LC=#vj~pd)IN`43CP7*;@7VPX6g%G>=W%hn)|1 z;MNLg13+dp3>!MX{CHYbm9?~6@Vf3as`;i71~|Oo`JpJzg$%kCq;WL(gxQd6%Igj8 zCjLe4jRE+iw^OJww!rgLt`kd- zn*!#rU+pC!CNeOLf}v32dVtzT6Xpv{O)a2YH*L9z+oWLxlBhKfK(W&Rd#fM+;8QOt zK*~qaKV8HZjuh{w?`Rf#ZI)+_-Z#X)ZN-_%a z_8Jhjxw-~}`F(^DG9$y{g(pIY;Qz@b9}3;KRdbnsuaIXTKMzhua=ZPPnWbN|G8a|> zrH!_{S<#iT$pn9X6k`i1S4OaFF}D>lF0VzJxq)no1Cn_=({aBK_uIzCNP$T~G;pM_ zOY5<9b`}Msz#guG7olZ!{(KAE1OUvB!jTVuC<5lIV9Gs%SQV_DTW>zBmkYMX*o16U zPdl1^{rVcTbg>q!+&RIoho3jOzipP%>%))FcLYZqOZ!ftH~onQbv-H2s6$Zg;oY#O z{l5b{MmgjhBleL6>}%GnDeCE}C}&xj_PhAL;rcUE-y4SMmUwRqZ|@mQ?F=8O-#;ljJuLfoCuk5%vyBZ_QZG+0SnY3Ol&a^PS(wC zJ~sgT09g2B{3Bza#JF(^7(yoJt89VcX^H6wxI5AEuEm8WokcdWOZD`VC~rGGgwXrK zm{p|FzKx%dXTbz|j75W1OU3Ywf#ViP8A*M26~OlY6H-KxDSAD zK@7^qU8Pa~lFv%$D6@$hn=&zH{)9iy< z1>w;=uoE*g3g^080)N7cu6Dk_3NP>%PZkebhGB*V&x17YJ_%f7YGLvYzUvPs$mIi2yeUd&8cd&5M2T^aMU1e0uj2 zB8v_y4AI}1_Z3>Xv0rZuxpj+3O8#BO!iB4Njne6wnS@@0V@!=tDP#B!T`iFY zmn@H%#TK1FtvYgL`KJ# z-g1{+|Eg_<XOp@p&(bi8OdRrwt8Z{(e2C<{1P9gq(JOmbQ-T()hYUbDBd- z#cAK<-yjVqJLJAXv*okc9#DFJeZ5`2$gV_aw)Xk)%q`+Nl za=|ql+1Lso2qC)RrAB{@O?73qXdvI*z1s*hm*V4c!ilvTaT$mo!7XG>4<1B{1}HE& zejgQ0{60TFs{w9-n}vexaoEOsEKQTl6rf2)v}4+eq)wz`E~E7>!*#32Qk}polDYIv zVsp=vi#E_GW+u5wxPKjz5m<4*Sz)6?KS>sygVEJ_;1gtk#K03yH$kW(sXmO2by3<3 zZV5(rp|?T%^1Kcud_Vy$Vg$y;TR^-+R#t+P4)>CbS_$O{VYut{)i-kb3B(D3NY?t7 z+O1QpAyX%7>QTAMnl^isthR&}1LGJK*2dQBi}r+P1G(ht@u6L4?8zz~rlB>+lsfIX z358Rx!_>bm>$Nw-arp$M)u_#u%~3wGc!NJv;R6+c^kNGv=1<4bD(>Ee#dS5 zSdER73s~AagjsUk3bF!9^7E&4vOSn$R{_<;=dYwnDcl=$)(vLd&T}g3k+V~d5X2m% zB#cAVpaMfVgnt{8s%H>|?A)ClSbhwDRr7(@Mogwr<+SG-Ndbk4dA*;L>FCN|aYRsm zU-wrC&kk<;U^PmMqkxEkJ0qLj)$Q>V@r7UKEG{AVT^$&pZ>h3Dh|5d8XyYm=nIXZs zRpg9>3|wp2n;0WNx`L*wD}sBi2E>~0u+52;_$wTR4v;)%IK9O)ciKOwGOiJJIzJH> z!*YW*`pzBOC|KYi8y?hx6N`tZ1cKzq{WnjhW=I9@TS#qBXF*~r1p(c|w z2v3G;4Tg=@t66A-PavhJ_R9`z_P8WvJX(_GKOB8%St!2be2Qkw6Q=YN4eKF3ic zAY%hBFE4rXNN^xRsLo@#7Sni4awC@0|t zG6^Uh6gXx%9kD4fe?Bw-AJWrjyN|PWr@Y5UQYLdag@>Q8Q4)q|F95tiR08-Q925eq za;?P#=gYe%MQQSEDaryOA`RW$-C0L}0S*DC)`%O0fur``U$e73qM{Mt?w|pO;#;M# zAM_>iGW3i#0=q^fRu6U#+3`*GTVYm@{$vZ`oDoYmQU^M_aT5O8WY} zOmpq$0kR>15PcVTRsh2&WM|n8RFV2>ujsko2vl1PzZBfioot#Kp~028ki zjTsCv5llcl2?E)jW-+i4sQVMRLE{S*IS0r|_(BcSRI2ol8(Pj-K|Rt+gCX@CQSZjn zr%U^{m+cV_Hbk+Hnh$11t7mt=gsfWuHJ$tIA+6Py^bQ<0Q1 zC~wdc1S5GPkE`%bgE`oMYD9Re-O@mb!|kY?bNGk=b%+lD``t|NkQ?FRw;68#m{{|H z5)NTmqs>Kbg_7dDycqX!igwNS6ql$=|yz`61hzVbHRL#U(*3h_s^#riySkh+^8(~}`Dg7A0%kt3yy;NP}E<;f^6{<4Y>fK}JG z*Nu%2fR^>RRxJ`8I`TcmhamzwJQF>|%O(!sN6sBS7|1fRmUpmXm}N_dj~w;HJL6)# z;uE%DLcsEfn#Wu?o?ziti8pZR5>^tPS}|ysGMdjjMz9~4Q}L}#QA~%JaBLKIWC8+zaOEsE#b~x|+th4r$CQsT$u2oNH%A-^*uw$x=c(V&Nb~Sk|?|LbKfVX{pXZ?T?LKD1-^HN=ZON+Vz<1ZEP$VQV^{_ds#K|TxqmvsZ?7M(`kb^B1b z!r_l586oA9`XkeF%Jp@VWxLgbbaOdHtDZ+FEXXO-N6RRKl+j3Ar5JVWi@;Mt0 zFOEMX#_UXNI?wkNH_{M>L;M=~Y5TAc1}n@Z`jU`$9l>*w(AH;q1pPc&&;m^d2uv!V zX8{3)3@tsX7(5 z2?gyuD74!5g9Y;*UF|NPGq{*j;Ew7UEMcfw5-G(3pBzNQQr2#93NyAutxXFevC3$=+3VQh+ zJ9Z>bBv&2Muhgv>d@3_Lsb^CrlBdSn-E54m4tX)JOCJmqu&JXWB!z^`yzhE{CkMv< zc&_e-ty@pw^buGIkCl8@T=jhzapA!4^3w~nrGgFO?ALF0B0FV^Ppj`o9O+IB81h=WH17d0d9_DJBt{6C}12YBwQL` zYXPu{xc{i`B^D9534ny>gU)ndAcoftB@*RSl7);+5*Tx*dQl z!OS~JY>!8Yx&roDyFl0l?gTQP0yvWK3SU1FrPkbJ&qW9<(9Q5;ck%M_W_*4veSN6g zUb_tjJqD&R_5^<3GPr`-%oX07m;Y+j96q9!z-$wlp4xbGDifR2r=(06$g1L za$q@PQ{o5)&0w%S?6U8}ayP&js23g@`1Nf_dE(;iT>I?VF@qd$_}F33fyu8QnA}0A zh0WLCbfszwOKz%fbU>s*m#Ydzk1$6h%ZU9}v{z|~(pT_?Vm zSdUnF6!Cz`{eWal<+HDZ56_p#tl)`afq4^TBHB}4c9tPaDx6_KeoK?4kkM4@j?T=? zO!Am>ZQ7L1^CCMpZ+ZDoO_|kW#SjGHjo;_y#?XTJ`yN|`mY3l;4*)iO5paz0YC(-; zL`^F9u#E+HCPBb~hto4L#bzmR$5X&iAim!KGbyi{n{y@2O<*AdssW%YG^xlu*D>(K zf8cSGmE^EvZ&xomxGygb>giF;HDIZz_I^6RHnsD~lU{2Zn$zu1iu%O*V*fn2%$EbW zNB!^|8*l*d`(1FWp_x2~y|tekeS|&a&KdGfhn+f=>|;AvHFA zGU(eSw5pfGvZfsfP|Vpm_)NzJHi9PwTpN%lvb@SK#bE&RE zkpXW{?VO(R7G-^-E5u-XfDoJkm8kz~nS;y9q#$S^LMqJg2rLZr9jcONfb84N*K+4s ze5k#GK940=_ax3P5Iq&@QYg!i#8D6DUyd)vKR`r#S>24vlteX~LX!la9_ebyKj%Jr zfJ=l?F+dyzJVU^CJ+qbTg249M!%hN4|P$@9bU>hh#_J|;hk@U^=|)1eA5>8 zPuVs^Z-`J#Ylij<9LJ~qkHduBFT%58buIGdWq8EB3D3N>;YpCCr>AGU-}`OSt70eL zI{%s4k<=&*hh*IkO~}XiqMU26oENmTMnF|hkQ0HZAUYAJHF%GW+deW)Wl8yA+m^B# zO)Wg`;(-7_HVPxp9Z(IvdGp3WIu6qi{3fUuA4W$z90hOfLXv?|E(Na=4>KjQom05L zMoYDl4qPH$yF}{VF;2ue08H`bZa+0J3t&gZ}>kcHPi_O{94BVV=kuiuy;~(j!a7grF3LXL&C@Lx{ zr)E!iUomt0c!-(C7NY!_0)Wqnu-h<+iU433Mt~cAV>bs?z7+6#| zh1#FXoHDW?E#6=AHbJ9px1F7v@1GR+j{~=2aeH~Cq;CHQ#C#0N$2)9$gg_64vMKhAusv0ZCe4rV!il@V)I4O#SI!L#Z$rCfqH49%|jJM2OCREdGz)~ zyg?q%r%z3P5?C-wRz$N))*M@&<(Yr{IL2+Kp`SwRsv#dW%26uDeIfIi&5uBZ^)Cg%`4A0~qf&`a<_b6vr6+PNuPP%udP5*3^!{vh)^b0~`@Z*IwH8 z!goJvQL@XMa9uEEvGSq0Ml{l>?Xl%?xk&B&ucoz=0$;z@4sExv9ImArZ(sf1li}Nw zHJzHj22OvJa^gKZtcb6bVu#IKdZj4b?Vg>$f1ZQMe0zz5p6pTK!y+Orb?X5+wjGp- zzSN;gIiRF8!m`=GDim~q_6rgyl#$SB!yZ?w#!K8F`-ur;kIWC=1?hN*4IxS$OT6(o z=EsI%huu;A5%bjlUpwjUtfj`1eQNr8e|~))z4dIss3tLr`q$tZ8rs@wAGd9{MAg&4 z0E%O-i-%_#P=wX8;22!Xy_wtb1x~%|h=c`8d>#FE{Ci)_0G=G*S8XQ#XMo8phlAsf zob;jHz;t}u=%X<-wiq>Xw(8k(meC{1Z#yUB-a4F_PC4PVV2%lI_P$SG6_fl#40SO( z?8T76MHNL>pJv~PHL}d9dk5P7*52FdvE;V!aYIJN!k?c5=dWKH3KaCLFe+MHVC37_ ztt*$NxkslPCP={2|I6&b6aPAOz&EAFJ1`biC$?Q@mf9N(gX^=+dPODj@+jr!2iIEL zZ>w~heB`*Lg=IsEScUyb7MgYIAeTLGiTRP*(x0D6zE{r;nhneG^Jmn^=H4R(aDKi> za(-!?-6fvT1rH7xcHiYE+a8vvp%UErUp2sa z6gw79$gn^H)D0PNnt&D%6p1r|SRp<9jahq${e_28FKTgKJ7LZeG>;E;C$&;g_>px0 zcTTXa-prdbLURb zT8&@_$emgsYX+*WwYL(99rdvV^g;+J-QE-t5&a6b_ns$LE?z$P&MSY}Ph&Taxs#%{ zKx})1^zPlCCwx2+gXr3l0TJ`(|4kkMYKGqo+{Fqn7pr&dJOTnuS0mB$S+ujCh2w)I z+UXy*;26`?P*(8ENpzmB&AA?A(Q`wg? zkuw3Yf|CdBC&9cGv|Jd)&?)WeF+v1B3(6s^vR{)Qr0|@KNYI^9cEFPp6+Ag$qUoYS zp+Dn1-xAsmoB&`>>CiPb}E1Bka4f_kRBk%;mfz}3%1M1G?q(|dc`gjf8@nXn*D3Te+1qXN@ z^D6AJayU7kTQ(te@xph5;*9Mbx|8_fN~w2RS)cQqH}{i?9L+PI7=+eaHr7w-T1Rc)||> zC?`9_o@(srzqXCv>ixxa8)4_@;rEMcn?sMT3|jF}*u#x|M!vZK7+?{|#1`}j$Dsv+ zvPtU8c^{0f$$EQ~30BKD&CM5AUcUzTN43*wnfy$&f-$k>y#M`VW)O4j)?jC^Lwkn~ zzPb#dJu+{llT}mdAo? z2`YQ~wQDtfk6>O0tMTa11-7${OS!ND%qz~_H(MqtxZ}gL)5D!?E=!KWT>iHD_9dK{ zf`dJWTY4XXlN?1+1`G`mYy!m zX~+!Sz@Sej`Z54azK{U=wg}?f?=mdcU%f0XkQiPHX@1tv3x(gRI=(JIqG^dL2(>*0 zF7XQRyJ2PB`Gl@*95}cr3M+7xtAlet;YdOkeiqFvlvv_+1XjzU=_NV!t*tWFqKf$ zyX!pfHKS_SUC?Wcw?+B|UuMu&aEvtVgyV_hJNQvp$-ckxK!Ho0p+L@Lz}&q;_O+u& zy3sB-F{qOt&IB84@RlgVXiB-}I5-7-7*vlSt$@%3a8(W9vqpA;UziTaNtz{}hlj5q zf(yiEHPxV90i+h=BB!r8?^O1ns4RV|E-<6mupc|w@R0Ux^KSjRuK9xI_1h~bsAVWeMP#Pn z7z}*<0m`Ei?0#@k)YV&PD>lh#i`Xo>y1Kg;dwt>6=47hg?iX5-6Iy(H`)YCJ@pFR} z=J@2mh^T_Y!-*R#j)$b{xSa8Z=XJFdq)XUn^}G6~?>=zwn2Q(>?|x_3W@rj?PXm-J zc>MU-!?ss-A^#5HW_F`hS*n`&>?Iug&eGwL%4c_7z&u47Z0wI&B9PYri%rsGGBNs( zaerq}PebDv+!8480|1BWo%21p&cJud(XD;`?aQFS>u7%{@({}^+^3o3-R{_4K^l)P zd!hu9MMnvyuIe|py*VfG&I)teY_ph8XV&%^Bo#>Z>{Bon-!uGJ4h=VuA__l)2$X4X zJ;sCuJH@GG5$u1=&zCwY$kCY_Ain?)q(%Xn%wv}jH9kJ>KnR_h5_u!yasQ2E{Qu^% zgsHtRcX{Enz-=faLopOKxjF4MeQf`eAo#6-PDNRoJhXp*$uoSF+c8HS) zCBa1Uh{db7-RHe7?>BR8zOAiql!-Pb0`)WO=mC3o`HDhR#;veK%0IQOuPyL2L17y| zjaan07OWnuTqd-jI*qPyl;Z*dYYEr@7H1%ckvLyq9O(X;w%^!MU*sa2R4e&+N%YrB z*WSttHQ*lst%(%Sa~b@3Je=oShx!k{pURzSX&#_#;_OD5deXlsmSJFKCN6*e)k$Ei zoR_~Yq>zg_xWE+Ah8AQW60@{e@olxA8;IR)@-i$ESzzBc%f#sDU6?!IT2nL9(;@Z) zN)_4~hPcd(p>hhOI7CtpkcdzWF!vDR(#-`lB&gMZ`nD05ck*L-(96qId(Twq?{27S z2ZC$mv&%((Z4fi>{7lQ2?+c?DA=qMIzma^-<+*$TPo)jc`5hg%LwDl;bo07^5)cw7=$xuf%Z zfjMDoixM7wnWJn8+vd%gj_bA_D0mw_IXq5rfOMn~QV1tQ%RSp^z2`3yOpA z>uqPI4!b!cJ-r5N7iLueNNJ3Wl(lZuBY&*lwk_{3+-A*YXpSy(Ffxc8nF;NCsr0fW z`VzGuw!I$5B|mZUWVHAfazbf9kX9*4#<7B|v5;Jzwgtk42M-V;R}z-c_FF-A5LVh! zh%tvrnJ93-jN9EB7(zCc)<-z6Phn;QzV{v=ExPB9K!yVtN`uA9XGx@y$VQN(L->q^ z9^<`_A6ikfkE{jNtBJY-^?_K;2Pd_+LsPPU|9*HYvt@6swVL5oeKC2X2-sc$cKCPv z=*$m;zQQjoyn6PqT9-9DiZVJXY|>2z*@glp#~tm;{d@?XDEz5DpoqlmLTIbT6o<$> z|Hkf=JS$G#X~R5ybNA36LPc0OXvKY+Td29Ul9QOmeOlx5o0pAkyllJQ*7#S{&s48? z%M@DFXMb1uuhbsqh~nHaC5t%2hq&_&?wmmWsGQ;RkT#Ml2E<20Am({pUHqFHCr0NP zP|v#MX88H32-rkIJs9L<^?Iu%LeT-e`AW%i*}DRG$FLnXCT5j?QWDWS=&Xs2{W5Tc zQeIyBd>vQ}&88g-f&vqPLRI{v9I8UcJ4RE0tOc&jzrfa3j^Hh3*Ulq5q%{i+;@@aE zs|G_mARvt68*1SgSmLZuVsoz`E^bH4+f41V@7-?u7Nt<%Rj3i&J&dA9V*BHY%S4%*J*z9M|@O#6EG)^z z>0-Wz>CNdeoNO8y$5TORqsNun0m9&TS(m-X&qmtNR%w7*H!&l|by*GjGvpmx{-AZW z_9Yc(*jrJIe>#z-DF&_Tp+ko#V3|nS<)2lad(vwmFRE>DlKfz48=J!OPgYYZLm3Sn z2Xw7M4Rasip)|DwZDx?u$3BVp3)JVKBm87^$Z3cX4GFYndcTdDY6#mCkh-U^ALRgU6tC9}5Tm?22QXhj!=b86Eiiztk1;b?5x{ z@>>4u8UBiNcumUx=h$UsAM3vY-Q%1sc)w7bP|t3BMoP%&CNqq#Agl)xWdW)Ip{`-L z9uXO-;j~i^O$XV-^clmAA?K}eW*G%>0VNqCV^agsM=e%S-lnS!dwesF6+@ATeNdW5 ztE=uIm(qr5(9t|Uwap&{gPCi_CM)mHwWavd6l$VVyMWG_yaf&v$aky1ef+3^n)V;B zT0#}@5pThTMK{FY&u@5Y?6ZLcBb`5nCmxvqqhP^23E(){xdoWwIdCE}xW)YhL&@k% zA{QdnZ2uGn;L0bjJyHO#Bq&1X$->Ugye4>hX0^>`Zt8y7*0vsVo8+JXx1=L}=aUW@ ztQ<4o26}yvI0yjGRYK2#Bjvx$U{IpP2n@9IM6T{dSQ>u#`jrtSg~FV2pdcnJku}79BDN3c5Rk26>|2P%TXb~nBy`?c%K6GH zU_WB2j*%8x{|>bBC$ICw?<$FZ16kPgRGG%@*x}!k`DYI;n8litcFk}KWR*5J_XUM( z)8UTAoOQFd<^y5w5lw|FnnzdZ2t~QcK%Sh{WMuSzaoLzX=6DqW8C&qad3brL0E}C< zM?nbvVve|T6T2ytxI*V)~6bfef-Scleojx-;Zn!udyYyOYecv;%r3y3W4y5;6W^JP9Wx zOuAvD0RkK>^&|HsAeveHy@y&gJHDW_tY<|~IB;ZyHvFyhD^qUL6rc%OHQRBHk%0@} z0w^7DDgF?Hxrr`@SQV>(t=DCul18RYO-#v~5Uh{*d16RfH z>24WmX((7WL2gAY3rPgFOM*H|TT)?nso(YDMN0%9A_Kzd!=6D9+OyN1vo=R`cg2!# zgB94l>8Y(2J$rxFhly{-IuE;{>cjZKgwJnUeF}yyfjil|vobPH^hp-45z{!GtgcH# zg12_JBB-NCTZE(m5&Y{`W`#7(yF&b!ca79z#CZV_EfI^sm?Nt}@-fOZ+$DxD9 z!fI+=TQVcV#MSDEQ6e`0)|iOiW~~-L9UH@C^zmAw6Lwf1pcUMWI_vh7l4o;*j9LPhJwt zGK}E&)#MJXvk=D(6mA+%!HT)~-xe+cVuRF+0Dtm2Z#)O8I~SM7h2vjhS2k_j*v88r zECWmbXcsVYH-zlz}iX@fq2ti1G;i>;HQ zVL)6$P|d_R6=`u1$jQY7NJ3PByQ^!={bUl)gc0osFBfNtFm&qcn}&on0@czVVuQV- zTm_7cP)TL)_2q1PBHp)co5!b*ES`%J15oU~XjDGv3(tqf1rX%Hd;mZA;?qG9Zbsk* z7+_Im#Xa6ct)2ATP4Do4CxwN;x37`1ABl01$9a{|J` zykG_+3G(hSF*eQ-;_=Ca2NJF(KJ@`B)|gmg=OWLm>Z(DlaPJ=DX_5avNcWopGZtC!P=z-k z9MWkp)cciTU@gpXqaYQ>2j-!eXUjiq>s<5{2*zXW}v*P zVqVz|ybs;I#8>iflsoWaZiT@;IFZkL)uNEo4?^_HtMBe+$LWDc0saNg(TIqMh@h9u%cQ7{ep7=VpvTfrhIxAW;@;A*sv8@qusR7F zd*7-sL;%Qwn-}`Qhd9h2GJ#l4Fo&~oBJ|HXzd(c$F zWw+;d=+`$g(=R4(n^L|T6e=j|o9^M^2|%Yx_ElSP*N28O!naxtc^~tYxKf9dw;aFB z)KyjYo4OX7Q3)B*u3r7UehZdj?I_Zmh?(^(xbPpYJ8^yZ`zR z9o>o$VH2M;8+4dpGQYrCfmbITF40{3k>X+pkUeKupzbY)G4PZ=9;MQ)ZOvr(^|AOr zIV+0c3m|VpU@&<|$=nAMuvochz%F;EGQ;yRYrN_!Bem&_-&3kx#muCFfny4AcLpW& zW!MP=3=JoqhOpA^=3&W0N?Y`DSGOQ|MAq2Cx+AAc2cG`j#~c~C zKl~RM=>5fZ*z(1H8=wPe0?_oo0AUl9lB|5^z>UtJfgyObmaTbm;nS6oFX=01oL$;> z1_#?F)8%4QQ|`S7Qn7HEI`x~N0~5j8dW2nV4>a=W&QMk-ypK6eRg=UzDwtRmK+{l5fSyfmz^9OPMVpSU2BN=`9}O>I2VJzs_&60EC*%2 zb?E9-4Jv;EaS;tXR!Jfq8b!~^p?W6#D3BS*5?72=wGjXEf5}U1#{x;P*O^*HQma84 zoS|9yu}+jN{qLgS*MS~UDnlw%d17Bo2{PRI6g)f9Yal&ce`7{Y_c)3gI5jh#a4RXf zAz}Z_{Knb+6nFO*H7iH#E`CnQ&iUppg8cC9qfnKxly}IO&%WX01#? z@B(#i>k;oe#FGQ0al)g)$3wWx=&9t5F9i?;nj968zGL#Lv!<`N_RsXn(u{aZ=K&e` zmEfJ;dB8X|s=c(?J?K$8=3L}QygL5xP)9=rPZG56Gs-NA-WqEea; zbXr*zpD7N80{Z6bD>QnC1JI{{-UX&1VJyQg+g#I)DFRFYfMT%Gvw<*`l=_6$9~&E} z#u`?Ks227!9x z`B%NuxwzFkh@ji@L}e&=_`Z*i&z9m#Zf+_Smp=czbu?bJ<|`$ zhk(vu@*OPE>aH2@ITJA*)D3(RE9TPvzQbyj*Q+n`ZrM_}JiS5(L*09sTCpLAOC2A~ z%zi2U`%OkWR@gBQl!#Hd7{NA#SlAIFBO1b&4Grlk1Er{!L0m!Ezitil)*Vt(WopxL zww}o8kiKa9zAtr3_^t9cf~9==$dbEjv9>`EIh2{i$E~A-Dl_k2+`U;$gI2MPtpp{Z zKlDv$Bf1jjVa40DGXPz#O8)zLh0!V1I-~RJpStehja@2nTFYQJv;4=EODep3<nYFIhJT znGN8Ore#>Vl%5-Gf^~E3s+xi$pv5%3X@rtP^IYB-wiTbcpEI;PDFTBWs$Gu02yl>{ynx&?@g*@!PseH&4NbW@8&dzZD)E@kLQSjdc(xt6|(J2t}tG)lcyy@t{h^UXnP34;z5#D7>=TQML!t<$F|vSfv~vvUD~?6?)CHg6Jx zm&|W*wc@*~75k~Ay}T|wQr%_KFLCefy=M+%D&R;QGdUBk>LRu+L2C5zWpN5fjBJeC zP7Nm?W1FA8RT_7Y1rRjg;qk8QP3V&O_V3?_8+#NiAzW)x$lyJp-GK{DGSr29!iowr z@aFJ`5RR;WLNAEl$=dDRY40(s;qmPt|K1?0*JjJ!Auk3x4SebrLG$&7Ei)(scOhKC zF~ttX{p8ib`-W@+R<-baQvxb~)0W)I%F2Ds7(gNp?8XkIzW;?(PQ0(%NO*!pc`YC% zgSRKNwJmH9GZU|vL`;m${b!RsrY=L}>yJMaxX_Tnzx83t_vIhQT}w;Z=DsRF!`Ecy zRM0p<*W1_S;f=-tMYa+oUF53@3NlcDs-V>+$fQ03Hm1iht4g^aI9-YzU{RGneL7;F z{4kQwCma5Een*9j>3DeyY}X(9oq8lvIPZqe?wq5rlK{~qP2g|^_+r5~ZkU6k!N@5Q zjPk&cuhugPYoS5Z-myefmBCxm+H8rSW!7|ohMHPvO9bfz!oYb%$CVB-5{l4dL|QV* z1!o*>KiZOHREcrSlRA%K)zUz`?W7OE2DO7!NoXy z`*p>T*7EYxqP8rXe+{X-wA|mnZ3se4coam&#=e9@;+t^nEg>p_goNzk5E_&&`<2ZI zIT%s+(xo#J!JwM(=O+R%MdxPMSD5x?hloh|jM~DyQE+I0(|}pss@JRD1sFKpTp?Q$ z;2fO-_y@V`J6vP2R{J=fCRw2Xwv7!4>&=CWz2$x-|FP7zfN7K?RNaA!*ZOxKhTjS^ zVBg0GI2gFLN&h1*VR%}#dROLlf?OSTVE=*ro-dzz-7tO{AA=uc*1Ds3e!l4dsDtk= zecfR@@7UjxbnBXimAf0Jx_2a<3}e}yF-Ga#!Zo0eCJe#&9=7B{DE@E7?w{$JB8*Yd zQp7ttusfX9_g+8yG^g3~>tnD+f4rQuh~3x?djDC_%qfQ;fxrgCS7&QLNig>G~FMPly`)&2~gjiK~b^Rduun}0Y@@S`R; zAL69~)j{sQKwWxwW`15*Kv7UY0Mh+*tRskH&i2jdigBG*!^()WhrUy?qFC>#-+wWe zU*kMjvmJkg;yhHH$S!j!3PPsTrJ1CdKa09vCvc{T#Wfno7z29X;SkCY#w+SCEMVIy zE*_0G3il4Lov(p^&mLl{2*3{m3AhoME-f)DB*HEDzm1`+WWP1Nx;&u(P7it>xuFv55PO>|(y2txS#mOU}3vh)_ zC7&=$3yT=`izzNz*X{m`aA2YZ&>m;-dCSAY3+{DCYGGp#WKS`(r=y@pM@!7bA zO}jyE$Vxa*ADJ}iT&6&XhI%KW&#%5n3by6?Q{_Y#^?e&1_ql)vYne`^uUXrs4f!zH zh=DE2BKtrex4LpJR^=r~x_Mvpail(CD?$pY4>ZqY%_%A=Vlln6N+h71yPiR${^d&p zQP#H8=zAgQqe_ON2C0JK_*p7}jjNvrtuOK1|6{sJ-k{PQK0!_2m%qtWoQhY-7O7Ft zQ9XYN)HV=cPN^;Y1y9{Nx&?4G9IWm_?kkFk0ns~pa?Uj$0mU6X(46ybMH2=_Ms4c{ z5GSOn%pIZ>SzjqD^ZhfKKNli;)3B(*aSTF|m?^kCBzzU0O>%rofXGbmNL1V`QvX}C zI-m4oC+Gi{W@;CPCNDSFyiNO@Zp%!TphHFp4}?p-B@UY~!{~9l2l-$U^pZsH3i<)Y zJG?M_g1gGUm9JRa+U@cYfwBv1xwPaj_}iLOcD$k4IU;AOY@eMFI+e?J>F3#<-TAw} z#Om?qpOWZjV{2XPQ2(;;^1d^#Z$I2Oa~T|ZvPshF5z_i7@JA?QjOVOjV~}Huc9I@6qU8Me)PLYmQ*+y8%G1&e0{4|?^>U7 z?y`pmp;%za#=JxIH`u1uK?HLh+iwvhiPsuJ1Im;)F?+Nq3wR1-^RQlzIRp1OV%3D= zwdm&zQVIrmMP>>q+(7YJ0Wip#S~*QMYJw$Yu=2|ZtMT1q(#?B68`WncMz&qHe5JVIprXirukgU*Z@uiT0z7`FoEI&;qMXy1|RVN zM-u>x^iSyy8FT{R^CRL>kp+!#ej*mFvPb8<@v}**iz4O+M2^?7PWZ(1C2r10z?e}G ztKi4RcGKb!OW1AN8NdCxQ`9gBJT{-WInKb>FXBmJq@t{u{@Xuu@wcD9lezSEhp71H`_l)Tn-7e;dVCuU z`TYKAQ?-)1`YhUX374JOd}=&8X*)a2YQKI!C)t2ZG+oG*3j;npTPPXU*iP==hK=X` zX^8d(eOgbi0bbIV?5G&H z7vDkN4_f?7$4`ZG_)Fil_Oa$tpD0s)tq!J8K2=iT`T3uvYJM{z+zWFy`>lLD3XRX9rP+?eZI@6t!ld&~E$9xm|LGoPVdz-{IQY`m#am@7E%Uh8M+Nq0rp|UXru4+~xW7 zKHi<^#ZRX$pFbF^sGvZ?AtNmfU?#XT<}V2Zrkyl@ci?~*`+Kka+@v|de1Dz2n#EEX z8@e&wf?33JR5`K}=^)52@s_zFvgp`Ss0{8!e{#HwQD{H8E~&c=_N~ z$e-yjTAH`Nf0y5r?ux5D;j`3~*0s9^I=kF007yq-L&nviS@wtH0u>cNl6cTq1dr8(R4p`uN zls@-u1FBaKfXpA2tLvmoNJz+KtkSZxw|!>+QmF zg+4J>?ys-U?sI|9yMIU?f3f#MUUv27!8YvqV9N9;xqV;vE}Hx=-n`@rC}Ls6-Njf z9T{6sQ-)SoAa zHn6zN+}x=Gbprs|=?%bwc0#T4+zGRAC}_#9Aw|WPilcV6wjaP8Ni8g7MUO*N&nU-& z6uxpDL{NYW)PAVVFvxt+Gdb||5wOFK-d_HVk4K{P4X?@?#kOM?;a83@mU%5xQ}vm3 zO9!E8t$f$x=>@>7%E& zH-kezdYEvPR9D~Geafs!-B<37s?@Nyap<()vi$RV2RqMPwyON2sH8+RZ*aI$dKd|j z(B8_g`wRv}PoN4WCN*GKfxw1x$n|ffgoEzDhnG_C{Y_Umv$DC5ZjTeWJ~w&HFtv}v zWn*`DVqim4-waT=%kP|L*c_$=wXhvz^hb!< zDe@y)#l-uR*khMRG!69hU$;baGz!UA*3K)a9nbMQpOgJ(Z+%Nken-gD&oAi2jPdu! zJk|By-+0!tc)kEmWn8;9`{tP5hJyT7vYciFX&(2b`?Mb4(b{KkaJKU>4r>t?N^hVEzl>klo$7 zq-;cI{eIXNG#Jf1phV24U12x2=B8eC<@T{ zF+(C*4-1^%I|`t~tzMcpN?1p~Y2ur~d`PY?Nl%2*`m?*%sSbgXaQXXnyJnM@{0f&&oMbUyw0 z{p_xZ`R5}qcwumlbeYmKnF$YRna2rtPW0i-e0RtnZtXp>5Un2d=dFzMG45N2xz@{n zf0IJfA4dKN7iW2gc5LM2gl7f=^3zrs_fXuDOD2CgIeO!g&s1@A=TJq{Z}Vnh7xHJO zy%4T|hlSGjdRMmI%%_C&KZz6Gt6jH5zg#~e$Bwbd-`_2MwEdoKu9BjT84L^z&!M&I z?>9uE2ca@hnB$1h|b8?P`wFT9~YwTZOtVMQjfjoNfOZ7G3`EYM+ zRH7LFKRkVRJkWjny;7vKG)UoAMiE6Nn^F{!kdZCPmaJ?=MoW>EjAUe!O%f_08I>&~ zWRvXqJMVhFzdw52&vSQ|&v<{XajtXD0(78o#%eQj+Oe$48pKUNm}-)UN}6$S;j z#FRE}?Gd|oPRG(2ic+$;3EsH9)!+cX2*C4N==dM# zr2l$d&HEEFLX?)F!13SC^=u-FJ`9P#Z6>QO%4g1MpzyLd1@Di8+}v46R1av;R!C~5 zCx4-P>%pI&B!OKe4oia<-Ph{D0ZDYKPD*=BBGh2~9I98)lqg_O`}*rLOht|j1oH_FCqj8th*1 zcVF^MPAjbX(LIwaSbb!@1=85I-qtCV&tMg?}bFUTDomU=OSbKO|Lxm1`?kG|jJLY)(l4Cw2EWH`SK<5SlN4R*s?yC_wYi(Siadx>1x0FN z;^6CB=bA%cDg*%$(ibYP7wwV2e!0`%#AK(NR}96jtMH$-c`8-zE3Yoq7Eso?GLuJQ z3kqzEhfrj814p_Jz-?xWm85#!dOil)DkUe@Gpk`D4rxlI6Ij|ZLCpTZ?gKB2j9kbz zW@xtnYsGgO+!}b{gO8*fl>@xY_JH1IE3EAk5+5IbYL~Mb2-50>wudN4s)otiegJlH z@$ufMfF{tC{ek@qEX^%K=H5?SJFh-$D;#%I+V{z)*TR?5oBp8LPAGQ;N|K_Y?r`Gd zsSSLB=k88VT+`NPVqh??IOlzGczz>&zt$It-|OTrU81-(+U_^|@gWm)IsbU6@p0MP z@3(dJ^qht{Bbbvamgv)<^u989-m=^&)QJ9%ur!@x&UWIBgB9%2sXXV@)k8@xxdkh? zUcdm5F-FF`ejShy<<@FcbS1T)Y#9c^v8+mC?)b#q)U*dE-_XrY%t$A&S$6BQ<|9TZ zmr3RQ-P92hIr7UQ7gk0QXdpwVnQy)0{q5I1SXO#Jc*XAYgX3!2cDrC20%yF5@XjS~ z3<6q~-0)SoO(*NFu}D8e@4T7rbaND2iq8=f8vdhLM0po`mCOY&SijR^u6l*A3uIv)d_j= z?A?a+jNKL>e?i2ww$+>B+_lhc%U0l}5jU2@TKU@mH(^i#Du@w`AKxIOwp&*)&1}h3 z_7t0e7F2v;;J{enFfT9`@Rx2mJEQM=r+iWD18lNdQfD|%PkBve+b240m(l<^4pUb} z(&DS+LhjUTKK$xp4$d$C=UF^YvfltUjFC`V5k%}nlU6yVKWm654;oL(KkvP^6&rQX zouO+izuzZzKig?g7X)M>*1B)s&e+-I)Xc>D?J!xqDDxr<%#chw8~Z*z!L5IPNAc=&{}#qxUpHm)kd7oJB{3e~r4D95@nknEx<{C* zi~O~Zpk)GrDyuuY*XqqBlRS1R|I!6!^9&7KSjqCJRZ-6PvlC{wP&Np+&tNmmAHaC_ zt=Ip+=As`~HfC1kBafF@Hq}drFHJ}x6L?~;CC+=EgJ6t5`ul^a;oyfBAeoNttDmqZ zd|tK**uh}lpVPuTGxc@OZTSR+hKPefJ_d1>hCP_KtZQv;gY4oKMa=HvOCV?iAvC{t ziY$#P)l*cM0n_c-E0!yz6gR%gL-=XY@JNSTViSFVv|ycA2HD4Ja|c)7SXAe3Q)Het}ZM#45}ibYOtTVfisPD*Dws6=gi z0Z&Q`@5-R@EE;u6e*OTJ5632q1)yr7$jQm!zh%9RpMe%%0({Yv*plIafwF2pFYgzl z4OiiF;y#Yz-DSnGZTgV%f8uWcl{07e?vkOfPzD4mh3yH@5_+Nf>+^p>#;rnI>2}vnvg!Qjs!UG0PYHva2H3$NF`i+ z?BN4^brY(UwEUip`{ZQ1`ol{bmJB+C=U$Y|pW_7QLO=2KSPI`8a*@LSI2hjCV5d(B z;X&2~-W7bxD?Xu}fgKi#D#5Dq<{K4z~1 zQETEagq2}f5@dM71FW+o0`MGMn2-t;+VLgAtgX9Iv%A%dnt$n(JaoGH9lK*QGV1VD zFhG^MFa7e8D#u?w!226mcIeGHJj;EXeoAh)YeHt`6V#V|!*Hj5F%*5Lair(8@&($7 z@~#hCKGsxreJDk(co*c|8&d<9;?CX&e}*{H!K;Gl2dAj$zM#tYcRGsv-Yi-Qy1%t3 zzq1~8uPSPqP!lQQv*#|~4eFh-rDZOvByyQ2q!2Mx@8qLHEw_Qg%E^Jy2hLPV^)DGaA(P*Ux26j=*`tli|V@Il*4a{ zHoLepn|5XgCGe#{q*4IAnBhsbosR-mM7XS9*Y=)fcAnX0^Yh_@l@~p4TPpnun{+($ zeykNT`Sxh(8l8Z_)vE;fFv?a99m;!YG(F(c6L1L*4bYVq>1@8CoEs8s$~1@ zG3Cc_%lMeb^68{T)jO*TYHL?!-Gkch$vo`&v)8IOt<7?{Dc^@5Jl4HvxZYcS9;*>ye;P8^zb!pZFnwW)=le(@qJy9tQI~zdHII{&%uMp5Hh;%uc4_aXJKKH zu&B-@AAwuI+Du;FwCZbfWvW-NzPza|K0X_zl$^_q83cVtiDSFq1;)*$o@<%{If3P2 zDLK*tlCv*c%A$XZIpP08>70GVqUhcXP(Cbeo8tBFR#E>nP{C4BlVq^cdvBM^lc!$w zrc{rNFM=r@0n$n!I7J?+$?W|;A6Icky#}7!-6;eRrpa=Fyp+<u|~=B?Q@cnhG!{~N$Vx&a`tw*oo#TguYo#y?e zy86J$lTAiNrFxR-O%98~ z2IcM!$RFM_>}BUbml*R4fa=k(3zBVqd%myt`}Jjj^Ww+p-t)&#oDkei|CMpKQ5JA0 zY7kLd%!8vA#lJN-p932M;cobbMEs@TfZ;7(MF z-jBCEpx$yYPj2h{mr4ie?4SMp(&!dR5eYyjLcs@f=;CrhvZOkJZXLzuQ)UON;_2NW ze#2yZC#*7@eK_%sr$X)S=1fcK14BZyWnyU=Ur-PhAI|~OkVR4=?8OmupdmSG^qB#s z(azu8U=;=XG=H#OumuD@8CM0uHS%w~n4F(Nee)tQ(a+nPik8Zg&AqTvSbr4jAdqv8 z46hLL^NzPsZj**{Q_9h){?m79%#4RcexOuwbrnlZO>Iz(2_ao27grBx+XAkMsRSR| zu|o<1w-Cx*JkM*NvjQ}=p6~9B)JTmVNsx$Js*vzzaT?cLQ4kguwqHE+@f@3b%~>C^ zffVq-8nPV|)=f`z2?sxB6L^`2b>4)6%o}&T8v-tHRt->me2x%N3tq-o%b)}R4SNqz zXW}@b*tiD2PTacf+&tjpvR84op(Lyhl7t;<@sY*#H5WbV6~S&{cVHG0?2VzQZlgF z|D_CT&&gM7*`7ZZweDE>Z`dYC7f;a*u~1d!Qmwx<*K>a$AfWXF#V0>+V(K+e2iGUq z3C18nA%)@nhKf4AW=kd98eZZKgx%q|0^+mrcXsp+ks7kg>rkU$o=`oU_&4O@hqA2B zRiJSLozSj+9buJY=HdGGv_sE(KlAqd?Jw(nRg*8%HR9%~DDY7;Vlt052xBILqYUP0 z$tqm`7*PzrgPMakngz+8=qaIJj(hQ9jj^2UOmD2Dvh8sWPR?&UJQl7gBHIA>K_6V# zxCJiX+Gsm~OJZeo!4@CR)0#&HVeX6U;4CVrt*s`5cIuW@TYS4}-VN5)Ur`m!r5mY+ zu?SIUzM4(A7uJ91ylT;b+^aY41-}e$ZT>M~%GyeSn}?7IW)CS*F!&)^4kaSni4#Hi z$8$_u+e9wlNc6;je}*zX*NhfS0kA-^ePIu3USm_!GW2X<`{8&{68R9OZXM#0?2d#= zjtqjRk6Q2NMEUFG?kaNuZkpll6|GUwx({8>hWJ6O`h}oy1BQwKZ1N*TTe`bG;AaNT zOYu9iO=k*(*I-i^A%K52I)>RRibE{bOlaCnMR_GPx4hdAq+kqlv0kFBD2U4F7&CTh zFD(5L+(l2R*I<0mb?Oq=c>c?d)$qIM{rurSo`6ME@8CFC1#dVnJPb@L86HZFH9!O5L?sW)1&!B+euqEoLZB!tEgY(U{h)-i_;xBL zl=a`f#j0G_grW=7H%}lW+nJceM#LAdaD91^swh8&EjOZlPF6`#)0vt1*9^N9b^Vp~ zS$Vc^7ibd`6_sx9I*Ul_ms-x`>$XrX~4)}MMu6?Jv} zAvlPOJA0l{`&`0TOkmKnzs$)A0&u^%*=FB{MoM~T{&mW>QGLbCQ)97JcU@DCTmW7` zv#(g^BBn4rJUr#X^DPYxWtag%y)!<|=Oirp`}B}E)f@Yfch`SPw{K-WV|QwNc*rcR zdnxdu!Q@2#KxQoaxmgH2wY~wbBd{!)=NX%ruwpksVC8#M6>KJdk26vtaW1>|9(kXnKJt#1vpD#mGp_mBfjWub8~}HAefq(zDiG* zNpJev&~T^Ha4l)m!2p^m3~)aBnmK=9Y|IkzIUR@x1@b9CMX|T5cWH)OgSgv9e~ykm z)JdmqZM|dLn2Ums{1rOsc?D?EpiU)T*O2yj&MaS-lA?sUp|aB*O2XcTDk^;W0*7+Z z+i5D#HCZheBqb%sopSPWdkWkoe(XKjGu`1(b@Xf>U&QlQB_sS?s_D`a*JSgya`T)j zB1T-ZAjZIb$+R#EuZD`N*$NMgl}&238+A z~J=T6u>4Ml26MuM3K*ksckTAA-xh-JNJ6VqW>y&Z@VoyzNk9;9&|8rvNJQcL>{fLY)`RVk5XLkO5Kc>>DBwwDAu--p5IGF!jl!jx6)?*tOa>C+|(gW7g zeZ_`Wgkzwj6vOuJyXgt!1v~}rkQH(LtNdY@H6ZlhtNkZ?S5XZ=6lC(;NIUW_Kb{NAa;|Tg()et9weuiOoM_DyH*On>uZ!q^kmpKZzIWU z1HVC1_u(MInGTO>v~}AQKsXL?T4-o#NB+bH+Y!6&^o#yHiUDtLm~g611#ddEMic#GPrqUR zU;M^4IA&_rz64H&NEtWzChPwEoyfXI$n`Yd+_D~Tb+Rpe5wmujM{}Yje|z2zPCSy$ z8)J;VbD659#yFOFi922x9=Fkzi0YPpD-u(I${L;hX2J-8?g67`vU3P67f%U!B4>`E z<2;6>AHLFvVv4LH!EimpyoDdtkmzBqB76_Nk?5{e13ZwTC}*w=`~v_%sQ}vA3)~8s zeQ}fzbt7mzv_e8cc#~w5o^5<7O8ok;SB{I@xO4Ezccdq#-0(qOSM!vc9i#94>}kw~ z1%&<$C)xLm{`~0)*VVHu<%Mgt624wiRFuT@0EK^*p5%RuSWr6$$yx#mWp`x4rvoxn zO|1z&8`Su+e9~4A8Bg59Yo2aNatl)MY5EdDJ{I_ozT#zgYdSR%Z9jk0R4p~e`r`xp zpwW=3g+;FQhqMDr6k^mcBqEF^M+_g3??EAc0J1CkgME(mSPsSN^dfnsG0J^K2=|LM z)u$IUAv|KZ1VZ1_q3YYrZVa%?0UC#I9I<8#vuN{?ph!H&=OE336WPj^jk*Amm;qNa zzb)!?jgtk%?&@^O9D!&jz73yA7H2(GF!m(ibj^3QHuF5oz^q%pd*sBQ^z`?CBtFJi zJ5v{|F6J<{4?h6aR-H@fyHnUlj5PIBkn}#YvlSqA05K0AGB<-mPsiC*RY+e!Z&zHg zyKw`~RspCEZJD#{ea(zGxDZwYcNodYTzK@zqRD-(HKo3*uFj*nG7uG$H#!KxrK2eg zWwG^j8G36@VC#Fy4OXM;zkawMICA>R9owj-yL837VMxH13cDxF5w1gYNXpe?36_Q{{htzXv zGK9fRP!-Jp24s?&&IK#47MhHY6Mk8ygo=Im1rF4+=neop(-rGjef@}>eHSbPpzrhc z71%_uA2XrhuPxUf{i@yZ`%lzQr~V7+{`G4rX{2=&y`Yy=C>yR8j?fj zhlhqt5eA6&eAr2=$Tt+kP$%SFVaYToU`XZET}aNv^98DHKH#N}S={Im)w2|CqCjft z`%TZQ^$ED!?c5hmKoBabt2d#q3U@Ek%rWN=!WZyd`_VgkLq&($O(S;o*U~8h+plEfHM=Is^JHH7i3j1w~^9CT) zH)s0^;^+fvetn)^vD6qBi8F*zVgAtW6ZP1?llc5ldOUk@fy_=9~MC0>q zA<`l1Vxzz2GIU&a{VG4_y2Qup=!l8N`GHMGqFsj$g?r`1-IehVt*N6P-;4d*7OG-^ zC&4)ILUfTgC_3VZ-IfChQPRs&_X9qfe0`;vOM6*Pt}QMnXA~7pVchzlQjf~-LH)iP z7y|>0nNOx&jC8ir`1J|>`^fGJMbO;qInf&8i6Kzo#iPLXfqkY!a!UykEGt>dwqf(; zoIxw#SFZq?0vI>|1vf@cQ*Az!c&=qS5S`J0+YaqAzHuNS=tU`+D==BZ;#Ks}U%!1b z3|z_~$Vp~qeLT+{R4bsv;4mTVw6Z7SeVvn)EyLiif98;KJWQP^B(dTb{9~cx`kriE zH#o64rFgbHBrgGl%cXK zfnW1v#P;R1!a_y~35jS6kFvN651Ae??%hkgi;1^Q>z6Z7wRG}Y5w5&%cM_lk*!yFL z!*!cQ)cZ)9nNxXV?{2tn<>*~i_wB}*_#yVxtlfr<2=M40-FHbd#}?fsY7g1{uv!lr zi&sao1@(Vu(&{^=jR{j+k>ajSO_T#pWVI3UW3!4Qq&COk-sCpuBiaBRVFYp%MKG_n z(;(&cuMNH~_>zW(gW85f#Y~A)ENmv4!j4d3HcVWUpkH%+17o zIaj2`X7}kV&dx3{P_eLF@w{_%-TD`Yj#PmDrxFpnuEz9){LhM)au;H)TaV+s=ns6X zHCNM8h$u^Zwc)bz4%6iOLwDSHnwW-$tt-Fep8poErG3b0#c@bAB|lbu!~~))V7y(u zz3;L5LCAPDc-jkNzS~bGr3-N&Fu&Ff8yG=ay|aE(?8#t!fAtjzAV{l-63;(=l%~Me z$y$rN4x?Y6s6w7hGMlpnu3lyJ&a0JJeU4kB$UtUhofXkR+lRK>e^UY3y>ad6PweC{ zccPlT3)%x*XU&sR0ezAEbZl(Rw8c9+{tm>n{o#!OF4o0IngAhx|B4E{F?Epd*OzW> z4ZkYGvJ@r#4I83Q2!=Lx>Cv7#wOYJVUXpt1ROk`orlhpw^3i6#_J*(45;xZ&Mqkp5 z&?-=rQ&-oVT=3x<>3{X=zM5coO@2b`wy9e89=G04>|(3lVaE=^CCp^da|gu?%tNGM zl}rI%V{^u*!08I-ql5Z93wJ?@aroiL$>K7x2AN+f;cF%c-@6a1dsOJDs}jXG?GBJP z&=jG7B+Cv!y9A8m>_bk~R3exGFlJFyJladwSZvXB0*KbN=BrRHA(?^|vsX>6Nj&j0 z?Z%A;*xQXr1F?!Q zcaPkAqhA*ElK1ZY-JV6gip|9BZgcaam(0I>32pB%q1k-)q#aidw^~dTe_Tbyo(Cy5 z1}GcK_v?4Cpnq6+h*1rh#k06hZAVuI_?ZxfP<0Y$qHzcvtTZIc6D_r`0F2KI43V3_x5ch=HXM0>~o4ghlcI}bHMZoZHN}{ zE6cG&{Eus@p%_(NsR}*r8q#=7MCe77@UG==i54eAF9`nX>kba~cE*z$927LksahdO zoc(Couutv@j)zoIdjD~~+%E6vSY&@-+NNL8xi5&Jql2#~U+;BcsJ3=nz&BoAi=eLZ zIfpjkQ`(m=lYMI;_9n z2qN%NvP^bE{Yl_SK#{@CsB36AjSvEmb7o6&C$yee8(x7z(8AKn#3b{)o>W^B_ITFX z`;Clo$iaf){Dli_@ah3%gF*e;Y<4+(?DtV}pc6ICGcA1e$`=A)Ji#@Bc!a1s3!Wx) zjIV&i1U7W-LER%@vXJpIeR1azx8IxMI;h_fC+nOhoiUYrnQaCH&2lM88}+hdYj8ADdJd`d6N$NAa z(!YSk4XjF^92QWutLfL_?oZoBP5+mG{Q1{^hd}`4(^IaiEG$vm^9-7RGy~T|iTbn+ z9}{j2;Y>+eTORls=5eEAn##)M5R;K^)1Ph`70bHy>q+wn4N-tE(Aj=S%D_|C=MQV` zsMR|<)w8G7A8QCUZ{F+zS06&ah#1R*w+|){uie#Bc6m&uNAxgzCH2(ZB@G z&42p!rzY=sQzcmy`n6LtXE>;PKEn%z%;xyXlX7?M=)J9!8TbY;qq_0);YrYHw@Q-w z7n>LGH0>WNr^QZ;kTx}nUuB6@1}w{ zL;-7daP*X%t`H#xY_+!R_^f>?QH2Z+Q6my*THh_BEDfPxs7+w6A-g{(!C&7BFPyRq zcRhBqWOeDNIlMRf=*0kIsVZzi2dSk*r<Fx z@dl%mg$)>(>^%rkz@LHI6J9@BPT5_d_>Qgpa3{kl@rA@JNh++xydR_qNljK2-7SZl z@yBj0Pd7Q+{U3*CR^zbi2b83svLnG>1mXv`QDtv|c$k}^<))07)gAN23P*Gadp_T) z6`Q5VfP)CL%fup%Ii5S161|?r&7TCJ;_`<+#sR z>&}(4th{4cnV=>D8Bo-@EQ_bHgl4v+ZOUMrSC0ET!l(Fr?+(H(PJ6px3KbY4VK3oY zg1~J^BGiqKn^M&?@665J(sAqy+LG4^hCk*sJN_;EYO}Diuwche#_!`V3f$tq+-jCS zJy-DXOrwQ%tiN3a7%a`8K=t4WpZRO#hN*}l76Brjn00adAZ=~=0~~e6hg6=W|NS+^ z@ZKzEcVfy_jU@%gVcWb?^x4L^kY$jg0(}?tis|1qz%> zqrN6R2grl0v37zKPt0y}`r(1w@wOmLqw>HDF0B4ZwlslAUt;V4qvZo26=LzpB=$4> z2G8dh_Ay&lTtBbw4o7xuFw1Gv!D4X?sG8wI(dqJM^KetTm4g8%ZaDqz!abOBoa^OA|O zO_+RBOni-6c?w)?%H;5}33$mMNCZYiq_*2VxjC%2}VM2ou-7mZZb_t0n z87!2>?N{|XH}0ygEyi)j)pvu}P*?aCVnMVoO`dqLg7d?HBe;kixK%uB&8J;_zXM)1=X=XL}?4vK!mF z3_<)PXb%q1v${G(p#iwmD_fc|UB(TPx z?EiX$5v`=A-QfKrZ=3a3htNlmZ=Ts{fE7953;qK%qCFtP{c0*%A=(UW@kep)6GZfZ z{snPwy+el`JzlXs#6DzMI#vUI?-xg5AiBEr2c+o$6jnAZ*Ft_1MkFfjEr3|L+Vzf3 zfQIFZA6*^LYTA2va zAh)bKD87{`7)nZ}XvU5!r($Lb=ux2Fw8(Yf;Ng)Es{!^D2E`646oEzZ4xvY*z-Q&O zGb)Z}gCy8)K8xhcpa=tT7X4yY%WgWlm?d6~q&S|#l>-oy!OQD@i+OHK0!k(!xCR}8 z+42rx$?xJ)Z5h7AvimX|N7EvS>KlF(;2`XQQ2xvruYVi{@14U{#{l|e^(vAad=H1W zvbq}OwlZp2Ma4P~F?(dBlBK>Q7#M+OJy9XCQqN&+Jc=-h!uxHuCBmWt zfarxT7eL3xA^8k0q`9R878&@9FB~kH`*0*5zujEoE`k65O1>-^8gx83SSjxO;l8?T z-^o3ErU;}%49=;6TL~$%>HJTy3Ae33B=kXJ zX`?tj76D~1!YZ^mnXZfWBwxT>jF@1KH76CPEC%Ga_&ymt5&T^Mh;F0rAoT%1 zKR>F(Yxuq;+iG>>08<-#A)1prF^#0~bGkP6I@?v5PBzH8H%-2{EaF4=YbaDgSfFs8CGBMQPK8DF>uQjwn8kH%R2f8M=bm`2k3$q>cci z-q-?u!ofVaarYPalUUfp9n{U#Qsi(1pdoBGt(&wRo`i-H8qN5dKU<(x?!&E!!n#SD zx%?U8JW}J+r|;1)RFl99H6`LPKGZGy1f!>{-M}s(Gshykk=xO#$r?GPyRdXd0ICP~ ze0&;DXa0k4^iW0;b8Bl9Fkw1lxfM4|97h$_+QudX<)A`AF2ldjJy`iOl34=Ti|p=( zK%*YmJZe?w8WBz~j=_E#PAGHV{QkICU{_=CFc>y~LJMWA??2LTi;OLjB&`P3F3@(! zWFMb>Vp>`}fWWU=O$a?+89^Z-2`VO^p9?8#m=dhaR_&h%3YvnxwaqRa^%lzoWW8aK z>3f`sHH$h+ovX_%sMjd<5H6v*j;~(sM1r@^o5!B0-Mc^Hb*Y!QiIKa-OBvwT*H%$^ zk2v-TKB!OIz$B4Xk-h^8ckBI6E88z2bN(bG5e+4!t-q+I_TdK;3dhMBJm z&O~`kRJM3i$tu6M#P8lg;yt-OVj+P#K%h86ggBM;E#POuN%ky!f8ltWfn`UShr)+P z(c2k{;?*Afm=Wuk*J!?>lcn`6B_0A2%YzrggzdP{Wsp0dsUsN&pwAY6t9hNh52Xp$ z8W;ccmvKvQXs9pBCVb}rrQjtStzsx=XV>|}%dUyMqX@7b`?k6%C_MTfpA2;dKoUv| zPsjL+QI@}mffDTrjHbzX#@Mt~HJ#pT!$BB;PKS@#a_$`N1sk@?UjEt}2c zHp!ZS^d@c_PTr@FAL|9CI{Fa5x+j2L1mcGN5Jd1$uySdfU3}K6gzZjNi-v^!V zz^sip=t3li3&EDU$Jp`qvflXC|HP&kXptp29kS}0SME?~uh2q3O2!&+u)=JmDq2<@ zbje5HJy?TL5qYbJ;2yx3_j7Q>e_h0+lhQ&WJXpMsZ0!R8Y2&l#@QpcET9<(ObJL_zfjH=S>mp)r7~z{z3-cKbgiAeO^eX8Gsa zV(R@2%Jb+QyLJ(30ihi3-i;otv-^GqfoxWiGcpwCDUJg^RghRmnwAJ5hq3l(1yxWn zS{oZ1-Q?Aq8XL*xKOinpO%iixLX{nUi}KS2&v&1g(^E`0u&NSIM_>^$K;Qy`qEf>j8i*8=jMvlnjfhAg`BptCP?f z+dD;JxH!YbE2mG?=AaefA?KOZS_3${pUX&0Yw+w)|6W4>k2nDN+=Xxf`4$MdHO{L8 zb~xxxk7mySzfOQKa7rdl35KGdL6$lCmt;hyLjQn1+AAo}F%6}#NPh{m<@H}iviJVs z_ojx1vGM_p<^m3joslDEu1jMh*G=5(bWxL(0D25cYT=A>dEFKzqwCnW3*Wfj4y)^h zvRwAxU$#xQ!!j>u_l}5B$~yE-gP9=n-Urhk{ z>}7=5Q~9!13Rmt%wEU->b$v76AC5^7wFl%x0YpKrIok$av(=m5RCT!xgDBJq@d#r^ z$mqRf<4$912s&y?ZO+8PKP`DhyZW`+Yk6p7(NM$ug#ca@s5h~=k1II`GNC-?O|4YC zBqf2I4ZN@ls=P|XX<{J(hMw_p3zJvyE%^-%=$0zO2vAUnjtCz(T3h>;`0T<$z%ZJ5 z@?=nltQb-A7QZJ7kAY&hFTuUG$dK5|fQ~7Alvq?DO1>GeKJ5Cc#^~7ULQ{#kWfmS4 zTwd;C%1Gp)l1a&n&-!ND`Q4?PVY0^nv-jtr2%!kav5AQ^sMUZd{*Q0Uj=u68E_H-h z3;VwKEUa&_$3rlHcuc}}V3!B@L6JxkmYuVxzSgyRAHWZ2W8#RQ)-cLRh0fo^nkXm7j82W|wJ_X0Lq*Kl(eVk=I-=+ykVm(= z&r#yupghMagfHMY&!ZSD1-Oe%Fkm7kRPbp-s_8OW$qDQLb+Z_NHFO@w>V~HYYXU3P zi4i&YVMK&IB?#IoX-aTD;+$5>46~69AZPox0d&)+cOTvw2@M`+xY!DP;%hD{o?!{^ z;`yt*i2D!LA@fyHmxB}?S0#hIJ&^e1c}7}FN-xw>?~IQVX&u~5ou9tSnWERpG&q~E ztD$&QyImIyJ&U)IP?$9s#iGswZn$P@p!h5(NOg_DvB`l0o}uzt0jq2Ds~=YTagz5kniak~OfMbDm~Ez0rQNnnzMoL~-%8-z+g>Of$G76OlO-0L!Urw5b5`pqoxiNkL~T9V|$~ zFnz|#JI?RlNmumYoV+>)^+cw1h;n0;>x>3sLfgx$>Rc8@vf_3LB@>dZguXVjR&hbY z3ez@RH(D8wT*DFQZGnkZeL(U07<8UKd%5qqV6}s;Q6B3K8lh5-h!)(%)*QY1krrkO zlw>nKcpB#bo)Rf6YDLhG!|>K82sE-_z0$e5=nkja3Fve$UAb~kHf}#WeM!rMEz_1! zS}-f=$Es>7JqR5IMMU!2DuffoKyrre%b6+9_@a}#1GFRtigF4H92kB)jgz~3F_=SWlt5Jd-O*Yg~<9!PtBy2i* z2;_0_pfA)SKin2A(8Q3v7ivj9MF%)Ih`$+_>hqA=%Ag3wDM$Rf+52fbf!_jQbb>k` z=;L_8^~Tkdz$wfIC>ItD#MZq|*7bl*2!7eT!7wt$3@XnggGDEvW353 zeb8=Sn%af59 zpAt5+Ts_L*k-Hns=Qmc|bpG)JeEJ<~QAf13wH+aWn`^0clSZ8a+8gRBeiRo3`Xe7> zcvW-hI~WtVFa2Z@{r!Fi(O|Le^4Kz<;KJi6l{6+F7J zD>ubG7#suYrQaXovR3wTyQZ`$hoy$A__?V;#JHrNn3Plo;QhMFg^$$3_wJR>8Qm9G{O{)5!U4+&j=mHSO?>0vJLF}I z26<0ho(*0m@&F~X6n1}LLC|{QzXQZ}>n+-z1{9hqCflb5Ui$aI!uFT1Q@X?t&+~^K zG0*{=3G%|akbnKc17pDXgXv+Rp$98X@!hx@;JevWuiQv^a5N}9BP|0;l$S9vYhTvC z(!yneZ3{ei6K0S_?++5~-}~35N=qTx>$Xds*3Siio5+1-qJjfBdg*QC z3A11(vdV?;x%!cJ*oLxgH0%Ngzy*pMpoVmIcJf*iu^LS+bcKZEmYPb~`yeQQ+l8Sg z0LB6tsWTtm6=eA2WUxc1Z%9^NHBo;xyoO6Q_z&GE!dK{GY)mhLe{25Wz9iAb#TL@(oSyqi)## z3&mB{G%(j@xV!+qeux$e9M!T`o$udw1HXf?pNazLF19&Lrt72=4jVjGfa1=guT*iwohK{WWJm`pH&H5MhGq4=HIe2zRNJ@jUvQc_@B-WSvle{GYOwquifG z;>Q;(*7ahr#9Y8P?Jk)AH7A<3K~5fc<1iN&*$RpTEAt?!gH^X3=^a21>8mgMn4S{F3PjWaSE@2hmd6v0z66&G|))d zl|BySDg!{q^X9=qZ*bK|$gJGATh^O*W4#bsA>f*1=ou7rNk`{L>Y1N-aV^EpC(-`l z1i4b|AAODjg_ZR-T(>F6KDd~d=-b)E1nWp|H}AJo3X2sukh_^g>>)J6EfE#!%oc2z z@fxrJ`vo>-6zC&HR!*VRd_Tc1mU1`adwV;!@r4D%HV#imj17Y^jlP;R*_rETa)eJLARLYw`DMKbG zioArA@m}#d=3zGd4<@I9FA-xQa@4WU=m|`%kgd*x1dRK~M{Zk~4v`T)c<51f?AgZMg{nFAi9h&{iOz72e}jA8C7em{`z(6{&$$dpf#y9B-4iSJ^zVNbGx~{E4Df>W2>b=mZIYG8aK*~_r)pNc|(sObRM@;OfSio5Tt&jj=g_?kk{Z7Cmn4hTN(NH~{J z%EJ>5_E2Ha+;s$h!$-Ky^+Vwi1GOMxcX~z_2!sbZrWXm26(vSvnJH*lc7^Gv>%hIo zf~o1knu<7BOjh7;LSq0t5MF2du{!qaGMryvO{@>;q3e&=QUG*d9)XUHn&80LDSW3_ zh3Xt|HBcgO5->=m!F0*;Ynu~WV3Z_ZFBZo^_-hLrF|f3v;fIB0`yT?NMF&Q1T)Ou8 z^M1wUq#9TY$0j}%eBwy@PsP8{oBin?9j!qUT+GJBVLfN}J?=C;0FeTfb^vVvc|k-5 zt&ufgSL8a-$S@JX3zP?lf~#@eeIE{`VCy~?aoCd8@)-+-;F4k)#iVNst418eFNiQW zG-U9PzQoz*#KGp(JQZJYa=oNhh6)>L61}$S4?~i>8c>ZROaOOgc@mCVML}oQAOMqK3vE{Lp`4I-d>w z9qxvZreHOWaly=%^RzZZ+U0a;Bdats*nCugw{}BG9>g^?mOYOZ$NQ8#DWS3f*f?NY z1jRf0v;&-+J}C8YxN(-rd;|Jxet@Fle&v{EAT^QnL4l%0qtMobTxCsLo2H3PI8wWu z+$P-l%$DjgY4b8dr-WJbeL{>Rj4W;Khrnjxx&n)n$FO9PWUSfBhe0xKh2ru5Ek>1! z^!N9_xeOv5@H0wcu?4)e>({Repo9&{S5f}2c0Cdq!^Ohj%c^|G>8TxHqRbeY{LxR0 zNlQu^velIf_eY0B5SNi1F5s{t4-f}KMCvt|Z2iZ_ms#tkTLF#<3hRHU>ue?8hY#4Q z4P^h*=g+aIArX8baxxgt7_mIVk%C>J`7jH?pzL))@rxI?;mL}UX&!Ud4`2X%hR>xz z)PHCFQDSY!$~e{JK3qN+;^){%kL2-BTy zWsmTw5(0Y(bg;w~45fm0?mWxtWx1xjTx!syqpq$l;jR;OZLao*>s=d@ zX{gL{dam!j!Jydz#?Azstl==ScdM%QX$ zZq5em8pN|xd~4K6m9iPNI_TJNej|&#esq)ayC3x_trxI0U`lNrV_2pD{sjON=Is{Z zPSuFwSb|CciumGGb0dw}V4Ua;#Oa`6*Y6=Nul8DpiORiZ#MadDksDD6E;|4<;2&){ zo40$0gGz;s7^IRwTSL%_d-q=dZRO9TW5qYVVHsD~;_M zY@Kb(l?%PjKtu3*0V!j*!D{Gp(&bD^z5@^NxXE$GK8I`x?i629^~7+B0e)L;_@vN&E|bn6%+g z6U!_Z`u3)B#x4*@f1zLOC;!BJ{+K(4lNPx$XV3mFf)^-YnQXOXr^7*POi!x( zZ~oV|Ikz_vYmDuE`qS)`+i0fdUz3vs)%i_0+8T$wmh zDWL>m{!qno8&Twc7k&@TEb=%iBSZ%a@e96Bh|N4u4BZC4NY|Mboy$VH_t2rOU?gy} zFG#JSwY3U?z6{L#meEB`Z#p}I0ta-S*4i(Z%#52@iTztjgJL9|$h)iKy4WT%JG|&` zp`Cq*W_abYs%m_;t>69of%~gB(GGdpxnF)n2uzw*#X&e=%#OX=2^__n+Df!#;y?)qp8(emkby(~S?u9(lr*f~#0j35ZKAC~RinoF?JmP% z)fDyHNNmJ55;p%bv(T%JCcN_61{Rz_7q~3YPJ80NM~$qO+$OUhR{1II4%XJJqM~mu z`dclpB40NoRP4@8`4fROoPqlOYqWy;tW4i0$i4F?tGH1XEMcPEi!npyYgmnj5Kptd z>X1M%5db1$gVWdzjjL+0lUHv5&N3w3Q(N9e6GI80&HsB5>SkuiH#_j3OA@U zHK|S1lnF5k9jJ+S>+wXI-wY80+ z@6$-{$#Ppgv=9t-Io#wuK%+tlKeDgB>sXJ@U7cIq>rrJv)zA(i3)9#R6lH{y63tT@ z5f;|+vSI>{W(t#fo5YK!rX-b=0+g7L`HvY&G?Rj?<#6?SrhWSs-l)CUMwyB%47VIf zuK2qQ<|K;mgzJf#&Aa#RFi5#Zk%t}+KgV^2p%DxR@s^lz6zYeX0?`;l3q%~c7hm2q z1Z4B>LxRwI%a!FC1O z$=@gM>n^P|*0d+vPPU#=KkaLo!Mi)K_FYVg24@NncjcL1Ks}`T7h|n(404pT4re8tVcPo={td>7YzE=}xBvAUXp-Trh z1%cD4SZBc}~Ryzbmqv-(vybKxtoe_&|*sj~7C z-6u4dfM=)Lt|Cd)H#8XhIeBVoGhm57KV-dm>@DB3r-Wd1hM0B=r5f>;fl%G5$Q4%% z-Xd4sjI;|S1W z*hfB1Z%WZ97a4zZHOn8OcK}vE$5Ovmz=(xdqmy5*bXhRQROd{<>6>B)7y*a{I^%DR zji`OEex-uP+J{H=n>ROd24efk!gS{0T_u1FoWbR&a$W>7ryNTaO>-Ezo|@ zn}ED1(G7BPicT@HT1Ei}`6o4@I6bZM$Fy~N{@Z1~2_mltwnaKN%ynQSQ?;6mrkb@> zSf9tr^n>0k=4k|{A=cpN9-$hRO!$i4N*<6g@z90X)JiRk$16hu5mOF4V*E`?bYFwz zFisEoQwisU5bmz^0`r?5#=9#!HhR*Z?ZhGJ27>@TTesn5{ux-dWhDgHlz!dhBb*811En;f1-^4e9<(Gc7xBO~Lh zE5-%bw2@l?KLSXn$;L%O-J$@X4al87rR1bj@mpP%>cX-@pgLAo<8H2Rp1@)CHikFR zqpLRwH1o)KV($|gGY{}+{>~4VN>*oAN0{z0{09;t0XG1Cpiz>)d^zZFDohyo1~ljz z0n00OLueJ#34mbg44w;S4AA(lv5+_h+(T9g{BbY*jp0>Yn^1uqYC@C(@G?A`@56VmM+=~=mWr5CF%YAto&DHFHIs!wL-7xEe7%>ECcQtiQ zL@G|UGvmm|TvEq8L7e?pPwWQ*B>fbv2MqskY@<;}03*TB=6`V73lP~+GyYrQHFX5l z4n6cM6$BnjOuS?n4nhEoPK8iMi-|{~C_=+aK1Vz-z*QW9i52wd0SG?}#%tx*Me?

|u(>G6Ngp+I8iA7|%`+v6dFhZ$7P5ZxVVTGj>S}}mo zQTQ)~;X(x(7(4k3gskoC`apzd6A+jQc*F$v4$v@Bz*l`v`~esH4`_T)!5=gI_DX;D zSc+;g#?FYqZWc5K0BdZ2ofkSY}Of($_41DGO+2nw{o@bGHr zzItgx@adm|(-jZTDFR<};+uX%kQppf#^g4r4Fm9Mz~WcG#>eCV)D?n8hn4&b8oq(w48SIQ9c?>hDe{YobZ@R-J{KGq_|k=JsguQ)zK8>iSI8^H zZL?u+zd;g=c(7oLhyKc2r#Nw#@I5Kwt5%1Ld9F$Q_MJQ5gS^xE>-JM1iqq&mpTXc(b&O zXwk5_mX?N`xpbnPL4O}!GudLiF3a*OA6Wjuhc)glU1PcvOlv*GH7o!Ng`-N%vLC$y8h%nr{Fj=V%dOtDX8~|m zP0Q`^z6BavxM2=Da%3$7{HcJHw`V{j%g#Oy7h3Apm9Mc*sVlC=mes3<&mVE~C zZy-cahEeWy>udf}@Qz@xzhn1qXsx{kz!v{aiFge-SOSSROx(5b<{}w$;R%x;5%!$e zS^e)r*FVConnI$hq~_W`&}s@u?fEeAwY~i_{s81O`8V4XO{se@V}t&V1tf!n#lz|u z9%yPWa0E6qF}8~TVG*|Vg~QS$LIf)D&I~wJgZ}rh-guwyL{SZ5JgBeSJPM?S!#5%v zF%~lmqpr&v_rqEkuV=7UQDz-RJAkQ!1W5Oev6VO4B@r2cDGU#NH(|m{THc%gkFGZX z%Q=1jzdzZHZ7`Bl24$}-MIy4hOO}w7O4fGKf`|-?N#Q1`L`X>+T9s{NPl+~4mT5|h z7%EG)=XKTmp5OC-j^p2P_|Es3$$fv8>pHLVe81o4`^208Uagf6#%ky=C`zy7k4Y7e z-3C8)ENuz@J7@;EgqS<1XB4`|!Hf>eU9k7+BJf}GV#chmK<|#1-a!m$gjIM%ymw`@ zU%~26WlRu}gpxY^Ek2So|FmCDP!4}vj4R^i&6nh@m7K0T^WM5u7=?o{8J3>AT$Z`f zCfWNTF(IfHam9D#l^fY*0>Kr%eh7@MsYeBg8NaIR*)tr20_3xL1cOaabzgx`yQutx z|Bbzz{Yv}h76$s|X_!<9130bQ8K$=%Cp3F(4dIapDewKYCyDCAuLRu6^F;U{X5GSS zu~e32DjtR7;VG8`{zP}!@|OKDJ>CoiTcmgT&jt@4?oT@}so0mgb=zZ~U1hZ;T>IgL zK5aJbuw+JdI?556eZJAZ(k(*;E1<#XkCyyhQ0@MPDR6Web^QdPwy?)LzJ?=G!QVsg zqIxXH6}{n&jA94_nc#J8wR@xL^XtwK7%IR6lqVNGYR%4^dkHKFZFn5CgK@Zr)l8e; z*?W}X31aC8pm3BjduHGQq!Wn#3`DEAMCJy)IL%^lmjy&RsGt<%Dld$cFn_LC5q@5E z7#^5Q5w*h&{)4!#f|e`qOz#ne#lcpdeE=@aTs~oFJZaMNH7~Hi#N6KPxmT?wspT{v z|Cy(|(;y@Ia}Ye1mbEWwvb8~qSQhvd_dXnAWM43|+6N!>o<}0o?I6GlVhhP<1%ocK zd`gd2$-Q(0cfkyJ;20xBPXx)fLI?Po@be15`ycU#*ap;vm`zOga#{gS_YVqETUr9) zpkGx~+yVptLV7$GjoFM7J6YX~99u!tKizI*AW9QFMl3UIFoi*#02dqb>{#68$S7AAoLyk0c6!2{$ut^GZhExeCsnN~yfIvhZx(a%s8Gf0 z;Mn4vgK`mVW)m5TghbE1(Yc3#PV$dd9c>4bOh02&2p>5t|AuBMA!!@hObaY%nk@3& zg{<_!+S=WK%vrrcgUU*6W>{`^7(?3thwu%gk09@Cf@ZS^-F@?tHDbq%9)0-a79<2b zonsVjwEEk>u4=knQy42Wve>Lo5`&vgH*EGzMVkEe-SDqg4{#Aj5~N8~9GezQzs~yd znG~^iG3dyKRd^iz5ZCGdTZ55Ls={`W4bz2k1}VwYYY^>z*nseUpQ=PtR0(~xBqZ}< zR*evVMTO7ih-OL9>N)f>*I+d$9z!M3t}x#9rB6;>OB>}yxCJ3^`{a=Fk`KH~qlVoW z<2gVR3?55jsN4_U>&MSWue|3j>OrNta|F9>VF7XWN*J3{7N0! zy4%F-&#!C|y)+EzLE#6TF@=Ja5Hro;DFU%Qe`P~2kvI#tMa+FguO>0PMISda0#wtK zp`tukbhP5hV_h5%{;PI&X|(jih>VPi?b7$6+JGDu28!V^rc^lW$9YapBZ%&RvT}|cTxssmHF6)YVDp;`Vp`y9s1bF> z?~vmOQJ>9^54}lJMNJM;y(0Rdm|surEq1X>M)e@N6%YSe$0puDp+Mj8C9VCB4x;|~ z@b$${HS{8o0HUJ`#PRy_k>}UFm_%Q2FE#ImM{24`<3wYj#z(ZSOd0k=WXI7U4B3eo zbdu#Ve`OY(b2$%>rRzM-ve={c*iJ_b0cjSQ{^KMj>WGF9Opxc~DU!<$hUiLMbY4~8 z{j62cejx??6}(vNe!A9MMKCo4gz?L>F>T_0RUP+ylQ8BaVG`6c3CTPzij#37GT43iP6-k8?oPe`e)moo@i-R6y7!F=F6hp!}>nScsq_SE>95FCU zqWv>ymCckXJ04q4?L3$L%)%O$H5vzwOU%b|`X$k~uW{ynh~H&>mdEE;e`fvNCNIU!A6!=^aqZZ7=FkijmJ+ zzdNY{#UVhK(<{H0ZeS6$`t_T)b?ar5Q_ryH7Yzt?E=isHCnxs@0Jtc-Yw5pd&-?_O z*ETlkG128svgWzO#KaBXn!A(MpX9I}Qk>~<;R4cTmwriuA?}1XcG$Re?Mm8tDR*v% zgqlG44_Gc49P>ehx|UUa|N1RtG>yh{1`5CQs@BLnL?bfm<3*)YighBX?jcTTfpsjs zPj-LmPJu&8&TmbGwfjAsNUl5u#SpZ_I%cak!+pE@-R$@k(SopMAPZ4&jvxIN2Gp}| zu|2430h`C@owJw-bzb-jSEyG{;OR z`^3k;N-cFMhX}1;d!PYz&)87vHUID393Hqkn_Z=(GP|0(XwlcECeKi()P#(;=cIQl z3Y!ogNcZ<1dV7A-JyQI~wRhgev|t@K=%8|%ds~%$F;T<`-uCsQS^coy`wiW4nEx3A z*^+zSkH(C4U$AGA4t%5-_kwIg^jM3c9sgGZQT1(~m^b(A*7h zsFD|788Gg-w48GB87p$mF+Gu)($j+-9fy>N;Suo_#%s~-iu4W?T*zS#A1-h?@wRec z#<0WbPu^YT;PH8U{LF+AU#;If@qYj5cGD`6LIj=LT-Ee5Weik8u*xC3ftXD+>_k#1 zdQ-OHmLbMnV}}>yj08-DOk9u>4<0;F`~Hfq^r$e(B#FvK&l|51cN~TZV;ORLCt(%BO5FCe4>EB{M zEd<7;eGb%Na<_hyoSOSd_pKs{rQb|ey*Dnun&LJsx&4Kn*`Kb_uV!Z%?t$?J#?8*J z@4m@0HF2)iE(@=5@ImR(JcpAJkB>7>o$lF+vr*V{0P&JT^cJQg{;8|RdpGGwBz0BE zzm$&N=XxHrv~ELY#n*m#-qo$N_*hu&jsU8m>4N6q9wP=Ta`eIKi3=9*kYWj;XUv;^ zFww$|d|Eeyn+ZeExVz59;)~tJA2{BYs7}5==MHXZvjFxEWJOo_GYS*643PuAKI@k z;?P@^U?o5#=P}bGn6OH+g|q5S8rHNj+Q>kq?g|%K0D~Q=kz#+f2$&D%0%w)FWC~X$ zhJf7S3D7EaVcqh9(~%|9v|v^;kd?E6Txe)p(}9bT3QO9%b*XL8B~*Hh0yoqaWnvihirNAM}o#4Cy=01r1+e z<#Y>@FK9+|rKj@0PNp2BAsgG#y9V^^KRRASc(iiqZ2%_Q|BV=Y32V2Fl(7DEzwdh} z>?`J2gAXx`fpcv)$~`oCK}qqP}Hw*>tBa^mMJ&M-(5c}U1T66mN!I}o1$x6x}T)$jNW-xQnyK;B|0r@Pwv?bMv{&R&2k1H(z6CQdwt9G07# zi=G!k(#XRDE$QPlwCMX`wfs#=}N_rX&%6N}LhIwG(Ww*Vbo1!ygJ3&U??GbH*HsY0b{5^qIb= zoIc35>ms#uh=~VRRMg7(=YCMK!8Emh`?ghdCW=25O5*GkL@Z>~8=XMXrhb&bVkY7t z-Y(x>T7C7q?vo9X@@uQ6b{;^#mMGIeKt+iSi9K}0h()OgJr-bc0ue-&C&~->EV`w@ zNob~c%ISUNQ=rcI!MC1*7P(;TmDxo z3a>0tGJ}Q8rdNaXLT0u@-P_4giDpmE|)5fSoba|1BMg=ZXs4BIHJkJxnns~ zL&Ta#us8JUnpLZk9Z&aAR=zKaE{G*uEPfv|re~1REnsi+D_*)Hm}eGRzne9=sXMTK zvv~_$U#}=AS@_ICyuo#a04BkU1+|h-iWB=8 zAep;<-u0(Xm&RP}ihom1j5$7=yp~`RH}CNTN-8l+swlQ3>I(<@?rlhtT~|9G=;# zMfld|4&=I?7|h9psaq4Mdg;HEH>c{(S}nF&A`EyUdY2vqvEuaeRp#t|Bv@C5;y zG?rAig&O|7g-{bvQj3HMCPeh?qt7585Ss&nPB3mUe)Y>y9ip~MRF6d`WPWMG8TE>rduZrFJ2Qa05`o$oGy%uK{g8-& zK5u?IS!FCv(hfKyASj;Mr?VJ+h^j{1PGzO3$VW{FNv*PI$zQ>` z21V-WL$)ayMe|wOtaD5C~uHiBURzyKu8;w{#r@hxAm^U z{#VnlerkQ1;}@j`c*q2UgDER+{Q{Ob`uf4WKkzf_?>mw_O>|MsDNl%xUwkf+!7M@J z#^j|=KMhoF^|O{3Oh;wKEi-g*zXR@59uq(!aWA6$6J66SFA9U`D=nb?U06JFFOh=- zAroW@?K7uQMQcn^?bT~{Qc_Zm7=;FGqTTeF`=F%1$QU|te=aVA3=G1N?NT;%V1&Y< z*H2&YoW!B9!;~i>0E1(ZYU+{sEvg*ZO_U&9QMVN-tr9`rFVbl8+EwALs zQLMF)UH>5x8fM;pysY4ZDcTf~zOt6#aps>xeCnCV+m_$CBPPl)aftAfPY6tadbJme5$WsNz4aDn7!b32LXu8?7+Ezht}SG``UOlKi~rx zU9hv?^vGnNCzzmg;UEJhm@Sjpvh+v0GDYxagy=+SQN_~&<95B@3yywEmrJ`@w88`i zi4f0|`C}I!p3C@ZiWe&@;(oD!<3z90zS(H0Svrn60WHQ8 zC4D*%UWD42Y`Yb?u*g(}9Y6QEo*71kg}vB7Ld#M#I0IltWJw#}(Y+O-V=uQ_(OtE# z(_lT{VVLVcoHC}MeTi8&`pxS$Y*@34@o~Slva8*0fVn3%x=e0s|m<8~4e$Sl!1fOZk9@*X>PvQ>WV4GwyXw8xlaMl{#a+01_D zL`5#S591+ncEKgSo6km{-ly4l)9+Le@)< z+wdgs5jN=0=I$?q979zrw@a<0@p028JsOa4SMhwh{}V^OQDGV+0Q!T4C(PD$8l{9{ zN04sAn`fP-1Cq9zk^MVEmC;*0(j@0*%?VE`;i*B~K~hm z&wQI9W-j1X*siBAZu1gcEUG^`BiRfXNA#wp8@U{~=rM+xu;0-os82yG;wk!fcqW*q zoMOun=V>R>X$ei8?S};!+1Ddx&#Sl!X22sBiZ6(jdvxN6DQ|tFHqq~-_3j-mvn1Ys zo;YE1;+FQ!<*^eIlC*UvNYfuW>?m8de0hYh{AH&#F27l|FDi0)mz0udy76&#+)X!yx@?+n z=SP5UL)aMp19uJ|VB00an0M`trDHXWM*+6V2?X=|uUyZbIyDtiU@?|DbP_YvX|=~$ z>E&1|ES(iMJE$_g3NcB^<;_W2m;UJyo7GCXuDN;BCcDr7zEYmFH64EaEbs8##fzpu zxSDDvn(6lcmNx-UGDuckmb`17AL*tyHDl#|T?qPO6cqC&o7?s3=qSxabQOu8ktw`W z9%hLt3cPt9Snoz+X}GqwsoYNWlcwZ)4)Df`8Y6?f zr?cUo*=}36ZM%x!RD^SBYDiEI|nU2X4TPcykj_Kw)0q@3K(93KUbr zfP(!8PFrVqL)kD*dGxA10@W&W&FZp7)iG7lNh-sTUR$ z9IXiDi}J=(KCZd5BROGG8l;@_^UF)S`c0F&qknc_XqEf?y`JTB6!Pkv#)hHcjz??b zh&s2XIPrw~J(o0Lao$APihiU2(>hQ8fo*-Rt_6o#^V)=7kI|j8{@%lPcxl%xNz)uN zW+8m$n8fjGb3)GyXBtfI^hf>G;}jZ{II=kHr$C3LVZXWjx&C4sn?!^vwO}gYMjGl=V07S zzXcU4hWqJEd(2r$r|NX)rx#~Xb1{ECTtI1Z`6*VPBfP*b*qY-LAX6@5RN~0*RMF~z zy3c1X7joB917mqLjUM|bv>vhVrkGw|O{A)?E+hdq z#2$7-^Zp-n%EquVX*#Ub!vjA_{)80Z+l?;L>*YyLb)24ztOLLF%(Q~)4;`~M@PEFr z!ce_tiLu;PNgu`^wpBgmeW)96U3v1h%eM}mOdDw1<@#!TQXKeq7GmsbeLZ!0G`ToX zY)nLiA*o^IWj>b_YuM1CqwYL)8q3y9o4vx%*Y`ei$^Ohykb+0Ay8A1#Hu1|Pm)xRp zM4Bs}+WZJ_MT)fp;x@ZS82%sGNjuCQo!IQc$wyZCLX@+3!DoEQ*-2 zQ^zjvcei6%ujWIVgw!kKbPx3B# zqcY7Q?u7Rm<2UdTX;-SGmukM<`neQYlY|Vi?ZS?nn{#bm#>(-(@}-DZQ91@4ITBia z<;s=DoORp8_DvZvw!uK`9E-7GCfEs)WjU@deZ+zI&|z=cW%oVmg+)cfxC3&UN+6$7%8ysL>bcXx z3r1ZPciR@(Kt5WXYM&l+XAx;m^i)zh+kN0nyPJEuSEfg`@u;8fiHz1iR~7SVx{Fsm zFH+Y{ebcpLNBc)TGFj{&KKxzR)9{_n*3Yi>-dY$3ily4Tr_!%hRtzaSb0U)1Q&*M= z(6m_dHZBNuK=I0G9%mdpnK-b#)pbo_O2@cK&fdy&R87brk1sZbK6!qONO_iNkhe7F z$ps{0ChKlv^Wu1kid2j53xT(6*GWyqvS*5o|r;^Pa!5_LG7{`+3~3@Tl1=9zO23?+-$ zItdG-oZ|+Tyhp{EZ8uK6p)7@7c%Arxy|2S!CZ%g@ z&y)XCUVa+8iy=BX$$n|Aq!Pt`{SsL%eSA+sFq>dVJ$Eeuq$IE4M#-9_d-?hKf7@lC z1`I@>p_MgKU53Ks61}sw>le9><6d7*B*tS~Ax<1@8$!y%r z60k3{SX%bywQJV^6M|?jrAFfk*b_p{{Mt&=%Zs57=75xqPy0224y2%itDjH@v??>p z>al9R6mf`0)r%`d)bF;8{#SxWBgVwlB!3LI%R^6P@o+ugf% z&6W#?UEY`fK=J;qOf;r6t+A(*0(a?3?uWR`dc|`v zx^#7g^;VEx{sKk#K>4fC?iu{Tb@$3~H2>6#lnry%#8qjf8nXN-lYBHlO-=zW4QjlX zh`v@E?rDh45P91s0cL1KUMTFk} zO%|{V6Ta3Lm9=(=s~SkwfCJJTh&_2E9tM;|OI3PFTb;??D#>Rr?mozerAI{-6`H=7 zZ618&Na}2}dB^k?i0KIT9MU`YD3bDW5E{4_E?yGykiwBAxz={N^l!?61HZChWO88w zw}4>wva^Y*meG}K>Wo|tx%&C7;zYh z#Nn(Iv0&kA{~qyiViAL)*?V*dH^Zm|Dbo!nLtU^kD`->o*jF0}z=qwv+#YxJB;

n_KY&Xjg^0YZ93cFb^ahx( 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 + + + + + + + + + +Geocomputation with Python - 8  Making maps with Python + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+ + + +
+ +
+
+

8  Making maps with Python

+
+ + + + +
+ + + + +
+ + +
+ +
+

8.1 Prerequisites

+

Let’s import the required packages:

+
+
import matplotlib.pyplot as plt
+import geopandas as gpd
+import rasterio
+import rasterio.plot
+
+

and load the sample data for this chapter:

+
+
nz = gpd.read_file('data/nz.gpkg')
+nz_height = gpd.read_file('data/nz_height.gpkg')
+nz_elev = rasterio.open('data/nz_elev.tif')
+
+
+
+

8.2 Introduction

+ + + +

A satisfying and important aspect of geographic research is communicating the results. Map making—the art of cartography—is an ancient skill that involves communication, intuition, and an element of creativity. In addition to being fun and creative, cartography also has important practical applications. A carefully crafted map can be the best way of communicating the results of your work, but poorly designed maps can leave a bad impression. Common design issues include poor placement, size and readability of text and careless selection of colors, as outlined in the style guide of the Journal of Maps. Furthermore, poor map making can hinder the communication of results (Brewer 2015, add citation…):

+
+

Amateur-looking maps can undermine your audience’s ability to understand important information and weaken the presentation of a professional data investigation. Maps have been used for several thousand years for a wide variety of purposes. Historic examples include maps of buildings and land ownership in the Old Babylonian dynasty more than 3000 years ago and Ptolemy’s world map in his masterpiece Geography nearly 2000 years ago (Talbert 2014, add citation…).

+
+

Map making has historically been an activity undertaken only by, or on behalf of, the elite. This has changed with the emergence of open source mapping software such as mapping packages in Python, R, and other languages, and the “print composer” in QGIS which enable anyone to make high-quality maps, enabling “citizen science”. Maps are also often the best way to present the findings of geocomputational research in a way that is accessible. Map making is therefore a critical part of geocomputation and its emphasis not only on describing, but also changing the world.

+

Basic static display of vector layers in Python is done with the .plot method or the rasterio.plot.show function, for vector layers and rasters, as we saw in Sections Section 1.2.2 and Section 1.3.2, respectively. Other, more advaned uses of these methods, were also encountered in later chapters, when demonstrating the various outputs we got. In this chapter, we provide a comprehensive summary of the most useful workflows of these two methods for creating static maps (Section 8.3). Then, we move on to elaborate on the .explore method for creating interactive maps, which was also briefly introduced earlier (Section 1.2.2).

+
+
+

8.3 Static maps

+

Static maps are the most common type of visual output from geocomputation. Standard formats include .png and .pdf for raster and vector outputs, respectively. Static maps can be easily shared and viewed (whether digitally or in print), however they can only convey as much information as a static image can. Interactive maps provide much more flexibilty in terms of user experience and amout of information, however they often require more work to design and effectively share.

+ + +

Let’s move on to the basics of static mapping with Python.

+

A vector layer (GeoDataFrame) or a geometry column (GeoSeries) can be displayed using their .plot method. Most common visual properties include color, edgecolor, and markersize (for points) (Figure 8.1):

+
+
nz.plot(color='grey');
+nz.plot(color='none', edgecolor='blue');
+nz.plot(color='grey', edgecolor='blue');
+
+
+
+
+
+
+

+
(a) Grey fill
+
+
+
+
+
+
+

+
(b) No fill, blue edge
+
+
+
+
+
+
+

+
(c) Grey fill, blue edge
+
+
+
+
+

Figure 8.1: Setting color and edgecolor in static maps of a vector layer

+
+
+
+

As shown in Section 1.3.2, you can plot raster datasets using rasterio.plot.show, as follows (Figure 8.2):

+
+
rasterio.plot.show(nz_elev);
+
+
+
+

+
Figure 8.2: Plotting a raster using rasterio.plot.show
+
+
+
+
+

You can combine the raster and vector plotting methods shown above into a single visualisation with multiple layers, which we already used earlier when explaining masking and cropping (Figure 5.1). For example, Figure 8.3 demonstrated plotting a raster with increasingly complicated additions:

+
    +
  • The left panel shows a raster (New Zealand elevation) and a vector layer (New Zealand administrative division)
  • +
  • The center panel shows the raster with a buffer of 22.2 \(km\) around the dissolved administrative borders, representing New Zealand’s territorial waters (see Section 3.4.6)
  • +
  • The right panel shows the raster with two vector layers: the territorial waters (in red) and elevation measurement points (in yellow)
  • +
+ +
+
# Raster + vector layer
+fig, ax = plt.subplots(figsize=(5, 5))
+rasterio.plot.show(nz_elev, ax=ax)
+nz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='red');
+
+# Raster + computed vector layer
+fig, ax = plt.subplots(figsize=(5, 5))
+rasterio.plot.show(nz_elev, ax=ax)
+gpd.GeoSeries(nz.unary_union, crs=nz.crs) \
+    .to_crs(nz_elev.crs) \
+    .buffer(22200) \
+    .boundary \
+    .plot(ax=ax, color='red');
+
+# Raster + two vector layers
+fig, ax = plt.subplots(figsize=(5, 5))
+rasterio.plot.show(nz_elev, ax=ax)
+gpd.GeoSeries(nz.unary_union, crs=nz.crs) \
+    .to_crs(nz_elev.crs) \
+    .buffer(22200) \
+    .exterior \
+    .plot(ax=ax, color='red')
+nz_height.to_crs(nz_elev.crs).plot(ax=ax, color='yellow');
+
+
+
+
+
+
+

+
(a) Raster + vector layer
+
+
+
+
+
+
+

+
(b) Raster + computed vector layer
+
+
+
+
+
+
+

+
(c) Raster + two vector layers
+
+
+
+
+

Figure 8.3: Combining a raster and vector layers in the same plot

+
+
+
+
+

8.3.1 Palettes

+

To complete…

+
+
+

8.3.2 Layers

+

To complete…

+
+
+

8.3.3 Faceted maps

+

To complete…

+
+
+

8.3.4 Exporting maps as images

+

To complete…

+ +
+
+
+

8.4 Interactive maps

+
    +
  • When are interactive maps useful
  • +
+

An interactive map is an important way to understand and interpret complex geographical information. A good interactive map enables movement across the map area, change the area of interest and provide additional context or text information. In this section we will look an interactive map based of national public transport access nodes (NaPTAN), the UK Department for Transport repository of public transport point-of-interest in England, Scotland and Wales consisting of: - bus stops and railway stations - tram, metro and underground stops - airports and ferry terminals

+

We will show how to create this may restricted to railway stations, tram stops and ferry terminals in Yorkshire. This will also match data to the National Rail customer reservation code (CRS) and timing point location (TIPLOC) attributes used in the the national rail timetable.

+

In the first code block we define a function get_databuffer that uses the requests library to download the NaPTAN data-set in CSV format to a StringIO buffer.

+
+
import io
+import requests
+
+def get_databuffer(uri, encoding='UTF-8'):
+    """Download data from URI and returns as an StringIO buffer"""
+    r = requests.get(uri, timeout=10)
+    return io.StringIO(str(r.content, encoding))
+
+# NaPTAN data service
+URI='https://multiple-la-generator-dot-dft-add-naptan-prod.ew.r.appspot.com/v1/access-nodes?dataFormat=csv'
+BUFFER = get_databuffer(URI)
+
+

We then read the in-memory string-buffer into a Panda data-frame, treating the buffer as if it were a CSV file. We then extract the location data into a numpy two-dimensional array.

+
+
import pandas as pd
+
+DF1 = pd.read_csv(BUFFER, low_memory=False)
+DATA = DF1[['Longitude', 'Latitude']].values
+
+

We then convert the \(transposed data-array\) into a GeoSeries and use this to create a GeoDataFrame. Which we then tidy by dropping any columns that only contain invalid (pd.NA) values.

+
+
import geopandas as gpd
+
+POINTS = gpd.points_from_xy(*DATA.T, crs='WGS84')
+NaPTAN = gpd.GeoDataFrame(data=DF1, geometry=POINTS)
+
+NaPTAN = NaPTAN.dropna(how='all', axis=1)
+
+

The next step is to create the timing-point TIPLOC data based on the StopType and a subset of the ATCOCode columns.

+
+
NaPTAN['TIPLOC'] = ''
+# Heavy railway stations
+IDX1 = NaPTAN['StopType'] == 'RLY'
+NaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[4:]
+
+# Ferrys
+IDX1 = NaPTAN['StopType'] == 'FER'
+NaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[4:]
+
+# Metro and trams
+IDX1 = NaPTAN['StopType'] == 'MET'
+NaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[6:]
+
+

We extract the heavy and light rail, or ferry locationsFrom the 435,298 rows in the NaPTAN data-frame.

+
+
IDX1 = NaPTAN['StopType'].isin(['RLY', 'FER', 'MET'])
+STATIONS = NaPTAN[IDX1]
+
+

Filter columns and drop points within Yorkshire.

+
+
FIELDS = ['ATCOCode', 'CommonName', 'ShortCommonName', 'LocalityName',
+          'StopType', 'Status', 'TIPLOC', 'geometry']
+
+# Clean up data-frame columns
+STATIONS = STATIONS[FIELDS]
+
+YORKSHIRE = gpd.read_file('data/yorkshire.json').iloc[0, 0]
+IDX = STATIONS.within(YORKSHIRE)
+
+STATIONS = STATIONS[IDX]
+
+# Write to GeoJSON
+STATIONS.to_file('stations.geojson', driver='GeoJSON')
+# Write file to GeoPackage
+
+OUTPUT = STATIONS.copy()
+CRS = 'EPSG:32630'
+OUTPUT['geometry'] = OUTPUT['geometry'].to_crs(CRS)
+OUTPUT.to_file('stations.gpkg', driver='GPKG', layer='stations')
+
+
    +
  • Holoviews: facetted plotting
  • +
  • Panel: allows you to create applications/dashboards
  • +
+
+

8.4.1 GeoPandas explore

+

+
+
+

8.4.2 Layers

+

+
+
+

8.4.3 Publishing interactive maps

+

+
+
+

8.4.4 Linking geographic and non-geographic visualisations

+

+ +
+
+
+

8.5 Exercises

+ + +
+ +
+ + +
+ + + + \ No newline at end of file diff --git a/09-mapping_files/figure-html/fig-basic-plot-output-1.png b/09-mapping_files/figure-html/fig-basic-plot-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd921b4d03f5500a8981cde0d204501f11ac772 GIT binary patch literal 48296 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 KpUXO@geCyxNk#Vn literal 0 HcmV?d00001 diff --git a/09-mapping_files/figure-html/fig-basic-plot-output-2.png b/09-mapping_files/figure-html/fig-basic-plot-output-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e3bfdbcb21b3a1ebb299ad27cdd19e730fee0347 GIT binary patch literal 62184 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 Hci}$(vty{f literal 0 HcmV?d00001 diff --git a/09-mapping_files/figure-html/fig-basic-plot-output-3.png b/09-mapping_files/figure-html/fig-basic-plot-output-3.png new file mode 100644 index 0000000000000000000000000000000000000000..5f116753b54edb3e614d7d0aefa9d8422d4d294a GIT binary patch literal 73121 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

MG0Qh+%g1rjI-sFA3sn4`6mA{Uy&1-st{SEJrG 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 literal 0 HcmV?d00001 diff --git a/09-mapping_files/figure-html/fig-plot-raster-and-vector-output-1.png b/09-mapping_files/figure-html/fig-plot-raster-and-vector-output-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3e43ce6b14bf6fb2a0372ef4fa757fbb14389da3 GIT binary patch literal 174931 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

x=EJ;`cjFZY0B?;2JbPQ>CLm%S7tTV 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 JYFFsL{sTc1ii7|F literal 0 HcmV?d00001 diff --git a/09-mapping_files/figure-html/fig-plot-raster-and-vector-output-2.png b/09-mapping_files/figure-html/fig-plot-raster-and-vector-output-2.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf7ad120ef391a715393083cd74674cad261af2 GIT binary patch literal 148221 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%0DwA2Dv0-%5xN7Qako|es^xRJHm+R3e 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 z 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

9uQI-y(1;1^$OA`#;J%`KssUi!Ke4&OhGp-H` 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%0D^3 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

M@dg; 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

{Dn>$R9zy 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 literal 0 HcmV?d00001 diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..dc9e2e9c --- /dev/null +++ b/robots.txt @@ -0,0 +1 @@ +Sitemap: https://py.geocompx.org/sitemap.xml diff --git a/search.json b/search.json new file mode 100644 index 00000000..9f982648 --- /dev/null +++ b/search.json @@ -0,0 +1,408 @@ +[ + { + "objectID": "index.html#welcome", + "href": "index.html#welcome", + "title": "Geocomputation with Python", + "section": "Welcome", + "text": "Welcome\nThis is the online home of Geocomputation with Python, a book on reproducible geographic data analysis with open source software.\nInspired by the Free and Open Source Software for Geospatial (FOSS4G) movement this is an open source book. Find the code underlying the geocompy project on GitHub, ensuring that the content is reproducible, transparent, and accessible. Making the book open source allows you or anyone else, to interact with the project by opening issues, making typo fixes and more, for the benefit of everyone.\nThe book’s website is built by GitHub Actions, which runs the code every time we make a change, ensuring code correctness and reproducibility. The current build status as follows:\n\n\n\n\n\nYou can run the code in the book using GitHub CodeSpaces as follows (requires a GitHub account):\n\n\n\n\n\nFor details on reproducing the book, see the README in the project’s GitHub repo: https://github.com/geocompx/geocompy." + }, + { + "objectID": "preface.html", + "href": "preface.html", + "title": "Preface", + "section": "", + "text": "Geocomputation with Python (geocompy) is motivated by the need for an introductory, yet rigorous and up-to-date, resource geographic data with the most popular programming language in the world. A unique selling point of the book is its cohesive and joined-up coverage of both vector and raster geographic data models and consistent learning curve. We aim to minimize surprises, with each section and chapter building on the previous. If you’re just starting out with Python for working with geographic data, this book is an excellent place to start.\nThere are many resources on Python on ‘GeoPython’ but none that fill this need for an introductory resource that provides strong foundations for future work. We want to avoid reinventing the wheel and provide something that fills an ‘ecological niche’ in the wider free and open source software for geospatial (FOSS4G) ecosystem. Key features include:\n\nDoing basic operations well\nIntegration of vector and raster datasets and operations\nClear explanation of each line of code in the book to minimize surprises\nExcercises at the end of each chapter with reproducible and open solutions\nProvision of lucid example datasets and meaningful operations to illustrate the applied nature of geographic research\n\nThis book is complementary with, and adds value to, other projects in the ecosystem, as highlighted in the following comparison between Geocomputation with Python and related GeoPython books:\n\nLearning Geospatial Analysis with Python and Geoprocessing with Python are books in this space that focus on processing spatial data using low-level Python interfaces for GDAL, such as the gdal, gdalnumeric, and ogr packages from osgeo. This approach requires writing more lines of code. We believe our approach is more “Pythonic” and future-proof, in light of development of packages such as geopandas and rasterio.\nIntroduction to Python for Geographic Data Analysis (in progress) seeks to provide a general introduction to ‘GIS in Python’, with parts focusing on Python essentials, using Python with GIS, and case studies. Compared with this book, which is also open source, and is hosted at pythongis.org, Geocomputation with Python has a narrower scope (not covering spatial network analysis, for example) and more coverage of raster data processing and raster-vector interoperability.\nGeographic Data Science with Python is an ambitious project with chapters dedicated to advanced topics, with Chapter 4 on Spatial Weights getting into complex topics relatively early, for example.\nPython for Geospatial Data Analysis introduces a wide range of approaches to working with geospatial data using Python, including automation of proprietary and open-source GIS software, as well as standalone open source Python packages (which is what we focus on and explain comprehensively in our book). Geocompy is shorter, simpler and more introductory, and cover raster and vector data with equal importance (1 to 4).\n\nAnother unique feature of the book is that it is part of a wider community. Geocomputation with Python is a sister project of Geocomputation with R, a book on geographic data analysis, visualization, and modeling using the R programming language that has 60+ contributors and an active community, not least in the associated Discord group. Links with the vibrant ‘R-spatial’ community, and other communities such as GeoRust and JuliaGeo, will lead to many opportunities for mutual benefit across open source ecosystems." + }, + { + "objectID": "02-spatial-data.html#introduction", + "href": "02-spatial-data.html#introduction", + "title": "1  Geographic data in Python", + "section": "1.1 Introduction", + "text": "1.1 Introduction\nThis chapter introduces key Python packages and data structures for working with the two major types of spatial data, namely:\n\nshapely and geopandas — for working with vector layers\nrasterio and xarray — for working with rasters\n\nAs we will see in the example code presented later in this chapter, shapely and geopandas are related:\n\nshapely is a “low-level” package for working with individual vector geometry objects\ngeopandas is a “high-level” package for working with geometry columns (GeoSeries objects), which internally contain shapely geometries, and vector layers (GeoDataFrame objects)\n\nThe geopandas ecosystem provides a comprehensive approach for working with vector layers in Python, with many packages building on it. This is not the case for raster data, however: there are several partially overlapping packages for working with raster data, each with its own advantages and disadvantages. In this book we focus on the most prominent one:\n\nrasterio — a spatial-oriented package, focused on “simple” raster formats (such as GeoTIFF), representing a raster using a combination of a numpy array, and a metadata object (dict) specifying the spatial referencing of the array\n\nAnother raster-related package worth mentioning is xarray. It is a general-purpose package for working with labeled arrays, thus advantageous for processing “complex” raster format (such as NetCDF), representing a raster using its own native classes, namely xarray.Dataset and xarray.DataArray\nThis chapter will briefly explain the fundamental geographic data models: vector and raster. Before demonstrating their implementation in Python, we will introduce the theory behind each data model and the disciplines in which they predominate.\nThe vector data model represents the world using points, lines, and polygons. These have discrete, well-defined borders, meaning that vector datasets usually have a high level of precision (but not necessarily accuracy). The raster data model divides the surface up into cells of constant size. Raster datasets are the basis of background images used in web-mapping and have been a vital source of geographic data since the origins of aerial photography and satellite-based remote sensing devices. Rasters aggregate spatially specific features to a given resolution, meaning that they are consistent over space and scalable (many worldwide raster datasets are available).\nWhich to use? The answer likely depends on your domain of application, and the datasets you have access to:\n\nVector datasets and methods dominate the social sciences because human settlements and and processes (e.g. transport infrastructure) tend to have discrete borders\nRaster datasets and methods dominate many environmental sciences because of the reliance on remote sensing data\n\nThere is much overlap in some fields and raster and vector datasets can be used together: ecologists and demographers, for example, commonly use both vector and raster data. Furthermore, it is possible to convert between the two forms Whether your work involves more use of vector or raster datasets, it is worth understanding the underlying data models before using them, as discussed in subsequent chapters. This book focusses on approaches that build on geopandas and rasterio packages to work with vector data and raster datasets, respectively." + }, + { + "objectID": "02-spatial-data.html#sec-vector-data", + "href": "02-spatial-data.html#sec-vector-data", + "title": "1  Geographic data in Python", + "section": "1.2 Vector data", + "text": "1.2 Vector data\nThe geographic vector data model is based on points located within a coordinate reference system (CRS). Points can represent self-standing features (e.g., the location of a bus stop), or they can be linked together to form more complex geometries such as lines and polygons. Most point geometries contain only two dimensions (3-dimensional CRSs contain an additional \\(z\\) value, typically representing height above sea level).\nIn this system, London, for example, can be represented by the coordinates (-0.1, 51.5). This means that its location is -0.1 degrees east and 51.5 degrees north of the origin. The origin, in this case, is at 0 degrees longitude (the Prime Meridian) and 0 degree latitude (the Equator) in a geographic (‘lon/lat’) CRS. The same point could also be approximated in a projected CRS with ‘Easting/Northing’ values of (530000, 180000) in the British National Grid, meaning that London is located 530 \\(km\\) East and 180 \\(km\\) North of the origin of the CRS. The location of National Grid’s origin, in the sea beyond South West Peninsular, ensures that most locations in the UK have positive Easting and Northing values.\n\ngeopandas provides classes for geographic vector data and a consistent command-line interface for reproducible geographic data analysis in Python. geopandas provides an interface to three mature libraries for geocomputation which, in combination, represent a strong foundation on which many geographic applications (including QGIS and R’s spatial ecosystem) builds:\n\nGDAL, for reading, writing, and manipulating a wide range of geographic data formats, covered in Chapter 8\nPROJ, a powerful library for coordinate system transformations, which underlies the content covered in Chapter 7\nGEOS, a planar geometry engine for operations such as calculating buffers and centroids on data with a projected CRS, covered in Chapter 5\n\nTight integration with these geographic libraries makes reproducible geocomputation possible: an advantage of using a higher level language such as Python to access these libraries is that you do not need to know the intricacies of the low level components, enabling focus on the methods rather than the implementation. This section introduces geopandas classes in preparation for subsequent chapters (Chapters 5 and 8 cover the GEOS and GDAL interface, respectively).\n\n1.2.1 Vector data classes\nThe main classes for working with geographic vector data in Python are hierarchical, meaning the highest level ‘vector layer’ class is composed of simpler ‘geometry column’ and individual ‘geometry’ components. This section introduces them in order, starting with the highest level class. For many applications, the high level vector layer class, which are essentially a data frame with geometry columns, are all that’s needed. However, it’s important to understand the structure of vector geographic objects and their component pieces for more advanced applications. The three main vector geographic data classes in Python are:\n\nGeoDataFrame, a class representing vector layers, with a geometry column (class GeoSeries) as one of the columns\nGeoSeries, a class that is used to represent the geometry column in GeoDataFrame objects\nshapely geometry objects which represent individual geometries, such as a point or a polygon\n\nThe first two classes (GeoDataFrame and GeoSeries) are defined in geopandas. The third class is defined in the shapely package, which deals with individual geometries, and is a main dependency of the geopandas package.\n\n\n1.2.2 Vector layers\nThe most commonly used geographic vector data structure is the vector layer. There are several approaches for working with vector layers in Python, ranging from low-level packages (e.g., osgeo, fiona) to the relatively high-level geopandas package that is the focus of this section. Before writing and running code for creating and working with geographic vector objects, we therefore import geopandas (by convention as gpd for more concise code) and shapely:\n\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport geopandas as gpd\nimport shapely.geometry\nimport shapely.wkt\n\nWe also limit the maximum number of printed rows to four, to save space, using the 'display.max_rows' option of pandas:\n\npd.set_option('display.max_rows', 4)\n\nProjects often start by importing an existing vector layer saved as an ESRI Shapefile (.shp), a GeoPackage (.gpkg) file, or other geographic file format. The function read_file() in the following line of code imports a GeoPackage file named world.gpkg located in the data directory of Python’s working directory into a GeoDataFrame named gdf:\n\ngdf = gpd.read_file('data/world.gpkg')\n\nAs result is an object of type (class) GeoDataFrame with 177 rows (features) and 11 columns, as shown in the output of the following code:\n\ntype(gdf)\ngdf.shape\n\n(177, 11)\n\n\nThe GeoDataFrame class is an extension of the DataFrame class from the popular pandas package. This means we can treat a vector layer as a table, and process it using the ordinary, i.e., non-spatial, established function methods. For example, standard data frame subsetting methods can be used. The code below creates a subset of the gdf dataset containing only the country name and the geometry:\n\ngdf = gdf[['name_long', 'geometry']]\ngdf\n\n\n\n\n\n\n\n\nname_long\ngeometry\n\n\n\n\n0\nFiji\nMULTIPOLYGON (((-180.00000 -16.55522, -179.917...\n\n\n1\nTanzania\nMULTIPOLYGON (((33.90371 -0.95000, 31.86617 -1...\n\n\n...\n...\n...\n\n\n175\nTrinidad and Tobago\nMULTIPOLYGON (((-61.68000 10.76000, -61.66000 ...\n\n\n176\nSouth Sudan\nMULTIPOLYGON (((30.83385 3.50917, 31.24556 3.7...\n\n\n\n\n177 rows × 2 columns\n\n\n\nThe following expression creates a subset based on a condition, such as equality of the value in the 'name_long' column to the string 'Egypt':\n\ngdf[gdf['name_long'] == 'Egypt']\n\n\n\n\n\n\n\n\nname_long\ngeometry\n\n\n\n\n163\nEgypt\nMULTIPOLYGON (((36.86623 22.00000, 36.69069 22...\n\n\n\n\n\n\n\nFinally, to get a sense of the spatial component of the vector layer, it can be plotted using the .plot method, as follows:\n\ngdf.plot();\n\n\n\n\nor using .explore to get an interactive plot:\n\ngdf.explore()\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nAnd consequently, a subset can be plotted using:\n\ngdf[gdf['name_long'] == 'Egypt'].explore()\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\n\n\n1.2.3 Geometry columns\nA vital column in a GeoDataFrame is the geometry column, of class GeoSeries. The geometry column contains the geometric part of the vector layer. In the case of the gdf object, the geometry column contains 'MultiPolygon's associated with each country:\n\ngdf['geometry']\n\n0 MULTIPOLYGON (((-180.00000 -16.55522, -179.917...\n1 MULTIPOLYGON (((33.90371 -0.95000, 31.86617 -1...\n ... \n175 MULTIPOLYGON (((-61.68000 10.76000, -61.66000 ...\n176 MULTIPOLYGON (((30.83385 3.50917, 31.24556 3.7...\nName: geometry, Length: 177, dtype: geometry\n\n\nThe geometry column also contains the spatial reference information, if any:\n\ngdf['geometry'].crs\n\n<Geographic 2D CRS: EPSG:4326>\nName: WGS 84\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: World.\n- bounds: (-180.0, -90.0, 180.0, 90.0)\nDatum: World Geodetic System 1984 ensemble\n- Ellipsoid: WGS 84\n- Prime Meridian: Greenwich\n\n\nMany geometry operations, such as calculating the centroid, buffer, or bounding box of each feature involve just the geometry. Applying this type of operation on a GeoDataFrame is therefore basically a shortcut to applying it on the GeoSeries object in the geometry column. The two following commands therefore return exactly the same result, a GeoSeries with country centroids:\n\ngdf.centroid\n\n/tmp/ipykernel_179/2017122361.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n gdf.centroid\n\n\n0 POINT (163.85312 -17.31631)\n1 POINT (34.75299 -6.25773)\n ... \n175 POINT (-61.33037 10.42824)\n176 POINT (30.19862 7.29289)\nLength: 177, dtype: geometry\n\n\n\ngdf['geometry'].centroid\n\n/tmp/ipykernel_179/3996546279.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n gdf['geometry'].centroid\n\n\n0 POINT (163.85312 -17.31631)\n1 POINT (34.75299 -6.25773)\n ... \n175 POINT (-61.33037 10.42824)\n176 POINT (30.19862 7.29289)\nLength: 177, dtype: geometry\n\n\nNote that .centroid, and other similar operators in geopandas such as .buffer (Section 4.3.3) or .convex_hull, return only the geometry (i.e., a GeoSeries), not a GeoDataFrame with the original attribute data. In case we want the latter, we can create a copy of the GeoDataFrame and then “overwrite” its geometry (or, we can overwrite the geometries directly in case we don’t need the original ones, as in gdf['geometry']=gdf.centroid):\n\ngdf2 = gdf.copy()\ngdf2['geometry'] = gdf.centroid\ngdf2\n\n/tmp/ipykernel_179/4249144945.py:2: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n gdf2['geometry'] = gdf.centroid\n\n\n\n\n\n\n\n\n\nname_long\ngeometry\n\n\n\n\n0\nFiji\nPOINT (163.85312 -17.31631)\n\n\n1\nTanzania\nPOINT (34.75299 -6.25773)\n\n\n...\n...\n...\n\n\n175\nTrinidad and Tobago\nPOINT (-61.33037 10.42824)\n\n\n176\nSouth Sudan\nPOINT (30.19862 7.29289)\n\n\n\n\n177 rows × 2 columns\n\n\n\nAnother useful property of the geometry column is the geometry type, as shown in the following code. Note that the types of geometries contained in a geometry column (and, thus, a vector layer) are not necessarily the same for every row. Accordingly, the .type property returns a Series (of type string), rather than a single value:\n\ngdf['geometry'].type\n\n0 MultiPolygon\n1 MultiPolygon\n ... \n175 MultiPolygon\n176 MultiPolygon\nLength: 177, dtype: object\n\n\nTo summarize the occurrence of different geometry types in a geometry column, we can use the pandas method called value_counts:\n\ngdf['geometry'].type.value_counts()\n\nMultiPolygon 177\ndtype: int64\n\n\nIn this case, we see that the gdf layer contains only 'MultiPolygon' geometries. It is possible to have multiple geometry types in a single GeoSeries and a GeoDataFrame can have multiple GeoSeries:\n\ngdf['centroids'] = gdf.centroid\ngdf['polygons'] = gdf.geometry\ngdf\n\n/tmp/ipykernel_179/104973583.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'centroid' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n gdf['centroids'] = gdf.centroid\n\n\n\n\n\n\n\n\n\nname_long\ngeometry\ncentroids\npolygons\n\n\n\n\n0\nFiji\nMULTIPOLYGON (((-180.00000 -16.55522, -179.917...\nPOINT (163.85312 -17.31631)\nMULTIPOLYGON (((-180.00000 -16.55522, -179.917...\n\n\n1\nTanzania\nMULTIPOLYGON (((33.90371 -0.95000, 31.86617 -1...\nPOINT (34.75299 -6.25773)\nMULTIPOLYGON (((33.90371 -0.95000, 31.86617 -1...\n\n\n...\n...\n...\n...\n...\n\n\n175\nTrinidad and Tobago\nMULTIPOLYGON (((-61.68000 10.76000, -61.66000 ...\nPOINT (-61.33037 10.42824)\nMULTIPOLYGON (((-61.68000 10.76000, -61.66000 ...\n\n\n176\nSouth Sudan\nMULTIPOLYGON (((30.83385 3.50917, 31.24556 3.7...\nPOINT (30.19862 7.29289)\nMULTIPOLYGON (((30.83385 3.50917, 31.24556 3.7...\n\n\n\n\n177 rows × 4 columns\n\n\n\nTo switch the geometry column from one `GeoSeries column to another, we use set_geometry:\n\ngdf.set_geometry('centroids', inplace=True)\ngdf.explore()\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\n\ngdf.set_geometry('polygons', inplace=True)\ngdf.explore()\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\n\n\n1.2.4 The Simple Features standard\nGeometries are the basic building blocks of vector layers. Although the Simple Features standard defines about 20 types of geometries, we will focus on the seven most commonly used types: POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON and GEOMETRYCOLLECTION. Find the whole list of possible feature types in the PostGIS manual. \nWell-known binary (WKB) and well-known text (WKT) are the standard encodings for simple feature geometries. WKB representations are usually hexadecimal strings easily readable for computers. This is why GIS and spatial databases use WKB to transfer and store geometry objects. WKT, on the other hand, is a human-readable text markup description of simple features. Both formats are exchangeable, and if we present one, we will naturally choose the WKT representation.\nThe foundation of each geometry type is the point. A point is simply a coordinate in 2D, 3D, or 4D space such as: \nPOINT (5 2)\nA linestring is a sequence of points with a straight line connecting the points, for example: \nLINESTRING (1 5, 4 4, 4 1, 2 2, 3 2)\nA polygon is a sequence of points that form a closed, non-intersecting ring. Closed means that the first and the last point of a polygon have the same coordinates (see right panel in Figure …).\nPOLYGON ((1 5, 2 2, 4 1, 4 4, 1 5))\n\nSo far we have created geometries with only one geometric entity per feature. However, the Simple Features standard allows multiple geometries to exist within a single feature, using “multi” versions of each geometry type, as illustrated below:\nMULTIPOINT (5 2, 1 3, 3 4, 3 2)\nMULTILINESTRING ((1 5, 4 4, 4 1, 2 2, 3 2), (1 2, 2 4))\nMULTIPOLYGON (((1 5, 2 2, 4 1, 4 4, 1 5), (0 2, 1 2, 1 3, 0 3, 0 2)))\n\nFinally, a geometry collection can contain any combination of geometries including (multi)points and linestrings: \nGEOMETRYCOLLECTION (MULTIPOINT (5 2, 1 3, 3 4, 3 2), LINESTRING (1 5, 4 4, 4 1, 2 2, 3 2))\n\n\n1.2.5 Geometries\nEach element in the geometry column is a geometry object, of class shapely. For example, here is one specific geometry selected by implicit index (that of Canada):\n\ngdf['geometry'].iloc[3]\n\n\n\n\nWe can also select a specific geometry based on the 'name_long' attribute:\n\ngdf[gdf['name_long'] == 'Egypt']['geometry'].iloc[0]\n\n\n\n\nThe shapely package is compatible with the Simple Features standard. Accordingly, seven types of geometries are supported. The following section demonstrates creating a shapely geometry of each type from scratch. In the first example (a 'Point') we demonstrate two types of inputs for geometry creation:\n\na list of coordinates\na string in the WKT format and\n\nIn the examples for the remaining geometries we use the former approach.\nCreating a 'Point' geometry from a list of coordinates uses the shapely.geometry.Point function:\n\npoint = shapely.geometry.Point([5, 2])\npoint\n\n\n\n\nAlternatively, we can use the shapely.wkt.loads (stands for “load a WKT string”) to transform a WKT string to a shapely geometry object. Here is an example of creating the same 'Point' geometry from WKT:\n\npoint = shapely.wkt.loads('POINT (5 2)')\npoint\n\n\n\n\nHere is an example of a 'MultiPoint' geometry from a list of coordinate tuples:\n\nmultipoint = shapely.geometry.MultiPoint([(5,2), (1,3), (3,4), (3,2)])\nmultipoint\n\n\n\n\nHere is an example of a 'LineString' geometry from a list of coordinate tuples:\n\nlinestring = shapely.geometry.LineString([(1,5), (4,4), (4,1), (2,2), (3,2)])\nlinestring\n\n\n\n\nHere is an example of a 'MultiLineString' geometry. Note that there is one list of coordinates for each line in the MultiLineString:\n\nlinestring = shapely.geometry.MultiLineString([[(1,5), (4,4), (4,1), (2,2), (3,2)], [(1,2), (2,4)]])\nlinestring\n\n\n\n\nHere is an example of a 'Polygon' geometry. Note that there is one list of coordinates that defines the exterior outer hull of the polygon, followed by a list of lists of coordinates that define the potential holes in the polygon:\n\npolygon = shapely.geometry.Polygon([(1,5), (2,2), (4,1), (4,4), (1,5)], [[(2,4), (3,4), (3,3), (2,3), (2,4)]])\npolygon\n\n\n\n\nHere is an example of a 'MultiPolygon' geometry:\n\nmultipolygon = shapely.geometry.MultiPolygon([\n shapely.geometry.Polygon([(1,5), (2,2), (4,1), (4,4), (1,5)]), \n shapely.geometry.Polygon([(0,2), (1,2), (1,3), (0,3), (0,2)])\n])\nmultipolygon\n\n\n\n\nAnd, finally, here is an example of a 'GeometryCollection' geometry:\n\nmultipoint = shapely.geometry.GeometryCollection([\n shapely.geometry.MultiPoint([(5,2), (1,3), (3,4), (3,2)]),\n shapely.geometry.MultiLineString([[(1,5), (4,4), (4,1), (2,2), (3,2)], [(1,2), (2,4)]])\n])\nmultipoint\n\n\n\n\nshapely geometries act as atomic units of vector data, as spatial operations on a geometry return a single new geometry. For example, the following expression calculates the difference between the buffered multipolygon (using distance of 0.2) and itself:\n\nmultipolygon.buffer(0.2).difference(multipolygon)\n\n\n\n\nAs demonstrated above, a shapely geometry object is automatically evaluated to a small image of the geometry (when using an interface capable of displaying it, such as a Jupyter Notebook). To print the WKT string instead, we can use the print function:\n\nprint(linestring)\n\nMULTILINESTRING ((1 5, 4 4, 4 1, 2 2, 3 2), (1 2, 2 4))\n\n\nWe can determine the geometry type using the .geom_type property, which returns a string:\n\nlinestring.geom_type\n\n'MultiLineString'\n\n\nFinally, it is important to note that raw coordinates of shapely geometries are accessible through a combination of the .coords, .geoms, .exterior, and .interiors, properties (depending on the geometry type). These access methods are helpful when we need to develop our own spatial operators for specific tasks. For example, the following expression returns the list of all coordinates of the polygon geometry exterior:\n\nlist(polygon.exterior.coords)\n\n[(1.0, 5.0), (2.0, 2.0), (4.0, 1.0), (4.0, 4.0), (1.0, 5.0)]\n\n\n\n\n1.2.6 Vector layer from scratch\nIn the previous sections we started with a vector layer (GeoDataFrame), from an existing Shapefile, and “decomposed” it to extract the geometry column (GeoSeries, Section 1.2.3) and separate geometries (shapely, see Section 1.2.5). In this section, we will demonstrate the opposite process, constructing a GeoDataFrame from shapely geometries, combined into a GeoSeries. This will:\n\nHelp you better understand the structure of a GeoDataFrame, and\nMay come in handy when you need to programmatically construct simple vector layers, such as a line between two given points, etc.\n\nVector layers consist of two main parts: geometries and non-geographic attributes. Figure 1.1 shows how a GeoDataFrame object is created—geometries come from a GeoSeries object (which consists of shapely geometries), while attributes are taken from Series objects.\n\n\n\nFigure 1.1: Creating a GeoDataFrame from scratch\n\n\nThe final result, a vector layer (GeoDataFrame) is therefore a hierarchical structure (Figure 1.2), containing the geometry column (GeoSeries), which in turn contains geometries (shapely). Each of the “internal” components can be accessed, or “extracted”, which is sometimes necessary, as we will see later on.\n\n\n\nFigure 1.2: Structure of a GeoDataFrame\n\n\nNon-geographic attributes represent the name of the feature or other attributes such as measured values, groups, and other things. To illustrate attributes, we will represent a temperature of 25°C in London on June 21st, 2017. This example contains a geometry (the coordinates), and three attributes with three different classes (place name, temperature and date). Objects of class GeoDataFrame represent such data by combining the attributes (Series) with the simple feature geometry column (GeoSeries). First, we create a point geometry, which we know how to do from Section 1.2.5:\n\nlnd_point = shapely.geometry.Point(0.1, 51.5)\nlnd_point\n\n\n\n\nNext, we create a GeoSeries (of length 1), containing the point. Note that a GeoSeries stores a CRS definition, in this case WGS84 (defined using its EPSG code 4326). Also note that the shapely geometries go into a list, to illustrate that there can be more than one (unlike in this example):\n\nlnd_geom = gpd.GeoSeries([lnd_point], crs=4326)\nlnd_geom\n\n0 POINT (0.10000 51.50000)\ndtype: geometry\n\n\nNext, we combine the GeoSeries with other attributes into a dict. The geometry column is a GeoSeries, named geometry. The other attributes (if any) may be defined using list or Series objects. Here, for simplicity, we use the list option for defining the three attributes name, temperature, and date. Again, note that the list can be of length >1, in case we are creating a layer with more than one feature:\n\nd = {\n 'name': ['London'],\n 'temperature': [25],\n 'date': ['2017-06-21'],\n 'geometry': lnd_geom\n}\n\nFinally, the dict can be coverted to a GeoDataFrame:\n\nlnd_layer = gpd.GeoDataFrame(d)\nlnd_layer\n\n\n\n\n\n\n\n\nname\ntemperature\ndate\ngeometry\n\n\n\n\n0\nLondon\n25\n2017-06-21\nPOINT (0.10000 51.50000)\n\n\n\n\n\n\n\nWhat just happened? First, the coordinates were used to create the simple feature geometry (shapely). Second, the geometry was converted into a simple feature geometry column (GeoSeries), with a CRS. Third, attributes were combined with GeoSeries. This results in an GeoDataFrame object, named lnd_layer.\nJust to illustrate how does creating a layer with more than one feature looks like, here is an example where we create a layer with two points, London and Paris:\n\nlnd_point = shapely.geometry.Point(0.1, 51.5)\nparis_point = shapely.geometry.Point(2.3, 48.9)\ntowns_geom = gpd.GeoSeries([lnd_point, paris_point], crs=4326)\nd = {\n 'name': ['London', 'Paris'],\n 'temperature': [25, 27],\n 'date': ['2017-06-21', '2017-06-21'],\n 'geometry': towns_geom\n}\ntowns_layer = gpd.GeoDataFrame(d)\ntowns_layer\n\n\n\n\n\n\n\n\nname\ntemperature\ndate\ngeometry\n\n\n\n\n0\nLondon\n25\n2017-06-21\nPOINT (0.10000 51.50000)\n\n\n1\nParis\n27\n2017-06-21\nPOINT (2.30000 48.90000)\n\n\n\n\n\n\n\nThe following expression creates an interactive map with the result:\n\ntowns_layer.explore()\n\n\nMake this Notebook Trusted to load map: File -> Trust Notebook\n\n\nAlternatively, we can first create a pandas.DataFrame and turn it into a GeoDataFrame like this:\n\ntowns_table = pd.DataFrame({\n 'name': ['London', 'Paris'],\n 'temperature': [25, 27],\n 'date': ['2017-06-21', '2017-06-21'],\n 'x': [0.1, 2.3],\n 'y': [51.5, 48.9]\n})\ntowns_geom = gpd.points_from_xy(towns_table['x'], towns_table['y'])\ntowns_layer = gpd.GeoDataFrame(towns_table, geometry=towns_geom, crs=4326)\n\nwhich gives the same result towns_layer:\n\ntowns_layer\n\n\n\n\n\n\n\n\nname\ntemperature\ndate\nx\ny\ngeometry\n\n\n\n\n0\nLondon\n25\n2017-06-21\n0.1\n51.5\nPOINT (0.10000 51.50000)\n\n\n1\nParis\n27\n2017-06-21\n2.3\n48.9\nPOINT (2.30000 48.90000)\n\n\n\n\n\n\n\nThis approach is particularly useful when we need to read data from a CSV file, e.g., using pandas.read_csv, and want to turn the resulting DataFrame into a GeoDataFrame.\n\n\n1.2.7 Derived numeric properties\nVector layers are characterized by two essential derived numeric properties:\n\nLength (.length)—Applicable to lines\nArea (.area)—Applicable to polygons\n\nArea and length can be calculated for any data structures discussed above, either a shapely geometry, in which case the returned value is a number:\n\nlinestring.length\n\n11.63441361516796\n\n\n\nmultipolygon.area\n\n8.0\n\n\nor for GeoSeries or DataFrame, in which case the returned value is a numeric Series:\n\ngdf.area\n\n/tmp/ipykernel_179/138307179.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'area' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n gdf.area\n\n\n0 1.639506\n1 76.301964\n ... \n175 0.639000\n176 51.196106\nLength: 177, dtype: float64\n\n\nLike all numeric calculations in geopandas, the results assume a planar CRS and are returned in its native units. This means that length and area measurements for geometries in WGS84 (crs=4326) are returned in decimal degrees and essentially meaningless, thus the warning in the above command.\nTo obtain true length and area measurements, the geometries first need to be transformed to a projected CRS (see Section 6.8) applicable to the area of interest. For example, the area of Slovenia can be calculated in the UTM zone 33N CRS (crs=32633). The result is in the CRS units, namely \\(m^2\\):\n\ngdf[gdf['name_long'] == 'Slovenia'].to_crs(32633).area\n\n150 1.910410e+10\ndtype: float64" + }, + { + "objectID": "02-spatial-data.html#raster-data", + "href": "02-spatial-data.html#raster-data", + "title": "1  Geographic data in Python", + "section": "1.3 Raster data", + "text": "1.3 Raster data\n\n1.3.1 Introduction\nAs mentioned above, working with rasters in Python is less organized around one comprehensive package (compared to the case for vector layers and geopandas). Instead, several packages provide alternative subsets of method for working with raster data.\nThe two most notable approaches for working with rasters in Python are provided by the rasterio and xarray packages. As we will see shortly, they differ in their scope and underlying data models. Specifically, rasterio represents rasters as numpy arrays associated with a separate object holding the spatial metadata. The xarray package, however, represents rasters with the native DataArray object, which is an extension of numpy array designed to hold axis labels and attributes, in the same object, together with the array of raster values.\nBoth packages are not exhaustive in the same way geopandas is. For example, when working with rasterio, on the one hand, more packages may be needed to accomplish common tasks such as zonal statistics (package rasterstats) or calculating topographic indices (package richdem). On the other hand, xarray was extended to accommodate spatial operators missing from the core package itself, with the rioxarray and xarray-spatial packages.\nIn the following two sections, we introduce rasterio, which is the raster-related package we are going to work with through the rest of the book.\n\n\n1.3.2 Using rasterio\nTo work with the rasterio package, we first need to import it. We also import numpy, since the underlying raster data are stored in numpy arrays. To effectively work with those, we expose all numpy functions. Finally, we import the rasterio.plot sub-module for its show function for quick visualization of rasters.\n\nimport numpy as np\nimport rasterio\nimport rasterio.plot\nimport subprocess\n\nRasters are typically imported from existing files. When working with rasterio, importing a raster is actually a two-step process:\n\nFirst, we open a raster file “connection” using rasterio.open\nSecond, we read raster values from the connection using the .read method\n\nThis separation is analogous to basic Python functions for reading from files, such as open and .readline to read from a text file. The rationale is that we do not always want to read all information from the file into memory, which is particularly important as rasters size can be larger than RAM size. Accordingly, the second step (.read) is selective. For example, we may want to read just one raster band rather than reading all bands.\nIn the first step, we pass a file path to the rasterio.open function to create a DatasetReader file connection. For this example, we use a single-band raster representing elevation in Zion National Park:\n\nsrc = rasterio.open('data/srtm.tif')\nsrc\n\n<open DatasetReader name='data/srtm.tif' mode='r'>\n\n\nTo get a first impression of the raster values, we can plot the raster using the show function:\n\nrasterio.plot.show(src);\n\n\n\n\nThe DatasetReader contains the raster metadata, that is, all of the information other than the raster values. Let us examine it:\n\nsrc.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint16',\n 'nodata': 65535.0,\n 'width': 465,\n 'height': 457,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)}\n\n\nImportantly, we can see:\n\nThe raster data type (dtype)\nRaster dimensions (width, height, and count, i.e., number of layers)\nRaster Coordinate Reference System (crs)\nThe raster affine transformation matrix (transform)\n\nThe last item (i.e., transform) deserves more attention. To position a raster in geographical space, in addition to the CRS we must specify the raster origin (\\(x_{min}\\), \\(y_{max}\\)) and resolution (\\(delta_{x}\\), \\(delta_{y}\\)). In the transform matrix notation, these data items are stored as follows:\nAffine(delta_x, 0.0, x_min,\n 0.0, delta_y, y_max)\nNote that, by convention, raster y-axis origin is set to the maximum value (\\(y_{max}\\)) rather than the minimum, and, accordingly, the y-axis resolution (\\(delta_{y}\\)) is negative.\nFinally, the .read method of the DatasetReader is used to read the actual raster values. Importantly, we can read:\n\nA particular layer, passing a numeric index (as in .read(1))\nA subset of layers, passing a list of indices (as in .read([1,2]))\nAll layers (as in .read())\n\nNote that the layer indices start from 1, contrary to the Python convention of the first index being 0.\nThe resulting object is a numpy array, with either two or three dimensions:\n\nThree dimensions, when reading more than one layer (e.g., .read() or .read([1,2])). In such case, the dimensions pattern is (layers, rows, columns)\nTwo dimensions, when reading one specific layer (e.g., .read(1))\n\nLet’s read the first (and only) layer from the srtm.tif raster, using the file connection object src, for example:\n\nsrc.read(1)\n\narray([[1728, 1718, 1715, ..., 2654, 2674, 2685],\n [1737, 1727, 1717, ..., 2649, 2677, 2693],\n [1739, 1734, 1727, ..., 2644, 2672, 2695],\n ...,\n [1326, 1328, 1329, ..., 1777, 1778, 1775],\n [1320, 1323, 1326, ..., 1771, 1770, 1772],\n [1319, 1319, 1322, ..., 1768, 1770, 1772]], dtype=uint16)\n\n\nThe result is a two-dimensional numpy array.\nThe relation between a rasterio file connection and the derived properties is summarized in Figure 1.3. The file connection (created with rasterio.open) gives access to the two components of raster data: the metadata (via the .meta property) and the values (via the .read method).\n\n\n\nFigure 1.3: Creating a GeoDataFrame from scratch\n\n\n\n\n1.3.3 Raster from scratch\nIn this section, we are going to demonstrate creation of rasters from scratch. We are going to create two small rasters, elev and grain, which we are going to use in examples later on in the book. Unlike creating a vector layer, creating a raster from scratch is rarely needed in practive because aligning a raster with the right spatial extent is difficult to do programmatically (GIS software is a better fit for the job). Nevertheless, the examples will be useful to become more familiar with the rasterio data structures.\nA raster is basically an array combined with georeferencing information, namely:\n\nA transformation matrix (linking pixel indices with coordinates)\nA CRS definition\n\nTherefore, to create a raster, we first need to have an array with the values, then supplement it with the georeferencing information. Let’s create the arrays elev and grain. The elev array is a 6 by 6 array with sequential values from 1 to 36. It can be created as follows:\n\nelev = np.arange(1, 37, dtype=np.uint8).reshape(6, 6)\nelev\n\narray([[ 1, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\nThe grain array represents a categorical raster with values 0, 1, 2, corresponding to categories “clay”, “silt”, “sand”, respectively. We will create if from a specific arrangement of pixel values, as follows:\n\nv = [\n 1, 0, 1, 2, 2, 2, \n 0, 2, 0, 0, 2, 1, \n 0, 2, 2, 0, 0, 2, \n 0, 0, 1, 1, 1, 1, \n 1, 1, 1, 2, 1, 1, \n 2, 1, 2, 2, 0, 2\n]\ngrain = np.array(v, dtype=np.uint8).reshape(6, 6)\ngrain\n\narray([[1, 0, 1, 2, 2, 2],\n [0, 2, 0, 0, 2, 1],\n [0, 2, 2, 0, 0, 2],\n [0, 0, 1, 1, 1, 1],\n [1, 1, 1, 2, 1, 1],\n [2, 1, 2, 2, 0, 2]], dtype=uint8)\n\n\nNote that in both cases we are using the uint8 (unsigned integer in 8 bits, i.e., 0-255) data type, which is minimally sufficient to represent all possible values of the given rasters. This is the recommended approach for a minimal memory footprint.\nWhat is missing is the raster transform (see Section 1.3.2). In this case, since the rasters are arbitrary, we also set up an arbitrary transformation matrix, where:\n\nthe origin (\\(x_{min}\\), \\(y_{max}\\)) is at -1.5,1.5, and\nand resolution (\\(delta_{x}\\), \\(delta_{y}\\)) is 0.5,-0.5.\n\nIn terms of code, we do that as follows, using rasterio.transform.from_origin:\n\nnew_transform = rasterio.transform.from_origin(\n west=-1.5, \n north=1.5, \n xsize=0.5, \n ysize=0.5\n)\nnew_transform\n\nAffine(0.5, 0.0, -1.5,\n 0.0, -0.5, 1.5)\n\n\nNote that, confusingly, \\(delta_{y}\\) is defined in rasterio.transform.from_origin using a positive value (0.5), even though it is eventuially negative (-0.5)!\nThe raster can now be plotted in its coordinate system, passing the array along with the transformation matrix to show:\n\nrasterio.plot.show(elev, transform=new_transform);\n\n\n\n\nThe grain raster can be plotted the same way, as we are going to use the same transformation matrix for it as well:\n\nrasterio.plot.show(grain, transform=new_transform);\n\n\n\n\nAt this point, we can work with the raster using rasterio:\n\nPassing the transformation matrix wherever true raster pixel coordinates are important (such as in function show above)\nKeeping in mind that any other layer we use in the analysis is in the same CRS of those coordinates\n\nFinally, to export the raster for permanent storage, along with the CRS definition, we need to go through the following steps:\n\nCreate a raster file connection (where we set the transform and the CRS, among other settings)\nWrite the array with raster values into the connection\nClose the connection\n\nIn the case of elev, we do it as follows:\n\nnew_dataset = rasterio.open(\n 'output/elev.tif', 'w', \n driver='GTiff',\n height=elev.shape[0],\n width=elev.shape[1],\n count=1,\n dtype=elev.dtype,\n crs=4326,\n transform=new_transform\n)\nnew_dataset.write(elev, 1)\nnew_dataset.close()\n\nNote that the CRS we (arbitrarily) set for the elev raster is WGS84, defined using crs=4326 according to the EPSG code.\nHere is how we export the grain raster as well, using almost the exact same code just with elev replaced with grain:\n\nnew_dataset = rasterio.open(\n 'output/grain.tif', 'w', \n driver='GTiff',\n height=grain.shape[0],\n width=grain.shape[1],\n count=1,\n dtype=grain.dtype,\n crs=4326,\n transform=new_transform\n)\nnew_dataset.write(grain, 1)\nnew_dataset.close()\n\nDon’t worry if the raster export code is unclear. We will elaborate on the details of raster output in Section 7.8.2.\nAs a result, the files elev.tif and grain.tif are written into the output directory. These are identical to the elev.tif and grain.tif files in the data directory which we use later on in the examples (for example, Section 2.4.1).\nNote that the transform matrices and dimensions of elev and grain are identical. This means that the rasters are overlapping, and can be combined into one two-band raster, combined in raster algebra operations (Section 3.4.2), etc." + }, + { + "objectID": "02-spatial-data.html#sec-coordinate-reference-systems", + "href": "02-spatial-data.html#sec-coordinate-reference-systems", + "title": "1  Geographic data in Python", + "section": "1.4 Coordinate Reference Systems", + "text": "1.4 Coordinate Reference Systems\nVector and raster spatial data types share concepts intrinsic to spatial data. Perhaps the most fundamental of these is the Coordinate Reference System (CRS), which defines how the spatial elements of the data relate to the surface of the Earth (or other bodies). CRSs are either geographic or projected, as introduced at the beginning of this chapter (see …). This section explains each type, laying the foundations for Chapter 6, which provides a deep dive into setting, transforming, and querying CRSs.\n\n1.4.1 Geographic coordinate systems\nGeographic coordinate systems identify any location on the Earth’s surface using two values—longitude and latitude (see left panel of Figure 1.4). Longitude is a location in the East-West direction in angular distance from the Prime Meridian plane, while latitude is an angular distance North or South of the equatorial plane. Distances in geographic CRSs are therefore not measured in meters. This has important consequences, as demonstrated in Section 7.\nA spherical or ellipsoidal surface represents the surface of the Earth in geographic coordinate systems. Spherical models assume that the Earth is a perfect sphere of a given radius—they have the advantage of simplicity, but, at the same time, they are inaccurate: the Earth is not a sphere! Ellipsoidal models are defined by two parameters: the equatorial radius and the polar radius. These are suitable because the Earth is compressed: the equatorial radius is around 11.5 km longer than the polar radius. \nEllipsoids are part of a broader component of CRSs: the datum. This contains information on what ellipsoid to use and the precise relationship between the Cartesian coordinates and location on the Earth’s surface. There are two types of datum—geocentric (such as WGS84) and local (such as NAD83). You can see examples of these two types of datums in Figure …. Black lines represent a geocentric datum, whose center is located in the Earth’s center of gravity and is not optimized for a specific location. In a local datum, shown as a purple dashed line, the ellipsoidal surface is shifted to align with the surface at a particular location. These allow local variations on Earth’s surface, such as large mountain ranges, to be accounted for in a local CRS. \n\n\n1.4.2 Projected coordinate reference systems\nAll projected CRSs are based on a geographic CRS, described in the previous section, and rely on map projections to convert the three-dimensional surface of the Earth into Easting and Northing (x and y) values in a projected CRS. Projected CRSs are based on Cartesian coordinates on an implicitly flat surface (see right panel of Figure 1.4). They have an origin, x and y axes, and a linear unit of measurement such as meters.\nThis transition cannot be done without adding some deformations. Therefore, some properties of the Earth’s surface are distorted in this process, such as area, direction, distance, and shape. A projected coordinate system can preserve only one or two of those properties. Projections are often named based on a property they preserve: equal-area preserves area, azimuthal preserves direction, equidistant preserves distance, and conformal preserves local shape.\nThere are three main groups of projection types: conic, cylindrical, and planar (azimuthal). In a conic projection, the Earth’s surface is projected onto a cone along a single line of tangency or two lines of tangency. Distortions are minimized along the tangency lines and rise with the distance from those lines in this projection. Therefore, it is best suited for maps of mid-latitude areas. A cylindrical projection maps the surface onto a cylinder. This projection could also be created by touching the Earth’s surface along a single line of tangency or two lines of tangency. Cylindrical projections are used most often when mapping the entire world. A planar projection projects data onto a flat surface touching the globe at a point or along a line of tangency. It is typically used in mapping polar regions.\nLike most open-source geospatial software, the geopandas and rasterio packages use the PROJ software for CRS definition and calculations. The pyproj package is a low-level interface to PROJ. Using its functions, we can examine the list of supported projections:\n\nimport pyproj\nepsg_codes = pyproj.get_codes('EPSG', 'CRS') ## List of supported EPSG codes\nepsg_codes[:5] ## print first five\n\n['2000', '20000', '20001', '20002', '20003']\n\n\n\npyproj.CRS.from_epsg(4326) ## Printout of WGS84 CRS (EPSG:4326)\n\n<Geographic 2D CRS: EPSG:4326>\nName: WGS 84\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: World.\n- bounds: (-180.0, -90.0, 180.0, 90.0)\nDatum: World Geodetic System 1984 ensemble\n- Ellipsoid: WGS 84\n- Prime Meridian: Greenwich\n\n\nA quick summary of different projections, their types, properties, and suitability can be found in “Map Projections” (1993) and at https://www.geo-projections.com/. We will expand on CRSs and explain how to project from one CRS to another in Chapter 7. But, for now, it is sufficient to know:\n\nThat coordinate systems are a key component of geographic objects\nKnowing which CRS your data is in, and whether it is in geographic (lon/lat) or projected (typically meters), is important and has consequences for how Python handles spatial and geometry operations\nCRSs of geopandas (vector layer or geometry column) and rasterio (raster) objects can be queried with the .crs property\n\nHere is a demonstration of the last bullet point, where we import a vector layer and figure out its CRS (in this case, a projected CRS, namely UTM Zone 12):\n\nzion = gpd.read_file('data/zion.gpkg')\nzion.crs\n\n<Bound CRS: PROJCS[\"UTM Zone 12, Northern Hemisphere\",GEOGCS[\" ...>\nName: UTM Zone 12, Northern Hemisphere\nAxis Info [cartesian]:\n- [east]: Easting (Meter)\n- [north]: Northing (Meter)\nArea of Use:\n- undefined\nCoordinate Operation:\n- name: Transformation from GRS 1980(IUGG, 1980) to WGS84\n- method: Position Vector transformation (geog2D domain)\nDatum: unknown\n- Ellipsoid: GRS80\n- Prime Meridian: Greenwich\nSource CRS: UTM Zone 12, Northern Hemisphere\n\n\nAnd here is an illustration of the layer in the original projected CRS and in a geographic CRS (Figure 1.4):\n\nfig, axes = plt.subplots(ncols=2, figsize=(9,4))\nzion.to_crs(4326).plot(ax=axes[0], edgecolor='black', color='lightgrey')\nzion.plot(ax=axes[1], edgecolor='black', color='lightgrey')\naxes[0].set_axisbelow(True) ## Plot grid below other elements\naxes[1].set_axisbelow(True)\naxes[0].grid() ## Add grid\naxes[1].grid()\naxes[0].set_title('WGS 84')\naxes[1].set_title('UTM zone 12N');\n\n\n\n\nFigure 1.4: Examples of geographic (WGS 84; left) and projected (NAD83 / UTM zone 12N; right) coordinate systems for a vector data type.\n\n\n\n\nWe are going to elaborate on reprojection from one CRS to another (.to_crs in the above code section) in Chapter 6." + }, + { + "objectID": "02-spatial-data.html#units", + "href": "02-spatial-data.html#units", + "title": "1  Geographic data in Python", + "section": "1.5 Units", + "text": "1.5 Units\nAn essential feature of CRSs is that they contain information about spatial units. Clearly, it is vital to know whether a house’s measurements are in feet or meters, and the same applies to maps. It is a good cartographic practice to add a scale bar or some other distance indicator onto maps to demonstrate the relationship between distances on the page or screen and distances on the ground. Likewise, it is important for the user to be aware of the units in which the geometry coordinates are, to ensure that subsequent calculations are done in the right context.\nPython spatial data structures in geopandas and rasterio do not natively support the concept of measurement. The coordinates of a vector layer or a raster are plain numbers, referring to an arbitrary plane. For example, according to the .transform matrix of srtm.tif we can see that the raster resolution is 0.000833 and that its CRS is WGS84 (EPSG: 4326). We may know (or can find out) that the units of WGS84 are decimal degrees. However, that information is not encoded in any numeric calculation.\n\nsrc.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint16',\n 'nodata': 65535.0,\n 'width': 465,\n 'height': 457,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)}\n\n\nConsequently, we need to be aware of the CRS units we are working with. Typically, these are decimal degrees, in a geographic CRS, or \\(m\\), in a projected CRS, although there are exceptions. Geometric calculations such as length, area, or distance, return plain numbers in the same units of the CRS (such as \\(m\\) or \\(m^2\\)). It is up to the user to determine which units the result is given in and treat the result accordingly. For example, if the area output was in \\(m^2\\) and we need the result in \\(km^2\\), then we need to divide the result by \\(1000^2\\)." + }, + { + "objectID": "02-spatial-data.html#exercises", + "href": "02-spatial-data.html#exercises", + "title": "1  Geographic data in Python", + "section": "1.6 Exercises", + "text": "1.6 Exercises\n…" + }, + { + "objectID": "03-attribute-operations.html#prerequisites", + "href": "03-attribute-operations.html#prerequisites", + "title": "2  Attribute data operations", + "section": "2.1 Prerequisites", + "text": "2.1 Prerequisites\nLet’s import the required packages:\n\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport geopandas as gpd\nimport rasterio\n\nand load the sample data for this chapter:\n\n\nAttempting to get the data\n\n\n\nworld = gpd.read_file('data/world.gpkg')\nsrc_elev = rasterio.open('data/elev.tif')\nsrc_multi_rast = rasterio.open('data/landsat.tif')" + }, + { + "objectID": "03-attribute-operations.html#introduction", + "href": "03-attribute-operations.html#introduction", + "title": "2  Attribute data operations", + "section": "2.2 Introduction", + "text": "2.2 Introduction\nAttribute data is non-spatial information associated with geographic (geometry) data. A bus stop provides a simple example: its position would typically be represented by latitude and longitude coordinates (geometry data), in addition to its name. The Elephant & Castle / New Kent Road stop in London, for example has coordinates of -0.098 degrees longitude and 51.495 degrees latitude which can be represented as POINT (-0.098 51.495) in the Simple Feature representation described in Chapter 1. Attributes such as the name attribute of the POINT feature (to use Simple Features terminology) are the topic of this chapter.\nAnother example is the elevation value (attribute) for a specific grid cell in raster data. Unlike the vector data model, the raster data model stores the coordinate of the grid cell indirectly, meaning the distinction between attribute and spatial information is less clear. To illustrate the point, think of a pixel in the 3rd row and the 4th column of a raster matrix. Its spatial location is defined by its index in the matrix: move from the origin four cells in the x direction (typically east and right on maps) and three cells in the y direction (typically south and down). The raster’s resolution defines the distance for each x- and y-step which is specified in a header. The header is a vital component of raster datasets which specifies how pixels relate to geographic coordinates (see also Chapter @spatial-operations).\nThis chapter teaches how to manipulate geographic objects based on attributes such as the names of bus stops in a vector dataset and elevations of pixels in a raster dataset. For vector data, this means techniques such as subsetting and aggregation (see Section 2.3.1 and Section 2.3.2). Section 2.3.3 and Section 2.3.4 demonstrate how to join data onto simple feature objects using a shared ID and how to create new variables, respectively. Each of these operations has a spatial equivalent: [ operator for subsetting a (Geo)DataFrame using a boolean Series, for example, is applicable both for subsetting objects based on their attribute and spatial relations derived using methods such as .intersects; you can also join attributes in two geographic datasets using spatial joins. This is good news: skills developed in this chapter are cross-transferable. Chapter 3 extends the methods presented here to the spatial world.\nAfter a deep dive into various types of vector attribute operations in the next section, raster attribute data operations are covered in Section 2.4, which demonstrates how to create raster layers containing continuous and categorical attributes and extracting cell values from one or more layer (raster subsetting). Section 2.4.2 provides an overview of ‘global’ raster operations which can be used to summarize entire raster datasets." + }, + { + "objectID": "03-attribute-operations.html#vector-attribute-manipulation", + "href": "03-attribute-operations.html#vector-attribute-manipulation", + "title": "2  Attribute data operations", + "section": "2.3 Vector attribute manipulation", + "text": "2.3 Vector attribute manipulation\nAs mentioned in Section 1.2.2, vector layers (GeoDataFrame, from package geopandas) are basically extended tables (DataFrame from package pandas), the difference being that a vector layer has a geometry column. Since GeoDataFrame extends DataFrame, all ordinary table-related operations from package pandas are supported for vector layers as well, as shown below.\n\n2.3.1 Vector attribute subsetting\npandas supports several subsetting interfaces, though the most recommended ones are:\n\n.loc, which uses pandas indices, and\n.iloc, which uses (implicit) numpy-style numeric indices.\n\nIn both cases the method is followed by square brackets, and two indices, separated by a comma. Each index can comprise:\n\nA specific value, as in 1\nA slice, as in 0:3\nA list, as in [0,2,4]\n:—indicating “all” indices\n\nAn exception to this rule is selecting columns using a list, as in df[['a','b']], instead of df.loc[:, ['a','b']], to select columns 'a' and 'b' from df.\nHere are few examples of subsetting the GeoDataFrame of world countries.\nSubsetting rows by position, e.g., the first three rows:\n\nworld.iloc[0:3, :]\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.960\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nTanzania\nAfrica\n...\n64.163\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nNaN\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n\n\n3 rows × 11 columns\n\n\n\nwhich is equivalent to:\n\nworld.iloc[:3]\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.960\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nTanzania\nAfrica\n...\n64.163\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nNaN\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n\n\n3 rows × 11 columns\n\n\n\nas well as:\n\nworld.head(3)\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.960\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nTanzania\nAfrica\n...\n64.163\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nNaN\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n\n\n3 rows × 11 columns\n\n\n\nSubsetting columns by position, e.g., the first three columns:\n\nworld.iloc[:, 0:3]\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n\n\n\n\n0\nFJ\nFiji\nOceania\n\n\n1\nTZ\nTanzania\nAfrica\n\n\n2\nEH\nWestern Sahara\nAfrica\n\n\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nEurope\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n\n\n176\nSS\nSouth Sudan\nAfrica\n\n\n\n\n177 rows × 3 columns\n\n\n\nSubsetting rows and columns by position:\n\nworld.iloc[0:3, 0:3]\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n\n\n\n\n0\nFJ\nFiji\nOceania\n\n\n1\nTZ\nTanzania\nAfrica\n\n\n2\nEH\nWestern Sahara\nAfrica\n\n\n\n\n\n\n\nSubsetting columns by name:\n\nworld[['name_long', 'geometry']]\n\n\n\n\n\n\n\n\nname_long\ngeometry\n\n\n\n\n0\nFiji\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTanzania\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nWestern Sahara\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n...\n...\n...\n\n\n174\nKosovo\nMULTIPOLYGON (((20.59025 41.855...\n\n\n175\nTrinidad and Tobago\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n176\nSouth Sudan\nMULTIPOLYGON (((30.83385 3.5091...\n\n\n\n\n177 rows × 2 columns\n\n\n\n“Slice” of columns between given ones:\n\nworld.loc[:, 'name_long':'pop']\n\n\n\n\n\n\n\n\nname_long\ncontinent\nregion_un\n...\ntype\narea_km2\npop\n\n\n\n\n0\nFiji\nOceania\nOceania\n...\nSovereign country\n19289.970733\n885806.0\n\n\n1\nTanzania\nAfrica\nAfrica\n...\nSovereign country\n932745.792357\n52234869.0\n\n\n2\nWestern Sahara\nAfrica\nAfrica\n...\nIndeterminate\n96270.601041\nNaN\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nKosovo\nEurope\nEurope\n...\nSovereign country\n11230.261672\n1821800.0\n\n\n175\nTrinidad and Tobago\nNorth America\nAmericas\n...\nSovereign country\n7737.809855\n1354493.0\n\n\n176\nSouth Sudan\nAfrica\nAfrica\n...\nSovereign country\n624909.099086\n11530971.0\n\n\n\n\n177 rows × 7 columns\n\n\n\nSubsetting by a list of boolean values (0 and 1 or True and False):\n\nx = [1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0] \nworld.iloc[:, x]\n\n\n\n\n\n\n\n\nname_long\nname_long\niso_a2\n...\nname_long\niso_a2\niso_a2\n\n\n\n\n0\nFiji\nFiji\nFJ\n...\nFiji\nFJ\nFJ\n\n\n1\nTanzania\nTanzania\nTZ\n...\nTanzania\nTZ\nTZ\n\n\n2\nWestern Sahara\nWestern Sahara\nEH\n...\nWestern Sahara\nEH\nEH\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nKosovo\nKosovo\nXK\n...\nKosovo\nXK\nXK\n\n\n175\nTrinidad and Tobago\nTrinidad and Tobago\nTT\n...\nTrinidad and Tobago\nTT\nTT\n\n\n176\nSouth Sudan\nSouth Sudan\nSS\n...\nSouth Sudan\nSS\nSS\n\n\n\n\n177 rows × 11 columns\n\n\n\nWe can remove specific rows by id using the .drop method, e.g., dropping rows 2, 3, and 5:\n\nworld.drop([2, 3, 5])\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.960000\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nTanzania\nAfrica\n...\n64.163000\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n4\nUS\nUnited States\nNorth America\n...\n78.841463\n51921.984639\nMULTIPOLYGON (((-171.73166 63.7...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nEurope\n...\n71.097561\n8698.291559\nMULTIPOLYGON (((20.59025 41.855...\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\n70.426000\n31181.821196\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n176\nSS\nSouth Sudan\nAfrica\n...\n55.817000\n1935.879400\nMULTIPOLYGON (((30.83385 3.5091...\n\n\n\n\n174 rows × 11 columns\n\n\n\nOr remove specific columns using the .drop method and axis=1 (i.e., columns):\n\nworld.drop(['name_long', 'continent'], axis=1)\n\n\n\n\n\n\n\n\niso_a2\nregion_un\nsubregion\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nOceania\nMelanesia\n...\n69.960000\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nAfrica\nEastern Africa\n...\n64.163000\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nEH\nAfrica\nNorthern Africa\n...\nNaN\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nEurope\nSouthern Europe\n...\n71.097561\n8698.291559\nMULTIPOLYGON (((20.59025 41.855...\n\n\n175\nTT\nAmericas\nCaribbean\n...\n70.426000\n31181.821196\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n176\nSS\nAfrica\nEastern Africa\n...\n55.817000\n1935.879400\nMULTIPOLYGON (((30.83385 3.5091...\n\n\n\n\n177 rows × 9 columns\n\n\n\nWe can rename columns using the .rename method:\n\nworld[['name_long', 'pop']].rename(columns={'pop': 'population'})\n\n\n\n\n\n\n\n\nname_long\npopulation\n\n\n\n\n0\nFiji\n885806.0\n\n\n1\nTanzania\n52234869.0\n\n\n2\nWestern Sahara\nNaN\n\n\n...\n...\n...\n\n\n174\nKosovo\n1821800.0\n\n\n175\nTrinidad and Tobago\n1354493.0\n\n\n176\nSouth Sudan\n11530971.0\n\n\n\n\n177 rows × 2 columns\n\n\n\nThe standard numpy comparison operators can be used in boolean subsetting, as illustrated in Table Table 2.1.\n\n\nTable 2.1: Comparison operators that return Booleans (True/False).\n\n\nSymbol\nName\n\n\n\n\n==\nEqual to\n\n\n!=\nNot equal to\n\n\n>, <\nGreater/Less than\n\n\n>=, <=\nGreater/Less than or equal\n\n\n&, |, ~\nLogical operators: And, Or, Not\n\n\n\n\nThe following example demonstrates logical vectors for subsetting by creating a new GeoDataFrame object called small_countries that contains only those countries whose surface area is smaller than 10,000 km2:\n\nidx_small = world['area_km2'] < 10000 ## a logical 'Series'\nsmall_countries = world[idx_small]\nsmall_countries\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n45\nPR\nPuerto Rico\nNorth America\n...\n79.390122\n35066.046376\nMULTIPOLYGON (((-66.28243 18.51...\n\n\n79\nPS\nPalestine\nAsia\n...\n73.126000\n4319.528283\nMULTIPOLYGON (((35.39756 31.489...\n\n\n89\nVU\nVanuatu\nOceania\n...\n71.709000\n2892.341604\nMULTIPOLYGON (((166.79316 -15.6...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n160\nNaN\nNorthern Cyprus\nAsia\n...\nNaN\nNaN\nMULTIPOLYGON (((32.73178 35.140...\n\n\n161\nCY\nCyprus\nAsia\n...\n80.173000\n29786.365653\nMULTIPOLYGON (((32.73178 35.140...\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\n70.426000\n31181.821196\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n\n\n7 rows × 11 columns\n\n\n\nThe intermediary idx_small (short for index representing small countries) is a boolean Series that can be used to subset the seven smallest countries in the world by surface area. A more concise command, which omits the intermediary object, generates the same result:\n\nsmall_countries = world[world['area_km2'] < 10000]\nsmall_countries\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n45\nPR\nPuerto Rico\nNorth America\n...\n79.390122\n35066.046376\nMULTIPOLYGON (((-66.28243 18.51...\n\n\n79\nPS\nPalestine\nAsia\n...\n73.126000\n4319.528283\nMULTIPOLYGON (((35.39756 31.489...\n\n\n89\nVU\nVanuatu\nOceania\n...\n71.709000\n2892.341604\nMULTIPOLYGON (((166.79316 -15.6...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n160\nNaN\nNorthern Cyprus\nAsia\n...\nNaN\nNaN\nMULTIPOLYGON (((32.73178 35.140...\n\n\n161\nCY\nCyprus\nAsia\n...\n80.173000\n29786.365653\nMULTIPOLYGON (((32.73178 35.140...\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\n70.426000\n31181.821196\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n\n\n7 rows × 11 columns\n\n\n\nThe various methods shown above can be chained for any combination with several subsetting steps, e.g.:\n\nworld[world['continent'] == 'Asia'] \\\n .loc[:, ['name_long', 'continent']] \\\n .iloc[0:5, :]\n\n\n\n\n\n\n\n\nname_long\ncontinent\n\n\n\n\n5\nKazakhstan\nAsia\n\n\n6\nUzbekistan\nAsia\n\n\n8\nIndonesia\nAsia\n\n\n24\nTimor-Leste\nAsia\n\n\n76\nIsrael\nAsia\n\n\n\n\n\n\n\nWe can also combine indexes:\n\nidx_small = world['area_km2'] < 10000\nidx_asia = world['continent'] == 'Asia'\nworld.loc[idx_small & idx_asia, ['name_long', 'continent', 'area_km2']]\n\n\n\n\n\n\n\n\nname_long\ncontinent\narea_km2\n\n\n\n\n79\nPalestine\nAsia\n5037.103826\n\n\n160\nNorthern Cyprus\nAsia\n3786.364506\n\n\n161\nCyprus\nAsia\n6207.006191\n\n\n\n\n\n\n\n\n\n2.3.2 Vector attribute aggregation\nAggregation involves summarizing data based on one or more grouping variables (typically values in a column;geographic aggregation is covered in the next chapter). A classic example of this attribute-based aggregation is calculating the number of people per continent based on country-level data (one row per country). The world dataset contains the necessary ingredients: the columns pop and continent, the population and the grouping variable, respectively. The aim is to find the sum() of country populations for each continent, resulting in a smaller data frame. (Since aggregation is a form of data reduction, it can be a useful early step when working with large datasets). This aggregation can be achieved using a combination of .groupby and .sum:\n\nworld_agg1 = world[['continent', 'pop']].groupby('continent').sum()\nworld_agg1\n\n\n\n\n\n\n\n\npop\n\n\ncontinent\n\n\n\n\n\nAfrica\n1.154947e+09\n\n\nAntarctica\n0.000000e+00\n\n\nAsia\n4.311408e+09\n\n\n...\n...\n\n\nOceania\n3.775783e+07\n\n\nSeven seas (open ocean)\n0.000000e+00\n\n\nSouth America\n4.120608e+08\n\n\n\n\n8 rows × 1 columns\n\n\n\nIf you dislike the scientific notation used by default to display the population sums, you can change the Pandas display format for float values like this:\n\npd.set_option('display.float_format', '{:.0f}'.format)\nworld_agg1\n\n\n\n\n\n\n\n\npop\n\n\ncontinent\n\n\n\n\n\nAfrica\n1154946633\n\n\nAntarctica\n0\n\n\nAsia\n4311408059\n\n\n...\n...\n\n\nOceania\n37757833\n\n\nSeven seas (open ocean)\n0\n\n\nSouth America\n412060811\n\n\n\n\n8 rows × 1 columns\n\n\n\nThe result is a (non-spatial) table with eight rows, one per continent, and two columns reporting the name and population of each continent.\nIf we want to include the geometry in the aggregation result, we can use the .dissolve method. That way, in addition to the summed population, we also get the associated geometry per continent, i.e., the union of all countries. Note that we use the by parameter to choose which column(s) are used for grouping, and the aggfunc parameter to choose the aggregation function for non-geometry columns:\n\nworld_agg2 = world[['continent', 'pop', 'geometry']] \\\n .dissolve(by='continent', aggfunc='sum') \\\n .reset_index()\nworld_agg2\n\n\n\n\n\n\n\n\ncontinent\ngeometry\npop\n\n\n\n\n0\nAfrica\nMULTIPOLYGON (((-11.43878 6.785...\n1154946633\n\n\n1\nAntarctica\nMULTIPOLYGON (((-61.13898 -79.9...\n0\n\n\n2\nAsia\nMULTIPOLYGON (((48.67923 14.003...\n4311408059\n\n\n...\n...\n...\n...\n\n\n5\nOceania\nMULTIPOLYGON (((147.91405 -43.2...\n37757833\n\n\n6\nSeven seas (open ocean)\nPOLYGON ((68.93500 -48.62500, 6...\n0\n\n\n7\nSouth America\nMULTIPOLYGON (((-68.63999 -55.5...\n412060811\n\n\n\n\n8 rows × 3 columns\n\n\n\nFigure 2.1 shows the result:\n\nworld_agg2.plot(column='pop', legend=True);\n\n\n\n\nFigure 2.1: Continents with summed population\n\n\n\n\nThe resulting world_agg2 object is a GeoDataFrame containing 8 features representing the continents of the world (and the open ocean).\nOther options for the aggfunc parameter in .dissolve include:\n\n'first'\n'last'\n'min'\n'max'\n'sum'\n'mean'\n'median'\n\nAdditionally, we can pass custom functions.\nAs a more complex example, here is how we can calculate the total population, area, and count of countries, per continent:\n\nworld_agg3 = world.dissolve(\n by='continent', aggfunc={\n \"name_long\": \"count\",\n \"pop\": \"sum\",\n 'area_km2': \"sum\"\n }).rename(columns={'name_long': 'n'})\nworld_agg3\n\n\n\n\n\n\n\n\ngeometry\nn\npop\narea_km2\n\n\ncontinent\n\n\n\n\n\n\n\n\nAfrica\nMULTIPOLYGON (((-11.43878 6.785...\n51\n1154946633\n29946198\n\n\nAntarctica\nMULTIPOLYGON (((-61.13898 -79.9...\n1\n0\n12335956\n\n\nAsia\nMULTIPOLYGON (((48.67923 14.003...\n47\n4311408059\n31252459\n\n\n...\n...\n...\n...\n...\n\n\nOceania\nMULTIPOLYGON (((147.91405 -43.2...\n7\n37757833\n8504489\n\n\nSeven seas (open ocean)\nPOLYGON ((68.93500 -48.62500, 6...\n1\n0\n11603\n\n\nSouth America\nMULTIPOLYGON (((-68.63999 -55.5...\n13\n412060811\n17762592\n\n\n\n\n8 rows × 4 columns\n\n\n\nFigure Figure 2.2 visualizes the resulting layer (world_agg3) of continents with the three aggregated attributes.\n\nfig, axes = plt.subplots(2, 2, figsize=(9, 5))\nworld_agg3.plot(column='pop', edgecolor='black', legend=True, ax=axes[0][0])\nworld_agg3.plot(column='area_km2', edgecolor='black', legend=True, ax=axes[0][1])\nworld_agg3.plot(column='n', edgecolor='black', legend=True, ax=axes[1][0])\naxes[0][0].set_title('Summed population')\naxes[0][1].set_title('Summed area')\naxes[1][0].set_title('Count of countries')\nfig.delaxes(axes[1][1]);\n\n\n\n\nFigure 2.2: Continent properties, calculated using spatial aggregation using different functions\n\n\n\n\nLet’s proceed with the last result to demonstrate other table-related operations. Given the world_agg3 continent summary (Figure 2.2), we:\n\ndrop the geometry columns,\ncalculate population density of each continent,\narrange continents by the number countries they contain, and\nkeep only the 3 most populous continents.\n\n\nworld_agg4 = world_agg3.drop(columns=['geometry'])\nworld_agg4['density'] = world_agg4['pop'] / world_agg4['area_km2']\nworld_agg4 = world_agg4.sort_values(by='n', ascending=False)\nworld_agg4 = world_agg4.head(3)\nworld_agg4\n\n\n\n\n\n\n\n\nn\npop\narea_km2\ndensity\n\n\ncontinent\n\n\n\n\n\n\n\n\nAfrica\n51\n1154946633\n29946198\n39\n\n\nAsia\n47\n4311408059\n31252459\n138\n\n\nEurope\n39\n669036256\n23065219\n29\n\n\n\n\n\n\n\n\n\n2.3.3 Vector attribute joining\nCombining data from different sources is a common task in data preparation. Joins do this by combining tables based on a shared ‘key’ variable. pandas has a function named pd.merge for joining (Geo)DataFrames based on common column(s). The pd.merge function follows conventions used in the database language SQL (Grolemund and Wickham 2016). The pd.merge function works the same on DataFrame and GeoDataFrame objects. The result of pd.merge can be either a DataFrame or a GeoDataFrame object, depending on the inputs.\nA common type of attribute join on spatial data is to join DataFrames to GeoDataFrames. To achieve this, we use pd.merge with a GeoDataFrame as the first argument and add columns to it from a DataFrame specified as the second argument. In the following example, we combine data on coffee production with the world dataset. The coffee data is in a DataFrame called coffee_data imported from a CSV file of major coffee-producing nations:\n\ncoffee_data = pd.read_csv('data/coffee_data.csv')\ncoffee_data\n\n\n\n\n\n\n\n\nname_long\ncoffee_production_2016\ncoffee_production_2017\n\n\n\n\n0\nAngola\nNaN\nNaN\n\n\n1\nBolivia\n3\n4\n\n\n2\nBrazil\n3277\n2786\n\n\n...\n...\n...\n...\n\n\n44\nZambia\n3\nNaN\n\n\n45\nZimbabwe\n1\n1\n\n\n46\nOthers\n23\n26\n\n\n\n\n47 rows × 3 columns\n\n\n\nIts three columns are:\n\nname_long country name\ncoffee_production_2016 and coffee_production_2017 contain estimated values for coffee production in units of 60-kg bags per year.\n\nA left join, which preserves the first dataset, merges world with coffee_data, based on the common 'name_long' column:\n\nworld_coffee = pd.merge(world, coffee_data, on='name_long', how='left')\nworld_coffee\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\ngeometry\ncoffee_production_2016\ncoffee_production_2017\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\nMULTIPOLYGON (((-180.00000 -16....\nNaN\nNaN\n\n\n1\nTZ\nTanzania\nAfrica\n...\nMULTIPOLYGON (((33.90371 -0.950...\n81\n66\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nMULTIPOLYGON (((-8.66559 27.656...\nNaN\nNaN\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nEurope\n...\nMULTIPOLYGON (((20.59025 41.855...\nNaN\nNaN\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\nMULTIPOLYGON (((-61.68000 10.76...\nNaN\nNaN\n\n\n176\nSS\nSouth Sudan\nAfrica\n...\nMULTIPOLYGON (((30.83385 3.5091...\nNaN\nNaN\n\n\n\n\n177 rows × 13 columns\n\n\n\nThe result is a GeoDataFrame object identical to the original world object, but with two new variables (coffee_production_2016 and coffee_production_2017) on coffee production. This can be plotted as a map, as illustrated in Figure 2.3:\n\nbase = world_coffee.plot(color='white', edgecolor='lightgrey')\ncoffee_map = world_coffee.plot(ax=base, column='coffee_production_2017')\ncoffee_map.set_title('Coffee production');\n\n\n\n\nFigure 2.3: World coffee production, thousand 60-kg bags by country, in 2017 (source: International Coffee Organization).\n\n\n\n\nTo work, attribute-based joins need a ‘key variable’ in both datasets (on parameter of pd.merge). In the above example, both world_coffee and world DataFrames contained a column called name_long. (By default pd.merge uses all columns with matching names. However, it is recommended to explicitly specify the names of the columns to be used for matching, like we did in the last example.)\nIn case where column names are not the same, you can use left_on and right_on to specify the respective columns.\nNote that the result world_coffee has the same number of rows as the original dataset world. Although there are only 47 rows in coffee_data, all 177 country records are kept intact in world_coffee. Rows in the original dataset with no match are assigned np.nan values for the new coffee production variables. This is a characteristic of a left join (specified with how='left') and is what we typically want to do.\nWhat if we only want to keep countries that have a match in the key variable? In that case an inner join can be used:\n\npd.merge(world, coffee_data, on='name_long', how='inner')\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\ngeometry\ncoffee_production_2016\ncoffee_production_2017\n\n\n\n\n0\nTZ\nTanzania\nAfrica\n...\nMULTIPOLYGON (((33.90371 -0.950...\n81\n66\n\n\n1\nPG\nPapua New Guinea\nOceania\n...\nMULTIPOLYGON (((141.00021 -2.60...\n114\n74\n\n\n2\nID\nIndonesia\nAsia\n...\nMULTIPOLYGON (((104.36999 -1.08...\n742\n360\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n42\nET\nEthiopia\nAfrica\n...\nMULTIPOLYGON (((47.78942 8.0030...\n215\n283\n\n\n43\nUG\nUganda\nAfrica\n...\nMULTIPOLYGON (((33.90371 -0.950...\n408\n443\n\n\n44\nRW\nRwanda\nAfrica\n...\nMULTIPOLYGON (((30.41910 -1.134...\n36\n42\n\n\n\n\n45 rows × 13 columns\n\n\n\nAn alternative way to join two (Geo)DataFrames is the aptly called join function:\n\nworld.join(coffee_data.set_index('name_long'), on='name_long', how='inner')\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\ngeometry\ncoffee_production_2016\ncoffee_production_2017\n\n\n\n\n1\nTZ\nTanzania\nAfrica\n...\nMULTIPOLYGON (((33.90371 -0.950...\n81\n66\n\n\n7\nPG\nPapua New Guinea\nOceania\n...\nMULTIPOLYGON (((141.00021 -2.60...\n114\n74\n\n\n8\nID\nIndonesia\nAsia\n...\nMULTIPOLYGON (((104.36999 -1.08...\n742\n360\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n165\nET\nEthiopia\nAfrica\n...\nMULTIPOLYGON (((47.78942 8.0030...\n215\n283\n\n\n168\nUG\nUganda\nAfrica\n...\nMULTIPOLYGON (((33.90371 -0.950...\n408\n443\n\n\n169\nRW\nRwanda\nAfrica\n...\nMULTIPOLYGON (((30.41910 -1.134...\n36\n42\n\n\n\n\n45 rows × 13 columns\n\n\n\nNote that in this case, we need to set the index of coffee_data to the name_long values to avoid error messages.\n\n\n2.3.4 Creating attributes and removing spatial information\nOften, we would like to create a new column based on already existing columns. For example, we want to calculate population density for each country. For this we need to divide a population column, here pop, by an area column, here area_km2. Note that we are working on a copy of world named world2 so that we do not modify the original layer:\n\nworld2 = world.copy()\nworld2['pop_dens'] = world2['pop'] / world2['area_km2']\nworld2\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\ngdpPercap\ngeometry\npop_dens\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n8222\nMULTIPOLYGON (((-180.00000 -16....\n46\n\n\n1\nTZ\nTanzania\nAfrica\n...\n2402\nMULTIPOLYGON (((33.90371 -0.950...\n56\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\nNaN\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nEurope\n...\n8698\nMULTIPOLYGON (((20.59025 41.855...\n162\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\n31182\nMULTIPOLYGON (((-61.68000 10.76...\n175\n\n\n176\nSS\nSouth Sudan\nAfrica\n...\n1936\nMULTIPOLYGON (((30.83385 3.5091...\n18\n\n\n\n\n177 rows × 12 columns\n\n\n\nTo paste (i.e., concatenate) together existing columns, we can use the ordinary Python string operator +, as if we are working with individual strings rather than Series. For example, we want to combine the continent and region_un columns into a new column named con_reg, using ':' as a separator. Subsequesntly, we remove the original columns using .drop:\n\nworld2['con_reg'] = world['continent'] + ':' + world2['region_un']\nworld2 = world2.drop(['continent', 'region_un'], axis=1)\nworld2\n\n\n\n\n\n\n\n\niso_a2\nname_long\nsubregion\n...\ngeometry\npop_dens\ncon_reg\n\n\n\n\n0\nFJ\nFiji\nMelanesia\n...\nMULTIPOLYGON (((-180.00000 -16....\n46\nOceania:Oceania\n\n\n1\nTZ\nTanzania\nEastern Africa\n...\nMULTIPOLYGON (((33.90371 -0.950...\n56\nAfrica:Africa\n\n\n2\nEH\nWestern Sahara\nNorthern Africa\n...\nMULTIPOLYGON (((-8.66559 27.656...\nNaN\nAfrica:Africa\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nSouthern Europe\n...\nMULTIPOLYGON (((20.59025 41.855...\n162\nEurope:Europe\n\n\n175\nTT\nTrinidad and Tobago\nCaribbean\n...\nMULTIPOLYGON (((-61.68000 10.76...\n175\nNorth America:Americas\n\n\n176\nSS\nSouth Sudan\nEastern Africa\n...\nMULTIPOLYGON (((30.83385 3.5091...\n18\nAfrica:Africa\n\n\n\n\n177 rows × 11 columns\n\n\n\nThe resulting sf object has a new column called con_reg representing the continent and region of each country, e.g., 'South America:Americas' for Argentina and other South America countries. The opposite operation, splitting one column into multiple columns based on a separator string, is done using the .str.split method. As a result we go back to the previous state of two separate continent and region_un columns (only that their position is now last, since they are newly created):\n\nworld2[['continent', 'region_un']] = world2['con_reg'] \\\n .str.split(':', expand=True)\nworld2\n\n\n\n\n\n\n\n\niso_a2\nname_long\nsubregion\n...\ncon_reg\ncontinent\nregion_un\n\n\n\n\n0\nFJ\nFiji\nMelanesia\n...\nOceania:Oceania\nOceania\nOceania\n\n\n1\nTZ\nTanzania\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n2\nEH\nWestern Sahara\nNorthern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nSouthern Europe\n...\nEurope:Europe\nEurope\nEurope\n\n\n175\nTT\nTrinidad and Tobago\nCaribbean\n...\nNorth America:Americas\nNorth America\nAmericas\n\n\n176\nSS\nSouth Sudan\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n\n\n177 rows × 13 columns\n\n\n\nRenaming one or more columns can be done using the .rename method combined with the columns argument, which should be a dictionary of the form old_name:new_name. The following command, for example, renames the lengthy name_long column to simply name:\n\nworld2.rename(columns={'name_long': 'name'})\n\n\n\n\n\n\n\n\niso_a2\nname\nsubregion\n...\ncon_reg\ncontinent\nregion_un\n\n\n\n\n0\nFJ\nFiji\nMelanesia\n...\nOceania:Oceania\nOceania\nOceania\n\n\n1\nTZ\nTanzania\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n2\nEH\nWestern Sahara\nNorthern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nSouthern Europe\n...\nEurope:Europe\nEurope\nEurope\n\n\n175\nTT\nTrinidad and Tobago\nCaribbean\n...\nNorth America:Americas\nNorth America\nAmericas\n\n\n176\nSS\nSouth Sudan\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n\n\n177 rows × 13 columns\n\n\n\nTo change all column names at once, we assign a list of the “new” column names into the .columns property. The list must be of the same length as the number of columns (i.e., world.shape[1]). This is illustrated below, which outputs the same world2 object, but with very short names:\n\nnew_names = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'geom', 'i', 'j', 'k', 'l']\nworld2.columns = new_names\nworld2\n\n\n\n\n\n\n\n\na\nb\nc\n...\nj\nk\nl\n\n\n\n\n0\nFJ\nFiji\nMelanesia\n...\nOceania:Oceania\nOceania\nOceania\n\n\n1\nTZ\nTanzania\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n2\nEH\nWestern Sahara\nNorthern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nSouthern Europe\n...\nEurope:Europe\nEurope\nEurope\n\n\n175\nTT\nTrinidad and Tobago\nCaribbean\n...\nNorth America:Americas\nNorth America\nAmericas\n\n\n176\nSS\nSouth Sudan\nEastern Africa\n...\nAfrica:Africa\nAfrica\nAfrica\n\n\n\n\n177 rows × 13 columns\n\n\n\nTo reorder columns, we can pass a modified columns list to the subsetting operator [. For example, the following expressions reorder world2 columns in reverse alphabetical order:\n\nnames = sorted(world2.columns, reverse=True)\nworld2 = world2[names]\nworld2\n\n\n\n\n\n\n\n\nl\nk\nj\n...\nc\nb\na\n\n\n\n\n0\nOceania\nOceania\nOceania:Oceania\n...\nMelanesia\nFiji\nFJ\n\n\n1\nAfrica\nAfrica\nAfrica:Africa\n...\nEastern Africa\nTanzania\nTZ\n\n\n2\nAfrica\nAfrica\nAfrica:Africa\n...\nNorthern Africa\nWestern Sahara\nEH\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nEurope\nEurope\nEurope:Europe\n...\nSouthern Europe\nKosovo\nXK\n\n\n175\nAmericas\nNorth America\nNorth America:Americas\n...\nCaribbean\nTrinidad and Tobago\nTT\n\n\n176\nAfrica\nAfrica\nAfrica:Africa\n...\nEastern Africa\nSouth Sudan\nSS\n\n\n\n\n177 rows × 13 columns\n\n\n\nEach of these attribute data operations, even though they are defined in the pandas package and applicable to any DataFrame, preserve the geometry column and the GeoDataFrame class. Sometimes, however, it makes sense to remove the geometry, for example to speed-up aggregation or to export just the attribute data for statistical analysis. To go from GeoDataFrame to DataFrame we need to:\n\nDrop the geometry column\nConvert from GeoDataFrame into a DataFrame\n\nFor example:\n\nworld2 = world2.drop('geom', axis=1)\nworld2 = pd.DataFrame(world2)\nworld2\n\n\n\n\n\n\n\n\nl\nk\nj\n...\nc\nb\na\n\n\n\n\n0\nOceania\nOceania\nOceania:Oceania\n...\nMelanesia\nFiji\nFJ\n\n\n1\nAfrica\nAfrica\nAfrica:Africa\n...\nEastern Africa\nTanzania\nTZ\n\n\n2\nAfrica\nAfrica\nAfrica:Africa\n...\nNorthern Africa\nWestern Sahara\nEH\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nEurope\nEurope\nEurope:Europe\n...\nSouthern Europe\nKosovo\nXK\n\n\n175\nAmericas\nNorth America\nNorth America:Americas\n...\nCaribbean\nTrinidad and Tobago\nTT\n\n\n176\nAfrica\nAfrica\nAfrica:Africa\n...\nEastern Africa\nSouth Sudan\nSS\n\n\n\n\n177 rows × 12 columns" + }, + { + "objectID": "03-attribute-operations.html#sec-manipulating-raster-objects", + "href": "03-attribute-operations.html#sec-manipulating-raster-objects", + "title": "2  Attribute data operations", + "section": "2.4 Manipulating raster objects", + "text": "2.4 Manipulating raster objects\n\n2.4.1 Raster subsetting\nWhen using rasterio, raster values are accessible through a numpy array, which can be imported with the .read method:\n\nelev = src_elev.read(1)\nelev\n\narray([[ 1, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\nThen, we can access any subset of cell values using numpy methods, e.g.:\n\nelev[0, 0] ## Value at row 1, column 1\n\n1\n\n\nCell values can be modified by overwriting existing values in conjunction with a subsetting operation, e.g. to set the upper left cell of elev to 0:\n\nelev[0, 0] = 0\nelev\n\narray([[ 0, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\nMultiple cells can also be modified in this way:\n\nelev[0, 0:3] = 0\nelev\n\narray([[ 0, 0, 0, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\n\n\n2.4.2 Summarizing raster objects\nGlobal summaries of raster values can be calculated by applying numpy summary functions on the array with raster values, e.g. np.mean:\n\nnp.mean(elev)\n\n18.333333333333332\n\n\nNote that “No Data”-safe functions–such as np.nanmean—should be used in case the raster contains “No Data” values which need to be ignored. Before we can demontrate that, we must convert the array from int to float, as int arrays cannot contain np.nan (due to computer memory limitations):\n\nelev1 = elev.copy()\nelev1 = elev1.astype('float64')\nelev1\n\narray([[ 0., 0., 0., 4., 5., 6.],\n [ 7., 8., 9., 10., 11., 12.],\n [13., 14., 15., 16., 17., 18.],\n [19., 20., 21., 22., 23., 24.],\n [25., 26., 27., 28., 29., 30.],\n [31., 32., 33., 34., 35., 36.]])\n\n\nNow we can insert an np.nan value into the array. (Trying to do so in the original elev array raises an error, try it to see for yourself)\n\nelev1[0, 2] = np.nan\nelev1\n\narray([[ 0., 0., nan, 4., 5., 6.],\n [ 7., 8., 9., 10., 11., 12.],\n [13., 14., 15., 16., 17., 18.],\n [19., 20., 21., 22., 23., 24.],\n [25., 26., 27., 28., 29., 30.],\n [31., 32., 33., 34., 35., 36.]])\n\n\nWith the np.nan value inplace, the summary value becomes unknown:\n\nnp.mean(elev1)\n\nnan\n\n\nTherefore, we need to ignore the “No Data” value(s):\n\nnp.nanmean(elev1)\n\n18.857142857142858\n\n\nRaster value statistics can be visualized in a variety of ways. One approach is to “flatten” the raster values into a one-dimensional array, then use a graphical function such as plt.hist or plt.boxplot (from matplotlib.pyplot). For example:\n\nx = elev.flatten()\nplt.hist(x);" + }, + { + "objectID": "03-attribute-operations.html#exercises", + "href": "03-attribute-operations.html#exercises", + "title": "2  Attribute data operations", + "section": "2.5 Exercises", + "text": "2.5 Exercises" + }, + { + "objectID": "04-spatial-operations.html#prerequisites", + "href": "04-spatial-operations.html#prerequisites", + "title": "3  Spatial data operations", + "section": "3.1 Prerequisites", + "text": "3.1 Prerequisites\nLet’s import the required packages:\n\nimport shapely.geometry\nimport geopandas as gpd\nimport numpy as np\nimport os\nimport rasterio\nimport scipy.ndimage\nimport rasterio.plot\nimport rasterio.merge\nimport rasterio.features\n\nand load the sample data for this chapter:\n\nnz = gpd.read_file('data/nz.gpkg')\nnz_height = gpd.read_file('data/nz_height.gpkg')\nworld = gpd.read_file('data/world.gpkg')\ncycle_hire = gpd.read_file('data/cycle_hire.gpkg')\ncycle_hire_osm = gpd.read_file('data/cycle_hire_osm.gpkg')\nsrc_elev = rasterio.open('data/elev.tif')\nsrc_multi_rast = rasterio.open('data/landsat.tif')\nsrc_grain = rasterio.open('data/grain.tif')" + }, + { + "objectID": "04-spatial-operations.html#introduction", + "href": "04-spatial-operations.html#introduction", + "title": "3  Spatial data operations", + "section": "3.2 Introduction", + "text": "3.2 Introduction" + }, + { + "objectID": "04-spatial-operations.html#sec-spatial-vec", + "href": "04-spatial-operations.html#sec-spatial-vec", + "title": "3  Spatial data operations", + "section": "3.3 Spatial operations on vector data", + "text": "3.3 Spatial operations on vector data\n\n3.3.1 Spatial subsetting\nSpatial subsetting is the process of taking a spatial object and returning a new object containing only features that relate in space to another object. Analogous to attribute subsetting (covered in Section 2.3.1), subsets of GeoDataFrames can be created with square bracket ([) operator using the syntax x[y], where x is an GeoDataFrame from which a subset of rows/features will be returned, and y is the ‘subsetting object’. y, in turn, can be created using one of the binary geometry relation methods, such as .intersects (see Section 3.3.2).\nTo demonstrate spatial subsetting, we will use the nz and nz_height layers, which contain geographic data on the 16 main regions and 101 highest points in New Zealand, respectively (Figure 3.1), in a projected coordinate system. The following lines of code create an object representing Canterbury (canterbury), then use spatial subsetting to return all high points in the region (canterbury_height):\n\ncanterbury = nz[nz['Name'] == 'Canterbury']\ncanterbury\n\n\n\n\n\n\n\n\nName\nIsland\nLand_area\n...\nMedian_income\nSex_ratio\ngeometry\n\n\n\n\n10\nCanterbury\nSouth\n44504.499091\n...\n30100\n0.975327\nMULTIPOLYGON (((1686901.914 535...\n\n\n\n\n1 rows × 7 columns\n\n\n\n\n# Does each 'nz_height' point intersect with 'canterbury'?\nsel = nz_height.intersects(canterbury['geometry'].iloc[0])\nsel\n\n0 False\n1 False\n ... \n99 False\n100 False\nLength: 101, dtype: bool\n\n\n\ncanterbury_height = nz_height[sel]\ncanterbury_height\n\n\n\n\n\n\n\n\nt50_fid\nelevation\ngeometry\n\n\n\n\n4\n2362630\n2749\nPOINT (1378169.600 5158491.453)\n\n\n5\n2362814\n2822\nPOINT (1389460.041 5168749.086)\n\n\n...\n...\n...\n...\n\n\n93\n2380300\n2711\nPOINT (1654213.379 5349962.973)\n\n\n94\n2380308\n2885\nPOINT (1654898.622 5350462.779)\n\n\n\n\n70 rows × 3 columns\n\n\n\n\nfig, axes = plt.subplots(1, 2, figsize=(8, 4))\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[0])\nnz_height.plot(ax=base, color='None', edgecolor='red')\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[1])\ncanterbury.plot(ax=base, color='grey', edgecolor='none')\ncanterbury_height.plot(ax=base, color='None', edgecolor='red')\naxes[0].set_title('Original')\naxes[1].set_title('Subset (intersects)');\n\n\n\n\nFigure 3.1: Spatial subsetting of points by intersection with polygon\n\n\n\n\nLike in attribute subsetting (Section 2.3.1), we are using a boolean series (sel), of the same length as the number of rows in the filtered table (nz_height), created based on a condition applied on itself. The difference is that the condition is not a comparison of attribute values, but an evaluation of a spatial relation. Namely, we evaluate whether each geometry of nz_height intersects with canterbury geometry, using the .intersects method.\nVarious topological relations can be used for spatial subsetting which determine the type of spatial relationship that features in the target object must have with the subsetting object to be selected. These include touches, crosses or within, as we will see shortly in Section 3.3.2. The most commonly used method .intersects method which we used in the last example is a ‘catch all’ topological relation, that will return features in the target that touch, cross or are within the source ‘subsetting’ object. Alternatively, we can evaluate other methods, such as .disjoint to obtain all points that do not intersect with Canterbury:\n\n# Is each 'nz_height' point disjoint from 'canterbury'?\nsel = nz_height.disjoint(canterbury['geometry'].iloc[0])\ncanterbury_height2 = nz_height[sel]\n\nas shown in Figure 3.2:\n\nfig, axes = plt.subplots(1, 2, figsize=(8, 4))\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[0])\nnz_height.plot(ax=base, color='None', edgecolor='red')\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[1])\ncanterbury.plot(ax=base, color='grey', edgecolor='none')\ncanterbury_height2.plot(ax=base, color='None', edgecolor='red');\naxes[0].set_title('Original')\naxes[1].set_title('Subset (disjoint)');\n\n\n\n\nFigure 3.2: Spatial subsetting of points disjoint from a polygon\n\n\n\n\nIn case we need to subset according to several geometries at once, e.g., find out which points intersect with both Canterbury and Southland, we can dissolve the filtering subset before applying the .intersects (or any other) operator:\n\ncanterbury_southland = nz[(nz['Name'] == 'Canterbury') | (nz['Name'] == 'Southland')]\ncanterbury_southland = canterbury_southland.unary_union\ncanterbury_southland\n\n\n\n\n\nsel = nz_height.intersects(canterbury_southland)\ncanterbury_southland_height = nz_height[sel]\ncanterbury_southland_height\n\n\n\n\n\n\n\n\nt50_fid\nelevation\ngeometry\n\n\n\n\n0\n2353944\n2723\nPOINT (1204142.603 5049971.287)\n\n\n4\n2362630\n2749\nPOINT (1378169.600 5158491.453)\n\n\n...\n...\n...\n...\n\n\n93\n2380300\n2711\nPOINT (1654213.379 5349962.973)\n\n\n94\n2380308\n2885\nPOINT (1654898.622 5350462.779)\n\n\n\n\n71 rows × 3 columns\n\n\n\nor, alternatively, we can use the .isin function to filter the regions and use .overlay to calculate the pairwise intersection between the canterbury_southland GeoDataFrame (with two rows for Canterbury and Southland, respectively) and the nz_height GeoDataFrame:\n\ncanterbury_southland = nz[nz['Name'].isin(['Canterbury', 'Southland'])]\ncanterbury_southland\nnz_height.overlay(canterbury_southland)\n\n\n\n\n\n\n\n\nt50_fid\nelevation\nName\n...\nMedian_income\nSex_ratio\ngeometry\n\n\n\n\n0\n2353944\n2723\nSouthland\n...\n29500\n0.978507\nPOINT (1204142.603 5049971.287)\n\n\n1\n2362630\n2749\nCanterbury\n...\n30100\n0.975327\nPOINT (1378169.600 5158491.453)\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n69\n2380300\n2711\nCanterbury\n...\n30100\n0.975327\nPOINT (1654213.379 5349962.973)\n\n\n70\n2380308\n2885\nCanterbury\n...\n30100\n0.975327\nPOINT (1654898.622 5350462.779)\n\n\n\n\n71 rows × 9 columns\n\n\n\nThe resulting subset is shown in Figure 3.3:\n\nfig, axes = plt.subplots(1, 2, figsize=(8, 4))\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[0])\nnz_height.plot(ax=base, color='None', edgecolor='red')\nbase = nz.plot(color='white', edgecolor='lightgrey', ax=axes[1])\ncanterbury_southland.plot(ax=base, color='grey', edgecolor='none')\ncanterbury_southland_height.plot(ax=base, color='None', edgecolor='red')\naxes[0].set_title('Original')\naxes[1].set_title('Subset (intersects)');\n\n\n\n\nFigure 3.3: Spatial subsetting of points by intersection with more that one polygon\n\n\n\n\nThe next section further explores different types of spatial relation, also known as binary predicates (of which .intersects and .disjoint are two examples), that can be used to identify whether or not two features are spatially related or not.\n\n\n3.3.2 Topological relations\n\nTopological relations describe the spatial relationships between objects. “Binary topological relationships”, to give them their full name, are logical statements (in that the answer can only be True or False) about the spatial relationships between two objects defined by ordered sets of points (typically forming points, lines and polygons) in two or more dimensions (Egenhofer and Herring 1990). That may sound rather abstract and, indeed, the definition and classification of topological relations is based on mathematical foundations first published in book form in 1966 (Spanier 1995), with the field of algebraic topology continuing into the 21st century (Dieck 2008).\nDespite their mathematical origins, topological relations can be understood intuitively with reference to visualizations of commonly used functions that test for common types of spatial relationships. Figure 4.2 shows a variety of geometry pairs and their associated relations. The third and fourth pairs in Figure 4.2 (from left to right and then down) demonstrate that, for some relations, order is important: while the relations equals, intersects, crosses, touches and overlaps are symmetrical, meaning that if function(x, y) is true, function(y, x) will also by true, relations in which the order of the geometries are important such as contains and within are not. Notice that each geometry pair has a “DE-9IM” string such as FF2F11212, described in the next section.\n\n\n\nTopological relations between vector geometries, inspired by Figures 1 and 2 in Egenhofer and Herring (1990). The relations for which the function(x, y) is true are printed for each geometry pair, with x represented in pink and y represented in blue. The nature of the spatial relationship for each pair is described by the Dimensionally Extended 9-Intersection Model string.\n\n\nIn shapely, functions testing for different types of topological relations are known as “relationships”. To see how topological relations work in practice, let’s create a simple reproducible example, building on the relations illustrated in Figure 4.2 and consolidating knowledge of how vector geometries are represented from a previous chapter (Section 1.2.3 and Section 1.2.5):\n\npoints = gpd.GeoSeries([\n shapely.geometry.Point(0.2,0.1), \n shapely.geometry.Point(0.7,0.2), \n shapely.geometry.Point(0.4,0.8)\n])\nline = gpd.GeoSeries([\n shapely.geometry.LineString([(0.4,0.2), (1,0.5)])\n])\npoly = gpd.GeoSeries([\n shapely.geometry.Polygon([(0,0), (0,1), (1,1), (1,0.5), (0,0)])\n])\n\nThe resulting GeoSeries named points, line, and poly are visualized as follows:\n\nax = poly.plot(color='grey', edgecolor='red')\nax = line.plot(ax=ax, color='black', linewidth=7)\npoints.plot(ax=ax, color='none', edgecolor='black')\nfor x, y, label in zip(points.x, points.y, [1,2,3]):\n ax.annotate(label, xy=(x, y), xytext=(3, 3), weight='bold', textcoords=\"offset points\")\n\n\n\n\nFigure 3.4: Points, line and polygon objects arranged to illustrate topological relations\n\n\n\n\nA simple query is: which of the points in points intersect in some way with polygon poly? The question can be answered by inspection (points 1 and 3 are touching and within the polygon, respectively). This question can be answered with the .intersects method, which reports whether or not each geometry in a GeoSeries (points) intersects with a single shapely geometry (poly.iloc[0]). When both inputs are a GeoSeries object, a pairwise evaluation takes place between geometries aligned by index (align=True, the default) or by position (align=False):\n\npoints.intersects(poly.iloc[0])\n\n0 True\n1 False\n2 True\ndtype: bool\n\n\nThe result shown above is a boolean Series. Its contents should match your intuition: positive (True) results are returned for the first and third point, and a negative result (False) for the second are outside the polygon’s border. Each value in this Series represents a feature in the first input (points).\nThe .apply method can be used to obtain a matrix of pairwise results. In this case, the result is a DataFrame, where each row represents a points geometry and each column represents a poly geometry. We’ll add another polygon to demonstrate:\n\npoly = gpd.GeoSeries([\n shapely.geometry.Polygon([(0,0), (0,1), (1,1), (1,0.5), (0,0)]),\n shapely.geometry.Polygon([(0,0), (1,0.5), (1,0), (0,0)])\n])\npoints.apply(lambda x: poly.intersects(x))\n\n\n\n\n\n\n\n\n0\n1\n\n\n\n\n0\nTrue\nTrue\n\n\n1\nFalse\nTrue\n\n\n2\nTrue\nFalse\n\n\n\n\n\n\n\nThe .intersects method returns True even in cases where the features just touch: intersects is a ‘catch-all’ topological operation which identifies many types of spatial relation, as illustrated in Figure 4.2. More restrictive questions include which points lie within the polygon, and which features are on or contain a shared boundary with it? These can be answered as follows:\n\npoints.within(poly.iloc[0])\n\n0 False\n1 False\n2 True\ndtype: bool\n\n\n\npoints.touches(poly.iloc[0])\n\n0 True\n1 False\n2 False\ndtype: bool\n\n\nNote that although the first point touches the boundary polygon, it is not within it; the third point is within the polygon but does not touch any part of its border. The opposite of .intersects is .disjoint, which returns only objects that do not spatially relate in any way to the selecting object:\n\npoints.disjoint(poly.iloc[0])\n\n0 False\n1 True\n2 False\ndtype: bool\n\n\nAnother useful type of relation is “within distance”, where we detect features that intersect with the target buffered by particular distance. Buffer distance determines how close target objects need to be before they are selected. This can be done by literally buffering (Section 1.2.5) the target geometry, and evaluating intersection (.intersects, see above). Another way is to calculate the distances and compare them to the distance threshold:\n\npoints.distance(poly.iloc[0]) < 0.2\n\n0 True\n1 True\n2 True\ndtype: bool\n\n\nNote that although point 2 is more than 0.2 units of distance from the nearest vertex of poly, it is still selected when the distance is set to 0.2. This is because distance is measured to the nearest edge, in this case the part of the the polygon that lies directly above point 2 in Figure 4.2. We can verify the actual distance between point 2 and the polygon is 0.13, as follows:\n\npoints.iloc[1].distance(poly.iloc[0])\n\n0.13416407864998736\n\n\n\n\n3.3.3 DE-9IM strings\nTo complete…\n\n\n3.3.4 Spatial joining\nJoining two non-spatial datasets relies on a shared ‘key’ variable, as described in Section 2.3.3. Spatial data joining applies the same concept, but instead relies on spatial relations, described in the previous section. As with attribute data, joining adds new columns to the target object (the argument x in joining functions), from a source object (y).\nThe process is illustrated by the following example: imagine you have ten points randomly distributed across the Earth’s surface and you ask, for the points that are on land, which countries are they in? Implementing this idea in a reproducible example will build your geographic data handling skills and show how spatial joins work. The starting point is to create points that are randomly scattered over the Earth’s surface:\n\nnp.random.seed(11) ## set seed for reproducibility\nbb = world.total_bounds ## the world's bounds\nx = np.random.uniform(low=bb[0], high=bb[2], size=10)\ny = np.random.uniform(low=bb[1], high=bb[3], size=10)\nrandom_points = gpd.points_from_xy(x, y, crs=4326)\nrandom_points = gpd.GeoSeries(random_points)\nrandom_points = gpd.GeoDataFrame({'geometry': random_points})\nrandom_points\n\n\n\n\n\n\n\n\ngeometry\n\n\n\n\n0\nPOINT (-115.10291 36.78178)\n\n\n1\nPOINT (-172.98891 -71.02938)\n\n\n...\n...\n\n\n8\nPOINT (159.05039 -34.99599)\n\n\n9\nPOINT (126.28622 -62.49509)\n\n\n\n\n10 rows × 1 columns\n\n\n\nThe scenario illustrated in Figure 3.5 shows that the random_points object (top left) lacks attribute data, while the world (top right) has attributes, including country names shown for a sample of countries in the legend. Spatial joins are implemented with gpd.sjoin, as illustrated in the code chunk below. The output is the random_joined object which is illustrated in Figure 3.5 (bottom left). Before creating the joined dataset, we use spatial subsetting to create world_random, which contains only countries that contain random points, to verify the number of country names returned in the joined dataset should be four (see the top right panel of Figure 3.5).\n\n# Subset\nworld_random = world[world.intersects(random_points.unary_union)]\nworld_random\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n4\nUS\nUnited States\nNorth America\n...\n78.841463\n51921.984639\nMULTIPOLYGON (((-171.73166 63.7...\n\n\n18\nRU\nRussian Federation\nEurope\n...\n70.743659\n25284.586202\nMULTIPOLYGON (((-180.00000 64.9...\n\n\n52\nML\nMali\nAfrica\n...\n57.007000\n1865.160622\nMULTIPOLYGON (((-11.51394 12.44...\n\n\n159\nAQ\nAntarctica\nAntarctica\n...\nNaN\nNaN\nMULTIPOLYGON (((-180.00000 -89....\n\n\n\n\n4 rows × 11 columns\n\n\n\n\n# Spatial join\nrandom_joined = gpd.sjoin(random_points, world, how='left')\nrandom_joined\n\n\n\n\n\n\n\n\ngeometry\nindex_right\niso_a2\n...\npop\nlifeExp\ngdpPercap\n\n\n\n\n0\nPOINT (-115.10291 36.78178)\n4.0\nUS\n...\n318622525.0\n78.841463\n51921.984639\n\n\n1\nPOINT (-172.98891 -71.02938)\nNaN\nNaN\n...\nNaN\nNaN\nNaN\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n8\nPOINT (159.05039 -34.99599)\nNaN\nNaN\n...\nNaN\nNaN\nNaN\n\n\n9\nPOINT (126.28622 -62.49509)\nNaN\nNaN\n...\nNaN\nNaN\nNaN\n\n\n\n\n10 rows × 12 columns\n\n\n\n\nfig, axes = plt.subplots(2, 2, figsize=(8,4))\nbase = world.plot(color='white', edgecolor='lightgrey', ax=axes[0][0])\nrandom_points.plot(ax=base, color='None', edgecolor='red')\nbase = world.plot(color='white', edgecolor='lightgrey', ax=axes[0][1])\nworld_random.plot(ax=base, column='name_long')\nbase = world.plot(color='white', edgecolor='lightgrey', ax=axes[1][0])\nrandom_joined.geometry.plot(ax=base, color='grey');\nrandom_joined.plot(ax=base, column='name_long', legend=True)\nfig.delaxes(axes[1][1]);\n\n\n\n\nFigure 3.5: Illustration of a spatial join. A new attribute variable is added to random points (top left) from source world object (top right) resulting in the data represented in the final panel.\n\n\n\n\n\n\n3.3.5 Non-overlapping joins\nSometimes two geographic datasets do not touch but still have a strong geographic relationship. The datasets cycle_hire and cycle_hire_osm, provide a good example. Plotting them shows that they are often closely related but they do not touch, as shown in Figure 3.6, which is created with the code below:\n\nbase = cycle_hire.plot(edgecolor='blue', color='none')\ncycle_hire_osm.plot(ax=base, edgecolor='red', color='none');\n\n\n\n\nFigure 3.6: The spatial distribution of cycle hire points in London based on official data (blue) and OpenStreetMap data (red).\n\n\n\n\nWe can check if any of the points are the same by creating a pairwise boolean matrix of .intersects relations, then evaluating whether any of the values in it is True. Note that the .to_numpy method is applied to go from a DataFrame to a numpy array, for which .any gives a global rather than a row-wise summary, which is what we want in this case:\n\nm = cycle_hire['geometry'].apply(\n lambda x: cycle_hire_osm['geometry'].intersects(x)\n)\nm.to_numpy().any()\n\nFalse\n\n\nImagine that we need to join the capacity variable in cycle_hire_osm onto the official ‘target’ data contained in cycle_hire. This is when a non-overlapping join is needed. Spatial join (gpd.sjoin) along with buffered geometries can be used to do that. This is demonstrated below, using a threshold distance of 20 m. Note that we transform the data to a projected CRS (27700) to use real buffer distances, in meters.\n\ncrs = 27700\ncycle_hire2 = cycle_hire.copy().to_crs(crs)\ncycle_hire2['geometry'] = cycle_hire2.buffer(20)\nz = gpd.sjoin(\n cycle_hire2, \n cycle_hire_osm.to_crs(crs)\n)\nz[['name_left','name_right']]\n\n\n\n\n\n\n\n\nname_left\nname_right\n\n\n\n\n0\nRiver Street\nRiver Street\n\n\n1\nPhillimore Gardens\nKensington, Phillimore Gardens\n\n\n...\n...\n...\n\n\n729\nRanelagh Gardens\nRanelagh Gardens, Fulham\n\n\n737\nTallis Street\nTallis Street, Temple\n\n\n\n\n458 rows × 2 columns\n\n\n\nThe result z shows that there are 438 points in the target object cycle_hire within the threshold distance of cycle_hire_osm. Note that the number of rows in the joined result is greater than the target. This is because some cycle hire stations in cycle_hire have multiple matches in cycle_hire_osm. To aggregate the values for the overlapping points and return the mean, we can use the aggregation methods learned in @attr, resulting in an object with the same number of rows as the target. We also go back from buffers to points using .centroid:\n\nz = z[['id', 'capacity', 'geometry']] \\\n .dissolve(by='id', aggfunc='mean') \\\n .reset_index()\nz['geometry'] = z.centroid\nz\n\n\n\n\n\n\n\n\nid\ngeometry\ncapacity\n\n\n\n\n0\n1\nPOINT (531203.517 182832.066)\n9.0\n\n\n1\n2\nPOINT (525208.067 179391.922)\n27.0\n\n\n...\n...\n...\n...\n\n\n436\n765\nPOINT (524652.998 175817.001)\n29.0\n\n\n437\n773\nPOINT (531435.032 180916.010)\n14.0\n\n\n\n\n438 rows × 3 columns\n\n\n\nThe capacity of nearby stations can be verified by comparing a plot of the capacity of the source cycle_hire_osm data with the results in this new object z (Figure 3.7):\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,3))\ncycle_hire_osm.plot(column='capacity', legend=True, ax=axes[0])\nz.plot(column='capacity', legend=True, ax=axes[1])\naxes[0].set_title('Input')\naxes[1].set_title('Join result');\n\n\n\n\nFigure 3.7: Non-overlapping join input (left) and result (right)\n\n\n\n\n\n\n3.3.6 Spatial aggregation\nAs with attribute data aggregation, spatial data aggregation condenses data: aggregated outputs have fewer rows than non-aggregated inputs. Statistical aggregating functions, such as mean, average, or sum, summarise multiple values of a variable, and return a single value per grouping variable. Section 2.3.2 demonstrated how the .groupby method, combined with summary functions such as .sum, condense data based on attribute variables. This section shows how grouping by spatial objects can be acheived using spatial joins combined with non-spatial aggregation.\nReturning to the example of New Zealand, imagine you want to find out the average height of high points in each region. It is the geometry of the source (nz) that defines how values in the target object (nz_height) are grouped. This can be done in three steps:\n\nFiguring out which nz region each nz_height point falls in—using gpd.sjoin\nSummarizing the average elevation per region—using .groupby and .mean\nJoining the result back to nz—using pd.merge\n\nFirst, we ‘attach’ the region classification of each point, using spatial join. Note that we are using the minimal set of columns required: the geometries (for the spatial join to work), the point elevation (to later calculate an average), and the region name (to use as key when joining the results back to nz).\n\nnz_height2 = gpd.sjoin(\n nz_height[['elevation', 'geometry']], \n nz[['Name', 'geometry']], \n how='left'\n)\nnz_height2\n\n\n\n\n\n\n\n\nelevation\ngeometry\nindex_right\nName\n\n\n\n\n0\n2723\nPOINT (1204142.603 5049971.287)\n12\nSouthland\n\n\n1\n2820\nPOINT (1234725.325 5048309.302)\n11\nOtago\n\n\n...\n...\n...\n...\n...\n\n\n99\n2720\nPOINT (1822262.592 5650428.656)\n2\nWaikato\n\n\n100\n2732\nPOINT (1822492.184 5650492.304)\n2\nWaikato\n\n\n\n\n101 rows × 4 columns\n\n\n\nSecond, we calculate the average elevation:\n\nnz_height3 = nz_height2.groupby('Name')[['elevation']].mean()\nnz_height3\n\n\n\n\n\n\n\n\nelevation\n\n\nName\n\n\n\n\n\nCanterbury\n2994.600000\n\n\nManawatu-Wanganui\n2777.000000\n\n\n...\n...\n\n\nWaikato\n2734.333333\n\n\nWest Coast\n2889.454545\n\n\n\n\n7 rows × 1 columns\n\n\n\nThe third and final step is joining the averages with the nz layer:\n\nnz_height4 = pd.merge(nz[['Name', 'geometry']], nz_height3, on='Name', how='left')\nnz_height4\n\n\n\n\n\n\n\n\nName\ngeometry\nelevation\n\n\n\n\n0\nNorthland\nMULTIPOLYGON (((1745493.196 600...\nNaN\n\n\n1\nAuckland\nMULTIPOLYGON (((1803822.103 590...\nNaN\n\n\n...\n...\n...\n...\n\n\n14\nNelson\nMULTIPOLYGON (((1624866.279 541...\nNaN\n\n\n15\nMarlborough\nMULTIPOLYGON (((1686901.914 535...\n2720.0\n\n\n\n\n16 rows × 3 columns\n\n\n\nWe now have create the nz_height4 layer, which gives the average nz_height elevation value per polygon. The result is shown in Figure 3.8. Note that the missing_kwds part determines the style of geometries where the symbology attribute (elevation) is missing, because the were no nz_height points overlapping with them. The default is to omit them, which is usually not what we want. With {'color':'none','edgecolor':'black'}, those polygons are shown with black outline and no fill.\n\nnz_height4.plot(\n column='elevation', \n legend=True,\n cmap='Blues', edgecolor='black',\n missing_kwds={'color': 'none', 'edgecolor': 'black'}\n);\n\n\n\n\nFigure 3.8: Average height of the top 101 high points across the regions of New Zealand\n\n\n\n\n\n\n3.3.7 Joining incongruent layers\nSpatial congruence is an important concept related to spatial aggregation. An aggregating object (which we will refer to as y) is congruent with the target object (x) if the two objects have shared borders. Often this is the case for administrative boundary data, whereby larger units—such as Middle Layer Super Output Areas (MSOAs) in the UK or districts in many other European countries—are composed of many smaller units.\nIncongruent aggregating objects, by contrast, do not share common borders with the target (Qiu, Zhang, and Zhou 2012). This is problematic for spatial aggregation (and other spatial operations) illustrated in Figure 3.9: aggregating the centroid of each sub-zone will not return accurate results. Areal interpolation overcomes this issue by transferring values from one set of areal units to another, using a range of algorithms including simple area weighted approaches and more sophisticated approaches such as ‘pycnophylactic’ methods (Tobler 1979).\nTo demonstrate, we will create a “synthetic” layer comprising a regular grid of rectangles of size \\(100\\times100\\) \\(km\\), covering the extent of the nz layer:\n\nxmin, ymin, xmax, ymax = nz.total_bounds\nres = 100000\ncols = list(range(int(np.floor(xmin)), int(np.ceil(xmax+res)), res))\nrows = list(range(int(np.floor(ymin)), int(np.ceil(ymax+res)), res))\nrows.reverse()\npolygons = []\nfor x in cols:\n for y in rows:\n polygons.append( shapely.geometry.Polygon([(x,y), (x+res, y), (x+res, y-res), (x, y-res)]) )\ngrid = gpd.GeoDataFrame({'geometry': polygons}, crs=nz.crs)\nsel = grid.intersects(shapely.geometry.box(*nz.total_bounds))\ngrid = grid[sel]\ngrid['id'] = grid.index\ngrid\n\n\n\n\n\n\n\n\ngeometry\nid\n\n\n\n\n0\nPOLYGON ((1090143.000 6248536.0...\n0\n\n\n1\nPOLYGON ((1090143.000 6148536.0...\n1\n\n\n...\n...\n...\n\n\n157\nPOLYGON ((1990143.000 4948536.0...\n157\n\n\n158\nPOLYGON ((1990143.000 4848536.0...\n158\n\n\n\n\n150 rows × 2 columns\n\n\n\nas shown in Figure 3.9.\n\nbase = grid.plot(color='none', edgecolor='grey')\nnz.plot(ax=base, column='Population', edgecolor='black', legend=True, cmap='viridis_r');\nbase.set_title('Population');\n\n\n\n\nFigure 3.9: The nz layer and a regular grid of rectangles\n\n\n\n\nOur goal, now, is to “transfer” the Population attribute to the rectangular grid polygons, which is an example of a join between incongruent layers. To do that, we basically need to calculate–for each grid cell—the weighted sum of the population in nz polygons coinciding with that cell. The weights in the weighted sum calculation are the ratios between the area of the coinciding “part” out of the entire nz polygon. That is, we (inevitably) assume that the population in each nz polygon is equally distributed across space, therefore a partial nz polygon contains the respective partial population size.\nWe start with calculating the entire area of each nz polygon, as follows, using the .area method (see Section 1.2.7):\n\nnz['area'] = nz.area\nnz\n\n\n\n\n\n\n\n\nName\nIsland\nLand_area\n...\nSex_ratio\ngeometry\narea\n\n\n\n\n0\nNorthland\nNorth\n12500.561149\n...\n0.942453\nMULTIPOLYGON (((1745493.196 600...\n1.289058e+10\n\n\n1\nAuckland\nNorth\n4941.572557\n...\n0.944286\nMULTIPOLYGON (((1803822.103 590...\n4.911565e+09\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n14\nNelson\nSouth\n422.195242\n...\n0.925967\nMULTIPOLYGON (((1624866.279 541...\n4.080754e+08\n\n\n15\nMarlborough\nSouth\n10457.745485\n...\n0.957792\nMULTIPOLYGON (((1686901.914 535...\n1.046485e+10\n\n\n\n\n16 rows × 8 columns\n\n\n\nNext, we use the .overlay method to calculate the pairwise intersections between nz and grid, hereby named nz_grid. We also calculate the area of the intersections, hereby named area_sub. If an nz polygon was completely within a single grid polygon, then area_sub is going to be equal to area; otherwise, it is going to be smaller:\n\nnz_grid = nz.overlay(grid)\nnz_grid = nz_grid[['id', 'area', 'Population', 'geometry']]\nnz_grid['area_sub'] = nz_grid.area\nnz_grid\n\n\n\n\n\n\n\n\nid\narea\nPopulation\ngeometry\narea_sub\n\n\n\n\n0\n64\n1.289058e+10\n175500.0\nPOLYGON ((1586362.965 6168009.0...\n3.231015e+08\n\n\n1\n80\n1.289058e+10\n175500.0\nPOLYGON ((1590143.000 6162776.6...\n4.612641e+08\n\n\n...\n...\n...\n...\n...\n...\n\n\n108\n87\n4.080754e+08\n51400.0\nPOLYGON ((1649908.695 5455398.2...\n1.716260e+07\n\n\n109\n87\n1.046485e+10\n46200.0\nMULTIPOLYGON (((1678688.086 545...\n4.526248e+08\n\n\n\n\n110 rows × 5 columns\n\n\n\nThe resulting layer nz_grid is shown in Figure 3.10.\n\nbase = grid.plot(color='none', edgecolor='grey')\nnz_grid.plot(ax=base, column='Population', edgecolor='black', legend=True, cmap='viridis_r');\n\n\n\n\nFigure 3.10: The nz layer and a regular grid of rectangles: after an overlay operation\n\n\n\n\nNote that each of the “intersections” still holds the Population attribute of its “origin” feature of nz, as depicted in Figure 3.10. The real population size of each nz_grid feature, however, is smaller (or equal), depending on the geographic area proportion that it occupies out of the original nz feature. To make the “correction”, we first calculate the ratio (area_prop) and then multiply it by the population. The new (lowercase) attribute population now has the correct estimate of population sizes in nz_grid:\n\nnz_grid['area_prop'] = nz_grid['area_sub'] / nz_grid['area']\nnz_grid['population'] = nz_grid['Population'] * nz_grid['area_prop']\nnz_grid\n\n\n\n\n\n\n\n\nid\narea\nPopulation\n...\narea_sub\narea_prop\npopulation\n\n\n\n\n0\n64\n1.289058e+10\n175500.0\n...\n3.231015e+08\n0.025065\n4398.897141\n\n\n1\n80\n1.289058e+10\n175500.0\n...\n4.612641e+08\n0.035783\n6279.925114\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n108\n87\n4.080754e+08\n51400.0\n...\n1.716260e+07\n0.042057\n2161.752203\n\n\n109\n87\n1.046485e+10\n46200.0\n...\n4.526248e+08\n0.043252\n1998.239223\n\n\n\n\n110 rows × 7 columns\n\n\n\nWhat is left to be done is to sum (see Section 2.3.2) the population in all parts forming the same grid cell:\n\nnz_grid = nz_grid.groupby('id')['population'].sum().reset_index()\nnz_grid\n\n\n\n\n\n\n\n\nid\npopulation\n\n\n\n\n0\n11\n67.533590\n\n\n1\n12\n15339.996965\n\n\n...\n...\n...\n\n\n55\n149\n31284.910446\n\n\n56\n150\n129.326331\n\n\n\n\n57 rows × 2 columns\n\n\n\nand join (see Section 2.3.3) them back to the grid layer:\n\ngrid = pd.merge(grid, nz_grid[['id', 'population']], on='id', how='left')\ngrid\n\n\n\n\n\n\n\n\ngeometry\nid\npopulation\n\n\n\n\n0\nPOLYGON ((1090143.000 6248536.0...\n0\nNaN\n\n\n1\nPOLYGON ((1090143.000 6148536.0...\n1\nNaN\n\n\n...\n...\n...\n...\n\n\n148\nPOLYGON ((1990143.000 4948536.0...\n157\nNaN\n\n\n149\nPOLYGON ((1990143.000 4848536.0...\n158\nNaN\n\n\n\n\n150 rows × 3 columns\n\n\n\nThe final result grid, with the incongruently-joined population attribute from nz, is shown in Figure 3.11.\n\nbase = grid.plot(column='population', edgecolor='black', legend=True, cmap='viridis_r');\nnz.plot(ax=base, color='none', edgecolor='grey', legend=True);\n\n\n\n\nFigure 3.11: The nz layer and a regular grid of rectangles: final result\n\n\n\n\nWe can demonstrate that, expectedly, the summed population in nz and grid is identical, even though the geometry is different (since we created grid to completely cover nz):\n\nnz['Population'].sum()\n\n4787200.0\n\n\n\ngrid['population'].sum()\n\n4787199.999999998\n\n\nThe procedure in this section is known as an area-weighted interpolation of a spatially extensive (e.g., population) variable. An area-weighted interpolation of a spatially intensive variable (e.g., population density) is almost identical, except that we would have to calculate the weighted .mean rather than .sum, to preserve the average rather than the sum.\n\n\n3.3.8 Distance relations\nWhile topological relations are binary — a feature either intersects with another or does not — distance relations are continuous. The distance between two objects is calculated with the distance method. The method is applied on a GeoSeries (or a GeoDataFrame), with the argument being an individual shapely geometry. The result is a Series of pairwise distances.\nThis is illustrated in the code chunk below, which finds the distance between the three highest point in New Zealand:\n\nnz_highest = nz_height \\\n .sort_values(by='elevation', ascending=False) \\\n .iloc[:3, :]\nnz_highest\n\n\n\n\n\n\n\n\nt50_fid\nelevation\ngeometry\n\n\n\n\n64\n2372236\n3724\nPOINT (1369317.630 5169132.284)\n\n\n63\n2372235\n3717\nPOINT (1369512.866 5168235.616)\n\n\n67\n2372252\n3688\nPOINT (1369381.942 5168761.875)\n\n\n\n\n\n\n\nand the geographic centroid of the Canterbury region, created in Section 4.2.1:\n\ncanterbury_centroid = canterbury.centroid.iloc[0]\n\nHere are the distances:\n\nnz_highest.distance(canterbury_centroid)\n\n64 115539.995747\n63 115390.248038\n67 115493.594066\ndtype: float64\n\n\nTo obtain a distance matrix, i.e., a pairwise set of distances between all combinations of features in objects x and y, we need to use the .apply method. This is illustrated in the command below, which finds the distances between the first three features in nz_height and the Otago and Canterbury regions of New Zealand represented by the object co:\n\nsel = nz['Name'].str.contains('Canter|Otag')\nco = nz[sel]\nco\n\n\n\n\n\n\n\n\nName\nIsland\nLand_area\n...\nSex_ratio\ngeometry\narea\n\n\n\n\n10\nCanterbury\nSouth\n44504.499091\n...\n0.975327\nMULTIPOLYGON (((1686901.914 535...\n4.532656e+10\n\n\n11\nOtago\nSouth\n31186.309188\n...\n0.951169\nMULTIPOLYGON (((1335204.789 512...\n3.190356e+10\n\n\n\n\n2 rows × 8 columns\n\n\n\nThe distance matrix d is obtained as follows (technically speaking, this is a DataFrame). In plain language, we take the geometry from each each row in nz_height.iloc[:3, :], and apply the .distance method on co with that row as the argument:\n\nd = nz_height.iloc[:3, :].apply(lambda x: co.distance(x['geometry']), axis=1)\nd\n\n\n\n\n\n\n\n\n10\n11\n\n\n\n\n0\n123537.158269\n15497.717252\n\n\n1\n94282.773074\n0.000000\n\n\n2\n93018.560814\n0.000000\n\n\n\n\n\n\n\nNote that the distance between the second and third features in nz_height and the second feature in co is zero. This demonstrates the fact that distances between points and polygons refer to the distance to any part of the polygon: The second and third points in nz_height are in Otago, which can be verified by plotting them:\n\nbase = co.iloc[[1]].plot(color='none')\nnz_height.iloc[1:3, :].plot(ax=base);" + }, + { + "objectID": "04-spatial-operations.html#sec-spatial-ras", + "href": "04-spatial-operations.html#sec-spatial-ras", + "title": "3  Spatial data operations", + "section": "3.4 Spatial operations on raster data", + "text": "3.4 Spatial operations on raster data\n\n3.4.1 Spatial subsetting\nThe previous chapter (Section Section 2.4) demonstrated how to retrieve values associated with specific cell IDs or row and column combinations. Raster objects can also be extracted by location (coordinates) and other spatial objects. To use coordinates for subsetting, we can use the .sample method of a rasterio file connection object, combined with a list of coordinate tuples. The methods is demonstrated below to find the value of the cell that covers a point located at coordinates of 0.1, 0.1 in elev. The returned object is a generator:\n\nsrc_elev.sample([(0.1, 0.1)])\n\n<generator object sample_gen at 0x7fe08d56b480>\n\n\nIn case we want all values at once we can apply list. The result is 16:\n\nlist(src_elev.sample([(0.1, 0.1)]))\n\n[array([16], dtype=uint8)]\n\n\nAnother common use case of spatial subsetting is using a boolean mask, based on another raster with the same extent and resolution, or the original one, as illustrated in Figure 3.12. To do that, we “erase” the values in the array of one raster, according to another corresponding “mask” raster. For example, let us read the elev.tif raster array:\n\nelev = src_elev.read(1)\nelev\n\narray([[ 1, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\nand create a correspinding random mask:\n\nnp.random.seed(1)\nmask = np.random.choice([True, False], elev.shape)\nmask\n\narray([[False, False, True, True, False, False],\n [False, False, False, True, True, False],\n [ True, False, False, True, True, False],\n [ True, True, True, False, True, True],\n [False, True, True, True, False, True],\n [ True, True, False, False, False, False]])\n\n\nIn the code chunk above, we have created a mask object called mask with values randomly assigned to True and False. Next, we want to keep those values of elev which are False in mask (i.e., they are not masked). In other words, we want to mask elev with mask. The result is stored in a copy named elev1. To be able to store np.nan in the raster, we also need to convert it to float (see Section 2.4.2):\n\nelev1 = elev.copy()\nelev1 = elev1.astype('float64')\nelev1[mask] = np.nan\nelev1\n\narray([[ 1., 2., nan, nan, 5., 6.],\n [ 7., 8., 9., nan, nan, 12.],\n [nan, 14., 15., nan, nan, 18.],\n [nan, nan, nan, 22., nan, nan],\n [25., nan, nan, nan, 29., nan],\n [nan, nan, 33., 34., 35., 36.]])\n\n\nThe result is shown in Figure 3.12.\n\nfig, axes = plt.subplots(ncols=3, figsize=(8,4))\nrasterio.plot.show(elev, ax=axes[0])\nrasterio.plot.show(mask, ax=axes[1])\nrasterio.plot.show(elev1, ax=axes[2])\naxes[0].set_title('Original')\naxes[1].set_title('Mask')\naxes[2].set_title('Result');\n\n\n\n\nFigure 3.12: Original raster (left). Raster mask (middle). Output of masking a raster (right).\n\n\n\n\nThe above approach can be also used to replace some values (e.g., expected to be wrong) with np.nan:\n\nelev1 = elev.copy()\nelev1 = elev1.astype('float64')\nelev1[elev1 < 20] = np.nan\nelev1\n\narray([[nan, nan, nan, nan, nan, nan],\n [nan, nan, nan, nan, nan, nan],\n [nan, nan, nan, nan, nan, nan],\n [nan, 20., 21., 22., 23., 24.],\n [25., 26., 27., 28., 29., 30.],\n [31., 32., 33., 34., 35., 36.]])\n\n\nThese operations are in fact Boolean local operations, since we compare cell-wise two rasters. The next subsection explores these and related operations in more detail.\n\n\n3.4.2 Map algebra\nThe term ‘map algebra’ was coined in the late 1970s to describe a “set of conventions, capabilities, and techniques” for the analysis of geographic raster and (although less prominently) vector data (Tomlin 1994). In this context, we define map algebra more narrowly, as operations that modify or summarise raster cell values, with reference to surrounding cells, zones, or statistical functions that apply to every cell.\nMap algebra operations tend to be fast, because raster datasets only implicitly store coordinates, hence the old adage “raster is faster but vector is corrector”. The location of cells in raster datasets can be calculated by using its matrix position and the resolution and origin of the dataset (stored in the header). For the processing, however, the geographic position of a cell is barely relevant as long as we make sure that the cell position is still the same after the processing. Additionally, if two or more raster datasets share the same extent, projection and resolution, one could treat them as matrices for the processing.\nThis is the way that map algebra works with the terra package. First, the headers of the raster datasets are queried and (in cases where map algebra operations work on more than one dataset) checked to ensure the datasets are compatible. Second, map algebra retains the so-called one-to-one locational correspondence, meaning that cells cannot move. This differs from matrix algebra, in which values change position, for example when multiplying or dividing matrices.\nMap algebra (or cartographic modeling with raster data) divides raster operations into four subclasses (Tomlin 1990), with each working on one or several grids simultaneously:\n\nLocal or per-cell operations\nFocal or neighborhood operations. Most often the output cell value is the result of a 3 x 3 input cell block\nZonal operations are similar to focal operations, but the surrounding pixel grid on which new values are computed can have irregular sizes and shapes\nGlobal or per-raster operations; that means the output cell derives its value potentially from one or several entire rasters\n\nThis typology classifies map algebra operations by the number of cells used for each pixel processing step and the type of the output. For the sake of completeness, we should mention that raster operations can also be classified by discipline such as terrain, hydrological analysis, or image classification. The following sections explain how each type of map algebra operations can be used, with reference to worked examples.\n\n\n3.4.3 Local operations\nLocal operations comprise all cell-by-cell operations in one or several layers. Raster algebra is a classical use case of local operations - this includes adding or subtracting values from a raster, squaring and multipling rasters. Raster algebra also allows logical operations such as finding all raster cells that are greater than a specific value (5 in our example below). Local operations are applied using the numpy array operations syntax, as demonstrated below:\nFirst, we need to read raster values:\n\nelev = src_elev.read(1)\nelev\n\narray([[ 1, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\nNow, any element-wise array operation can be applied. For example:\n\nelev + elev\n\narray([[ 2, 4, 6, 8, 10, 12],\n [14, 16, 18, 20, 22, 24],\n [26, 28, 30, 32, 34, 36],\n [38, 40, 42, 44, 46, 48],\n [50, 52, 54, 56, 58, 60],\n [62, 64, 66, 68, 70, 72]], dtype=uint8)\n\n\nFigure 3.13 demonstrates a few more examples.\n\nfig, axes = plt.subplots(ncols=4, figsize=(8,4))\nrasterio.plot.show(elev + elev, ax=axes[0], cmap='Oranges')\nrasterio.plot.show(elev1 ** 2, ax=axes[1], cmap='Oranges') # using elev here produces int8 overflows\nrasterio.plot.show(np.log(elev), ax=axes[2], cmap='Oranges')\nrasterio.plot.show(elev > 5, ax=axes[3], cmap='Oranges')\naxes[0].set_title('elev+elev')\naxes[1].set_title('elev ** 2')\naxes[2].set_title('np.log(elev)')\naxes[3].set_title('elev > 5');\n\n\n\n\nFigure 3.13: Examples of different local operations of the elev raster object: adding two rasters, squaring, applying logarithmic transformation, and performing a logical operation.\n\n\n\n\nAnother good example of local operations is the classification of intervals of numeric values into groups such as grouping a digital elevation model into low (class 1), middle (class 2) and high elevations (class 3). Here, we assign the raster values in the ranges 0–12, 12–24 and 24–36 are reclassified to take values 1, 2 and 3, respectively.\n\nrecl = elev.copy()\nrecl[(elev > 0) & (elev <= 12)] = 1\nrecl[(elev > 12) & (elev <= 24)] = 2\nrecl[(elev > 24) & (elev <= 36)] = 3\n\nThe reclassified result is shown in Figure 3.14.\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nrasterio.plot.show(elev, ax=axes[0], cmap='Oranges')\nrasterio.plot.show(recl, ax=axes[1], cmap='Oranges')\naxes[0].set_title('Original')\naxes[1].set_title('Reclassified');\n\n\n\n\nFigure 3.14: Reclassifying a continuous raster into three categories.\n\n\n\n\nThe calculation of the normalized difference vegetation index (NDVI) is a well-known local (pixel-by-pixel) raster operation. It returns a raster with values between -1 and 1; positive values indicate the presence of living plants (mostly > 0.2). NDVI is calculated from red and near-infrared (NIR) bands of remotely sensed imagery, typically from satellite systems such as Landsat or Sentinel. Vegetation absorbs light heavily in the visible light spectrum, and especially in the red channel, while reflecting NIR light, explaining the NVDI formula (Equation 3.1):\n\\[NDVI=\\frac{NIR-Red} {NIR+Red} \\tag{3.1}\\]\nLet’s calculate NDVI for the multispectral satellite file of the Zion National Park.\n\nmulti_rast = src_multi_rast.read()\nnir = multi_rast[3,:,:]\nred = multi_rast[2,:,:]\nndvi = (nir-red)/(nir+red)\n\nConvert values >1 to “No Data”:\n\nndvi[ndvi>1] = np.nan\n\nWhen plotting an RGB image using the show function, the function assumes that:\n\nValues are in the range [0,1] for floats, or [0,255] for integers (otherwise clipped)\nThe order of bands is RGB\n\nTo “prepare” the multi-band raster for show, we therefore reverse the order of bands (which is originally BGR+NIR), and divided by the maximum to set the maximum value at 1:\n\nmulti_rast_rgb = multi_rast[(2,1,0), :, :] / multi_rast.max()\n\nThe result is shown in Figure 3.15.\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nrasterio.plot.show(multi_rast_rgb, ax=axes[0], cmap='RdYlGn')\nrasterio.plot.show(ndvi, ax=axes[1], cmap='Greens')\naxes[0].set_title('RGB image')\naxes[1].set_title('NDVI');\n\n\n\n\nFigure 3.15: RGB image (left) and NDVI values (right) calculated for the example satellite file of the Zion National Park.\n\n\n\n\n\n\n3.4.4 Focal operations\nWhile local functions operate on one cell, though possibly from multiple layers, focal operations take into account a central (focal) cell and its neighbors. The neighborhood (also named kernel, filter or moving window) under consideration is typically of size 3-by-3 cells (that is the central cell and its eight surrounding neighbors), but can take on any other (not necessarily rectangular) shape as defined by the user. A focal operation applies an aggregation function to all cells within the specified neighborhood, uses the corresponding output as the new value for the the central cell, and moves on to the next central cell (Figure …). Other names for this operation are spatial filtering and convolution (Burrough, McDonnell, and Lloyd 2015).\nIn Python, the scipy.ndimage package has a comprehensive collection of functions to perform filtering of numpy arrays, such as:\n\nminimum_filter\nmaximum_filter\nuniform_filter (i.e., mean filter)\nmedian_filter etc.\n\nIn this group of functions, we define the shape of the moving window with either one of:\n\nsize—a single number or tuple, implying a filter of those dimensions\nfootprint—a boolean array, representing both the window shape and the identity of elements being included\n\nIn addition to specific built-in filters,\n\nconvolve applies the sum function after multiplying by a custom weights array\ngeneric_filter makes it possible to pass any custom function, where the user can specify any type of custom window-based calculatio.\n\nFor example, here we apply the minimum filter with window size of 3 on elev:\n\nelev\n\narray([[ 1, 2, 3, 4, 5, 6],\n [ 7, 8, 9, 10, 11, 12],\n [13, 14, 15, 16, 17, 18],\n [19, 20, 21, 22, 23, 24],\n [25, 26, 27, 28, 29, 30],\n [31, 32, 33, 34, 35, 36]], dtype=uint8)\n\n\n\nelev_min = scipy.ndimage.minimum_filter(elev, size=3)\nelev_min\n\narray([[ 1, 1, 2, 3, 4, 5],\n [ 1, 1, 2, 3, 4, 5],\n [ 7, 7, 8, 9, 10, 11],\n [13, 13, 14, 15, 16, 17],\n [19, 19, 20, 21, 22, 23],\n [25, 25, 26, 27, 28, 29]], dtype=uint8)\n\n\nSpecial care should be given to the edge pixels. How should they be calculated? scipy.ndimage gives several options through the mode parameter:\n\nreflect (the default)\nconstant\nnearest\nmirror\nwrap\n\nSometimes artificially extending raster edges is considered unsuitable. In other words, we may wish the resulting raster to contain pixel values with “complete” windows only, for example to have a uniform sample size or because values in all directions matter (such as in topographic calculations). There is no specific option not to extend edges in scipy.ndimage. However, to get the same effect, the edges of the filtered array can be assigned with nan, in a number of rows and columns according to filter size. For example, when using a filter of size=3, the first “layer” of pixels may be assigned with nan, reflecting the fact that these pixels have incomplete 3*3 neighborhoods:\n\nelev_min = elev_min.astype('float')\nelev_min[:, [0, -1]] = np.nan\nelev_min[[0, -1], :] = np.nan\nelev_min\n\narray([[nan, nan, nan, nan, nan, nan],\n [nan, 1., 2., 3., 4., nan],\n [nan, 7., 8., 9., 10., nan],\n [nan, 13., 14., 15., 16., nan],\n [nan, 19., 20., 21., 22., nan],\n [nan, nan, nan, nan, nan, nan]])\n\n\nWe can quickly check if the output meets our expectations. In our example, the minimum value has to be always the upper left corner of the moving window (remember we have created the input raster by row-wise incrementing the cell values by one starting at the upper left corner).\nFocal functions or filters play a dominant role in image processing. Low-pass or smoothing filters use the mean function to remove extremes. In the case of categorical data, we can replace the mean with the mode, which is the most common value. By contrast, high-pass filters accentuate features. The line detection Laplace and Sobel filters might serve as an example here.\nTerrain processing, the calculation of topographic characteristics such as slope, aspect and flow directions, relies on focal functions. The TerrainAttribute function from package richdem can be used to calculate common metrics, specified through the attrib argument, namely:\n\nslope_riserun Horn (1981) doi: 10.1109/PROC.1981.11918\nslope_percentage Horn (1981) doi: 10.1109/PROC.1981.11918\nslope_degrees Horn (1981) doi: 10.1109/PROC.1981.11918\nslope_radians Horn (1981) doi: 10.1109/PROC.1981.11918\naspect Horn (1981) doi: 10.1109/PROC.1981.11918\ncurvature Zevenbergen and Thorne (1987) doi: 10.1002/esp.3290120107\nplanform_curvature Zevenbergen and Thorne (1987) doi: 10.1002/esp.3290120107\nprofile_curvature Zevenbergen and Thorne (1987) doi: 10.1002/esp.3290120107\n\n\n\n3.4.5 Zonal operations\nJust like focal operations, zonal operations apply an aggregation function to multiple raster cells. However, a second raster, usually with categorical values, defines the zonal filters (or ‘zones’) in the case of zonal operations, as opposed to a predefined neighborhood window in the case of focal operation presented in the previous section. Consequently, raster cells defining the zonal filter do not necessarily have to be neighbors. Our grain size raster is a good example, as illustrated in the right panel of Figure 3.2: different grain sizes are spread irregularly throughout the raster. Finally, the result of a zonal operation is a summary table grouped by zone which is why this operation is also known as zonal statistics in the GIS world. This is in contrast to focal operations which return a raster object.\nTo demonstrate, let us get back to the grain and elev rasters (Figure 3.2). To calculate zonal statistics, we use the arrays with raster values. The elev array was already imported earlier:\n\ngrain = src_grain.read(1)\ngrain\n\narray([[1, 0, 1, 2, 2, 2],\n [0, 2, 0, 0, 2, 1],\n [0, 2, 2, 0, 0, 2],\n [0, 0, 1, 1, 1, 1],\n [1, 1, 1, 2, 1, 1],\n [2, 1, 2, 2, 0, 2]], dtype=uint8)\n\n\nOur interntion is to calculate the average (or any other summary function, for that matter) of elevation in each zone defined by grain values. First, we can obtain the unique values defining the zones using np.unique:\n\nnp.unique(grain)\n\narray([0, 1, 2], dtype=uint8)\n\n\nNow, we can use dictionary conprehension to “split” the elev array into separate one-dimensional arrays with values per grain group, with keys being the unique grain values:\n\nz = {i: elev[grain == i] for i in np.unique(grain)}\nz\n\n{0: array([ 2, 7, 9, 10, 13, 16, 17, 19, 20, 35], dtype=uint8),\n 1: array([ 1, 3, 12, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32], dtype=uint8),\n 2: array([ 4, 5, 6, 8, 11, 14, 15, 18, 28, 31, 33, 34, 36], dtype=uint8)}\n\n\nAt this stage, we can expand the dictionary comprehension expression to calculate the mean elevation associated with each grain size class. Instead of placing the elevation values (elev[grain==i]) into the dictionary values, we place their mean (elev[grain==i].mean()):\n\nz = {i: elev[grain == i].mean() for i in np.unique(grain)}\nz\n\n{0: 14.8, 1: 21.153846153846153, 2: 18.692307692307693}\n\n\nThis returns the statistics for each category, here the mean elevation for each grain size class. For example, the mean elevation in pixels characterized by grain size 0 is 14.8, and so on.\n\n\n3.4.6 Global operations and distances\nGlobal operations are a special case of zonal operations with the entire raster dataset representing a single zone. The most common global operations are descriptive statistics for the entire raster dataset such as the minimum or maximum—we already discussed those in Section 2.4.2.\nAside from that, global operations are also useful for the computation of distance and weight rasters. In the first case, one can calculate the distance from each cell to specific target cells or vector geometries. For example, one might want to compute the distance to the nearest coast (see example in Section 5.7). We might also want to consider topography, that means, we are not only interested in the pure distance but would like also to avoid the crossing of mountain ranges when going to the coast. To do so, we can weight the distance with elevation so that each additional altitudinal meter “prolongs” the Euclidean distance (this is beyond the scope of the book). Visibility and viewshed computations also belong to the family of global operations (this is also beyond the scope of the book).\n\n\n3.4.7 Map algebra counterparts in vector processing\nMany map algebra operations have a counterpart in vector processing (Liu and Mason 2009 to add citation…). Computing a distance raster (global operation) while only considering a maximum distance (logical focal operation) is the equivalent to a vector buffer operation (Section 4.3.3). Reclassifying raster data (either local or zonal function depending on the input) is equivalent to dissolving vector data (Section Section 4.3.7). Overlaying two rasters (local operation), where one contains “No Data” values representing a mask, is similar to vector clipping (Section Section 4.3.5). Quite similar to spatial clipping is intersecting two layers (Section Section 3.4.1). The difference is that these two layers (vector or raster) simply share an overlapping area. However, be careful with the wording. Sometimes the same words have slightly different meanings for raster and vector data models. While aggregating polygon geometries means dissolving boundaries, for raster data geometries it means increasing cell sizes and thereby reducing spatial resolution. Zonal operations dissolve the cells of one raster in accordance with the zones (categories) of another raster dataset using an aggregating function.\n\n\n3.4.8 Merging rasters\nSuppose we would like to compute the NDVI (see Section 3.4.3), and additionally want to compute terrain attributes from elevation data for observations within a study area. Such computations rely on remotely sensed information. The corresponding imagery is often divided into scenes covering a specific spatial extent (i.e., “tiles”), and frequently, a study area covers more than one scene. Then, we would need to merge (also known as “mosaic”) the scenes covered by our study area. In the easiest case, we can just merge these scenes, that is put them side by side. However, the procedure is the same regardless of the number of scenes. In case when all scenes are “aligned” (i.e., share the same origin and resolution), this can be thought of as simply gluing them into one big raster; otherwise, all scenes are resampled (see Section 4.4.4) to the grid defined by the first scene.\nFor example, let us merge digital elevation data from two SRTM elevation tiles, for Austria (aut.tif) and Switzerland (ch.tif). Merging can be done using function rasterio.merge.merge, which accepts a list of raster file connections, and returns the new ndarray and a “transform”:\n\nsrc_1 = rasterio.open('data/aut.tif')\nsrc_2 = rasterio.open('data/ch.tif')\nout_image, out_transform = rasterio.merge.merge([src_1, src_2])\n\nBoth inputs and the result are shown in Figure 3.16:\n\nfig, axes = plt.subplots(2, 2, figsize=(8,4))\nrasterio.plot.show(src_1, ax=axes[0][0])\nrasterio.plot.show(src_2, ax=axes[0][1])\nrasterio.plot.show(out_image, transform=out_transform, ax=axes[1][0])\naxes[1][1].axis('off')\naxes[0][0].set_title('aut.tif')\naxes[0][1].set_title('ch.tif')\naxes[1][0].set_title('Mosaic (aut.tif+ch.tif)');\n\n\n\n\nFigure 3.16: Raster merging\n\n\n\n\nBy default (method='first'), areas of overlap retain the value of the first raster. Other possible methods are:\n\n'last'—Value of the last raster\n'min'—Minimum value\n'max'—Maximum value\n\nWhen dealing with non-overlapping tiles, such as aut.tif and ch.tif (above), the method argument has no practical effect. However, it becomes relevant when we want to combine spectral imagery from scenes that were taken on different dates. The above four options for method do not cover the commonly required scenario when we would like to compute the mean value—for example to calculate a seasonal average NDVI image from a set of partially overlapping satellite images (such as Landsat). An alternative worflow to rasterio.merge.merge, for calculating a mosaic as well as “averaging” any overlaps, could be to go through two steps:\n\nResampling all scenes into a common “global” grid (Section 4.4.4), thereby producing a series of “matching” rasters (with the area surrounding each scene set as “No Data”)\nAveraging the rasters through raster algebra (Section 3.4.3), as in np.mean(m,axis=0) or np.nanmean(m,axis=0), where m is the multi-band array, which would return a single-band array of averages" + }, + { + "objectID": "04-spatial-operations.html#exercises", + "href": "04-spatial-operations.html#exercises", + "title": "3  Spatial data operations", + "section": "3.5 Exercises", + "text": "3.5 Exercises\n\nWrite a function which accepts and array and an int specifying the number of rows/columns to erase along an array edges. The function needs to return the modified array with np.nan values along its edges." + }, + { + "objectID": "05-geometry-operations.html#prerequisites", + "href": "05-geometry-operations.html#prerequisites", + "title": "4  Geometry operations", + "section": "4.1 Prerequisites", + "text": "4.1 Prerequisites\nLet’s import the required packages:\n\nimport numpy as np\nimport shapely.geometry\nimport geopandas as gpd\nimport topojson as tp\nimport rasterio\nimport rasterio.warp\nimport rasterio.plot\n\nand load the sample data for this chapter:\n\nseine = gpd.read_file('data/seine.gpkg')\nus_states = gpd.read_file('data/us_states.gpkg')\nnz = gpd.read_file('data/nz.gpkg')" + }, + { + "objectID": "05-geometry-operations.html#introduction", + "href": "05-geometry-operations.html#introduction", + "title": "4  Geometry operations", + "section": "4.2 Introduction", + "text": "4.2 Introduction\nSo far the book has explained the structure of geographic datasets (Chapter 2), and how to manipulate them based on their non-geographic attributes (Chapter 3) and spatial relations (Chapter 4). This chapter focusses on manipulating the geographic elements of geographic objects, for example by simplifying and converting vector geometries, cropping raster datasets, and converting vector objects into rasters and from rasters into vectors. After reading it—and attempting the exercises at the end—you should understand and have control over the geometry column in vector layers and the extent and geographic location of pixels represented in rasters in relation to other geographic objects.\nSection 4.3 covers transforming vector geometries with ‘unary’ and ‘binary’ operations. Unary operations work on a single geometry in isolation, including simplification (of lines and polygons), the creation of buffers and centroids, and shifting/scaling/rotating single geometries using ‘affine transformations’ (Section 4.3.1 to Section 4.3.4). Binary transformations modify one geometry based on the shape of another, including clipping and geometry unions, covered in Section 4.3.5 and Section 4.3.7, respectively. Type transformations (from a polygon to a line, for example) are demonstrated in Section Section 4.3.8.\nSection 4.4 covers geometric transformations on raster objects. This involves changing the size and number of the underlying pixels, and assigning them new values. It teaches how to change the resolution (also called raster aggregation and disaggregation), the extent and the origin of a raster. These operations are especially useful if one would like to align raster datasets from diverse sources. Aligned raster objects share a one-to-one correspondence between pixels, allowing them to be processed using map algebra operations, described in Section 4.3.2. The final Section 6 connects vector and raster objects. It shows how raster values can be ‘masked’ and ‘extracted’ by vector geometries. Importantly it shows how to ‘polygonize’ rasters and ‘rasterize’ vector datasets, making the two data models more interchangeable." + }, + { + "objectID": "05-geometry-operations.html#sec-geo-vec", + "href": "05-geometry-operations.html#sec-geo-vec", + "title": "4  Geometry operations", + "section": "4.3 Geometric operations on vector data", + "text": "4.3 Geometric operations on vector data\nThis section is about operations that in some way change the geometry of vector layers. It is more advanced than the spatial data operations presented in the previous chapter (in Section 3.3), because here we drill down into the geometry: the functions discussed in this section work on the geometric (GeoSeries) part, either as standalone object or as part of a GeoDataFrame.\n\n4.3.1 Simplification\nSimplification is a process for generalization of vector objects (lines and polygons) usually for use in smaller scale maps. Another reason for simplifying objects is to reduce the amount of memory, disk space and network bandwidth they consume: it may be wise to simplify complex geometries before publishing them as interactive maps. The geopandas package provides the .simplify method, which uses the GEOS implementation of the Douglas-Peucker algorithm to reduce the vertex count. .simplify uses the tolerance to control the level of generalization in map units (see Douglas and Peucker 1973 for details).\nFor example, a simplified geometry of a \"LineString\" geometry, representing the river Seine and tributaries, using tolerance of 2000 meters, can created using the following command:\n\nseine_simp = seine.simplify(2000) # meters\n\nFigure Figure 4.1 illustrates the input and the result of the simplification:\n\nfig, axes = plt.subplots(ncols=2)\nseine.plot(ax=axes[0])\nseine_simp.plot(ax=axes[1])\naxes[0].set_title('Original')\naxes[1].set_title('Simplified (d=2000 m)');\n\n\n\n\nFigure 4.1: Comparison of the original and simplified geometry of the seine object.\n\n\n\n\nThe resulting seine_simp object is a copy of the original seine but with fewer vertices. This is apparent, with the result being visually simpler (Figure 4.1, right) and consuming less memory than the original object, as verified below:\n\nimport sys\nprint(f'Original: {sys.getsizeof(seine)} bytes')\n\nOriginal: 374 bytes\n\n\n\nprint(f'Simplified: {sys.getsizeof(seine_simp)} bytes')\n\nSimplified: 188 bytes\n\n\nSimplification is also applicable for polygons. This is illustrated using us_states, representing the contiguous United States. As we show in Chapter 6, GEOS assumes that the data is in a projected CRS and this could lead to unexpected results when using a geographic CRS. Therefore, the first step is to project the data into some adequate projected CRS, such as US National Atlas Equal Area (epsg = 2163) (on the left in Figure Figure 4.2):\n\nus_states2163 = us_states.to_crs(2163)\n\nThe .simplify method from geopandas works the same way with a \"Polygon\"/\"MultiPolygon\" layer such as us_states2163:\n\nus_states_simp1 = us_states2163.simplify(100000)\n\nA limitation with .simplify is that it simplifies objects on a per-geometry basis. This means the “topology” is lost, resulting in overlapping and “holey” areal units illustrated in Figure Figure 4.2 (middle panel). The toposimplify function from topojson provides an alternative that overcomes this issue. By default it uses the Douglas-Peucker algorithm like the .simplify method. Another algorithm known as Visvalingam-Whyatt, which overcomes some limitations of the Douglas-Peucker algorithm (Visvalingam and Whyatt 1993), is also available in toposimplify. The main advanatage of toposimplify, however, is that it is topologically “aware”. That is, it simplifies the combined borders of the polygons (rather than each polygon on its own), thus ensuring that the overlap is maintained. The following code chunk uses this function to simplify us_states2163:\n\ntopo = tp.Topology(us_states2163, prequantize=False)\nus_states_simp2 = topo.toposimplify(100000).to_gdf()\n\n/usr/local/lib/python3.11/site-packages/topojson/core/dedup.py:107: RuntimeWarning: invalid value encountered in cast\n data[\"bookkeeping_shared_arcs\"] = array_bk_sarcs.astype(np.int64).tolist()\n\n\nFigure Figure 4.2 demonstrates the two simplification methods applied to us_states2163.\n\nfig, axes = plt.subplots(ncols=3, figsize=(8,4))\nus_states2163.plot(ax=axes[0], color='lightgrey', edgecolor='black')\nus_states_simp1.plot(ax=axes[1], color='lightgrey', edgecolor='black')\nus_states_simp2.plot(ax=axes[2], color='lightgrey', edgecolor='black')\naxes[0].set_title(\"Original\")\naxes[1].set_title(\"Simplified (w/ GeoPandas)\")\naxes[2].set_title(\"Simplified (w/ TopoJSON)\");\n\n\n\n\nFigure 4.2: Polygon simplification in action, comparing the original geometry of the contiguous United States with simplified versions, generated with functions from the GeoPandas (middle), and TopoJSON (right), packages.\n\n\n\n\n\n\n4.3.2 Centroids\nCentroid operations identify the center of geographic objects. Like statistical measures of central tendency (including mean and median definitions of ‘average’), there are many ways to define the geographic center of an object. All of them create single point representations of more complex vector objects.\nThe most commonly used centroid operation is the geographic centroid. This type of centroid operation (often referred to as ‘the centroid’) represents the center of mass in a spatial object (think of balancing a plate on your finger). Geographic centroids have many uses, for example to create a simple point representation of complex geometries, or to estimate distances between polygons. Centroids of the geometries in a GeoSeries or a GeoDataFrame are accessible through the .centroid property, as demonstrated in the code below, which generates the geographic centroids of regions in New Zealand and tributaries to the River Seine, illustrated with black points in Figure 4.3.\n\nnz_centroid = nz.centroid\nseine_centroid = seine.centroid\n\nSometimes the geographic centroid falls outside the boundaries of their parent objects (think of a doughnut). In such cases point on surface operations can be used to guarantee the point will be in the parent object (e.g., for labeling irregular multipolygon objects such as island states), as illustrated by the red points in Figure 4.3. Notice that these red points always lie on their parent objects. They were created with the representative_point method, as follows:\n\nnz_pos = nz.representative_point()\nseine_pos = seine.representative_point()\n\nThe centroids and points in surface are illustrated in Figure 4.3:\n\nfig, axes = plt.subplots(ncols=2)\nnz.plot(ax=axes[0], color='white', edgecolor='lightgrey')\nnz_centroid.plot(ax=axes[0], color='None', edgecolor='black')\nnz_pos.plot(ax=axes[0], color='None', edgecolor='red')\nseine.plot(ax=axes[1], color='grey')\nseine_pos.plot(ax=axes[1], color='None', edgecolor='red')\nseine_centroid.plot(ax=axes[1], color='None', edgecolor='black');\nfig.suptitle(\"Represenative points in red and centroids in black\", y=0.85)\nfig.tight_layout()\n\n\n\n\nFigure 4.3: Centroids (black) and points on surface red of New Zealand and Seine datasets.\n\n\n\n\n\n\n4.3.3 Buffers\nBuffers are polygons representing the area within a given distance of a geometric feature: regardless of whether the input is a point, line or polygon, the output is a polygon. Unlike simplification (which is often used for visualization and reducing file size) buffering tends to be used for geographic data analysis. How many points are within a given distance of this line? Which demographic groups are within travel distance of this new shop? These kinds of questions can be answered and visualized by creating buffers around the geographic entities of interest.\nFigure 4.4 illustrates buffers of different sizes (5 and 50 km) surrounding the river Seine and tributaries. These buffers were created with commands below, which show that the .buffer method, applied to a GeoSeries (or GeoDataFrame) requires one important argument: the buffer distance, provided in the units of the CRS (in this case meters):\n\nseine_buff_5km = seine.buffer(5000)\nseine_buff_50km = seine.buffer(50000)\n\nThe 5 and 50 km buffers are visualized in Figure 4.4:\n\nfig, axes = plt.subplots(ncols=2)\nseine_buff_5km.plot(ax=axes[0], color='none', edgecolor=['red', 'green', 'blue'])\nseine_buff_50km.plot(ax=axes[1], color='none', edgecolor=['red', 'green', 'blue'])\naxes[0].set_title('5 km buffer')\naxes[1].set_title('50 km buffer');\n\n\n\n\nFigure 4.4: Buffers around the Seine dataset of 5 km (left) and 50 km (right). Note the colors, which reflect the fact that one buffer is created per geometry feature.\n\n\n\n\nNote that both .centroid and .buffer return a GeoSeries object, even when the input is a GeoDataFrame:\n\nseine_buff_5km\n\n0 POLYGON ((657550.332 6852587.97...\n1 POLYGON ((517151.801 6930724.10...\n2 POLYGON ((701519.740 6813075.49...\ndtype: geometry\n\n\nIn the common scenario when the original attributes of the input features need to be retained, you can replace the existing geometry with the new GeoSeries as in:\n\nseine_buff_5km = seine.copy()\nseine_buff_5km['geometry'] = seine.buffer(5000)\nseine_buff_5km\n\n\n\n\n\n\n\n\nname\ngeometry\n\n\n\n\n0\nMarne\nPOLYGON ((657550.332 6852587.97...\n\n\n1\nSeine\nPOLYGON ((517151.801 6930724.10...\n\n\n2\nYonne\nPOLYGON ((701519.740 6813075.49...\n\n\n\n\n\n\n\n\n\n4.3.4 Affine transformations\nAffine transformation is any transformation that preserves lines and parallelism. However, angles or length are not necessarily preserved. Affine transformations include, among others, shifting (translation), scaling and rotation. Additionally, it is possible to use any combination of these. Affine transformations are an essential part of geocomputation. For example, shifting is needed for labels placement, scaling is used in non-contiguous area cartograms, and many affine transformations are applied when reprojecting or improving the geometry that was created based on a distorted or wrongly projected map.\nThe geopandas package implements affine transformation, for objects of classes GeoSeries and GeoDataFrame. In both cases, the method is applied on the GeoSeries part, returning a new GeoSeries of transformed geometries.\nAffine transformations of GeoSeries can be done using the .affine_transform method, which is a wrapper around the shapely.affinity.affine_transform function. According to the documentation, a 2D affine transformation requires a six-parameter list [a,b,d,e,xoff,yoff] which represents the following equations for transforming the coordinates:\n\\[\nx' = a x + b y + x_\\mathrm{off}\n\\]\n\\[\ny' = d x + e y + y_\\mathrm{off}\n\\]\nThere are also simplified GeoSeries methods for specific scenarios:\n\nGeoSeries.translate(xoff=0.0, yoff=0.0, zoff=0.0)\nGeoSeries.scale(xfact=1.0, yfact=1.0, zfact=1.0, origin='center')\nGeoSeries.rotate(angle, origin='center', use_radians=False)\nGeoSeries.skew(angle, origin='center', use_radians=False)\n\nFor example, shifting only requires the \\(x_{off}\\) and \\(y_{off}\\), using .translate. The code below shifts the y-coordinates by 100,000 meters to the north, but leaves the x-coordinates untouched:\n\nnz_shift = nz.translate(0, 100000)\n\nScaling enlarges or shrinks objects by a factor. It can be applied either globally or locally. Global scaling increases or decreases all coordinates values in relation to the origin coordinates, while keeping all geometries topological relations intact.\nGeopandas implements local scaling using the .scale method. Local scaling treats geometries independently and requires points around which geometries are going to be scaled, e.g., centroids. In the example below, each geometry is shrunk by a factor of two around the centroids (middle panel in Figure 4.5). To achieve that, we pass the 0.5 and 0.5 scaling factors (for x and y, respectively), and the 'centroid' option for the point of origin. (Other than 'centroid', it is possible to use 'center' for the bounding box center, or specific point coordinates.)\n\nnz_scale = nz.scale(0.5, 0.5, origin='centroid')\n\nRotating the geometries can be done using the .rotate method. When rotating, we need to specify the rotation angle (positive values imply clockwise rotation) and the origin points (using the same options as in scale). For example, the following expression rotates nz by 30 degrees counter-clockwise, around the geometry centroids:\n\nnz_rotate = nz.rotate(-30, origin='centroid')\n\nFigure 4.5 shows the original layer nz, and the shifting, scaling and rotation results.\n\nfig, axes = plt.subplots(ncols=3, figsize=(8,4))\nnz.plot(ax=axes[0], color='lightgrey', edgecolor='darkgrey')\nnz_shift.plot(ax=axes[0], color='red', edgecolor='darkgrey')\nnz.plot(ax=axes[1], color='lightgrey', edgecolor='darkgrey')\nnz_scale.plot(ax=axes[1], color='red', edgecolor='darkgrey')\nnz.plot(ax=axes[2], color='lightgrey', edgecolor='darkgrey')\nnz_rotate.plot(ax=axes[2], color='red', edgecolor='darkgrey')\naxes[0].set_title('Shift')\naxes[1].set_title('Scale')\naxes[2].set_title('Rotate');\n\n\n\n\nFigure 4.5: Illustrations of affine transformations: shift, scale and rotate.\n\n\n\n\n\n\n4.3.5 Clipping\nSpatial clipping is a form of spatial subsetting that involves changes to the geometry columns of at least some of the affected features.\nClipping can only apply to features more complex than points: lines, polygons and their ‘multi’ equivalents. To illustrate the concept we will start with a simple example: two overlapping circles with a center point one unit away from each other and a radius of one (Figure 4.6).\n\nx = shapely.geometry.Point((0, 0)).buffer(1)\ny = shapely.geometry.Point((1, 0)).buffer(1)\nshapely.geometry.GeometryCollection([x, y])\n\n\n\n\nFigure 4.6: Overlapping circles.\n\n\n\n\nImagine you want to select not one circle or the other, but the space covered by both x and y. This can be done using the .intersection method from shapely, illustrated using objects named x and y which represent the left- and right-hand circles (Figure 4.7).\n\nx.intersection(y)\n\n\n\n\nFigure 4.7: Overlapping circles with a gray color indicating intersection between them.\n\n\n\n\nThe next lines of code demonstrate how this works for the .difference, .union, and .symmetric_difference operators:\n\nx.difference(y)\n\n\n\n\n\nx.union(y)\n\n\n\n\n\nx.symmetric_difference(y)\n\n\n\n\n\n\n4.3.6 Subsetting and clipping\nClipping objects can change their geometry but it can also subset objects, returning only features that intersect (or partly intersect) with a clipping/subsetting object. To illustrate this point, we will subset points that cover the bounding box of the circles x and y in Figure 4.6. Some points will be inside just one circle, some will be inside both and some will be inside neither. The following code sections generates a simple random distribution of points within the extent of circles x and y, resulting in output illustrated in Figure 4.8. We do this in two steps. First, we figure out the bounds where random points are to be generated:\n\nbounds = x.union(y).bounds\nbounds\n\n(-1.0, -1.0, 2.0, 1.0)\n\n\nSecond, we use np.random.uniform to calculate n random x and y coordinates within the given bounds:\n\nnp.random.seed(1)\nn = 10 ## Number of points to generate\ncoords_x = np.random.uniform(bounds[0], bounds[2], n)\ncoords_y = np.random.uniform(bounds[1], bounds[3], n)\ncoords = list(zip(coords_x, coords_y))\ncoords\n\n[(0.2510660141077219, -0.1616109711934104),\n (1.1609734803264744, 0.370439000793519),\n (-0.9996568755479653, -0.5910955005369651),\n (-0.0930022821044807, 0.7562348727818908),\n (-0.5597323275486609, -0.9452248136041477),\n (-0.7229842156936066, 0.34093502035680445),\n (-0.4412193658669873, -0.16539039526574606),\n (0.03668218112914312, 0.11737965689150331),\n (0.1903024226920098, -0.7192261228095325),\n (0.6164502020100708, -0.6037970218302424)]\n\n\nThird, we transform the list of coordinates into a list of shapely points:\n\npnt = [shapely.geometry.Point(i) for i in coords]\npnt\n\n[<POINT (0.251 -0.162)>,\n <POINT (1.161 0.37)>,\n <POINT (-1 -0.591)>,\n <POINT (-0.093 0.756)>,\n <POINT (-0.56 -0.945)>,\n <POINT (-0.723 0.341)>,\n <POINT (-0.441 -0.165)>,\n <POINT (0.037 0.117)>,\n <POINT (0.19 -0.719)>,\n <POINT (0.616 -0.604)>]\n\n\nand then to a GeoSeries:\n\npnt = gpd.GeoSeries(pnt)\npnt\n\n0 POINT (0.25107 -0.16161)\n1 POINT (1.16097 0.37044)\n2 POINT (-0.99966 -0.59110)\n ... \n7 POINT (0.03668 0.11738)\n8 POINT (0.19030 -0.71923)\n9 POINT (0.61645 -0.60380)\nLength: 10, dtype: geometry\n\n\nThe result is shown in Figure 4.8:\n\nbase = pnt.plot(color='none', edgecolor='black')\ngpd.GeoSeries([x]).plot(ax=base, color='none', edgecolor='darkgrey');\ngpd.GeoSeries([y]).plot(ax=base, color='none', edgecolor='darkgrey');\n\n\n\n\nFigure 4.8: Randomly distributed points within the bounding box enclosing circles x and y. The point that intersects with both objects x and y are highlighted.\n\n\n\n\nNow, we get back to our question: how to subset the points to only return the point that intersects with both x and y? The code chunks below demonstrate three ways to achieve the same result. We can calculate a boolean Series, evaluating whether each point of pnt intersects with the intersection of x and y:\n\nsel = pnt.intersects(x.intersection(y))\nsel\n\n0 True\n1 False\n2 False\n ... \n7 True\n8 False\n9 True\nLength: 10, dtype: bool\n\n\nthen use it to subset pnt to get the result pnt1:\n\npnt1 = pnt[sel]\npnt1\n\n0 POINT (0.25107 -0.16161)\n7 POINT (0.03668 0.11738)\n9 POINT (0.61645 -0.60380)\ndtype: geometry\n\n\nWe can also find the intersection between the input points represented by pnt, using the intersection of x and y as the subsetting/clipping object. Since the second argument is an individual shapely geometry (x.intersection(y)), we get “pairwise” intersections of each pnt with it:\n\npnt2 = pnt.intersection(x.intersection(y))\npnt2\n\n0 POINT (0.25107 -0.16161)\n1 POINT EMPTY\n2 POINT EMPTY\n ... \n7 POINT (0.03668 0.11738)\n8 POINT EMPTY\n9 POINT (0.61645 -0.60380)\nLength: 10, dtype: geometry\n\n\nThe result is shown in Figure 4.9:\n\n\nbase = pnt.plot(color='none', edgecolor='black')\ngpd.GeoSeries([x]).plot(ax=base, color='none', edgecolor='darkgrey');\ngpd.GeoSeries([y]).plot(ax=base, color='none', edgecolor='darkgrey');\npnt2.plot(ax=base, color='red')\n\n\n<AxesSubplot: >\n(a) Randomly distributed points within the bounding box enclosing circles x and y. The point that intersects with both objects x and y are highlighted.\n\n\n\n\n\n\n(b)\n\n\n\nFigure 4.9: ?(caption)\n\n\nEmpty geometries can be filtered out to retain the required subset, and to get pnt2 which is identical to pnt1:\n\npnt2 = pnt2[~pnt2.is_empty] ## Subset non-empty geometries\npnt2\n\n0 POINT (0.25107 -0.16161)\n7 POINT (0.03668 0.11738)\n9 POINT (0.61645 -0.60380)\ndtype: geometry\n\n\nThis second approach will return features that partly intersect with x.intersection(y) but with modified geometries for spatially extensive features that cross the border of the subsetting object. The results are identical, but the implementation differs substantially.\nAlthough the example above is rather contrived and provided for educational rather than applied purposes, and we encourage the reader to reproduce the results to deepen your understanding for handling geographic vector objects in R, it raises an important question: which implementation to use? Generally, more concise implementations should be favored, meaning the first approach above. We will return to the question of choosing between different implementations of the same technique or algorithm in Chapter 11.\n\n\n4.3.7 Geometry unions\nAs we saw in Section 2.3.2, spatial aggregation can silently dissolve the geometries of touching polygons in the same group. This is demonstrated in the code chunk below in which 49 us_states are aggregated into 4 regions using the .dissolve method:\n\nregions = us_states.dissolve(by='REGION', aggfunc='sum').reset_index()\nregions\n\n/usr/local/lib/python3.11/site-packages/geopandas/geodataframe.py:1676: FutureWarning: The default value of numeric_only in DataFrameGroupBy.sum is deprecated. In a future version, numeric_only will default to False. Either specify numeric_only or select only columns which should be valid for the function.\n aggregated_data = data.groupby(**groupby_kwargs).agg(aggfunc)\n\n\n\n\n\n\n\n\n\nREGION\ngeometry\nAREA\ntotal_pop_10\ntotal_pop_15\n\n\n\n\n0\nMidwest\nMULTIPOLYGON (((-89.10077 36.94...\n1.984047e+06\n66514091.0\n67546398.0\n\n\n1\nNorteast\nMULTIPOLYGON (((-75.61724 39.83...\n4.357609e+05\n54909218.0\n55989520.0\n\n\n2\nSouth\nMULTIPOLYGON (((-81.38550 30.27...\n2.314087e+06\n112072990.0\n118575377.0\n\n\n3\nWest\nMULTIPOLYGON (((-118.36998 32.8...\n3.073145e+06\n68444193.0\n72264052.0\n\n\n\n\n\n\n\nThe result is shown in Figure 4.10:\n\nfig, axes = plt.subplots(ncols=2, figsize=(9, 2.5))\nus_states.plot(ax=axes[0], edgecolor='black', column='total_pop_15', legend=True, cmap='PuRd')\nregions.plot(ax=axes[1], edgecolor='black', column='total_pop_15', legend=True, cmap='PuRd')\naxes[0].set_title('State')\naxes[1].set_title('Region');\n\n\n\n\nFigure 4.10: Spatial aggregation on contiguous polygons, illustrated by aggregating the population of US states into regions, with population represented by color. Note the operation automatically dissolves boundaries between states.\n\n\n\n\nWhat is going on in terms of the geometries? Behind the scenes, .dissolve combines the geometries and dissolve the boundaries between them using the .unary_union method per group. This is demonstrated in the code chunk below which creates a united western US using the standalone unary_union operation:\n\nus_west = us_states[us_states['REGION'] == 'West']\nus_west_union = us_west['geometry'].unary_union\n\nNote that the result is a shapely geometry, as the individual attributes are “lost” as part of dissolving. The result is shown in Figure 4.11.\n\nus_west_union\n\n\n\n\nFigure 4.11: Western US\n\n\n\n\nTo dissolve two (or more) groups of a GeoDataFrame into one geometry, we can either use a combined condition:\n\nsel = (us_states['REGION'] == 'West') | (us_states['NAME'] == 'Texas')\ntexas_union = us_states[sel]\ntexas_union = texas_union['geometry'].unary_union\n\nor concatenate the two separate subsets:\n\nus_west = us_states[us_states['REGION'] == 'West']\ntexas = us_states[us_states['NAME'] == 'Texas']\ntexas_union = pd.concat([us_west, texas]).unary_union\n\nand then dissove using .unary_union. The result is identical in both cases, shown in Figure 4.12.\n\ntexas_union\n\n\n\n\nFigure 4.12: Western US and Texas\n\n\n\n\n\n\n4.3.8 Type transformations\nTransformation of geometries, from one type to another, also known as “geometry casting”, is often required to facilitate spatial analysis. The shapely package can be used for geometry casting. The exact expression(s) depend on the specific transformation we are interested in. In general, you need to figure out the required input of the respective construstor function according to the “destination” geometry (e.g., shapely.geometry.LineString, etc.), then reshape the input of the “source” geometry into the right form to be passed to that function.\nLet’s create a \"MultiPoint\" to illustrate how geometry casting works on shapely geometry objects:\n\nmultipoint = shapely.geometry.MultiPoint([(1,1), (3,3), (5,1)])\nmultipoint\n\n\n\n\nA \"LineString\" can be created using shapely.geometry.LineString from a list of points. Consequently, a \"MultiPoint\" can be converted to a \"LineString\" by extracting the individual points into a list, then passing them to shapely.geometry.LineString:\n\nlinestring = shapely.geometry.LineString(list(multipoint.geoms))\nlinestring\n\n\n\n\nA \"Polygon\" can also be created using function shapely.geometry.Polygon, which acceps a sequence of point coordinates. In principle, the last coordinate must be equal to the first, in order to form a closed shape. However, shapely.geometry.Polygon is able to complete the last coordinate automatically. Therefore:\n\npolygon = shapely.geometry.Polygon([[p.x, p.y] for p in multipoint.geoms])\npolygon\n\n\n\n\nThe source \"MultiPoint\" geometry, and the derived \"LineString\" and \"Polygon\" geometries are shown in Figure 4.13. Note that we convert the shapely geometries to GeoSeries for easier multi-panel plotting:\n\nfig, axes = plt.subplots(ncols=3, figsize=(8,4))\ngpd.GeoSeries(multipoint).plot(ax=axes[0])\ngpd.GeoSeries(linestring).plot(ax=axes[1])\ngpd.GeoSeries(polygon).plot(ax=axes[2])\naxes[0].set_title(\"MultiPoint\")\naxes[1].set_title(\"LineString\")\naxes[2].set_title(\"Polygon\");\n\n\n\n\nFigure 4.13: Examples of linestring and polygon casted from a multipoint geometry.\n\n\n\n\nConversion from \"MultiPoint\" to \"LineString\" is a common operation that creates a line object from ordered point observations, such as GPS measurements or geotagged media. This allows spatial operations such as the length of the path traveled. Conversion from \"MultiPoint\" or \"LineString\" to \"Polygon\" is often used to calculate an area, for example from the set of GPS measurements taken around a lake or from the corners of a building lot.\nOur \"LineString\" geometry can be converted bact to a \"MultiPoint\" geometry by passing its coordinates directly to shapely.geometry.MultiPoint:\n\n# 'LineString' -> 'MultiPoint'\nshapely.geometry.MultiPoint(linestring.coords)\n\n\n\n\nThe \"Polygon\" (exterior) coordinates can be passed to shapely.geometry.MultiPoint as well:\n\n# 'Polygon' -> 'MultiPoint'\nshapely.geometry.MultiPoint(polygon.exterior.coords)\n\n\n\n\nSummary / table of possible transformations… (?)\nLet’s apply another commonly used type transformation to demonstrate. As input, we will create a \"MultiLineString\" geometry composed of three lines:\n\nl1 = shapely.geometry.LineString([(1, 5), (4, 3)])\nl2 = shapely.geometry.LineString([(4, 4), (4, 1)])\nl3 = shapely.geometry.LineString([(2, 2), (4, 2)])\nml = shapely.geometry.MultiLineString([l1, l2, l3])\nml\n\n\n\n\nLet’s place it into a GeoSeries:\n\ngeom = gpd.GeoSeries([ml])\ngeom\n\n0 MULTILINESTRING ((1.00000 5.000...\ndtype: geometry\n\n\nand finally into a GeoDataFrame with an attribute called \"id\":\n\ndat = gpd.GeoDataFrame(geometry = geom, data = pd.DataFrame({'id': [1]}))\ndat\n\n\n\n\n\n\n\n\nid\ngeometry\n\n\n\n\n0\n1\nMULTILINESTRING ((1.00000 5.000...\n\n\n\n\n\n\n\nYou can imagine it as a road or river network. The above layer dat has only one row that defines all the lines. This restricts the number of operations that can be done, for example it prevents adding names to each line segment or calculating lengths of single lines. Using shapely methods which we are already familiar with (see above), the individual single-part geometries (i.e., the “parts”) can be accessed through the .geoms property:\n\nlist(ml.geoms)\n\n[<LINESTRING (1 5, 4 3)>, <LINESTRING (4 4, 4 1)>, <LINESTRING (2 2, 4 2)>]\n\n\nHowever, spoecifically for the “multi-part to single part” type transformation scenarios, there is also a method called .explode, which can convert an entire multi-part GeoDataFrame to a single-part one. The advantage is that the original attributes (such as id) are retained, so that we can keep track of the original multi-part geometry properties that each part came from. The index_parts=True argument also lets us keep track of the original multipart geometry indices, and part indices, named level_0 and level_1, respectively:\n\ndat1 = dat.explode(index_parts=True).reset_index()\ndat1\n\n\n\n\n\n\n\n\nlevel_0\nlevel_1\nid\ngeometry\n\n\n\n\n0\n0\n0\n1\nLINESTRING (1.00000 5.00000, 4....\n\n\n1\n0\n1\n1\nLINESTRING (4.00000 4.00000, 4....\n\n\n2\n0\n2\n1\nLINESTRING (2.00000 2.00000, 4....\n\n\n\n\n\n\n\nFor example, here we see that all \"LineString\" geometries came from the same multi-part geometry (level_0=0), which had three parts (level_1=0,1,2).\nFigure 4.14 demonstrates the effect of .explode in converting a layer with multi-part geometries into a layer with single part geometries.\n\nfig, axes = plt.subplots(ncols=2)\ndat.plot(ax=axes[0], column='id')\ndat1.plot(ax=axes[1], column='level_1')\naxes[0].set_title('MultiLineString\\n1 feature')\naxes[1].set_title('LineString\\n3 features');\n\n\n\n\nFigure 4.14: Transformation from a \"MultiLineString\" layer with one feature (left), to a \"LineString\" layer with three features (right) using .explode\n\n\n\n\nBy the way, the opposite transformation, i.e., “single-part to multi-part”, is acheived using the .dissolve method (Section 4.3.7)." + }, + { + "objectID": "05-geometry-operations.html#sec-geo-ras", + "href": "05-geometry-operations.html#sec-geo-ras", + "title": "4  Geometry operations", + "section": "4.4 Geometric operations on raster data", + "text": "4.4 Geometric operations on raster data\n\n4.4.1 Geometric intersections\nTo complete…\n\n\n4.4.2 Extent and origin\nTo complete…\n\n\n4.4.3 Aggregation and disaggregation\nRaster datasets vary based on their resolution, from high resolution datasets that enable individual trees to be seen, to low resolution datasets covering the whole Earth. Raster datasets can be transformed to either decrease (aggregate) or increase (disaggregate) their resolution for a number of reasons. Aggregation can reduce computational resource requirements of raster storage and subsequent steps, disaggregation can be used to match other datasets or to add detail. As an example, we here change the spatial resolution of dem.tif by a factor of 5 (Figure Figure 4.15).\nRaster aggregation is, in fact, a special case of raster resampling (see Section 4.4.4), where the target raster grid is aligned with the original raster, only with coarser pixels. Raster resampling, is the general case where the new grid is not necessarily an aggregation of the original one, but any other case as well (such as a rotated and/or shifted one, etc.).\nTo aggregate a raster using rasterio, we go through two steps:\n\nReading the raster values (using .read) into an out_shape that is different from the original .shape\nUpdating the transform according to the out_shape\n\nLet’s demonstrate. First, we create a file connection to dem.tif, using rasterio.open:\n\nsrc = rasterio.open('data/dem.tif')\n\nNote the shape of the raster, it has 117 rows and 117 columns:\n\nsrc.read(1).shape\n\n(117, 117)\n\n\nAlso note the transform, which tells us that the raster resolution is 30.85 \\(m\\):\n\nsrc.transform\n\nAffine(30.849999999999604, 0.0, 794599.1076146346,\n 0.0, -30.84999999999363, 8935384.324602526)\n\n\nNow, instead of reading the raster values the usual way, as in src.read(1), we can specify out_shape to read the values into a different shape. Here, we calculate a new shape which is downscaled by a factor of 5, i.e., the number of rows and columns is multiplied by 0.2. We must truncate any “partial” rows and columns, e.g., using int. Each new pixel is now obtained, or “resampled”, from \\(\\sim 5 \\times 5 = \\sim 25\\) “old” raster values. We can choose the resampling method through the resampling parameter. Here we use rasterio.enums.Resampling.average, i.e., the new “large” pixel value is the average of all coinciding small pixels, which makes sense for our elevation data in dem.tif:\n\nfactor = 0.2\nr = src.read(1,\n out_shape=(\n int(src.height * factor),\n int(src.width * factor)\n ),\n resampling=rasterio.enums.Resampling.average\n)\n\nThe resulting array r has a smaller .shape, as shown below:\n\nr.shape\n\n(23, 23)\n\n\nOther useful options include:\n\nrasterio.enums.Resampling.nearest—Nearest neighbor resampling\nrasterio.enums.Resampling.bilinear—Bilinear resampling\nrasterio.enums.Resampling.cubic—Cubic resampling\nrasterio.enums.Resampling.lanczos—Lanczos windowed resampling\nrasterio.enums.Resampling.mode—Mode resampling (most common value)\nrasterio.enums.Resampling.min—Minimum resampling\nrasterio.enums.Resampling.max—Maximum resampling\nrasterio.enums.Resampling.med—Median resampling\nrasterio.enums.Resampling.sum—Median resampling\n\nSee below (Section 4.4.4) for an explanation of these methods.\nThe second step is to update the transform, taking into account the change in raster shape, as follows:\n\nnew_transform = src.transform * src.transform.scale(\n (src.width / r.shape[1]),\n (src.height / r.shape[0])\n)\nnew_transform\n\nAffine(156.93260869565017, 0.0, 794599.1076146346,\n 0.0, -156.9326086956198, 8935384.324602526)\n\n\nThe original raster and the aggregated one, are shown in Figure 4.15:\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nrasterio.plot.show(src, ax=axes[0])\nrasterio.plot.show(r, transform=new_transform, ax=axes[1])\naxes[0].set_title('Original')\naxes[1].set_title('Aggregated (average)');\n\n\n\n\nFigure 4.15: Original raster (left), and aggregated raster (right).\n\n\n\n\nIn case we need to export the new raster, we need to update the metadata:\n\ndst_kwargs = src.meta.copy()\ndst_kwargs.update({\n 'transform': new_transform,\n 'width': r.shape[1],\n 'height': r.shape[0],\n})\ndst_kwargs\n\n{'driver': 'GTiff',\n 'dtype': 'float32',\n 'nodata': nan,\n 'width': 23,\n 'height': 23,\n 'count': 1,\n 'crs': CRS.from_epsg(32717),\n 'transform': Affine(156.93260869565017, 0.0, 794599.1076146346,\n 0.0, -156.9326086956198, 8935384.324602526)}\n\n\nThen create a new file in writing mode, and write the values in r into that file (see Section 7.8.2):\n\ndst = rasterio.open('output/dem_agg5.tif', 'w', **dst_kwargs)\ndst.write(r, 1)\ndst.close()\n\nThe opposite operastion, disaggregation, is when we increase the resolution of raster objects. Either of the supported resampling methods (see above) can be used. However, since we are not actually summarizing information but transferring the value of a large pixel into multiple small pixels, it makes sense to use either:\n\nNearest neighbor resampling (rasterio.enums.Resampling.nearest), when want to keep the original values as-is, since when modifying them would be incorrect (such as in categorical rasters)\nSmooting techniques, such as Bilinear resampling (rasterio.enums.Resampling.bilinear), when we would like the smaller pixels to reflect gradual change between the original values, e.g., when the disaggregated raster is used for visulalization purposes\n\nTo disaggregate a raster, we go through the same workflow as for aggregation, only using a different factor, such as factor=5 instead of factor=0.2, i.e., increasing the number of raster pixels instead of decreasing. In this example, we use bilinear interpolation to get a smoothed high-resolution raster:\n\nfactor = 5\nr2 = src.read(1,\n out_shape=(\n int(src.height * factor),\n int(src.width * factor)\n ),\n resampling=rasterio.enums.Resampling.bilinear\n)\n\nHere is the size of the disaggregated raster:\n\nr2.shape\n\n(585, 585)\n\n\nAnd here is the same expression as shown for aggregation, to calculate the new transform:\n\nnew_transform2 = src.transform * src.transform.scale(\n (src.width / r2.shape[1]),\n (src.height / r2.shape[0])\n)\nnew_transform2\n\nAffine(6.169999999999921, 0.0, 794599.1076146346,\n 0.0, -6.169999999998726, 8935384.324602526)\n\n\nA zoom-in on the top-left corner of the original raster and the disaggregated one, are shown in Figure 4.16:\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nrasterio.plot.show(src.read(1)[:5, :5], transform=src.transform, ax=axes[0])\nrasterio.plot.show(r2[:25, :25], transform=new_transform2, ax=axes[1])\naxes[0].set_title('Original')\naxes[1].set_title('Disaggregated (bilinear)');\n\n\n\n\nFigure 4.16: Original raster (left), and disaggregated raster (right). The same top-left corner extent of both rasters is shown, to zoom-in and demonstrate the effect of bilinear interpolation.\n\n\n\n\nCode to export the disaggregated raster would be identical to the one used above for the aggregated raster, so omit it to save space.\n\n\n4.4.4 Resampling\nThe above methods of aggregation and disaggregation are only suitable when we want to change the resolution of our raster by the aggregation/disaggregation factor. However, what to do when we have two or more rasters with different resolutions and origins? This is the role of resampling—a process of computing values for new pixel locations. In short, this process takes the values of our original raster and recalculates new values for a target raster with custom resolution and origin (Figure 4.17).\nThere are several methods for estimating values for a raster with different resolutions/origins (Figure 4.17). The main resampling methods include:\n\nNearest neighbor: assigns the value of the nearest cell of the original raster to the cell of the target one. This is a fast simple technique that is usually suitable for resampling categorical rasters.\nBilinear interpolation: assigns a weighted average of the four nearest cells from the original raster to the cell of the target one. This is the fastest method that is appropriate for continuous rasters.\nCubic interpolation: uses values of the 16 nearest cells of the original raster to determine the output cell value, applying third-order polynomial functions. Used for continuous rasters and results in a smoother surface compared to bilinear interpolation, but is computationally more demanding.\nCubic spline interpolation: also uses values of the 16 nearest cells of the original raster to determine the output cell value, but applies cubic splines (piecewise third-order polynomial functions). Used for continuous rasters.\nLanczos windowed sinc resampling: uses values of the 36 nearest cells of the original raster to determine the output cell value. Used for continuous rasters.\nAdditionally, we can use straightforward summary methods, taking into account all pixels that coincide with the target pixel, such as average (Figure 4.15), minimum, maximum (Figure 4.17), median, mode, and sum.\n\nThe above explanation highlights that only nearest neighbor resampling is suitable for categorical rasters, while all remaining methods can be used (with different outcomes) for continuous rasters.\nWith rasterio, resampling can be done using function rasterio.warp.reproject. Note, again, that raster reprojection is not fundamentally different from resampling—the difference is just whether the target grid is in the same CRS as the origin (resampling) or in a different CRS (reprojection). In other words, reprojection is resampling into a grid that is in a different CRS. We will demonstrate reprojection using rasterio.warp.reproject later on (Section 6.9).\nThe information required for rasterio.warp.reproject, whether we are resampling or reprojecting, is:\n\nThe source and target CRS. These may be identical, when resampling, or different, when reprojecting.\nThe source and target transform\n\nAlso, rasterio.warp.reproject works with file connections, so it requires a connection to an output file in write ('w') mode. This makes the function efficient for large rasters.\nThe target and destination CRS are straightforward to specify, depending on our choice. The source transform is also available, e.g., from the source file connection. The only complicated part is to figure out the destination transform. When resampling, the transform is typically derived from a template raster, such as an existing raster file that we would like our origin raster to match, or a numeric specification of our target grid (see below). Otherwise, when the exact grid is not of importance, we can simply aggregate or disaggregate our raster as shown above (Section 4.4.3). (Note that when reprojecting, the target transform is not straightforward to figure out, therefore we use the rasterio.warp.calculate_default_transform function to calculate it, as will be shown in Section 6.9.)\nLet’s demonstrate resampling into a destination grid which is specified through numeric contraints, such as the extent and resolution:\n\nxmin = 794650\nxmax = 798250\nymin = 8931750 \nymax = 8935350\nres = 300\n\nThe transform is a function of the origin and resolution, and can be created using the rasterio.transform.from_origin function as follows:\n\ndst_transform = rasterio.transform.from_origin(west=xmin, north=ymax, xsize=res, ysize=res)\ndst_transform\n\nAffine(300.0, 0.0, 794650.0,\n 0.0, -300.0, 8935350.0)\n\n\nAgain, note that in case we needed to resample into a grid specified by an existing “template” raster, we could skip this step and simply use read the transform from that file, as in rasterio.open('template.tif').transform.\nNow we move on to creating the destination file connection. For that, we also have to know the raster dimensions. These can be derived from the extent and the resolution, as follows:\n\nwidth = int((xmax - xmin) / res)\nheight = int((ymax - ymin) / res)\nwidth, height\n\n(12, 12)\n\n\nNow we create the destination file connection. We are using the same metadata as the source file, except for the dimensions and the transform, which are going to be different and reflecting the resampling process:\n\ndst_kwargs = src.meta.copy()\ndst_kwargs.update({\n 'transform': dst_transform,\n 'width': width,\n 'height': height\n})\ndst = rasterio.open('output/dem_resample_nearest.tif', 'w', **dst_kwargs)\n\nHere is how we reproject, using function rasterio.warp.reproject. The resampling method being used here is nearest neighbor resampling:\n\nrasterio.warp.reproject(\n source=rasterio.band(src, 1),\n destination=rasterio.band(dst, 1),\n src_transform=src.transform,\n src_crs=src.crs,\n dst_transform=dst_transform,\n dst_crs=src.crs,\n resampling=rasterio.enums.Resampling.nearest\n)\n\n(Band(ds=<open DatasetWriter name='output/dem_resample_nearest.tif' mode='w'>, bidx=1, dtype='float32', shape=(12, 12)),\n Affine(300.0, 0.0, 794650.0,\n 0.0, -300.0, 8935350.0))\n\n\nIn the end, we close the file:\n\ndst.close()\n\nHere is another code section to demontrate another resampling method, the maximum resampling, i.e., every new pixel gets the maximum value of all the original pixels it coincides with. Note that the transform is identical (Figure 4.17), so we do not need to calculate it again:\n\ndst = rasterio.open('output/dem_resample_maximum.tif', 'w', **dst_kwargs)\nrasterio.warp.reproject(\n source=rasterio.band(src, 1),\n destination=rasterio.band(dst, 1),\n src_transform=src.transform,\n src_crs=src.crs,\n dst_transform=dst_transform,\n dst_crs=src.crs,\n resampling=rasterio.enums.Resampling.max\n)\ndst.close()\n\nThe original raster dem.tif, and the two resampling results dem_resample_nearest.tif and dem_resample_maximum.tif, are shown in Figure 4.17:\n\nfig, axes = plt.subplots(ncols=3, figsize=(8,4))\nrasterio.plot.show(src, ax=axes[0])\nrasterio.plot.show(rasterio.open('output/dem_resample_nearest.tif'), ax=axes[1])\nrasterio.plot.show(rasterio.open('output/dem_resample_maximum.tif'), ax=axes[2])\naxes[0].set_title('Original')\naxes[1].set_title('Nearest neighbor')\naxes[2].set_title('Maximum');\n\n\n\n\nFigure 4.17: Visual comparison of the original raster and two different resampling methods: nearest neighbor and maximum resampling." + }, + { + "objectID": "05-geometry-operations.html#exercises", + "href": "05-geometry-operations.html#exercises", + "title": "4  Geometry operations", + "section": "4.5 Exercises", + "text": "4.5 Exercises" + }, + { + "objectID": "06-raster-vector.html#prerequisites", + "href": "06-raster-vector.html#prerequisites", + "title": "5  Raster-vector interactions", + "section": "5.1 Prerequisites", + "text": "5.1 Prerequisites\nLet’s import the required packages:\n\nimport numpy as np\nimport shapely.geometry\nimport matplotlib.pyplot as plt\nimport geopandas as gpd\nimport rasterio\nimport rasterio.mask\nimport rasterstats\nimport rasterio.plot\nimport rasterio.features\nimport math\nimport os\n\nand load the sample data:\n\nsrc_srtm = rasterio.open('data/srtm.tif')\nsrc_nlcd = rasterio.open('data/nlcd.tif')\nsrc_grain = rasterio.open('data/grain.tif')\nsrc_elev = rasterio.open('data/elev.tif')\nsrc_dem = rasterio.open('data/dem.tif')\nzion = gpd.read_file('data/zion.gpkg')\nzion_points = gpd.read_file('data/zion_points.gpkg')\ncycle_hire_osm = gpd.read_file('data/cycle_hire_osm.gpkg')\nus_states = gpd.read_file('data/us_states.gpkg')\nnz = gpd.read_file('data/nz.gpkg')\nsrc_nz_elev = rasterio.open('data/nz_elev.tif')" + }, + { + "objectID": "06-raster-vector.html#introduction", + "href": "06-raster-vector.html#introduction", + "title": "5  Raster-vector interactions", + "section": "5.2 Introduction", + "text": "5.2 Introduction\nThis Chapter focuses on interactions between raster and vector geographic data models, introduced in Chapter Chapter 1. It includes four main techniques: raster cropping and masking using vector objects (Section Section 5.3); extracting raster values using different types of vector data (Section Section 5.4); and raster-vector conversion (Section 5.5 and Section 5.6). These concepts are demonstrated using data used in previous chapters to understand their potential real-world applications." + }, + { + "objectID": "06-raster-vector.html#sec-raster-cropping", + "href": "06-raster-vector.html#sec-raster-cropping", + "title": "5  Raster-vector interactions", + "section": "5.3 Raster cropping", + "text": "5.3 Raster cropping\nMany geographic data projects involve integrating data from many different sources, such as remote sensing images (rasters) and administrative boundaries (vectors). Often the extent of input raster datasets is larger than the area of interest. In this case raster cropping and masking are useful for unifying the spatial extent of input data. Both operations reduce object memory use and associated computational resources for subsequent analysis steps, and may be a necessary preprocessing step before creating attractive maps involving raster data.\nWe will use two objects to illustrate raster cropping:\n\nThe srtm.tif raster representing elevation (meters above sea level) in south-western Utah\nThe zion.gpkg vector layer representing the Zion National Park\n\nBoth target and cropping objects must have the same projection. The following reprojects the vector layer zion into the CRS of the raster src_srtm:\n\nzion = zion.to_crs(src_srtm.crs)\n\nTo mask the image, i.e., convert all pixels which do not intersect with the zion polygon to “No Data”, we use the rasterio.mask.mask function as follows:\n\nout_image_mask, out_transform_mask = rasterio.mask.mask(\n src_srtm, \n zion['geometry'], \n crop=False, \n nodata=9999\n)\n\nNote that we need to specify a “No Data” value in agreement with the raster data type. Since srtm.tif is of type uint16, we choose 9999 (a positive integer that is guaranteed not to occur in the raster).\nThe result is the out_image array with the masked values:\n\nout_image_mask\n\narray([[[9999, 9999, 9999, ..., 9999, 9999, 9999],\n [9999, 9999, 9999, ..., 9999, 9999, 9999],\n [9999, 9999, 9999, ..., 9999, 9999, 9999],\n ...,\n [9999, 9999, 9999, ..., 9999, 9999, 9999],\n [9999, 9999, 9999, ..., 9999, 9999, 9999],\n [9999, 9999, 9999, ..., 9999, 9999, 9999]]], dtype=uint16)\n\n\nand the new out_transform:\n\nout_transform_mask\n\nAffine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)\n\n\nNote that masking (without cropping!) does not modify the raster spatial configuration. Therefore, the new transform is identical to the original:\n\nsrc_srtm.transform\n\nAffine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)\n\n\nUnfortunately, the out_image and out_transform object do not contain any information indicating that 9999 represents “No Data”. To associate the information with the raster, we must write it to file along with the corresponding metadata. For example, to write the cropped raster to file, we need to modify the “No Data” setting in the metadata:\n\nout_meta = src_srtm.meta\nout_meta.update(nodata=9999)\nout_meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint16',\n 'nodata': 9999,\n 'width': 465,\n 'height': 457,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)}\n\n\nThen we can write the cropped raster to file:\n\nnew_dataset = rasterio.open('output/srtm_masked.tif', 'w', **out_meta)\nnew_dataset.write(out_image_mask)\nnew_dataset.close()\n\nNow we can re-import the raster:\n\nsrc_srtm_mask = rasterio.open('output/srtm_masked.tif')\n\nThe .meta property contains the nodata entry. Now, any relevant operation (such as plotting) will take “No Data” into account:\n\nsrc_srtm_mask.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint16',\n 'nodata': 9999.0,\n 'width': 465,\n 'height': 457,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.0008333333332777796, 0.0, -113.23958321278403,\n 0.0, -0.0008333333332777843, 37.512916763165805)}\n\n\nCropping means reducing the raster extent to the extent of the vector layer:\n\nTo crop and mask, we can use the same in rasterio.mask.mask expression shown above for masking, just setting crop=True instead of crop=False.\nTo just crop, without masking, we can derive the extent polygon and then crop using it.\n\nFor example, here is how we can obtain the extent polygon of zion, as a shapely geometry object:\n\nbb = zion.unary_union.envelope\nbb\n\n\n\n\nThe extent can now be used for masking. Here, we are also using the all_touched=True option so that pixels partially overlapping with the extent are included:\n\nout_image_crop, out_transform_crop = rasterio.mask.mask(\n src_srtm, \n [bb], \n crop=True, \n all_touched=True, \n nodata=9999\n)\n\nFigure 5.1 shows the original raster, and the cropped and masked results.\n\nfig, axes = plt.subplots(ncols=3, figsize=(9,5))\nrasterio.plot.show(src_srtm, ax=axes[0])\nzion.plot(ax=axes[0], color='none', edgecolor='black')\nrasterio.plot.show(src_srtm_mask, ax=axes[1])\nzion.plot(ax=axes[1], color='none', edgecolor='black')\nrasterio.plot.show(out_image_crop, transform=out_transform_crop, ax=axes[2])\nzion.plot(ax=axes[2], color='none', edgecolor='black')\naxes[0].set_title('Original')\naxes[1].set_title('Mask')\naxes[2].set_title('Crop');\n\n\n\n\nFigure 5.1: Raster masking and cropping" + }, + { + "objectID": "06-raster-vector.html#sec-raster-extraction", + "href": "06-raster-vector.html#sec-raster-extraction", + "title": "5  Raster-vector interactions", + "section": "5.4 Raster extraction", + "text": "5.4 Raster extraction\nRaster extraction is the process of identifying and returning the values associated with a ‘target’ raster at specific locations, based on a (typically vector) geographic ‘selector’ object. The reverse of raster extraction — assigning raster cell values based on vector objects — is rasterization, described in Section 5.5.\nIn the following examples, we use a third-party package called rasterstats, which is specifically aimed at extracting raster values:\n\nto points, via the rasterstats.point_query function, or\nto polygons, via the rasterstats.zonal_stats function.\n\n\n5.4.1 Extraction to points\nThe basic example is of extracting the value of a raster cell at specific points. For this purpose, we will use zion_points, which contain a sample of 30 locations within the Zion National Park, which in figure Figure 5.2:\n\nfig, ax = plt.subplots()\nrasterio.plot.show(src_srtm, ax=ax)\nzion_points.plot(ax=ax, color='black');\n\n\n\n\nFigure 5.2: 30 point locations within the Zion National Park, with elevation in the background\n\n\n\n\nThe following expression extracts elevation values from srtm:\n\nresult = rasterstats.point_query(\n zion_points, \n src_srtm.read(1), \n nodata = src_srtm.nodata, \n affine = src_srtm.transform,\n interpolate='nearest'\n)\n\nThe resulting object is a list of raster values, corresponding to zion_points:\n\nresult[:5]\n\n[1802, 2433, 1886, 1370, 1452]\n\n\nTo get a DataFrame with points geometries (and attributes, if any) and the related srtm values for each point, we can assign the extraction result into a new column:\n\nzion_points['elev'] = result\nzion_points\n\n\n\n\n\n\n\n\ngeometry\nelev\n\n\n\n\n0\nPOINT (-112.91587 37.20013)\n1802\n\n\n1\nPOINT (-113.09369 37.39263)\n2433\n\n\n2\nPOINT (-113.02462 37.33466)\n1886\n\n\n...\n...\n...\n\n\n27\nPOINT (-113.03655 37.23446)\n1372\n\n\n28\nPOINT (-113.13933 37.39004)\n1905\n\n\n29\nPOINT (-113.09677 37.24237)\n1574\n\n\n\n\n30 rows × 2 columns\n\n\n\n\n\n5.4.2 Extraction to lines\nRaster extraction is also applicable with line selectors. The typical line extraction algorithm is to extract one value for each raster cell touched by a line. However, this particular approach is not recommended to obtain values along the transects, as it is hard to get the correct distance between each pair of extracted raster values.\nFor line extraction, a better approach is to split the line into many points (at equal distances along the line) and then extract the values for these points. To demonstrate this, the code below creates zion_transect, a straight line going from northwest to southeast of the Zion National Park (see Section 1.2 for a recap on the vector data model):\n\ncoords = [[-113.2, 37.45], [-112.9, 37.2]]\nzion_transect = shapely.geometry.LineString(coords)\nzion_transect\n\n\n\n\nHere is a printout demonstrating that this is a \"LineString\" geometry representing a straight line between two points:\n\nprint(zion_transect)\n\nLINESTRING (-113.2 37.45, -112.9 37.2)\n\n\nThe line is illustrated in the context of the raster in Figure 5.3.\nThe utility of extracting heights from a linear selector is illustrated by imagining that you are planning a hike. The method demonstrated below provides an ‘elevation profile’ of the route (the line does not need to be straight), useful for estimating how long it will take due to long climbs.\nFirst, we need to create a layer zion_transect_pnt consisting of points along our line (zion_transect), at specified intervals (distance_delta). To do that, we need to transform the line into a projected CRS (so that we work with true distances, in \\(m\\)), such as UTM. This requires going through a GeoSeries, as shapely geometries have no CRS definition nor concept of reprojection (see Section 1.2.6):\n\nzion_transect_utm = gpd.GeoSeries(zion_transect, crs=4326)\nzion_transect_utm = zion_transect_utm.to_crs(32612)\nzion_transect_utm = zion_transect_utm.iloc[0]\n\nThe printout of the new geometry shows this is still a straight line between two points, only with coordinates in a different CRS:\n\nprint(zion_transect_utm)\n\nLINESTRING (305399.67208180577 4147066.650206682, 331380.8917453843 4118750.0947884847)\n\n\nThen, we calculate the distances, along the line, where points are going to be generated, using np.arange. This is a numeric sequence starting at 0, going up to line .length, in steps of 250 (\\(m\\)):\n\ndistances = np.arange(0, zion_transect_utm.length, 250)\ndistances[:7] ## First 7 distance cutoff points\n\narray([ 0., 250., 500., 750., 1000., 1250., 1500.])\n\n\nThe distances cutoffs are used to sample (“interpolate”) points along the line. The shapely method line.interpolate(d) is used to generate the points. The points are then reproject back to the CRS of the raster:\n\nzion_transect_pnt = [zion_transect_utm.interpolate(distance) for distance in distances]\nzion_transect_pnt = gpd.GeoSeries(zion_transect_pnt, crs=32612)\nzion_transect_pnt = zion_transect_pnt.to_crs(4326)\nzion_transect_pnt\n\n0 POINT (-113.20000 37.45000)\n1 POINT (-113.19804 37.44838)\n2 POINT (-113.19608 37.44675)\n ... \n151 POINT (-112.90529 37.20443)\n152 POINT (-112.90334 37.20280)\n153 POINT (-112.90140 37.20117)\nLength: 154, dtype: geometry\n\n\nSecond, we extract elevation values for each point in our transects and combine this information with zion_transect_pnt (after “promoting” it to a GeoDataFrame, to accomodate extra attributes), using the point extraction method shown earlier (Section 5.4.1). We also attach the respective distance cutoff points distances:\n\nresult = rasterstats.point_query(\n zion_transect_pnt, \n src_srtm.read(1), \n nodata = src_srtm.nodata, \n affine = src_srtm.transform,\n interpolate='nearest'\n)\nzion_transect_pnt = gpd.GeoDataFrame(geometry=zion_transect_pnt)\nzion_transect_pnt['dist'] = distances\nzion_transect_pnt['elev'] = result\nzion_transect_pnt\n\n\n\n\n\n\n\n\ngeometry\ndist\nelev\n\n\n\n\n0\nPOINT (-113.20000 37.45000)\n0.0\n2001\n\n\n1\nPOINT (-113.19804 37.44838)\n250.0\n2037\n\n\n2\nPOINT (-113.19608 37.44675)\n500.0\n1949\n\n\n...\n...\n...\n...\n\n\n151\nPOINT (-112.90529 37.20443)\n37750.0\n1837\n\n\n152\nPOINT (-112.90334 37.20280)\n38000.0\n1841\n\n\n153\nPOINT (-112.90140 37.20117)\n38250.0\n1819\n\n\n\n\n154 rows × 3 columns\n\n\n\nThe information in zion_transect_pnt, namely the \"dist\" and \"elev\" attributes, can now be used to create elevation profiles, as illustrated in Figure 5.3:\n\nfig, axes = plt.subplots(ncols=2, figsize=(9,4))\nrasterio.plot.show(src_srtm, ax=axes[0])\ngpd.GeoSeries(zion_transect).plot(ax=axes[0], color='black')\nzion.plot(ax=axes[0], color='none', edgecolor='darkgrey')\nzion_transect_pnt.set_index('dist')['elev'].plot(ax=axes[1])\naxes[1].set_xlabel('Distance (m)')\naxes[1].set_ylabel('Elevation (m)')\naxes[0].set_title('Line extraction')\naxes[1].set_title('Elevation along the line');\n\n\n\n\nFigure 5.3: Location of a line used for raster extraction (left) and the elevation along this line (right).\n\n\n\n\n\n\n5.4.3 Extraction to polygons\nThe final type of geographic vector object for raster extraction is polygons. Like lines, polygons tend to return many raster values per polygon. Typically, we generate summary statistics for raster values per polygon, for example to characterize a single region or to compare many regions. The generation of raster summary statistics, by polygons, is demonstrated in the code below, which creates a list of summary statistics (in this case a list of length 1, since there is just one polygon), again using rasterstats:\n\nrasterstats.zonal_stats(\n zion, \n src_srtm.read(1), \n nodata = src_srtm.nodata, \n affine = src_srtm.transform, \n stats = ['mean', 'min', 'max']\n)\n\n/usr/local/lib/python3.11/site-packages/rasterstats/main.py:156: ShapelyDeprecationWarning: The 'type' attribute is deprecated, and will be removed in the future. You can use the 'geom_type' attribute instead.\n if 'Point' in geom.type:\n\n\n[{'min': 1122.0, 'max': 2661.0, 'mean': 1818.211830154405}]\n\n\nThe results provide useful summaries, for example that the maximum height in the park is around 2,661 meters above see level (other summary statistics, such as standard deviation, can also be calculated in this way). Because there is only one polygon in the example a data frame with a single row is returned; however, the method works when multiple selector polygons are used.\nNote the stats argument, where we determine what type of statistics are calculated per polygon. Possible values other than 'mean', 'min', 'max' are:\n\n'count'—The number of valid (i.e., excluding “No Data”) pixels\n'nodata'—The number of pixels with ’No Data”\n'majority'—The most frequently occurring value\n'median'—The median value\n\nSee the documentation for the complete list. Additionally, the zonal_stats function accepts user-defined functions for calculating any custom statistics.\nTo count occurrences of categorical raster values within polygons, we can use masking (see Section…) combined with np.unique, as follows:\n\nout_image, out_transform = rasterio.mask.mask(\n src_nlcd, \n zion['geometry'].to_crs(src_nlcd.crs), \n crop=False, \n nodata=9999\n)\ncounts = np.unique(out_image, return_counts=True)\n\nAccording to the result, for example, pixel value 2 (“Developed” class) appears in 4205 pixels within the Zion polygon:\n\ncounts\n\n(array([ 2, 3, 4, 5, 6, 7, 8, 15], dtype=uint8),\n array([ 4205, 98285, 298299, 203701, 235, 62, 679, 852741]))\n\n\nRaster to polygon extraction is illustrated in Figure 5.4.\n\nfig, axes = plt.subplots(ncols=2, figsize=(6,4))\nrasterio.plot.show(src_srtm, ax=axes[0])\nzion.plot(ax=axes[0], color='none', edgecolor='black')\nrasterio.plot.show(src_nlcd, ax=axes[1], cmap='Set3')\nzion.to_crs(src_nlcd.crs).plot(ax=axes[1], color='none', edgecolor='black')\naxes[0].set_title('Continuous data extraction')\naxes[1].set_title('Categorical data extraction');\n\n\n\n\nFigure 5.4: Area used for continuous (left) and categorical (right) raster extraction." + }, + { + "objectID": "06-raster-vector.html#sec-rasterization", + "href": "06-raster-vector.html#sec-rasterization", + "title": "5  Raster-vector interactions", + "section": "5.5 Rasterization", + "text": "5.5 Rasterization\n\n5.5.1 Rasterizing points\nRasterization is the conversion of vector objects into their representation in raster objects. Usually, the output raster is used for quantitative analysis (e.g., analysis of terrain) or modeling. As we saw in Chapter 1, the raster data model has some characteristics that make it conducive to certain methods. Furthermore, the process of rasterization can help simplify datasets because the resulting values all have the same spatial resolution: rasterization can be seen as a special type of geographic data aggregation.\nThe rasterio package contains the rasterio.features.rasterize function for doing this work. To make it happen, we need to have the “template” grid definition, i.e., the “template” raster defining the extent, resolution and CRS of the output, in the form of out_shape (the dimensions) and transform (the transform). In case we have an existing template raster, we simply need to query its out_shape and transform. In case we create a custom template, e.g., covering the vector layer extent with specified resolution, there is some extra work to calculate the out_shape and transform (see next example).\nFurthermore, the rasterio.features.rasterize function requires the input shapes in the form for a generator of (geom, value) tuples, where:\n\ngeom is the given geometry (shapely)\nvalue is the value to be “burned” into pixels coinciding with the geometry (int or float)\n\nAgain, this will be made clear in the next example.\nThe geographic resolution of the “template” raster has a major impact on the results: if it is too low (cell size is too large), the result may miss the full geographic variability of the vector data; if it is too high, computational times may be excessive. There are no simple rules to follow when deciding an appropriate geographic resolution, which is heavily dependent on the intended use of the results. Often the target resolution is imposed on the user, for example when the output of rasterization needs to be aligned to the existing raster.\nTo demonstrate rasterization in action, we will use a template raster that has the same extent and CRS as the input vector data cycle_hire_osm_projected (a dataset on cycle hire points in London is illustrated in Figure 5.5) and spatial resolution of 1000 meters. First, we obtain the vector layer:\n\ncycle_hire_osm_projected = cycle_hire_osm.to_crs(27700)\ncycle_hire_osm_projected\n\n\n\n\n\n\n\n\nosm_id\nname\ncapacity\ncyclestreets_id\ndescription\ngeometry\n\n\n\n\n0\n108539\nWindsor Terrace\n14.0\nNaN\nNaN\nPOINT (532353.838 182857.655)\n\n\n1\n598093293\nPancras Road, King's Cross\nNaN\nNaN\nNaN\nPOINT (529848.350 183337.175)\n\n\n2\n772536185\nClerkenwell, Ampton Street\n11.0\nNaN\nNaN\nPOINT (530635.620 182608.992)\n\n\n...\n...\n...\n...\n...\n...\n...\n\n\n537\n5121513755\nNaN\n5.0\nNaN\nNaN\nPOINT (532531.241 178805.391)\n\n\n538\n5188912370\nNaN\nNaN\nNaN\nNaN\nPOINT (538723.338 180836.279)\n\n\n539\n5188912371\nNaN\nNaN\nNaN\nNaN\nPOINT (538413.214 180774.335)\n\n\n\n\n540 rows × 6 columns\n\n\n\nNext, we need to calculate the out_shape and transform of out template raster. To calculate the transform, we combine the top-left corner of the cycle_hire_osm_projected bounding box with the required resolution (e.g., 1000 \\(m\\)):\n\nbounds = cycle_hire_osm_projected.total_bounds\nbounds\n\narray([523038.61452275, 174934.65727249, 538723.33812747, 184971.40854298])\n\n\n\nres = 1000\ntransform = rasterio.transform.from_origin(\n west=bounds[0], \n north=bounds[3], \n xsize=res, \n ysize=res\n)\ntransform\n\nAffine(1000.0, 0.0, 523038.61452275474,\n 0.0, -1000.0, 184971.40854297992)\n\n\nTo calculate the out_shape, we divide the x-axis and y-axis extent by the resolution:\n\nrows = math.ceil((bounds[3] - bounds[1]) / res)\ncols = math.ceil((bounds[2] - bounds[0]) / res)\nshape = (rows, cols)\nshape\n\n(11, 16)\n\n\nNow, we can rasterize. Rasterization is a very flexible operation: the results depend not only on the nature of the template raster, but also on the type of input vector (e.g., points, polygons), the pixel “activation” method, and the function applied when there is more than one match.\nTo illustrate this flexibility we will try three different approaches to rasterization. First, we create a raster representing the presence or absence of cycle hire points (known as presence/absence rasters). In this case, we transfer the value of 1 to all pixels where at least one point falls in. To transform the point GeoDataFrame into a generator of shapely geometries and the (fixed) values, we use the following expression:\n\n((g, 1) for g in cycle_hire_osm_projected['geometry'].to_list())\n\n<generator object <genexpr> at 0x7fafd7abae90>\n\n\nTherefore, the rasterizing expression is:\n\nch_raster1 = rasterio.features.rasterize(\n ((g, 1) for g in cycle_hire_osm_projected['geometry'].to_list()),\n out_shape=shape,\n transform=transform\n)\n\nThe result is a numpy array with the burned values of 1, and 0 in unaffected “pixels”:\n\nch_raster1\n\narray([[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1],\n [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1],\n [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0],\n [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0],\n [0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n [0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n [0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)\n\n\nTo count the number of stations, we can use the fixed value of 1 combined with the merge_alg=rasterio.enums.MergeAlg.add, which means that multiple values burned into the same pixel are summed, rather than replaced keeping last (the default):\n\nch_raster2 = rasterio.features.rasterize(\n ((g, 1) for g in cycle_hire_osm_projected['geometry'].to_list()),\n out_shape=shape,\n transform=transform,\n merge_alg=rasterio.enums.MergeAlg.add\n)\n\nHere is the resulting array of counts:\n\nch_raster2\n\narray([[ 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, 3],\n [ 0, 0, 0, 1, 3, 3, 5, 5, 8, 9, 1, 3, 2, 6, 7, 0],\n [ 0, 0, 0, 8, 5, 4, 11, 10, 12, 9, 11, 4, 8, 5, 4, 0],\n [ 0, 1, 4, 10, 10, 11, 18, 16, 13, 12, 8, 6, 5, 2, 3, 0],\n [ 3, 3, 9, 3, 5, 14, 10, 15, 9, 9, 5, 8, 0, 0, 12, 2],\n [ 4, 5, 9, 11, 6, 7, 7, 3, 10, 9, 4, 0, 0, 0, 0, 0],\n [ 4, 0, 7, 8, 8, 4, 11, 10, 7, 3, 0, 0, 0, 0, 0, 0],\n [ 0, 1, 3, 0, 0, 1, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0],\n [ 0, 1, 1, 0, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n [ 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]],\n dtype=uint8)\n\n\nThe new output, ch_raster2, shows the number of cycle hire points in each grid cell. The cycle hire locations have different numbers of bicycles described by the capacity variable, raising the question, what’s the capacity in each grid cell? To calculate that, we must sum the field (\"capacity\") rather than the fixed values of 1. This requires using an expanded generator of geometries and values, where we (1) extract both geometries and attribute values, and (2) filter out “No Data” values, as follows:\n\nch_raster3 = rasterio.features.rasterize(\n ((g, v) for g, v in cycle_hire_osm_projected[['geometry', 'capacity']] \\\n .dropna(subset='capacity')\n .to_numpy() \\\n .tolist()),\n out_shape=shape,\n transform=transform,\n merge_alg=rasterio.enums.MergeAlg.add\n)\n\nHere is the code to illustrate the input point layer cycle_hire_osm_projected and the three variants of rasterizing it ch_raster1, ch_raster2, and ch_raster3 (Figure 5.5):\n\nfig, axes = plt.subplots(2, 2, figsize=(8.5, 6.5))\ncycle_hire_osm_projected.plot(ax=axes[0][0], column='capacity')\nrasterio.plot.show(ch_raster1, transform=transform, ax=axes[0][1])\nrasterio.plot.show(ch_raster2, transform=transform, ax=axes[1][0])\nrasterio.plot.show(ch_raster3, transform=transform, ax=axes[1][1])\naxes[0][0].set_title('Points')\naxes[0][1].set_title('Presence/Absence')\naxes[1][0].set_title('Count')\naxes[1][1].set_title('Aggregated capacity');\n\n\n\n\nFigure 5.5: Examples of point rasterization\n\n\n\n\n\n\n5.5.2 Rasterizing lines and polygons\nAnother dataset based on California’s polygons and borders (created below) illustrates rasterization of lines. There are three preliminary steps. First, we subset the California polygon:\n\ncalifornia = us_states[us_states['NAME'] == \"California\"]\ncalifornia\n\n\n\n\n\n\n\n\nGEOID\nNAME\nREGION\n...\ntotal_pop_10\ntotal_pop_15\ngeometry\n\n\n\n\n26\n06\nCalifornia\nWest\n...\n36637290.0\n38421464.0\nMULTIPOLYGON (((-118.60337 33.4...\n\n\n\n\n1 rows × 7 columns\n\n\n\nSecond, we “cast” the polygon into a \"MultiLineString\" geometry, using the .boundary property that GeoSeries have:\n\ncalifornia_borders = california['geometry'].boundary\ncalifornia_borders\n\n26 MULTILINESTRING ((-118.60337 33...\ndtype: geometry\n\n\nThird, we create a template raster with a resolution of a 0.5 degree:\n\nbounds = california_borders.total_bounds\nres = 0.5\ntransform = rasterio.transform.from_origin(\n west=bounds[0], \n north=bounds[3], \n xsize=res, \n ysize=res\n)\nrows = math.ceil((bounds[3] - bounds[1]) / res)\ncols = math.ceil((bounds[2] - bounds[0]) / res)\nshape = (rows, cols)\nshape\n\n(19, 21)\n\n\nFinally, we rasterize california_borders based on the calculated template shape and transform. When considering line or polygon rasterization, one useful additional argument is all_touched. By default it is False, but when changed to True—all cells that are touched by a line or polygon border get a value. Line rasterization with all_touched=True is demonstrated in the code below (Figure 5.6, left). We are also using fill=np.nan to set “background” values as “No Data”:\n\ncalifornia_raster1 = rasterio.features.rasterize(\n ((g, 1) for g in california_borders.to_list()),\n out_shape=shape,\n transform=transform,\n all_touched=True,\n fill=np.nan\n)\n\nCompare it to a polygon rasterization, with all_touched=False by default, which selects only raster cells whose centroids are inside the selector polygon, as illustrated in Figure 5.6 (right):\n\ncalifornia_raster2 = rasterio.features.rasterize(\n ((g, 1) for g in california['geometry'].to_list()),\n out_shape=shape,\n transform=transform,\n fill=np.nan\n)\n\nThe results are shown in Figure 5.6. To illustrate which raster pixels are actually selected as part of rasterization, we also show them as points, which also requires the “Raster to points” code section, as explained in Section 5.6:\n\n# Raster to points\nids = california_raster1.copy()\nids = np.arange(0, california_raster1.size) \\\n .reshape(california_raster1.shape) \\\n .astype(np.int32)\nshapes = rasterio.features.shapes(ids, transform=transform)\npol = list(shapes)\npnt = [shapely.geometry.shape(i[0]).centroid for i in pol]\npnt = gpd.GeoSeries(pnt, crs=california.crs)\n\n# Plot\nfig, axes = plt.subplots(1, 2, figsize=(8.5, 6.5))\nrasterio.plot.show(california_raster1, transform=transform, ax=axes[0], cmap='Set3')\ngpd.GeoSeries(california_borders, crs=california.crs).plot(ax=axes[0], edgecolor='darkgrey', linewidth=1)\npnt.plot(ax=axes[0], color='black', markersize=1)\nrasterio.plot.show(california_raster2, transform=transform, ax=axes[1], cmap='Set3')\ncalifornia.plot(ax=axes[1], color='none', edgecolor='darkgrey', linewidth=1)\npnt.plot(ax=axes[1], color='black', markersize=1)\naxes[0].set_title('Line rasterization')\naxes[1].set_title('Polygon rasterization');\n\n\n\n\nFigure 5.6: Examples of line and polygon rasterization" + }, + { + "objectID": "06-raster-vector.html#sec-spatial-vectorization", + "href": "06-raster-vector.html#sec-spatial-vectorization", + "title": "5  Raster-vector interactions", + "section": "5.6 Spatial vectorization", + "text": "5.6 Spatial vectorization\nSpatial vectorization is the counterpart of rasterization (Section 5.5), but in the opposite direction. It involves converting spatially continuous raster data into spatially discrete vector data such as points, lines or polygons.\nThere are three standard methods to convert a raster to a vector layer:\n\nRaster to polygons\nRaster to points\nRaster to contours\n\n\n5.6.1 Raster to polygons\nThe most straightforward form of vectorization is the first one, converting raster cells to polygons, where each pixel is represented by a rectangular polygon. The second method, raster to points, has the additional step of calculating polygon centroids. The third method, raster to contours, is somewhat unrelated. Let us demonstrate the three in the given order.\nThe rasterio.features.shapes function can be used to access to the raster pixel as polygon geometries, as well as raster values. The returned object is a generator, which yields geometry,value pairs. The additional transform argument is used to yield true spatial coordinates of the polygons, which is usually what we want.\nFor example, the following expression returns a generator named shapes, referring to the pixel polygons:\n\nshapes = rasterio.features.shapes(\n src_grain.read(), \n transform=src_grain.transform\n)\nshapes\n\n<generator object shapes at 0x7fafdc057ab0>\n\n\nWe can generate all shapes at once, into a list named pol, as follows:\n\npol = list(shapes)\n\nEach element in pol is a tuple of length 2, containing:\n\nThe GeoJSON-like dict representing the polygon geometry\nThe value of the pixel(s) which comprise the polygon\n\nFor example:\n\npol[0]\n\n({'type': 'Polygon',\n 'coordinates': [[(-1.5, 1.5),\n (-1.5, 1.0),\n (-1.0, 1.0),\n (-1.0, 1.5),\n (-1.5, 1.5)]]},\n 1.0)\n\n\nNote that each raster cell is converted into a polygon consisting of five coordinates, all of which are stored in memory (explaining why rasters are often fast compared with vectors!).\nTo transform the list into a GeoDataFrame, we need few more steps of data reshaping:\n\n# Create 'GeoSeries' with the polygons\ngeom = [shapely.geometry.shape(i[0]) for i in pol]\ngeom = gpd.GeoSeries(geom, crs=src_grain.crs)\n# Create 'Series' with the values\nvalues = [i[1] for i in pol]\nvalues = pd.Series(values)\n# Combine the 'Series' and 'GeoSeries' into a 'DataFrame'\nresult = gpd.GeoDataFrame({'value': values, 'geometry': geom})\nresult\n\n\n\n\n\n\n\n\nvalue\ngeometry\n\n\n\n\n0\n1.0\nPOLYGON ((-1.50000 1.50000, -1....\n\n\n1\n0.0\nPOLYGON ((-1.00000 1.50000, -1....\n\n\n2\n1.0\nPOLYGON ((-0.50000 1.50000, -0....\n\n\n...\n...\n...\n\n\n11\n2.0\nPOLYGON ((0.00000 -0.50000, 0.5...\n\n\n12\n0.0\nPOLYGON ((0.50000 -1.00000, 0.5...\n\n\n13\n2.0\nPOLYGON ((1.00000 -1.00000, 1.0...\n\n\n\n\n14 rows × 2 columns\n\n\n\nThe resulting polygon layer is shown in Figure 5.7. As shown using the edgecolor='black' option, neighboring pixels sharing the same raster value are dissolved into larger polygons. The rasterio.features.shapes function does not offer a way to avoid this type of dissolving. One way to work around that is to convert an array with consecutive IDs, instead of the real values, to polygons, then extract the real values from the raster (similarly to the “raster to points” example, see below).\n\nresult.plot(column='value', edgecolor='black', legend=True);\n\n\n\n\nFigure 5.7: grain.tif converted to a polygon layer\n\n\n\n\n\n\n5.6.2 Raster to points\nTo transform raster to points, we can use rasterio.features.shapes, as in conversion to polygons, only with the addition of the .centroid method to go from polygons to their centroids. However, to avoid dissolving nearby pixels, we will actually convert a raster with consecutive IDs, then extract the “true” values by point (it is not strictly necessary in this example, since the values of elev.tif are all unique):\n\n# Prepare IDs array\nr = src_elev.read(1)\nids = r.copy()\nids = np.arange(0, r.size).reshape(r.shape).astype(np.int32)\nids\n\narray([[ 0, 1, 2, 3, 4, 5],\n [ 6, 7, 8, 9, 10, 11],\n [12, 13, 14, 15, 16, 17],\n [18, 19, 20, 21, 22, 23],\n [24, 25, 26, 27, 28, 29],\n [30, 31, 32, 33, 34, 35]], dtype=int32)\n\n\n\n# IDs raster to points\nshapes = rasterio.features.shapes(ids, transform=src_elev.transform)\npol = list(shapes)\ngeom = [shapely.geometry.shape(i[0]).centroid for i in pol]\ngeom = gpd.GeoSeries(geom, crs=src_elev.crs)\nresult = gpd.GeoDataFrame(geometry=geom)\n\n\n# Extract values to points\nresult['value'] = rasterstats.point_query(\n result, \n r, \n nodata = src_elev.nodata, \n affine = src_elev.transform,\n interpolate='nearest'\n)\n\n/usr/local/lib/python3.11/site-packages/rasterstats/io.py:313: UserWarning: Setting nodata to -999; specify nodata explicitly\n warnings.warn(\"Setting nodata to -999; specify nodata explicitly\")\n\n\nThe result is shown in Figure 5.8.\n\nfig, axes = plt.subplots(1, 2, figsize=(8, 4))\nresult.plot(column='value', legend=True, ax=axes[0])\nrasterio.plot.show(src_elev, transform=src_elev.transform, ax=axes[0])\nresult.plot(column='value', legend=True, ax=axes[1])\nrasterio.plot.show(src_elev, cmap='Greys', ax=axes[1]);\n\n\n\n\nFigure 5.8: Raster and point representation of the elev.tif.\n\n\n\n\n\n\n5.6.3 Raster to contours\nAnother common type of spatial vectorization is the creation of contour lines representing lines of continuous height or temperatures (isotherms) for example. We will use a real-world digital elevation model (DEM) because the artificial raster elev produces parallel lines (task for the reader: verify this and explain why this happens). Plotting contour lines is straightforward, using the contour=True option of rasterio.plot.show (Figure 5.9):\n\nfig, ax = plt.subplots(1)\nrasterio.plot.show(src_dem, ax=ax)\nrasterio.plot.show(src_dem, ax=ax, contour=True, levels=np.arange(0,1200,50), colors='black');\n\n\n\n\nFigure 5.9: Displaying raster contours\n\n\n\n\nUnfortunately, rasterio does not provide any way of extracting the contour lines in the form of a vector layer, for uses other than plotting. There are two possible workarounds:\n\nUsing gdal_contour on the command line (see below), or through its Python interface osgeo\nWriting a custom function to export contour coordinates generated by, e.g., matplotlib or skimage\n\nWe hereby demonstrate the first and easiest approach, using gdal_contour. Although we deviate from exclusively using the Python language, the benefit of gdal_contour is the proven algorithm, customized to spatial data, and with many relevant options. gdal_contour (along with other GDAL programs) should already be installed on your system since this is a dependency of rasterio. For example, generating 50 \\(m\\) contours of the dem.tif file can be done as follows:\n\nos.system('gdal_contour -a elev data/dem.tif output/dem_contour.gpkg -i 50.0')\n\nsh: 1: gdal_contour: not found\n\n\n32512\n\n\nNote that we ran the gdal_contour command through os.system, in order to remain in the Python environment. You can also run the standalone command in the command line interface you are using, such as the Anaconda Prompt:\ngdal_contour -a elev data/dem.tif output/dem_contour.gpkg -i 50.0\nLike all GDAL programs, gdal_contour works with files. Here:\n\nThe input is the data/dem.tif file\nThe result is exported to the output/dem_contour.gpkg file\n\nTo illustrate the result, let’s read the result back into the Python environment. Note that the layer contains an arrtibute named elev (as specified using -a elev) with the contour elevation values:\n\ncontours = gpd.read_file('output/dem_contour.gpkg')\ncontours\n\n\n\n\n\n\n\n\nID\nelev\ngeometry\n\n\n\n\n0\n0\n750.0\nLINESTRING (795382.355 8935384....\n\n\n1\n1\n800.0\nLINESTRING (795237.703 8935384....\n\n\n2\n2\n650.0\nLINESTRING (798098.379 8935384....\n\n\n...\n...\n...\n...\n\n\n29\n29\n450.0\nLINESTRING (795324.083 8931774....\n\n\n30\n30\n450.0\nLINESTRING (795488.616 8931774....\n\n\n31\n31\n450.0\nLINESTRING (795717.420 8931774....\n\n\n\n\n32 rows × 3 columns\n\n\n\nHere is a plot of the contour layer in dem_contour.gpkg (Figure 5.10):\n\nfig, ax = plt.subplots()\nrasterio.plot.show(src_dem, ax=ax)\ncontours.plot(ax=ax, edgecolor='black');\n\n\n\n\nFigure 5.10: Raster contours calculated with the gdal_contour program" + }, + { + "objectID": "06-raster-vector.html#sec-distance-to-nearest-geometry", + "href": "06-raster-vector.html#sec-distance-to-nearest-geometry", + "title": "5  Raster-vector interactions", + "section": "5.7 Distance to nearest geometry", + "text": "5.7 Distance to nearest geometry\nCalculating a raster of distances to the nearest geometry is an example of a “global” raster operation (Section 3.4.6). To demonstrate it, suppose that we need to calculate a raster representing the distance to the nearest coast in New Zealand. This example also wraps many of the concepts introduced in this chapter and in previous chapter, such as raster aggregation, raster conversion to points, and rasterizing points.\nFor the coastline, we will dissolve the New Zealand administrative division polygon layer and “extract” the boundary (which is a \"MultiLineString\" geometry):\n\ncoastline = gpd.GeoSeries(nz.unary_union, crs=nz.crs) \\\n .to_crs(src_nz_elev.crs) \\\n .boundary\ncoastline\n\n0 MULTILINESTRING ((1229997.901 4...\ndtype: geometry\n\n\nFor a “template” raster, we will aggregate the New Zealand DEM, in the nz_elev.tif file, to 5 times coarser resolution. The code section below follows the aggeregation example in Section 4.4.3, then replaces the original (aggregated) values with unique IDs, which is a preliminary step when converting to points, as explained in Section 5.6.2. Finally, we also replace “erase” (i.e., replace with np.nan) IDs which were np.nan in the aggregated elevation raster, i.e., beyond the land area of New Zealand:\n\nfactor = 0.2\n# Reading aggregated array\nr = src_nz_elev.read(1,\n out_shape=(\n int(src_nz_elev.height * factor),\n int(src_nz_elev.width * factor)\n ),\n resampling=rasterio.enums.Resampling.average\n)\n# Updating the transform\nnew_transform = src_nz_elev.transform * src_nz_elev.transform.scale(\n (src_nz_elev.width / r.shape[1]),\n (src_nz_elev.height / r.shape[0])\n)\n# Generating unique IDs per cell\nids = r.copy()\nids = np.arange(0, r.size).reshape(r.shape).astype(np.float32)\n# \"Erasing\" irrelevant IDs\nids[np.isnan(r)] = np.nan\nids\n\narray([[nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n ...,\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)\n\n\nThe result is an array named ids with the IDs, and the corresponding new_transform, as plotted in Figure 5.11:\n\nfig, ax = plt.subplots()\nrasterio.plot.show(ids, transform=new_transform, ax=ax)\ngpd.GeoSeries(coastline).plot(ax=ax, edgecolor='black');\n\n\n\n\nFigure 5.11: Template with cell IDs to calculate distance to nearest geometry\n\n\n\n\nTo calculate distances, we must convert each pixel to a vector (point) geometry. We use the technique demonstrated in Section 5.6.2:\n\nshapes = rasterio.features.shapes(ids, transform=new_transform)\npol = list(shapes)\npnt = [shapely.geometry.shape(i[0]).centroid for i in pol]\n\nThe result pnt is a list of shapely geometries, representing raster cell centroids (excluding np.nan pixels):\n\nprint(pnt[0])\n\nPOINT (1572956.546197626 6189460.927303582)\n\n\nNext we calculate the correspinding list of distances, using the .distance method from shapely:\n\ndistances = [(i, i.distance(coastline)) for i in pnt]\ndistances[0]\n\n(<POINT (1572956.546 6189460.927)>,\n 0 826.752396\n dtype: float64)\n\n\nFinally, we rasterize (see Section 5.5.1) the distances into our raster template:\n\nimage = rasterio.features.rasterize(\n distances,\n out_shape=ids.shape,\n dtype=np.float_,\n transform=new_transform,\n fill=np.nan\n)\nimage\n\narray([[nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n ...,\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan],\n [nan, nan, nan, ..., nan, nan, nan]])\n\n\nThe resulting raster of distances is shown in Figure 5.12:\n\nfig, ax = plt.subplots()\nrasterio.plot.show(image, transform=new_transform, ax=ax)\ngpd.GeoSeries(coastline).plot(ax=ax, edgecolor='black');\n\n\n\n\nFigure 5.12: Distance to nearest coastline in New Zealand" + }, + { + "objectID": "06-raster-vector.html#exercises", + "href": "06-raster-vector.html#exercises", + "title": "5  Raster-vector interactions", + "section": "5.8 Exercises", + "text": "5.8 Exercises" + }, + { + "objectID": "07-reproj.html#prerequisites", + "href": "07-reproj.html#prerequisites", + "title": "6  Reprojecting geographic data", + "section": "6.1 Prerequisites", + "text": "6.1 Prerequisites\nLet’s import the required packages:\n\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport shapely.geometry\nimport geopandas as gpd\nimport rasterio\nimport rasterio.warp\nfrom rasterio.plot import show\nimport pyproj\nimport shutil\n\nand load the sample data:\n\nsrc_srtm = rasterio.open('data/srtm.tif')\nsrc_nlcd = rasterio.open('data/nlcd.tif')\nzion = gpd.read_file('data/zion.gpkg')\nworld = gpd.read_file('data/world.gpkg')\ncycle_hire_osm = gpd.read_file('data/cycle_hire_osm.gpkg')" + }, + { + "objectID": "07-reproj.html#introduction", + "href": "07-reproj.html#introduction", + "title": "6  Reprojecting geographic data", + "section": "6.2 Introduction", + "text": "6.2 Introduction\nSection 6.3 introduced coordinate reference systems (CRSs), with a focus on the two major types: geographic (‘lon/lat’, with units in degrees longitude and latitude) and projected (typically with units of meters from a datum) coordinate systems. This chapter builds on that knowledge and goes further. It demonstrates how to set and transform geographic data from one CRS to another and, furthermore, highlights specific issues that can arise due to ignoring CRSs that you should be aware of, especially if your data is stored with lon/lat coordinates.\nIn many projects there is no need to worry about, let alone convert between, different CRSs. It is important to know if your data is in a projected or geographic coordinate system, and the consequences of this for geometry operations. However, if you know the CRS of your data and the consequences for geometry operations (covered in the next section), CRSs should just work behind the scenes: people often suddenly need to learn about CRSs when things go wrong. Having a clearly defined project CRS that all project data is in, plus understanding how and why to use different CRSs, can ensure that things don’t go wrong. Furthermore, learning about coordinate systems will deepen your knowledge of geographic datasets and how to use them effectively.\nThis chapter teaches the fundamentals of CRSs, demonstrates the consequences of using different CRSs (including what can go wrong), and how to ‘reproject’ datasets from one coordinate system to another. In the next section we introduce CRSs in Python, followed by Section 6.4 which shows how to get and set CRSs associated with spatial objects. Section Section 6.5 demonstrates the importance of knowing what CRS your data is in with reference to a worked example of creating buffers. We tackle questions of when to reproject and which CRS to use in Section Section 6.6 and Section Section 6.7, respectively. We cover reprojecting vector and raster objects in sections Section 6.8 and Section 6.9 and modifying map projections in Section 6.10." + }, + { + "objectID": "07-reproj.html#sec-coordinate-reference-systems", + "href": "07-reproj.html#sec-coordinate-reference-systems", + "title": "6  Reprojecting geographic data", + "section": "6.3 Coordinate Reference Systems", + "text": "6.3 Coordinate Reference Systems\nMost modern geographic tools that require CRS conversions, including Python packages and desktop GIS software such as QGIS, interface with PROJ, an open source C++ library that “transforms coordinates from one coordinate reference system (CRS) to another”. CRSs can be described in many ways, including the following.\n\nSimple yet potentially ambiguous statements such as “it’s in lon/lat coordinates”.\nFormalized yet now outdated ‘proj4 strings’ such as +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs.\nWith an identifying ‘authority:code’ text string such as EPSG:4326.\n\nEach refers to the same thing: the ‘WGS84’ coordinate system that forms the basis of Global Positioning System (GPS) coordinates and many other datasets. But which one is correct?\nThe short answer is that the third way to identify CRSs is correct: EPSG:4326 is understood by geopandas and rasterio packages covered in this book, plus many other software projects for working with geographic data including QGIS and PROJ. EPSG:4326 is future-proof. Furthermore, although it is machine readable, unlike the proj-string representation “EPSG:4326” is short, easy to remember and highly ‘findable’ online (searching for EPSG:4326 yields a dedicated page on the website epsg.io, for example). The more concise identifier 4326 is also understood by geopandas and rasterio, but we recommend the more explicit AUTHORITY:CODE representation to prevent ambiguity and to provide context.\nThe longer answer is that none of the three descriptions are sufficient and more detail is needed for unambiguous CRS handling and transformations: due to the complexity of CRSs, it is not possible to capture all relevant information about them in such short text strings. For this reason, the Open Geospatial Consortium (OGC, which also developed the simple features specification that the sf package implements) developed an open standard format for describing CRSs that is called WKT (Well Known Text). This is detailed in a 100+ page document that “defines the structure and content of a text string implementation of the abstract model for coordinate reference systems described in ISO 19111:2019” (Open Geospatial Consortium 2019…to add citation!). The WKT representation of the WGS84 CRS, which has the identifier EPSG:4326 is as follows:\n\ncrs = pyproj.CRS.from_string('EPSG:4326') # or '.from_epsg(4326)'\nprint(crs.to_wkt(pretty=True))\n\nGEOGCRS[\"WGS 84\",\n ENSEMBLE[\"World Geodetic System 1984 ensemble\",\n MEMBER[\"World Geodetic System 1984 (Transit)\"],\n MEMBER[\"World Geodetic System 1984 (G730)\"],\n MEMBER[\"World Geodetic System 1984 (G873)\"],\n MEMBER[\"World Geodetic System 1984 (G1150)\"],\n MEMBER[\"World Geodetic System 1984 (G1674)\"],\n MEMBER[\"World Geodetic System 1984 (G1762)\"],\n MEMBER[\"World Geodetic System 1984 (G2139)\"],\n ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n LENGTHUNIT[\"metre\",1]],\n ENSEMBLEACCURACY[2.0]],\n PRIMEM[\"Greenwich\",0,\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n CS[ellipsoidal,2],\n AXIS[\"geodetic latitude (Lat)\",north,\n ORDER[1],\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n AXIS[\"geodetic longitude (Lon)\",east,\n ORDER[2],\n ANGLEUNIT[\"degree\",0.0174532925199433]],\n USAGE[\n SCOPE[\"Horizontal component of 3D system.\"],\n AREA[\"World.\"],\n BBOX[-90,-180,90,180]],\n ID[\"EPSG\",4326]]\n\n\nThe output of the command shows how the CRS identifier (also known as a Spatial Reference Identifier or SRID) works: it is simply a look-up, providing a unique identifier associated with a more complete WKT representation of the CRS. This raises the question: what happens if there is a mismatch between the identifier and the longer WKT representation of a CRS? On this point Open Geospatial Consortium (2019… to add citation!) is clear, the verbose WKT representation takes precedence over the identifier:\n\nShould any attributes or values given in the cited identifier be in conflict with attributes or values given explicitly in the WKT description, the WKT values shall prevail.\n\nThe convention of referring to CRSs identifiers in the form AUTHORITY:CODE, which is also used by geographic software written in other languages, allows a wide range of formally defined coordinate systems to be referred to.26 The most commonly used authority in CRS identifiers is EPSG, an acronym for the European Petroleum Survey Group which published a standardized list of CRSs (the EPSG was taken over by the oil and gas body the Geomatics Committee of the International Association of Oil & Gas Producers (…to add citation!) in 2005). Other authorities can be used in CRS identifiers. ESRI:54030, for example, refers to ESRI’s implementation of the Robinson projection, which has the following WKT string:\n\ncrs = pyproj.CRS.from_string('ESRI:54030')\nprint(crs.to_wkt(pretty=True))\n\nPROJCRS[\"World_Robinson\",\n BASEGEOGCRS[\"WGS 84\",\n DATUM[\"World Geodetic System 1984\",\n ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n LENGTHUNIT[\"metre\",1]]],\n PRIMEM[\"Greenwich\",0,\n ANGLEUNIT[\"Degree\",0.0174532925199433]]],\n CONVERSION[\"World_Robinson\",\n METHOD[\"Robinson\"],\n PARAMETER[\"Longitude of natural origin\",0,\n ANGLEUNIT[\"Degree\",0.0174532925199433],\n ID[\"EPSG\",8802]],\n PARAMETER[\"False easting\",0,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8806]],\n PARAMETER[\"False northing\",0,\n LENGTHUNIT[\"metre\",1],\n ID[\"EPSG\",8807]]],\n CS[Cartesian,2],\n AXIS[\"(E)\",east,\n ORDER[1],\n LENGTHUNIT[\"metre\",1]],\n AXIS[\"(N)\",north,\n ORDER[2],\n LENGTHUNIT[\"metre\",1]],\n USAGE[\n SCOPE[\"Not known.\"],\n AREA[\"World.\"],\n BBOX[-90,-180,90,180]],\n ID[\"ESRI\",54030]]\n\n\nWKT strings are exhaustive, detailed, and precise, allowing for unambiguous CRSs storage and transformations. They contain all relevant information about any given CRS, including its datum and ellipsoid, prime meridian, projection, and units.\nRecent PROJ versions (6+) still allow use of proj-strings to define coordinate operations, but some proj-string keys (+nadgrids, +towgs84, +k, +init=epsg:) are either no longer supported or are discouraged. Additionally, only three datums (i.e., WGS84, NAD83, and NAD27) can be directly set in proj-string. Longer explanations of the evolution of CRS definitions and the PROJ library can be found in Bivand (2021), Chapter 2 of Pebesma and Bivand (2022), and a blog post by Floris Vanderhaeghe (…to add citations!). As outlined in the PROJ documentation there are different versions of the WKT CRS format including WKT1 and two variants of WKT2, the latter of which (WKT2, 2018 specification) corresponds to the ISO 19111:2019 (Open Geospatial Consortium 2019…to add citations!)." + }, + { + "objectID": "07-reproj.html#sec-querying-and-setting-coordinate-systems", + "href": "07-reproj.html#sec-querying-and-setting-coordinate-systems", + "title": "6  Reprojecting geographic data", + "section": "6.4 Querying and setting coordinate systems", + "text": "6.4 Querying and setting coordinate systems\nLet’s look at how CRSs are stored in Python spatial objects and how they can be queried and set. First we will look at getting and setting CRSs in vector geographic data objects. Consider the GeoDataFrame object named world, imported from a file world.gpkg. The object world represents countries worldwide. Its CRS can be retrieved using the .crs property:\n\nworld.crs\n\n<Geographic 2D CRS: EPSG:4326>\nName: WGS 84\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: World.\n- bounds: (-180.0, -90.0, 180.0, 90.0)\nDatum: World Geodetic System 1984 ensemble\n- Ellipsoid: WGS 84\n- Prime Meridian: Greenwich\n\n\nThe output specifies the following pieces of information:\n\nThe CRS type (Geographic 2D CRS) and EPSG code (EPSG:4326)\nThe CRS name (WGS 84)\nThe axes (latitude, longitude) and their units (degree)\nThe applicable area name (World) and bounding box ((-180.0, -90.0, 180.0, 90.0))\nThe datum (WGS 84)\n\nThe WKT representation, which is internally used when saving the object to a file or doing any coordinate operations, can be extracted using .crs.to_wkt() as shown above (Section 6.3). Above, we can see that the world object has the WGS84 ellipsoid, uses the Greenwich prime meridian, and the latitude and longitude axis order. We also have the suitable suitable area specification for the use of this CRS, and CRS identifier: EPSG:4326.\nThe CRS specification object, such as world.crs, has several other useful properties and methods to retrieve additional information about the used CRS. For example, try to run:\n\nworld.crs.is_geographic to check is the CRS is geographic or not\nworld.crs.axis_info[0].unit_name and world.crs.axis_info[1].unit_name to find out the CRS units of both axes (typically having identical units)\nworld.crs.to_authority() extracts the authority (e.g., EPSG) and the identifier (e.g., 4326)\nworld.crs.to_proj4() returns the proj-string representation\n\nIn cases when a coordinate reference system (CRS) is missing or the wrong CRS is set, the .set_crs method can be used on a GeoSeries or a GeoDataFrame to set it. The CRS can be specified using an EPSG code as the first argument. In case the object already has a different CRS definition, we must also specify allow_override=True to replace it (otherwise we get an error). For example, here we set the EPSG:4326 CRS, which has no effect because world already has that exact CRS definition:\n\nworld2 = world.set_crs(4326)\n\nand here we replace the definition from the existing EPSG:4326, to a new definition EPSG:3857:\n\nworld3 = world.set_crs(3857, allow_override=True)\n\nA number is interpreted as an EPSG code. We can also use strings, as in 'EPSG:4326', which is useful to make the code more clear and when using other authorities:\n\nworld4 = world.set_crs('ESRI:54009', allow_override=True)\n\nIn rasterio, the CRS information is stored as part of a raster file connection metadata (Section 1.3.2). Replacing the CRS definition for a rasterio file connection is typically not necessary, because it is not considered in any operation, only the transformation matrix and coordinates are. One exception is when writing the raster, in which case we need to construct the metadata of the raster file to be written, and therein specify the CRS anyway (Section 1.3.3). However, if we do for some reason need to change the CRS definition in the file connection metadata, we can do that when opening the file in r+ (reading and writing) mode. To demonstrate, we will create a copy of the nlcd.tif file, named nlcd2.tif:\n\nshutil.copy('data/nlcd.tif', 'output/nlcd_modified_crs.tif')\n\n'output/nlcd_modified_crs.tif'\n\n\nNow, let’s examine the existing CRS:\n\nsrc_nlcd2 = rasterio.open('output/nlcd_modified_crs.tif', 'r+')\nsrc_nlcd2.crs\n\nCRS.from_epsg(26912)\n\n\nHere is how we replace the definition with a new one, such as EPSG:3857:\n\nsrc_nlcd2.crs = 3857\nsrc_nlcd2.crs\n\nCRS.from_epsg(3857)\n\n\nExamining the file connection demonstrates that the CRS was indeed changed:\n\nrasterio.open('output/nlcd_modified_crs.tif').crs\n\nCRS.from_epsg(26912)\n\n\nImportantly, the .set_crs (for vector layers) or the assignment to .crs (for rasters), as shown above, do not alter coordinates’ values or geometries. Their role is only to set a metadata information about the object CRS. Consequently, the objects we created, world3, world4, and src_nlcd2 are “incorrect”, in the sense that the geometries are in fact given in a different CRS than specified in the associated CRS definition.\nIn some cases the CRS of a geographic object is unknown, as is the case in the london dataset created in the code chunk below, building on the example of London introduced in Section 1.2.6:\n\nlnd_point = shapely.geometry.Point(-0.1, 51.5)\nlnd_geom = gpd.GeoSeries([lnd_point])\nlnd_layer = gpd.GeoDataFrame({'geometry': lnd_geom})\nlnd_layer\n\n\n\n\n\n\n\n\ngeometry\n\n\n\n\n0\nPOINT (-0.10000 51.50000)\n\n\n\n\n\n\n\n\nlnd_layer.crs\n\nNothing is printed as a result of the last expression, because the value of the CRS definition in .crs is None. This implies that geopandas does not know what the CRS is and is unwilling to guess. Unless a CRS is manually specified or is loaded from a source that has CRS metadata, geopandas does not make any explicit assumptions about which coordinate systems, other than to say “I don’t know”. This behavior makes sense given the diversity of available CRSs but differs from some approaches, such as the GeoJSON file format specification, which makes the simplifying assumption that all coordinates have a lon/lat CRS: EPSG:4326.\nA CRS can be added to GeoSeries or GeoDataFrame objects using the .set_crs method, as mentioned above. Since the definition is missing, we do not need to specify allow_override=True, as there is nothing to override. For example:\n\nlnd_layer = lnd_layer.set_crs(4326)\nlnd_layer.crs\n\n<Geographic 2D CRS: EPSG:4326>\nName: WGS 84\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: World.\n- bounds: (-180.0, -90.0, 180.0, 90.0)\nDatum: World Geodetic System 1984 ensemble\n- Ellipsoid: WGS 84\n- Prime Meridian: Greenwich\n\n\nIn general, all geographic coordinates have a coordinate system and software can only make good decisions around plotting and and geometry operations if it knows what type of CRS it is working with. When working with geopandas and rasterio, datasets without a specified CRS are not an issue in most workflows, since only the coordinates are considered. It is up to the user to make sure that, when working with more than one layer, all of the coordinates are given in the same CRS (whether specified or not). When exporting the results, though, it is important to keep the CRS definition in place, because other software typically do use, and require, the CRS definition in calculation. It should also be mentioned that, in some cases the CRS specification is left unspecified on purpose, for example when working with layers in arbitrary or non-geographic space (simulations, internal building plans, analysis of plot-scale ecological patterns, etc.)." + }, + { + "objectID": "07-reproj.html#sec-geometry-operations-on-projected-and-unprojected-data", + "href": "07-reproj.html#sec-geometry-operations-on-projected-and-unprojected-data", + "title": "6  Reprojecting geographic data", + "section": "6.5 Geometry operations on projected and unprojected data", + "text": "6.5 Geometry operations on projected and unprojected data\nThe geopandas package, through its dependency shapely, assumes planar geometry and works with distance/area values assumed to be in CRS units. In fact, the CRS definition is typically ignored, and the respective functions (such as in plotting and distance calculations) are applied on the “bare” shapely geometries. Accordingly, it is crucial to make sure that:\n\nGeometric calculations are only applied in projected CRS\nIf there is more than one layer involved—all layers have to be in the same (projected) CRS\nThe input distance and area values are passed in CRS units (and the returned values—interpreted in CRS units)\n\nFor example, to calculate a buffer of 100 \\(km\\) around London, we need to:\n\nWork with a layer representing London in a projected CRS (e.g., EPSG:27700)\nPass the distance value in the CRS units (e.g., 100000 \\(m\\))\n\nIn the following code section we create, from scratch, a point layer lnd_layer_proj with a point representing London (compare to lnd_layer, in a geographical CRS which we created above, see Section 6.4):\n\nlnd_point_proj = shapely.geometry.Point(530000, 180000)\nlnd_geom_proj = gpd.GeoSeries([lnd_point_proj], crs=27700)\nlnd_layer_proj = gpd.GeoDataFrame({'geometry': lnd_geom_proj})\nlnd_layer_proj\n\n\n\n\n\n\n\n\ngeometry\n\n\n\n\n0\nPOINT (530000.000 180000.000)\n\n\n\n\n\n\n\nNow we can use the .buffer method (Section 4.3.3) to calculate the buffer:\n\nlnd_layer_proj_buff = lnd_layer_proj.buffer(100000)\nlnd_layer_proj_buff\n\n0 POLYGON ((630000.000 180000.000...\ndtype: geometry\n\n\nThe resulting buffer is shown in the left panel of Figure 6.1.\nCalculating a 100-\\(km\\) buffer lnd_layer, which is in a geographical CRS, is impossible. Since the lnd_layer is in decimal degrees, the closest thing to a 100-\\(km\\) buffer would be to use a distance of 1 degree, which is roughly equivalent to 100 \\(km\\) (1 degree is about 111 \\(km\\) at the equator):\n\nlnd_layer_buff = lnd_layer.buffer(1)\nlnd_layer_buff\n\n/tmp/ipykernel_369/855451079.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'buffer' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n lnd_layer_buff = lnd_layer.buffer(1)\n\n\n0 POLYGON ((0.90000 51.50000, 0.8...\ndtype: geometry\n\n\nHowever, this is incorrect, as told by the warning message and shown in the right panel of Figure 6.1. The association between degrees and true distance varies over the surface of the earth and we cannot assume it is fixed (such as 1 degree = 111 \\(km\\)).\n\nuk = world[world['name_long'] == 'United Kingdom']\nuk_proj = uk.to_crs(27700)\nfig, axes = plt.subplots(1, 2, figsize=(8, 4))\nuk_proj.plot(color='none', edgecolor='darkgrey', ax=axes[0])\nlnd_layer_proj.plot(color='red', ax=axes[0])\nlnd_layer_proj_buff.plot(color='none', ax=axes[0])\nuk.plot(color='none', edgecolor='darkgrey', ax=axes[1])\nlnd_layer.plot(color='red', ax=axes[1])\nlnd_layer_buff.plot(color='none', ax=axes[1])\naxes[0].set_title('100 km buffer\\ncorrect')\naxes[1].set_title('1 degree buffer\\nincorrectly approximating 100 km');\n\n\n\n\nFigure 6.1: Buffers around London, around a projected point and distance of 100 \\(km\\) (left), and around a point in lon/lat using distance of 1 degree (right) which is incorrect.\n\n\n\n\n\n\n\n\n\n\nNote\n\n\n\nThe distance between two lines of longitude, called meridians, is around 111 \\(km\\) at the equator (execute import geopy.distance;geopy.distance.geodesic((0,0),(0,1)) to find the precise distance). This shrinks to zero at the poles. At the latitude of London, for example, meridians are less than 70 \\(km\\) apart (challenge: execute code that verifies this). Lines of latitude, by contrast, are equidistant from each other irrespective of latitude: they are always around 111 \\(km\\) apart, including at the equator and near the poles (see Figure…).\n\n\n\n\n\n\n\n\nNote\n\n\n\nThe spherely package, which is in early stages of development, is aimed at providing a spherical-geometry counterpart to shapely, so that true distances (in \\(m\\)) and areas (in \\(m^2\\)) can be calculated on geometries in geographic CRS." + }, + { + "objectID": "07-reproj.html#sec-when-to-reproject", + "href": "07-reproj.html#sec-when-to-reproject", + "title": "6  Reprojecting geographic data", + "section": "6.6 When to reproject?", + "text": "6.6 When to reproject?\nThe previous section showed how to set the CRS manually, with lnd_layer.set_crs(4326). In real world applications, however, CRSs are usually set automatically when data is read-in. In many projects the main CRS-related task is to transform objects, from one CRS into another. But when should data be transformed? And into which CRS? There are no clear-cut answers to these questions and CRS selection always involves trade-offs (Maling 1992, add reference…). However, there are some general principles provided in this section that can help you decide.\nFirst it’s worth considering when to transform. In some cases transformation to a geographic CRS is essential, such as when publishing data online (for example, a Leaflet-based map using Python package folium). Another case is when two objects with different CRSs must be compared or combined, as shown when we try to find the distance between two objects with different CRSs:\n\nlnd_layer.distance(lnd_layer_proj)\n\n/tmp/ipykernel_369/2145313019.py:1: UserWarning: Geometry is in a geographic CRS. Results from 'distance' are likely incorrect. Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.\n\n lnd_layer.distance(lnd_layer_proj)\n/tmp/ipykernel_369/2145313019.py:1: UserWarning: CRS mismatch between the CRS of left geometries and the CRS of right geometries.\nUse `to_crs()` to reproject one of the input geometries to match the CRS of the other.\n\nLeft CRS: EPSG:4326\nRight CRS: EPSG:27700\n\n lnd_layer.distance(lnd_layer_proj)\n\n\n0 559715.614087\ndtype: float64\n\n\nWe got a meaningless result and a warning.\nTo make the lnd_layer and lnd_layer_proj objects geographically comparable one of them must be transformed into the CRS of the other. But which CRS to use? The answer depends on context: many projects, especially those involving web mapping, require outputs in EPSG:4326, in which case it is worth transforming the projected object. If, however, the project requires geometric calculations, implying planar geometry, e.g., to calculating buffers (Section 6.5), it is necessary to transform data with a geographic CRS into an equivalent object with a projected CRS, such as the British National Grid (EPSG:27700). That is the subject of Section 6.9." + }, + { + "objectID": "07-reproj.html#sec-which-crs-to-use", + "href": "07-reproj.html#sec-which-crs-to-use", + "title": "6  Reprojecting geographic data", + "section": "6.7 Which CRS to use?", + "text": "6.7 Which CRS to use?\nThe question of which CRS is tricky, and there is rarely a “right” answer: “There exist no all-purpose projections, all involve distortion when far from the center of the specified frame” (Bivand, Pebesma, and Gómez-Rubio 2013, add citation…). Additionally, you should not be attached just to one projection for every task. It is possible to use one projection for some part of the analysis, another projection for a different part, and even some other for visualization. Always try to pick the CRS that serves your goal best!\nWhen selecting geographic CRSs, the answer is often WGS84. It is used not only for web mapping, but also because GPS datasets and thousands of raster and vector datasets are provided in this CRS by default. WGS84 is the most common CRS in the world, so it is worth knowing its EPSG code: 4326. This “magic number” can be used to convert objects with unusual projected CRSs into something that is widely understood.\nWhat about when a projected CRS is required? In some cases, it is not something that we are free to decide: “often the choice of projection is made by a public mapping agency” (Bivand, Pebesma, and Gómez-Rubio 2013, add citation…). This means that when working with local data sources, it is likely preferable to work with the CRS in which the data was provided, to ensure compatibility, even if the official CRS is not the most accurate. The example of London was easy to answer because:\n\nthe British National Grid (with its associated EPSG code 27700) is well known, and\nthe original dataset (lnd_layer) already had that CRS.\n\nA commonly used default is Universal Transverse Mercator (UTM), a set of CRSs that divides the Earth into 60 longitudinal wedges and 20 latitudinal segments. The transverse Mercator projection used by UTM CRSs is conformal but distorts areas and distances with increasing severity with distance from the center of the UTM zone. Documentation from the GIS software Manifold therefore suggests restricting the longitudinal extent of projects using UTM zones to 6 degrees from the central meridian (source: manifold.net). Therefore, we recommend using UTM only when your focus is on preserving angles for relatively small area!\nAlmost every place on Earth has a UTM code, such as “60H” which refers to northern New Zealand. UTM EPSG codes run sequentially from 32601 to 32660 for northern hemisphere locations and from 32701 to 32760 for southern hemisphere locations.\nTo show how the system works, let’s create a function, lonlat2UTM to calculate the EPSG code associated with any point on the planet as follows:\n\nimport math\ndef lonlat2UTM(lon, lat):\n utm = (math.floor((lon + 180) / 6) % 60) + 1\n if lat > 0:\n utm += 32600\n else:\n utm += 32700\n return utm\n\nThe following command uses this function to identify the UTM zone and associated EPSG code for Auckland:\n\nlonlat2UTM(174.7, -36.9)\n\n32760\n\n\nHere is another example for London (where we “unpack” the coordinates of the 1st geometry in lnd_layer into the lonlat2UTM function arguments):\n\nlonlat2UTM(*lnd_layer['geometry'].iloc[0].coords[0])\n\n32630\n\n\nCurrently, we also have tools helping us to select a proper CRS. For example, the webpage https://jjimenezshaw.github.io/crs-explorer/ lists CRSs based on selected location and type. Important note: while these tools are helpful in many situations, you need to be aware of the properties of the recommended CRS before you apply it.\nIn cases where an appropriate CRS is not immediately clear, the choice of CRS should depend on the properties that are most important to preserve in the subsequent maps and analysis. All CRSs are either equal-area, equidistant, conformal (with shapes remaining unchanged), or some combination of compromises of those (Section 1.4.2). Custom CRSs with local parameters can be created for a region of interest and multiple CRSs can be used in projects when no single CRS suits all tasks. “Geodesic calculations” can provide a fall-back if no CRSs are appropriate (see proj.org/geodesic.html). Regardless of the projected CRS used, the results may not be accurate for geometries covering hundreds of kilometers.\nWhen deciding on a custom CRS, we recommend the following:\n\nA Lambert azimuthal equal-area (LAEA) projection for a custom local projection (set latitude and longitude of origin to the center of the study area), which is an equal-area projection at all locations but distorts shapes beyond thousands of kilometers\nAzimuthal equidistant (AEQD) projections for a specifically accurate straight-line distance between a point and the center point of the local projection\nLambert conformal conic (LCC) projections for regions covering thousands of kilometers, with the cone set to keep distance and area properties reasonable between the secant lines\nStereographic (STERE) projections for polar regions, but taking care not to rely on area and distance calculations thousands of kilometers from the center\n\nOne possible approach to automatically select a projected CRS specific to a local dataset is to create an azimuthal equidistant (AEQD) projection for the center-point of the study area. This involves creating a custom CRS (with no EPSG code) with units of meters based on the center point of a dataset. Note that this approach should be used with caution: no other datasets will be compatible with the custom CRS created and results may not be accurate when used on extensive datasets covering hundreds of kilometers.\nThe principles outlined in this section apply equally to vector and raster datasets. Some features of CRS transformation however are unique to each geographic data model. We will cover the particularities of vector data transformation in Section 6.8 and those of raster transformation in Section 6.9. Next, the last section, shows how to create custom map projections (Section 6.10)." + }, + { + "objectID": "07-reproj.html#sec-reprojecting-vector-geometries", + "href": "07-reproj.html#sec-reprojecting-vector-geometries", + "title": "6  Reprojecting geographic data", + "section": "6.8 Reprojecting vector geometries", + "text": "6.8 Reprojecting vector geometries\nChapter 1 demonstrated how vector geometries are made-up of points, and how points form the basis of more complex objects such as lines and polygons. Reprojecting vectors thus consists of transforming the coordinates of these points, which form the vertices of lines and polygons.\nSection 6.5 contains an example in which at least one GeoDataFrame object must be transformed into an equivalent object with a different CRS to calculate the distance between two objects.\n\nlnd_layer2 = lnd_layer.to_crs(27700)\n\nNow that a transformed version of lnd_layer has been created, using the .distance method, the distance between the two representations of London can be found. It may come as a surprise that lnd_layer and lnd_layer2 are just over 2 km apart! The difference in location between the two points is not due to imperfections in the transforming operation (which is in fact very accurate) but the low precision of the manually-created coordinates that created lnd_layer and lnd_layer_proj:\n\nlnd_layer2.distance(lnd_layer_proj)\n\n0 2017.949587\ndtype: float64\n\n\nFunctions for querying and reprojecting CRSs are demonstrated below with reference to cycle_hire_osm, a point layer that represents ‘docking stations’ where you can hire bicycles in London. The CRS of GeoSeries and GeoDataFrame objects can be queried—as we learned in Section 6.4 set—using the .crs property and the .set_crs method, respectively. The output is printed as multiple lines of text containing information about the coordinate system:\n\ncrs_lnd = lnd_layer.crs\ncrs_lnd\n\n<Geographic 2D CRS: EPSG:4326>\nName: WGS 84\nAxis Info [ellipsoidal]:\n- Lat[north]: Geodetic latitude (degree)\n- Lon[east]: Geodetic longitude (degree)\nArea of Use:\n- name: World.\n- bounds: (-180.0, -90.0, 180.0, 90.0)\nDatum: World Geodetic System 1984 ensemble\n- Ellipsoid: WGS 84\n- Prime Meridian: Greenwich\n\n\nAs mentioned in Section 6.3, a CRS object has many useful properties to examing the CRS characteristics and details, including .name, .to_proj4() and .to_epsg():\n\ncrs_lnd.name\n\n'WGS 84'\n\n\n\ncrs_lnd.to_proj4()\n\n/usr/local/lib/python3.11/site-packages/pyproj/crs/crs.py:1296: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems\n proj = self._crs.to_proj4(version=version)\n\n\n'+proj=longlat +datum=WGS84 +no_defs +type=crs'\n\n\n\ncrs_lnd.to_epsg()\n\n4326\n\n\nAs mentioned in Section 6.3, WKT representation, accessible through .to_wkt() of the crs_lnd object is the ultimate source of truth. This means that the outputs of the previous code chunk are queries from the WKT representation provided by PROJ, rather than inherent attributes of the object and its CRS.\nThe contents of the CRS object associated with a given geometry column is changed when the object’s CRS is transformed. In the code chunk below, we create a new version of cycle_hire_osm with a projected CRS:\n\ncycle_hire_osm_projected = cycle_hire_osm.to_crs(27700)\ncycle_hire_osm_projected.crs\n\n<Derived Projected CRS: EPSG:27700>\nName: OSGB36 / British National Grid\nAxis Info [cartesian]:\n- E[east]: Easting (metre)\n- N[north]: Northing (metre)\nArea of Use:\n- name: United Kingdom (UK) - offshore to boundary of UKCS within 49°45'N to 61°N and 9°W to 2°E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.\n- bounds: (-9.0, 49.75, 2.01, 61.01)\nCoordinate Operation:\n- name: British National Grid\n- method: Transverse Mercator\nDatum: Ordnance Survey of Great Britain 1936\n- Ellipsoid: Airy 1830\n- Prime Meridian: Greenwich\n\n\nThe resulting object has a new CRS with an EPSG code 27700. But how to find out more details about this EPSG code, or any code? One option is to search for it online. Another option is to create a standalone CRS object within the Python environment (using pyproj.CRS.from_string or pyproj.CRS.from_epsg, see Section 6.3), and then query its properties:\n\ncrs_lnd_new = pyproj.CRS.from_epsg(27700)\ncrs_lnd_new.name, crs_lnd_new.to_proj4(), crs_lnd_new.to_wkt()\n\n('OSGB36 / British National Grid',\n '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +units=m +no_defs +type=crs',\n 'PROJCRS[\"OSGB36 / British National Grid\",BASEGEOGCRS[\"OSGB36\",DATUM[\"Ordnance Survey of Great Britain 1936\",ELLIPSOID[\"Airy 1830\",6377563.396,299.3249646,LENGTHUNIT[\"metre\",1]]],PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0.0174532925199433]],ID[\"EPSG\",4277]],CONVERSION[\"British National Grid\",METHOD[\"Transverse Mercator\",ID[\"EPSG\",9807]],PARAMETER[\"Latitude of natural origin\",49,ANGLEUNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",8801]],PARAMETER[\"Longitude of natural origin\",-2,ANGLEUNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",8802]],PARAMETER[\"Scale factor at natural origin\",0.9996012717,SCALEUNIT[\"unity\",1],ID[\"EPSG\",8805]],PARAMETER[\"False easting\",400000,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8806]],PARAMETER[\"False northing\",-100000,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8807]]],CS[Cartesian,2],AXIS[\"(E)\",east,ORDER[1],LENGTHUNIT[\"metre\",1]],AXIS[\"(N)\",north,ORDER[2],LENGTHUNIT[\"metre\",1]],USAGE[SCOPE[\"Engineering survey, topographic mapping.\"],AREA[\"United Kingdom (UK) - offshore to boundary of UKCS within 49°45\\'N to 61°N and 9°W to 2°E; onshore Great Britain (England, Wales and Scotland). Isle of Man onshore.\"],BBOX[49.75,-9,61.01,2.01]],ID[\"EPSG\",27700]]')\n\n\nThe result shows that the EPSG code 27700 represents the British National Grid, a result that could have been found by searching online for “EPSG 27700”." + }, + { + "objectID": "07-reproj.html#sec-reprojecting-raster-geometries", + "href": "07-reproj.html#sec-reprojecting-raster-geometries", + "title": "6  Reprojecting geographic data", + "section": "6.9 Reprojecting raster geometries", + "text": "6.9 Reprojecting raster geometries\nThe projection concepts described in the previous section apply equally to rasters. However, there are important differences in reprojection of vectors and rasters: transforming a vector object involves changing the coordinates of every vertex but this does not apply to raster data. Rasters are composed of rectangular cells of the same size (expressed by map units, such as degrees or meters), so it is usually impracticable to transform coordinates of pixels separately. Raster reprojection involves creating a new raster object, often with a different number of columns and rows than the original. The attributes must subsequently be re-estimated, allowing the new pixels to be ‘filled’ with appropriate values. In other words, raster reprojection can be thought of as two separate spatial operations: a vector reprojection of the raster extent to another CRS (Section 6.8), and computation of new pixel values through resampling (Section 4.4.4). Thus in most cases when both raster and vector data are used, it is better to avoid reprojecting rasters and reproject vectors instead.\n\n\n\n\n\n\nNote\n\n\n\nReprojection of the regular rasters is also known as warping. Additionally, there is a second similar operation called “transformation”. Instead of resampling all of the values, it leaves all values intact but recomputes new coordinates for every raster cell, changing the grid geometry. For example, it could convert the input raster (a regular grid) into a curvilinear grid. The rasterio, like common raster file formats (such as GeoTIFF), does not support curvilinear grids (?).\n\n\nThe raster reprojection process is done using two functions from the rasterio.warp sub-package:\n\nrasterio.warp.calculate_default_transform\nrasterio.warp.reproject\n\nThe first function, calculate_default_transform, is used to calculate the new transformation matrix in the destination CRS, according to the source raster dimensions and bounds. Alternatively, the destination transformation matrix can be obtained from an existing raster; this is common practice when we need to align one raster with another, for instance to be able to combine them in raster algebra operations (Section 3.4.3) (see below). The second function rasterio.warp.reproject then actually calculates cell values in the destination grid, using the user-selected resampling method (such as nearest neighbor, or bilinear).\nLet’s take a look at two examples of raster transformation: using categorical and continuous data. Land cover data are usually represented by categorical maps. The nlcd.tif file provides information for a small area in Utah, USA obtained from National Land Cover Database 2011 in the NAD83 / UTM zone 12N CRS, as shown in the output of the code chunk below (only first line of output shown). We already created a connection to the nlcd.tif file, named src_nlcd:\n\nsrc_nlcd\n\n<open DatasetReader name='data/nlcd.tif' mode='r'>\n\n\nRecall that the raster transformation matrix and dimensions are accessible from the file connection as follows. This information will be required to calculate the destination transformation matrix (hereby printed collectively in a tuple):\n\nsrc_nlcd.transform, src_nlcd.width, src_nlcd.height\n\n(Affine(31.530298224786595, 0.0, 301903.344386758,\n 0.0, -31.52465870178793, 4154086.47216415),\n 1073,\n 1359)\n\n\nFirst, let’s define the destination CRS. In this case, we choose WGS84 (EPSG code 4326):\n\ndst_crs = 'EPSG:4326'\n\nNow, we are ready to claculate the destination raster transformation matrix (dst_transform), and the destination dimensions (dst_width, dst_height), as follows:\n\ndst_transform, dst_width, dst_height = rasterio.warp.calculate_default_transform(\n src_nlcd.crs,\n dst_crs,\n src_nlcd.width,\n src_nlcd.height,\n *src_nlcd.bounds\n)\ndst_transform, dst_width, dst_height\n\n(Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022),\n 1244,\n 1246)\n\n\nNote that *, in *src_nlcd.bounds, is used to unpack src_nlcd.bounds to four separate arguments, which calculate_default_transform requires:\n\nsrc_nlcd.bounds\n\nBoundingBox(left=301903.344386758, bottom=4111244.46098842, right=335735.354381954, top=4154086.47216415)\n\n\nNext, we will create the metadata file used for writing the reprojected raster to file. For convenience, we are taking the metadata of the source raster (src_nlcd.meta), making a copy (dst_kwargs), and then updating those specific properties that need to be changed. Note that the reprojection process typically creates “No Data” pixels, even when there were none in the input raster, since the raster orientation changes and the edges need to be “filled” to get back a rectangular extent. We need to specify a “No Data” value of our choice, if there is none, or use the existing source raster setting, such as 255 in this case:\n\ndst_kwargs = src_nlcd.meta.copy()\ndst_kwargs.update({\n 'crs': dst_crs,\n 'transform': dst_transform,\n 'width': dst_width,\n 'height': dst_height\n})\ndst_kwargs\n\n{'driver': 'GTiff',\n 'dtype': 'uint8',\n 'nodata': 255.0,\n 'width': 1244,\n 'height': 1246,\n 'count': 1,\n 'crs': 'EPSG:4326',\n 'transform': Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022)}\n\n\nWe are ready to create the reprojected raster. Here, reprojection takes place between two file connections, meaning that the raster value arrays are not being read into memory at once. It is also possible to reproject into an in-memory ndarray object, see the documentation.\nTo write the reprojected raster, we first create a destination file connection dst_nlcd, pointing at the output file path of our choice (output/nlcd_4326.tif), using the updated metadata object created earlier (dst_kwargs):\n\ndst_nlcd = rasterio.open('output/nlcd_4326.tif', 'w', **dst_kwargs)\n\nThen, we use the rasterio.warp.reproject function to calculate and write the reprojection result into the dst_nlcd file connection. Note that the source and destination accept a “band” object, created using rasterio.band. In this case, there is just one band. If there were more bands, we would have to repeat the procedure for each band, using i instead of 1 inside a loop:\n\nrasterio.warp.reproject(\n source=rasterio.band(src_nlcd, 1),\n destination=rasterio.band(dst_nlcd, 1),\n src_transform=src_nlcd.transform,\n src_crs=src_nlcd.crs,\n dst_transform=dst_transform,\n dst_crs=dst_crs,\n resampling=rasterio.enums.Resampling.nearest\n)\n\n(Band(ds=<open DatasetWriter name='output/nlcd_4326.tif' mode='w'>, bidx=1, dtype='uint8', shape=(1246, 1244)),\n Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022))\n\n\nFinally, we close the file connection so that the data are actually written:\n\ndst_nlcd.close()\n\nMany properties of the new object differ from the previous one, including the number of columns and rows (and therefore number of cells), resolution (transformed from meters into degrees), and extent, as summarized again below (note that the number of categories increases from 8 to 9 because of the addition of NA values, not because a new category has been created—the land cover classes are preserved).\n\nsrc_nlcd.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint8',\n 'nodata': 255.0,\n 'width': 1073,\n 'height': 1359,\n 'count': 1,\n 'crs': CRS.from_epsg(26912),\n 'transform': Affine(31.530298224786595, 0.0, 301903.344386758,\n 0.0, -31.52465870178793, 4154086.47216415)}\n\n\n\nsrc_nlcd_4326 = rasterio.open('output/nlcd_4326.tif')\nsrc_nlcd_4326.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint8',\n 'nodata': 255.0,\n 'width': 1244,\n 'height': 1246,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022)}\n\n\nExamining the unique raster values tells us that the new raster has the same categories, plus the value 255 representing “No Data”:\n\nnp.unique(src_nlcd.read(1))\n\narray([1, 2, 3, 4, 5, 6, 7, 8], dtype=uint8)\n\n\n\nnp.unique(src_nlcd_4326.read(1))\n\narray([ 1, 2, 3, 4, 5, 6, 7, 8, 255], dtype=uint8)\n\n\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nshow(src_nlcd, ax=axes[0], cmap='Set3')\nshow(src_nlcd_4326, ax=axes[1], cmap='Set3')\naxes[0].set_title('Original (EPSG:26912)')\naxes[1].set_title('Reprojected (EPSG:4326)');\n\n\n\n\nFigure 6.2: Reprojecting a categorical raster using nearest neighbor resampling\n\n\n\n\nIn the above example, we automatically calculated an optimal (i.e., most information preserving) destination grid using rasterio.warp.calculate_default_transform. This is appropriate when there are no specific requirements for the destination raster spatial properties. Namely, we are not required to otain a specific origin and resolution, but just wish to preserve the raster values as much as possible. To do that, calculate_default_transform “tries” to keep the extent and resolution of the destination raster as similar as possible to the source. In other situations, however, we need to reproject a raster into a specific “template”, so that it corresponds, for instance, with other rasters we use in the analysis. In the following code section, we reproject the nlcd.tif raster, again, buit this time using the nlcd_4326.tif reprojection result as the “template” to demonstrate this alternative workflow.\nFirst, we create a connection to our “template” raster to read its metadata:\n\ntemplate = rasterio.open('output/nlcd_4326.tif')\ntemplate.meta\n\n{'driver': 'GTiff',\n 'dtype': 'uint8',\n 'nodata': 255.0,\n 'width': 1244,\n 'height': 1246,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022)}\n\n\nThen, we create a write-mode connection to our destination raster, using this metadata, meaning that as the resampling result is going to have identical metadata as the “template”:\n\ndst_nlcd_2 = rasterio.open('output/nlcd_4326_2.tif', 'w', **template.meta)\n\nNow, we can resample and write the result:\n\nrasterio.warp.reproject(\n source=rasterio.band(src_nlcd, 1),\n destination=rasterio.band(dst_nlcd_2, 1),\n src_transform=src_nlcd.transform,\n src_crs=src_nlcd.crs,\n dst_transform=dst_nlcd_2.transform,\n dst_crs=dst_nlcd_2.crs,\n resampling=rasterio.enums.Resampling.nearest\n)\n\n(Band(ds=<open DatasetWriter name='output/nlcd_4326_2.tif' mode='w'>, bidx=1, dtype='uint8', shape=(1246, 1244)),\n Affine(0.00031506316853514724, 0.0, -113.24138811813536,\n 0.0, -0.00031506316853514724, 37.51912722777022))\n\n\n\ndst_nlcd_2.close()\n\nNaturally, in this case, the outputs nlcd_4326.tif and nlcd_4326_2.tif are identical, as we used the same “template” and the same source data:\n\nd = rasterio.open('output/nlcd_4326.tif').read(1) == rasterio.open('output/nlcd_4326_2.tif').read(1)\nd\n\narray([[ True, True, True, ..., True, True, True],\n [ True, True, True, ..., True, True, True],\n [ True, True, True, ..., True, True, True],\n ...,\n [ True, True, True, ..., True, True, True],\n [ True, True, True, ..., True, True, True],\n [ True, True, True, ..., True, True, True]])\n\n\n\nnp.all(d)\n\nTrue\n\n\nThe difference is that in the first example we calculate the template automatically, using rasterio.warp.calculate_default_transform, while in the second example we used an existing raster as the “template”.\nImportantly, when the template raster has much more “coarse” resolution than the source raster, the:\n\nrasterio.enums.Resampling.average (for continuous rasters), or\nrasterio.enums.Resampling.mode (for categorical rasters)\n\nresampling method should be used, instead of rasterio.enums.Resampling.nearest. Otherwise, much of the data will be lost, as the “nearest” method can capture one pixel value only for each destination raster pixel.\nReprojecting continuous rasters (with numeric or, in this case, integer values) follows an almost identical procedure. This is demonstrated below with srtm.tif from the Shuttle Radar Topography Mission (SRTM), which represents height in meters above sea level (elevation) with the WGS84 CRS.\nWe will reproject this dataset into a projected CRS, but not with the nearest neighbor method which is appropriate for categorical data. Instead, we will use the bilinear method which computes the output cell value based on the four nearest cells in the original raster. The values in the projected dataset are the distance-weighted average of the values from these four cells: the closer the input cell is to the center of the output cell, the greater its weight. The following code section create a text string representing WGS 84 / UTM zone 12N, and reproject the raster into this CRS, using the bilinear method. The code is practically the same, except for changing the source and destination file names, and replacing nearest with bilinear:\n\ndst_crs = 'EPSG:32612'\ndst_transform, dst_width, dst_height = rasterio.warp.calculate_default_transform(\n src_srtm.crs,\n dst_crs,\n src_srtm.width,\n src_srtm.height,\n *src_srtm.bounds\n)\ndst_kwargs = src_srtm.meta.copy()\ndst_kwargs.update({\n 'crs': dst_crs,\n 'transform': dst_transform,\n 'width': dst_width,\n 'height': dst_height\n})\ndst_srtm = rasterio.open('output/srtm_32612.tif', 'w', **dst_kwargs)\nrasterio.warp.reproject(\n source=rasterio.band(src_srtm, 1),\n destination=rasterio.band(dst_srtm, 1),\n src_transform=src_srtm.transform,\n src_crs=src_srtm.crs,\n dst_transform=dst_transform,\n dst_crs=dst_crs,\n resampling=rasterio.enums.Resampling.bilinear\n)\ndst_srtm.close()\n\nFigure 6.3 shows the input and the reprojected SRTM rasters.\n\nfig, axes = plt.subplots(ncols=2, figsize=(8,4))\nshow(src_srtm, ax=axes[0])\nshow(rasterio.open('output/srtm_32612.tif'), ax=axes[1])\naxes[0].set_title('Original (EPSG:4326)')\naxes[1].set_title('Reprojected (EPSG:32612)');\n\n\n\n\nFigure 6.3: Reprojecting a continuous raster using bilinear resampling" + }, + { + "objectID": "07-reproj.html#sec-custom-map-projections", + "href": "07-reproj.html#sec-custom-map-projections", + "title": "6  Reprojecting geographic data", + "section": "6.10 Custom map projections", + "text": "6.10 Custom map projections\nEstablished CRSs captured by AUTHORITY:CODE identifiers such as EPSG:4326 are well suited for many applications. However, it is desirable to use alternative projections or to create custom CRSs in some cases. Section 6.7 mentioned reasons for using custom CRSs, and provided several possible approaches. Here, we show how to apply these ideas in Python.\nOne is to take an existing WKT definition of a CRS, modify some of its elements, and then use the new definition for reprojecting, using the reprojection methods shown above for vector layers (Section 6.8) and rasters (Section 6.9).\nFor example, let’s transforms the zion.gpkg vector layer to a custom azimuthal equidistant (AEQD) CRS. Using a custom AEQD CRS requires knowing the coordinates of the center point of a dataset in degrees (geographic CRS). In our case, this information can be extracted by calculating a centroid of the zion area and transforming it into WGS84:\n\nzion_centr = zion.centroid\nzion_centr_wgs84 = zion_centr.to_crs(4326)\ncoords = list(zion_centr_wgs84.iloc[0].coords)\ncoords\n\n[(-113.02630562788148, 37.298176835277424)]\n\n\nNext, we can use the newly obtained lon/lat coordinates to update the WKT definition of the azimuthal equidistant (AEQD) CRS seen below. Notice that we modified just two values below—\"Central_Meridian\" to the longitude and \"Latitude_Of_Origin\" to the latitude of our centroid:\n\nmy_wkt = '''PROJCS[\"Custom_AEQD\",\n GEOGCS[\"GCS_WGS_1984\",\n DATUM[\"WGS_1984\",\n SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],\n PRIMEM[\"Greenwich\",0.0],\n UNIT[\"Degree\",0.0174532925199433]],\n PROJECTION[\"Azimuthal_Equidistant\"],\n PARAMETER[\"Central_Meridian\",-113.0263],\n PARAMETER[\"Latitude_Of_Origin\",37.29818],\n UNIT[\"Meter\",1.0]]'''\n\nThis approach’s last step is to transform our original object (zion) to our new custom CRS (zion_aeqd):\n\nzion_aeqd = zion.to_crs(my_wkt)\n\nCustom projections can also be made interactively, for example, using the Projection Wizard web application (Šavrič, Jenny, and Jenny 2016 to add citation…). This website allows you to select a spatial extent of your data and a distortion property, and returns a list of possible projections. The list also contains WKT definitions of the projections that you can copy and use for reprojections. See Open Geospatial Consortium (2019) for details on creating custom CRS definitions with WKT strings.\nPROJ strings can also be used to create custom projections, accepting the limitations inherent to projections, especially of geometries covering large geographic areas, mentioned in Section 6.3. Many projections have been developed and can be set with the +proj= element of PROJ strings, with dozens of projects described in detail on the PROJ website alone.\nWhen mapping the world while preserving area relationships the Mollweide projection, illustrated in Figure 6.4, is a popular and often sensible choice (Jenny et al. 2017 to add citation…). To use this projection, we need to specify it using the proj-string element, '+proj=moll', in the .to_crs method:\n\nworld.to_crs('+proj=moll').plot(color='none', edgecolor='black');\n\n\n\n\nFigure 6.4: Mollweide projection of the world\n\n\n\n\nIt is often desirable to minimize distortion for all spatial properties (area, direction, distance) when mapping the world. One of the most popular projections to achieve this is Winkel tripel, illustrated in Figure 6.5:\n\nworld.to_crs('+proj=wintri').plot(color='none', edgecolor='black');\n\n\n\n\nFigure 6.5: Winkel tripel projection of the world\n\n\n\n\nMoreover, proj-string parameters can be modified in most CRS definitions, for example the center of the projection can be adjusted using the +lon_0 and +lat_0 parameters. The below code transforms the coordinates to the Lambert azimuthal equal-area projection centered on the longitude and latitude of New York City (Figure 6.6).\n\nworld.to_crs('+proj=laea +x_0=0 +y_0=0 +lon_0=-74 +lat_0=40') \\\n .plot(color='none', edgecolor='black');\n\n\n\n\nFigure 6.6: Lambert azimuthal equal-area projection of the world centered on New York City\n\n\n\n\nMore information on CRS modifications can be found in the Using PROJ documentation." + }, + { + "objectID": "07-reproj.html#exercises", + "href": "07-reproj.html#exercises", + "title": "6  Reprojecting geographic data", + "section": "6.11 Exercises", + "text": "6.11 Exercises" + }, + { + "objectID": "08-read-write-plot.html#prerequisites", + "href": "08-read-write-plot.html#prerequisites", + "title": "7  Geographic data I/O", + "section": "7.1 Prerequisites", + "text": "7.1 Prerequisites\nLet’s import the required packages:\n\nimport numpy as np\nimport fiona\nimport geopandas as gpd\nimport shapely\nimport rasterio\nimport rasterio.plot\n\nand load the sample data for this chapter:\n\nnz = gpd.read_file('data/nz.gpkg')\nnz_elev = rasterio.open('data/nz_elev.tif')" + }, + { + "objectID": "08-read-write-plot.html#introduction", + "href": "08-read-write-plot.html#introduction", + "title": "7  Geographic data I/O", + "section": "7.2 Introduction", + "text": "7.2 Introduction\nThis chapter is about reading and writing geographic data. Geographic data import is essential for geocomputation: real-world applications are impossible without data. Data output is also vital, enabling others to use valuable new or improved datasets resulting from your work. Taken together, these processes of import/output can be referred to as data I/O.\nGeographic data I/O is often done with few lines of code at the beginning and end of projects. It is often overlooked as a simple one step process. However, mistakes made at the outset of projects (e.g. using an out-of-date or in some way faulty dataset) can lead to large problems later down the line, so it is worth putting considerable time into identifying which datasets are available, where they can be found and how to retrieve them. These topics are covered in Section 7.3, which describes various geoportals, which collectively contain many terabytes of data, and how to use them. To further ease data access, a number of packages for downloading geographic data have been developed, as described in Section 7.4.\nThere are many geographic file formats, each of which has pros and cons, described in Section 7.6. The process of reading and writing files in formats efficiently is covered in Sections Section 7.7 and Section 7.8, respectively. The final Section Section 7.9 demonstrates methods for saving visual outputs (maps), in preparation for Chapter 8 on visualization." + }, + { + "objectID": "08-read-write-plot.html#sec-retrieving-open-data", + "href": "08-read-write-plot.html#sec-retrieving-open-data", + "title": "7  Geographic data I/O", + "section": "7.3 Retrieving open data", + "text": "7.3 Retrieving open data\nA vast and ever-increasing amount of geographic data is available on the internet, much of which is free to access and use (with appropriate credit given to its providers).1 In some ways there is now too much data, in the sense that there are often multiple places to access the same dataset. Some datasets are of poor quality. In this context, it is vital to know where to look, so the first section covers some of the most important sources. Various ‘geoportals’ (web services providing geospatial datasets such as Data.gov) are a good place to start, providing a wide range of data but often only for specific locations (as illustrated in the updated Wikipedia page on the topic).\nSome global geoportals overcome this issue. The GEOSS portal and the Copernicus Open Access Hub, for example, contain many raster datasets with global coverage. A wealth of vector datasets can be accessed from the SEDAC portal run by the National Aeronautics and Space Administration (NASA) and the European Union’s INSPIRE geoportal, with global and regional coverage.\nMost geoportals provide a graphical interface allowing datasets to be queried based on characteristics such as spatial and temporal extent, the United States Geological Survey’s EarthExplorer being a prime example. Exploring datasets interactively on a browser is an effective way of understanding available layers. Downloading data is best done with code, however, from reproducibility and efficiency perspectives. Downloads can be initiated from the command line using a variety of techniques, primarily via URLs and APIs (see the Sentinel API for example). Files hosted on static URLs can be downloaded with the following method, as illustrated in the code chunk below which accesses the Natural Earth Data website to download the world airports layer zip file and to extract the contained Shapefile. Note that the download code is complicated by the fact that the server checks the User-agent header of the request, basically to make sure that the download takes place through a browser. To overcome this, we add a header corresponding to a request coming from a browser (such as Firefox) in our code:\n\nimport urllib.request\nimport zipfile\n\n# Set URL+filename\nurl = 'https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_airports.zip'\nfilename = 'output/ne_10m_airports.zip'\n\n# Download\nopener = urllib.request.build_opener()\nopener.addheaders = [('User-agent', 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0')]\nurllib.request.install_opener(opener)\nurllib.request.urlretrieve(url, filename)\n\n# Extract\nf = zipfile.ZipFile(filename, 'r')\nf.extractall('output')\nf.close()\n\nThe Shapefile that has been created in the output directory can then be imported and plotted (Figure 7.1) as follows:\n\nne = gpd.read_file(filename.replace('.zip', '.shp'))\nne.plot();\n\n\n\n\nFigure 7.1: World airports layer, downloaded using Python from the Natural Earth Data website" + }, + { + "objectID": "08-read-write-plot.html#sec-geographic-data-packages", + "href": "08-read-write-plot.html#sec-geographic-data-packages", + "title": "7  Geographic data I/O", + "section": "7.4 Geographic data packages", + "text": "7.4 Geographic data packages\nMany Python packages have been developed for accessing geographic data, some of which are presented in Table 7.1. These provide interfaces to one or more spatial libraries or geoportals and aim to make data access even quicker from the command line.\n\n\nTable 7.1: Selected Python packages for geographic data retrieval\n\n\nPackage\nDescription\n\n\n\n\ncartopy\nDownload layers from Natural Earth Data\n\n\n...\n…\n\n\n...\n…\n\n\n...\n…\n\n\n\n\nEach data package has its own syntax for accessing data. This diversity is demonstrated in the subsequent code chunks, which show how to get data using three packages from Table 7.1. Country borders are often useful and these can be accessed with the cartopy.io.shapereader.natural_earth function from the cartopy package, as follows.\n\nimport cartopy\nfilename = cartopy.io.shapereader.natural_earth(\n resolution='10m',\n category='cultural',\n name='admin_2_counties'\n)\ncounties = gpd.read_file(filename)\ncounties\n\n/usr/local/lib/python3.11/site-packages/cartopy/io/__init__.py:241: DownloadWarning: Downloading: https://naturalearth.s3.amazonaws.com/10m_cultural/ne_10m_admin_2_counties.zip\n warnings.warn(f'Downloading: {url}', DownloadWarning)\n\n\n\n\n\n\n\n\n\nFEATURECLA\nSCALERANK\nADM2_CODE\n...\nNAME_ZH\nNAME_ZHT\ngeometry\n\n\n\n\n0\nAdmin-2 scale rank\n0\nUSA-53073\n...\n霍特科姆县\n霍特科姆縣\nMULTIPOLYGON (((-122.75302 48.9...\n\n\n1\nAdmin-2 scale rank\n0\nUSA-53047\n...\n奥卡诺根县\n奧卡諾根縣\nPOLYGON ((-120.85196 48.99251, ...\n\n\n2\nAdmin-2 scale rank\n0\nUSA-53019\n...\n费里县\n費里縣\nPOLYGON ((-118.83688 48.99251, ...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n3221\nAdmin-2 scale rank\n0\nUSA-72149\n...\n維拉爾巴\n維拉爾巴\nPOLYGON ((-66.44407 18.17665, -...\n\n\n3222\nAdmin-2 scale rank\n0\nUSA-72121\n...\n大薩瓦納\n大薩瓦納\nPOLYGON ((-66.88464 18.02481, -...\n\n\n3223\nAdmin-2 scale rank\n0\nUSA-72093\n...\n馬里考\n馬里考\nPOLYGON ((-66.89856 18.18790, -...\n\n\n\n\n3224 rows × 62 columns\n\n\n\nThe layer of counties is plotted in Figure 7.2:\n\ncounties.plot();\n\n\n\n\nFigure 7.2: US counties, downloaded from the Natural Earth Data website using package cartopy\n\n\n\n\nOther layers can be accessed the same way:\n\nyou need to locate the resolution, category, and name of the requested dataset, then\nrun the cartopy.io.shapereader.natural_earth, which downloads the file(s) and returns the path, and\nread the file into the Python environment, e.g., using gpd.read_file\n\nThis is an alternative approach to “directly” downloading files (Section 7.3)." + }, + { + "objectID": "08-read-write-plot.html#geographic-web-services", + "href": "08-read-write-plot.html#geographic-web-services", + "title": "7  Geographic data I/O", + "section": "7.5 Geographic web services", + "text": "7.5 Geographic web services\nTo complete…" + }, + { + "objectID": "08-read-write-plot.html#sec-file-formats", + "href": "08-read-write-plot.html#sec-file-formats", + "title": "7  Geographic data I/O", + "section": "7.6 File formats", + "text": "7.6 File formats\nGeographic datasets are usually stored as files or in spatial databases. File formats can either store vector or raster data, while spatial databases such as PostGIS can store both. The large variety of file formats may seem bewildering, but there has been much consolidation and standardization since the beginnings of GIS software in the 1960s when the first widely distributed program (SYMAP) for spatial analysis was created at Harvard University [@coppock_history_1991].\nGDAL (which should be pronounced “goo-dal”, with the double “o” making a reference to object-orientation), the Geospatial Data Abstraction Library, has resolved many issues associated with incompatibility between geographic file formats since its release in 2000. GDAL provides a unified and high-performance interface for reading and writing of many raster and vector data formats. Many open and proprietary GIS programs, including GRASS, ArcGIS and QGIS, use GDAL behind their GUIs for doing the legwork of ingesting and spitting out geographic data in appropriate formats.\nGDAL provides access to more than 200 vector and raster data formats. Table 7.2 presents some basic information about selected and often used spatial file formats.\n\n\nTable 7.2: Commonly used spatial data file formats\n\n\n\n\n\n\n\n\n\nName\nExtension\nInfo\nType\nModel\n\n\n\n\nESRI Shapefile\n.shp (the main file)\nPopular format consisting of at least three files. No support for: files > 2GB;mixed types; names > 10 chars; cols > 255.\nVector\nPartially open\n\n\nGeoJSON\n.geojson\nExtends the JSON exchange format by including a subset of the simple feature representation; mostly used for storing coordinates in longitude and latitude; it is extended by the TopoJSON format\nVector\nOpen\n\n\nKML\n.kml\nXML-based format for spatial visualization, developed for use with Google Earth. Zipped KML file forms the KMZ format.\nVector\nOpen\n\n\nGPX\n.gpx\nXML schema created for exchange of GPS data.\nVector\nOpen\n\n\nFlatGeobuf\n.fgb\nSingle file format allowing for quick reading and writing of vector data. Has streaming capabilities.\nVector\nOpen\n\n\nGeoTIFF\n.tif/.tiff\nPopular raster format. A TIFF file containing additional spatial metadata.\nRaster\nOpen\n\n\nArc ASCII\n.asc\nText format where the first six lines represent the raster header, followed by the raster cell values arranged in rows and columns.\nRaster\nOpen\n\n\nSQLite/SpatiaLite\n.sqlite\nStandalone relational database, SpatiaLite is the spatial extension of SQLite.\nVector and raster\nOpen\n\n\nESRI FileGDB\n.gdb\nSpatial and nonspatial objects created by ArcGIS. Allows: multiple feature classes; topology. Limited support from GDAL.\nVector and raster\nProprietary\n\n\nGeoPackage\n.gpkg\nLightweight database container based on SQLite allowing an easy and platform-independent exchange of geodata\nVector and (very limited) raster\nOpen\n\n\n\n\nAn important development ensuring the standardization and open-sourcing of file formats was the founding of the Open Geospatial Consortium (OGC) in 1994. Beyond defining the simple features data model (see Section 1.2.4), the OGC also coordinates the development of open standards, for example as used in file formats such as KML and GeoPackage. Open file formats of the kind endorsed by the OGC have several advantages over proprietary formats: the standards are published, ensure transparency and open up the possibility for users to further develop and adjust the file formats to their specific needs.\nESRI Shapefile is the most popular vector data exchange format; however, it is not an open format (though its specification is open). It was developed in the early 1990s and has a number of limitations. First of all, it is a multi-file format, which consists of at least three files. It only supports 255 columns, column names are restricted to ten characters and the file size limit is 2 GB. Furthermore, ESRI Shapefile does not support all possible geometry types, for example, it is unable to distinguish between a polygon and a multipolygon. Despite these limitations, a viable alternative had been missing for a long time. In the meantime, GeoPackage emerged, and seems to be a more than suitable replacement candidate for ESRI Shapefile. GeoPackage is a format for exchanging geospatial information and an OGC standard. The GeoPackage standard describes the rules on how to store geospatial information in a tiny SQLite container. Hence, GeoPackage is a lightweight spatial database container, which allows the storage of vector and raster data but also of non-spatial data and extensions. Aside from GeoPackage, there are other geospatial data exchange formats worth checking out (Table 7.2).\nThe GeoTIFF format seems to be the most prominent raster data format. It allows spatial information, such as the CRS definition and the transformation matrix (see Section 1.3.2), to be embedded within a TIFF file. Similar to ESRI Shapefile, this format was firstly developed in the 1990s, but as an open format. Additionally, GeoTIFF is still being expanded and improved. One of the most significant recent addition to the GeoTIFF format is its variant called COG (Cloud Optimized GeoTIFF). Raster objects saved as COGs can be hosted on HTTP servers, so other people can read only parts of the file without downloading the whole file (see Sections 8.6.2 and 8.7.2…).\nThere is also a plethora of other spatial data formats that we do not explain in detail or mention in Table 7.2 due to the book limits. If you need to use other formats, we encourage you to read the GDAL documentation about vector and raster drivers. Additionally, some spatial data formats can store other data models (types) than vector or raster. It includes LAS and LAZ formats for storing lidar point clouds, and NetCDF and HDF for storing multidimensional arrays.\nFinally, spatial data is also often stored using tabular (non-spatial) text formats, including CSV files or Excel spreadsheets. This can be convenient to share spatial datasets with people who, or software that, struggle with spatial data formats." + }, + { + "objectID": "08-read-write-plot.html#sec-data-input", + "href": "08-read-write-plot.html#sec-data-input", + "title": "7  Geographic data I/O", + "section": "7.7 Data input (I)", + "text": "7.7 Data input (I)\nExecuting commands such as geopandas.read_file (the main function we use for loading vector data) or rasterio.open+.read (the main functions used for loading raster data) silently sets off a chain of events that reads data from files. Moreover, there are many Python packages containing a wide range of geographic data or providing simple access to different data sources. All of them load the data into the Python environment or, more precisely, assign objects to your workspace, stored in RAM and accessible within the Python session.\n\n7.7.1 Vector data\nSpatial vector data comes in a wide variety of file formats. Most popular representations such as .shp, .geojson, and .gpkg files can be imported and exported with geopandas functions read_file and to_file (covered in Section @ref(sec-data-output)), respectively.\ngeopandas uses GDAL to read and write data, via fiona (the default) or pyogrio packages (a recently developed alternative to fiona). After fiona is imported, the command fiona.supported_drivers can be used to list drivers available to GDAL, including whether they can (r), append (a), or write (w) data, or all three:\n\nfiona.supported_drivers\n\n{'DXF': 'rw',\n 'CSV': 'raw',\n 'OpenFileGDB': 'raw',\n 'ESRIJSON': 'r',\n 'ESRI Shapefile': 'raw',\n 'FlatGeobuf': 'raw',\n 'GeoJSON': 'raw',\n 'GeoJSONSeq': 'raw',\n 'GPKG': 'raw',\n 'GML': 'rw',\n 'OGR_GMT': 'rw',\n 'GPX': 'rw',\n 'MapInfo File': 'raw',\n 'DGN': 'raw',\n 'S57': 'r',\n 'SQLite': 'raw',\n 'TopoJSON': 'r'}\n\n\nOther, less common, drivers can be “activated” by manually supplementing fiona.supported_drivers. The first argument of the geopandas versatile data import function gpd.read_file is filename, which is typically a string, but can also be a file connection. The content of a string could vary between different drivers. In most cases, as with the ESRI Shapefile (.shp) or the GeoPackage format (.gpkg), the filename argument would be a path or a URL to an actual file, such as geodata.gpkg. The driver is automatically selected based on the file extension, as demonstrated for a .gpkg file below:\n\nworld = gpd.read_file('data/world.gpkg')\nworld\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.960000\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n1\nTZ\nTanzania\nAfrica\n...\n64.163000\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n2\nEH\nWestern Sahara\nAfrica\n...\nNaN\nNaN\nMULTIPOLYGON (((-8.66559 27.656...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n174\nXK\nKosovo\nEurope\n...\n71.097561\n8698.291559\nMULTIPOLYGON (((20.59025 41.855...\n\n\n175\nTT\nTrinidad and Tobago\nNorth America\n...\n70.426000\n31181.821196\nMULTIPOLYGON (((-61.68000 10.76...\n\n\n176\nSS\nSouth Sudan\nAfrica\n...\n55.817000\n1935.879400\nMULTIPOLYGON (((30.83385 3.5091...\n\n\n\n\n177 rows × 11 columns\n\n\n\nFor some drivers, such as a File Geodatabase (OpenFileGDB), filename could be provided as a folder name. GeoJSON string can also be read from a character string:\n\ngpd.read_file('{\"type\":\"Point\",\"coordinates\":[34.838848,31.296301]}')\n\n\n\n\n\n\n\n\ngeometry\n\n\n\n\n0\nPOINT (34.83885 31.29630)\n\n\n\n\n\n\n\nAlternatively, the gpd.read_postgis function can be used to read a vector layer from a PostGIS database.\nSome vector formats, such as GeoPackage, can store multiple data layers. By default, gpd.read_file automatically reads the first layer of the file specified in filename. However, using the layer argument you can specify any other layer.\nThe gpd.read_file function also allows for reading just parts of the file into RAM with two possible mechanisms. The first one is related to the where argument, which allows specifying what part of the data to read using an SQL WHERE expression. An example below extracts data for Tanzania only (Figure …). It is done by specifying that we want to get all rows for which name_long equals to \"Tanzania\":\n\ntanzania = gpd.read_file('data/world.gpkg', where='name_long=\"Tanzania\"')\ntanzania\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nTZ\nTanzania\nAfrica\n...\n64.163\n2402.099404\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n\n\n1 rows × 11 columns\n\n\n\nIf you do not know the names of the available columns, a good approach is to just read one row of the data using the rows argument, which can be used to read the first N rows, then use the .columns property to examine the column names:\n\ngpd.read_file('data/world.gpkg', rows=1).columns\n\nIndex(['iso_a2', 'name_long', 'continent', 'region_un', 'subregion', 'type',\n 'area_km2', 'pop', 'lifeExp', 'gdpPercap', 'geometry'],\n dtype='object')\n\n\nThe second mechanism uses the mask argument to filter data based on intersection with an existing geometry. This argument expects a geometry (GeoDataFrame, GeoSeries, or shapely) representing the area where we want to extract the data. Let’s try it using a small example—we want to read polygons from our file that intersect with the buffer of 50,000 \\(m\\) of Tanzania’s borders. To do it, we need to (a) transform the geometry to a projected CRS (such as EPSG:32736), (b) prepare our “filter” by creating the buffer (Section 4.3.3), and (c) transform back to the original CRS to be used as a mask:\n\ntanzania_buf = tanzania.to_crs(32736).buffer(50000).to_crs(4326)\ntanzania_buf.iloc[0]\n\n\n\n\nNow, we can apply this “filter” using the mask argument.\n\ntanzania_neigh = gpd.read_file('data/world.gpkg', mask=tanzania_buf)\ntanzania_neigh\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nMZ\nMozambique\nAfrica\n...\n57.099\n1079.823866\nMULTIPOLYGON (((34.55999 -11.52...\n\n\n1\nZM\nZambia\nAfrica\n...\n60.775\n3632.503753\nMULTIPOLYGON (((30.74001 -8.340...\n\n\n2\nMW\nMalawi\nAfrica\n...\n61.932\n1090.367208\nMULTIPOLYGON (((32.75938 -9.230...\n\n\n...\n...\n...\n...\n...\n...\n...\n...\n\n\n6\nBI\nBurundi\nAfrica\n...\n56.688\n803.172837\nMULTIPOLYGON (((30.46967 -2.413...\n\n\n7\nUG\nUganda\nAfrica\n...\n59.224\n1637.275081\nMULTIPOLYGON (((33.90371 -0.950...\n\n\n8\nRW\nRwanda\nAfrica\n...\n66.188\n1629.868866\nMULTIPOLYGON (((30.41910 -1.134...\n\n\n\n\n9 rows × 11 columns\n\n\n\nOur result, shown in Figure 7.3, contains Tanzania and every country within its 50,000 \\(m\\) buffer. Note that the last two expressions are used to add text labels with the name_long of each country, placed at the country centroid:\n\nfig, axes = plt.subplots(ncols=2, figsize=(9,5))\ntanzania.plot(ax=axes[0], color='lightgrey', edgecolor='grey')\ntanzania_neigh.plot(ax=axes[1], color='lightgrey', edgecolor='grey')\ntanzania_buf.plot(ax=axes[1], color='none', edgecolor='red')\naxes[0].set_title('where')\naxes[1].set_title('mask')\ntanzania.apply(lambda x: axes[0].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1)\ntanzania_neigh.apply(lambda x: axes[1].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1);\n\n\n\n\nFigure 7.3: Reading a subset of the vector data using a where query (left) and a mask (right)\n\n\n\n\nOften we need to read CSV files (or other tabular formats) which have x and y coordinate columns, and turn them into a GeoDataFrame with point geometries. To do that, we can import the file using pandas (e.g., pd.read_csv or pd.read_excel), then go from DataFrame to GeoDataFrame using the gpd.points_from_xy function, as shown earlier in the book (See Section 1.2.6 and Section 3.3.4). For example, the table cycle_hire_xy.csv, where the coordinates are stored in the X and Y columns in EPSG:4326, can be imported, converted to a GeoDataFrame, and plotted, as follows:\n\ncycle_hire = pd.read_csv('data/cycle_hire_xy.csv')\ngeom = gpd.points_from_xy(cycle_hire['X'], cycle_hire['Y'], crs=4326)\ngeom = gpd.GeoSeries(geom)\ncycle_hire_xy = gpd.GeoDataFrame(data=cycle_hire, geometry=geom)\ncycle_hire_xy.plot();\n\n\n\n\nInstead of columns describing ‘XY’ coordinates, a single column can also contain the geometry information. Well-known text (WKT), well-known binary (WKB), and the GeoJSON formats are examples of this. For instance, the world_wkt.csv file has a column named WKT representing polygons of the world’s countries. To import and convert it to a GeoDataFrame, we can apply the shapely.wkt.loads function (Section 1.2.5) on WKT strings, to convert them into shapely geometries:\n\nworld_wkt = pd.read_csv('data/world_wkt.csv')\nworld_wkt['geometry'] = world_wkt['WKT'].apply(shapely.wkt.loads)\nworld_wkt = gpd.GeoDataFrame(world_wkt)\nworld_wkt.plot();\n\n\n\n\n\n\n\n\n\n\nNote\n\n\n\nNot all of the supported vector file formats store information about their coordinate reference system. In these situations, it is possible to add the missing information using the .set_crs function. Please refer also to Section 6.4 for more information.\n\n\nAs a final example, we will show how geopandas also reads KML files. A KML file stores geographic information in XML format—a data format for the creation of web pages and the transfer of data in an application-independent way (Nolan and Lang 2014 …). Here, we access a KML file from the web. First, we need to “activate” the KML driver, which isn’t available by default (see above):\n\nfiona.supported_drivers['KML'] = 'r'\n\nThis file contains more than one layer. To list the available layers, we can use the fiona.listlayers function:\n\nu = 'https://developers.google.com/kml/documentation/KML_Samples.kml'\nfiona.listlayers(u)\n\n['Placemarks',\n 'Highlighted Icon',\n 'Paths',\n 'Google Campus',\n 'Extruded Polygon',\n 'Absolute and Relative']\n\n\nFinally, we can choose the first layer Placemarks and read it, using gpd.read_file with an additional layer argument:\n\nplacemarks = gpd.read_file(u, layer='Placemarks')\n\n\n\n7.7.2 Raster data\nSimilar to vector data, raster data comes in many file formats with some of them supporting multilayer files. rasterio.open is used to create a file connection to a raster file, which can be subsequently used to read the metadata and/or the values, as shown previously (Section 1.3.2). For example:\n\nsrc = rasterio.open('data/srtm.tif')\nsrc\n\n<open DatasetReader name='data/srtm.tif' mode='r'>\n\n\nAll of the previous examples read spatial information from files stored on your hard drive. However, GDAL also allows reading data directly from online resources, such as HTTP/HTTPS/FTP web resources. The only thing we need to do is to add a /vsicurl/ prefix before the path to the file. Let’s try it by connecting to the global monthly snow probability at 500 m resolution for the period 2000-2012 (T. Hengl 2021 add reference…). Snow probability for December is stored as a Cloud Optimized GeoTIFF (COG) file (see Section 7.6). To read an online file, we just need to provide its URL together with the /vsicurl/ prefix:\n\nurl = \"/vsicurl/https://zenodo.org/record/5774954/files/clm_snow.prob_esacci.dec_p.90_500m_s0..0cm_2000..2012_v2.0.tif\"\nsrc = rasterio.open(url)\nsrc\n\n<open DatasetReader name='/vsicurl/https://zenodo.org/record/5774954/files/clm_snow.prob_esacci.dec_p.90_500m_s0..0cm_2000..2012_v2.0.tif' mode='r'>\n\n\nIn the example above rasterio.open creates a connection to the file without obtaining any values, as we did for the local srtm.tif file. The values can read, into an ndarray, using the .read method of the file connection (Section 1.3.2). This allows us also to just read a small portion of the data without downloading the entire file. This is very useful when working with large datasets hosted online from resource-constrained computing environments such as laptops.\nAnother option is to extract raster values at particular points, directly from the file connection, using the .sample method (see Section 3.4.1). For example, we can get the snow probability for December in Reykjavik (70%) by specifying its coordinates and applying .sample:\n\nvalues = src.sample([(-21.94, 64.15)])\nlist(values)\n\n[array([70], dtype=uint8)]\n\n\nThe example above efficiently extracts and downloads a single value instead of the entire GeoTIFF file, saving valuable resources. The /vsicurl/ prefix also works for vector file formats, enabling you to import datasets from online storage with geopandas just by adding it before the vector file URL.\nImportantly, /vsicurl/ is not the only prefix provided by GDAL—many more exist, such as /vsizip/ to read spatial files from ZIP archives without decompressing them beforehand or /vsis3/ for on-the-fly reading files available in AWS S3 buckets. You can learn more about it at https://gdal.org/user/virtual_file_systems.html.\n(To add example of reading rectangular extent…)" + }, + { + "objectID": "08-read-write-plot.html#sec-data-output", + "href": "08-read-write-plot.html#sec-data-output", + "title": "7  Geographic data I/O", + "section": "7.8 Data output (O)", + "text": "7.8 Data output (O)\nWriting geographic data allows you to convert from one format to another and to save newly created objects for permanent storage. Depending on the data type (vector or raster), object class (e.g., GeoDataFrame), and type and amount of stored information (e.g., object size, range of values), it is important to know how to store spatial files in the most efficient way. The next two sections will demonstrate how to do this.\n\n7.8.1 Vector data\nThe counterpart of gpd.read_file is the .to_file method that a GeoDataFrame has. It allows you to write GeoDataFrame objects to a wide range of geographic vector file formats, including the most common, such as .geojson, .shp and .gpkg. Based on the file name, .to_file decides automatically which driver to use. The speed of the writing process depends also on the driver.\n\nworld.to_file('output/world.gpkg')\n\nNote: if you try to write to the same data source again, the function will overwrite the file:\n\nworld.to_file('output/world.gpkg')\n\nInstead of overwriting the file, we could add a new layer to the file with mode='a' (“append” mode, as opposed to the default mode='w' for “write” mode). Appending is supported by several spatial formats, including GeoPackage. For example:\n\nworld.to_file('output/world_many_features.gpkg')\nworld.to_file('output/world_many_features.gpkg', mode='a')\n\nHere, world_many_features.gpkg will contain a polygonal layer named world with two “copies” of each country (that is 177×2=354 features, whereas the world layer has 177 features).\nAlternatively, you can create another, separate, layer, within the same file. The GeoPackage format also supports multiple layers within one file. For example:\n\nworld.to_file('output/world_many_layers.gpkg')\nworld.to_file('output/world_many_layers.gpkg', layer='world2')\n\nIn this case, world_many_layers.gpkg has two “layers”, world_many_layers (same as the file name, when layer is unspecified) and world2. Incidentally, the contents of the two layers is identical, but this doesn’t have to be so. Each layer from such a file can be imported separately, as in:\n\ngpd.read_file('output/world_many_layers.gpkg', layer='world_many_layers').head(1)\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.96\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n\n\n1 rows × 11 columns\n\n\n\n\ngpd.read_file('output/world_many_layers.gpkg', layer='world2').head(1)\n\n\n\n\n\n\n\n\niso_a2\nname_long\ncontinent\n...\nlifeExp\ngdpPercap\ngeometry\n\n\n\n\n0\nFJ\nFiji\nOceania\n...\n69.96\n8222.253784\nMULTIPOLYGON (((-180.00000 -16....\n\n\n\n\n1 rows × 11 columns\n\n\n\n\n\n7.8.2 Raster data\nTo write a raster file using rasterio, we need to pass a raster file path to rasterio.open, in writing ('w') mode. This implies creating a new empty file (or overwriting an existing one). As opposed to read ('r', the default) mode, the rasterio.open function needs quite a lot of information, in addition to the file path and mode:\n\nAn array with the raster values\nMetadata describing the raster format and spatial properties\n\nThe metadata needs to specify the following properties:\n\ndriver—The file format (The recommendation is 'GTiff' for GeoTIFF)\nheight—Number of rows\nwidth—Number of columns\ncount—Number of bands\nnodata—The value which represents “No Data”, if any\ndtype—The raster data type, one of numpy types (e.g., np.int64)\ncrs—The CRS, using an EPSG code (e.g., 4326)\ntransform—The transform matrix\ncompress—A compression method to apply, such as 'lzw'. This is optional and most useful for large rasters. Note that, at the time of writing, this doesn’t work well for writing multiband rasters.\n\nOnce the file connection with the right metadata is ready, we do the actual writing using the .write method of the file connection. If there are several bands we may execute the .write method several times, as in .write(a,n), where a is the array with band values and n is the band index (starting from 1, see below). When done, we close the file connection using the .close method. Some functions, such as rasterio.warp.reproject used for resampling and reprojecting, directly accept a file connection in 'w' mode, thus handling the writing (of a resampled or reprojected raster) for us.\nMost of the properties are either straightforward to choose, based on our aims, (e.g., driver, crs, compress, nodata), or directly derived from the array with the raster values itself (e.g., height, width, count, dtype). The most complicated property is the transform, which specifies the raster origin and resolution. The transform is typically either obtained from an existing raster (serving as a “template”), or created from scratch based on manually specified origin and resolution values (e.g., using rasterio.transform.from_origin), or calculate automatically (e.g., using rasterio.warp.calculate_default_transform).\nEarlier in the book, we have already demonstrated the four most common scenarios of writing rasters:\n\nCreating from scratch (Section 1.3.3)—We created and wrote two rasters from scratch by associating the elev and grain arrays with an arbitrary spatial extent. The custom arbitrary transform created using rasterio.transform.from_origin.\nAggregating (Section 4.4.3)—We wrote an aggregated a raster, by reading a resampled array from an exising raster, then updating the transform using .transform.scale.\nResampling (Section 4.4.4)—We resampled a raster into a custom grid, manually creating the transform using rasterio.transform.from_origin, then resampling and writing the output using rasterio.warp.reproject.\nReprojecting (Section 6.9)—We reprojected a raster into another CRS, by automatically calculating an optimal transform using rasterio.warp.calculate_default_transform, then resampling and writing the output using rasterio.warp.reproject.\n\nA miminal example of writing a raster file named r.tif from scratch (i.e., the 1st scenario), to remind some of these concepts, is given below:\n\n# An array with raster values\nr = np.array([1,2,3,4]).reshape(2,2).astype(np.int8)\nr\n\narray([[1, 2],\n [3, 4]], dtype=int8)\n\n\n\n# Calculating the transform\nnew_transform = rasterio.transform.from_origin(\n west=-0.5, \n north=51.5, \n xsize=2, \n ysize=2\n)\nnew_transform\n\nAffine(2.0, 0.0, -0.5,\n 0.0, -2.0, 51.5)\n\n\n\n# Creating the file connection with the metadata\ndst = rasterio.open(\n 'output/r.tif', 'w', \n driver = 'GTiff',\n height = r.shape[0],\n width = r.shape[1],\n count = 1,\n dtype = r.dtype,\n crs = 4326,\n transform = new_transform\n)\ndst\n\n<open DatasetWriter name='output/r.tif' mode='w'>\n\n\n\n# Writing the array values into the file\ndst.write(r, 1)\n\n\n# Closing the file\ndst.close()\n\nThis code section creates a new file output/r.tif, which is a \\(2 \\times 2\\) raster, having a 2 decimal degree resolution, with the top-left corner placed over London.\nTo summarize, the various scenarios differ in two aspects:\n\nThe way that the transform for the output raster is obtained:\n\nImported from an existing raster (see below)\nCreated from scratch, using rasterio.transform.from_origin (Section 1.3.3)\nCalculate automatically, using rasterio.warp.calculate_default_transform (Section 6.9)\n\nThe way that the raster is written:\n\nUsing the .write method, given an existing array (Section 1.3.3, Section 4.4.3)\nUsing rasterio.warp.reproject to calculate and write a resampled or reprojected array (Section 4.4.4, Section 6.9)\n\n\nTo make the picture of raster export complete, there are three important concepts we haven’t covered yet: array and raster data types, writing multiband rasters, and handling “No Data” values.\nArrays (i.e., ndarray objects defined in package numpy) are used to store raster values when reading them from file, using .read (Section 1.3.2). All values in an array are of the same type, whereas the numpy package supports numerous numeric data types of various precision (and, accordingly, memory footprint). Raster formats, such as GeoTIFF, support exactly the same data types, which means that reading a raster file uses as little RAM as possible. The most relevant types are summarized in Table 7.3.\n\n\nTable 7.3: Numeric numpy data which are commonly used for rasters\n\n\nData type\nDescription\n\n\n\n\nint8\nInteger in a single byte (-128 to 127)\n\n\nint16\nInteger in 16 bits (-32768 to 32767)\n\n\nint32\nInteger in 32 bits (-2147483648 to 2147483647)\n\n\nuint8\nUnsigned integer (0 to 255)\n\n\nuint16\nUnsigned integer (0 to 65535)\n\n\nuint32\nUnsigned integer (0 to 4294967295)\n\n\nfloat16\nHalf-precision (16 bit) float (-65504 to 65504)\n\n\nfloat32\nSingle-precision (32 bit) float (1e-38 to 1e38)\n\n\nfloat64\nDouble-precision (64 bit) float (1e-308 to 1e308)\n\n\n\n\nThe raster data type can be specified when writing a raster (see above). For an existing raster file, the data type is accessible through the .dtype property of the metadata:\n\nrasterio.open('output/r.tif').meta['dtype']\n\n'int8'\n\n\nThe file r.tif has the data type np.int8, which we specified when creating it according to the data type of the original array:\n\nr.dtype\n\ndtype('int8')\n\n\nWhen reading the data back into the Python session, the array with the same data type is recreated:\n\nrasterio.open('output/r.tif').read().dtype\n\ndtype('int8')\n\n\nWriting multiband rasters is similar to writing single-band rasters, only that we need to:\n\nDefine the number of layers (the count property in the metadata) that are going to be in the file we are creating\nExecute the .write method multiple times, once for each layer\n\nFor completeness, let’s demonstrate writing a multi-band raster named r3.tif, which is similar to r.tif, but having three bands with values r, r*2, and r*3 (i.e., the array r multiplied by 1, 2, or 3). Since most of the metadata is going to be the same, this is also a good opportunity to (re-)demonstrate updating an existing metadata object rather than creating one from scratch.\nFirst, let’s make a copy of the metadata we already have in r.tif:\n\ndst_kwds = rasterio.open('output/r.tif').meta.copy()\ndst_kwds\n\n{'driver': 'GTiff',\n 'dtype': 'int8',\n 'nodata': None,\n 'width': 2,\n 'height': 2,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(2.0, 0.0, -0.5,\n 0.0, -2.0, 51.5)}\n\n\nSecond, we update the count entry, replacing 1 (single-band) with 3 (three-band):\n\ndst_kwds.update(count=3)\ndst_kwds\n\n{'driver': 'GTiff',\n 'dtype': 'int8',\n 'nodata': None,\n 'width': 2,\n 'height': 2,\n 'count': 3,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(2.0, 0.0, -0.5,\n 0.0, -2.0, 51.5)}\n\n\nFinally, we can create a file connection using the updated metadata and then write the values of the three bands:\n\ndst = rasterio.open('output/r3.tif', 'w', **dst_kwds)\ndst.write(r, 1)\ndst.write(r*2, 2)\ndst.write(r*3, 3)\ndst.close()\n\nAs a result, a three-band raster named r3.tif is created.\nRasters often contain “No Data” values, representing missing data, e.g., unreliable measurement due to clouds or pixels outside of the photographed extent. In a numpy ndarray object, “No Data” values may be represented by the special np.nan value. However, due to computer memory limitations, only arrays of type float can contain np.nan, while arrays of type int cannot. For int rasters containing “No Data”, we typically mark missing data with a specific value beyond the valid range (e.g., -9999). The missing data “flag” is stored in the file (set through the nodata property of the file connection, see above). When reading an int raster with “No Data” back into Python, we need to be aware of these flags. Let’s demonstrate through examples.\nWe will start with the simpler case, rasters of type float. Since float arrays may contain the “native” value np.nan, representing “No Data” is straightforward. For example, suppose that we have a float array with np.nan:\n\nr = np.array([1.1,2.1,np.nan,4.1]).reshape(2,2)\nr\n\narray([[1.1, 2.1],\n [nan, 4.1]])\n\n\n\nr.dtype\n\ndtype('float64')\n\n\nWhen writing the array to file, we do not need to specify any particular nodata value:\n\ndst = rasterio.open(\n 'output/r_nodata_float.tif', 'w', \n driver = 'GTiff',\n height = r.shape[0],\n width = r.shape[1],\n count = 1,\n dtype = r.dtype,\n crs = 4326,\n transform = new_transform\n)\ndst.write(r, 1)\ndst.close()\n\nThis is equivalent to nodata=None:\n\nrasterio.open('output/r_nodata_float.tif').meta\n\n{'driver': 'GTiff',\n 'dtype': 'float64',\n 'nodata': None,\n 'width': 2,\n 'height': 2,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(2.0, 0.0, -0.5,\n 0.0, -2.0, 51.5)}\n\n\nReading from the raster back into the Python session reproduces the same exact array, with np.nan:\n\nrasterio.open('output/r_nodata_float.tif').read()\n\narray([[[1.1, 2.1],\n [nan, 4.1]]])\n\n\nNow, suppose that we have an np.int32 array with missing data, which is inevitably flagged using a specific int value such as -9999 (remember that we can’t store np.nan in an int array!):\n\nr = np.array([1,2,-9999,4]).reshape(2,2).astype(np.int32)\nr\n\narray([[ 1, 2],\n [-9999, 4]], dtype=int32)\n\n\n\nr.dtype\n\ndtype('int32')\n\n\nWhen writing the array to file, we must specify nodata=-9999 to keep track of our “No Data” flag:\n\ndst = rasterio.open(\n 'output/r_nodata_int.tif', 'w', \n driver = 'GTiff',\n height = r.shape[0],\n width = r.shape[1],\n count = 1,\n dtype = r.dtype,\n nodata = -9999,\n crs = 4326,\n transform = new_transform\n)\ndst.write(r, 1)\ndst.close()\n\nExamining the metadata confirms that the nodata=-9999 setting was stored in the file r_nodata_int.tif.\n\nrasterio.open('output/r_nodata_int.tif').meta\n\n{'driver': 'GTiff',\n 'dtype': 'int32',\n 'nodata': -9999.0,\n 'width': 2,\n 'height': 2,\n 'count': 1,\n 'crs': CRS.from_epsg(4326),\n 'transform': Affine(2.0, 0.0, -0.5,\n 0.0, -2.0, 51.5)}\n\n\nIf you try to open the file in GIS software, such as QGIS, you will see the missing data interpreted (e.g., the pixel shown as blank), meaning that the software is aware of the flag. However, reading the data back into Python reproduces an int array with -9999, for the same reason stated before:\n\nsrc = rasterio.open('output/r_nodata_int.tif')\nr = src.read()\nr\n\narray([[[ 1, 2],\n [-9999, 4]]], dtype=int32)\n\n\nThe Python user must thefore be mindful of “No Data” int rasters, for example to avoid interpreting the value -9999 literally. For example, if we “forget” about the nodata flag, the literal calculation of the .mean would incorrectly include the value -9999:\n\nr.mean()\n\n-2498.0\n\n\nThere are two basic ways to deal with the situation:\n\nConverting the raster to float\nUsing “No Data” masks\n\nFirst, particularly with small rasters where memory constraints are irrelevant, it may be more convenient to go from int to float, to gain the ability of the natural np.nan representation. Here is how we can do this with r_nodata_int.tif. We detect the missing data flag, conver the raster to float, and assign np.nan into the cells that are supposed to be missing:\n\nmask = r == src.nodata\nr = r.astype(np.float64)\nr[mask] = np.nan\nr\n\narray([[[ 1., 2.],\n [nan, 4.]]])\n\n\nFrom there on, we deal with np.nan the usual way, such as using np.nanmean to calculate the mean excluding “No Data”:\n\nnp.nanmean(r)\n\n2.3333333333333335\n\n\nThe second approach is to read the values into a so-called “masked” array, using the argument masked=True. A masked array can be thought of as an extended ndarray, with two components: .data (the values) and .mask (a corresponding boolean array marking “No Data” values):\n\nr = src.read(masked=True)\nr\n\nmasked_array(\n data=[[[1, 2],\n [--, 4]]],\n mask=[[[False, False],\n [ True, False]]],\n fill_value=-9999,\n dtype=int32)\n\n\nUsing masked arrays is beyond the scope of this book. However, the basic idea is that many numpy operations “honor” the mask, so that the user does not have to keep track of the way that “No Data” values are marked, similarly to the natural np.nan representation. For example, the .mean of a masked array ignores the value -9999, because it is masked, taking into account just the valid values 1, 2, and 4:\n\nr.mean()\n\n2.3333333333333335\n\n\nKeep in mind that, somewhat confusingly, float rasters may represent “No Data” using a specific value (such as -9999.0), instead, or in addition to (!), the native np.nan representation. In such cases, the same considerations shown for int apply to float rasters as well." + }, + { + "objectID": "08-read-write-plot.html#sec-visual-outputs", + "href": "08-read-write-plot.html#sec-visual-outputs", + "title": "7  Geographic data I/O", + "section": "7.9 Visual outputs", + "text": "7.9 Visual outputs\nVisual outputs can be exported to a file using the plt.savefig function. For example, the following code section recreates Figure 7.3 (see above), but this time the last expression saves the image to a JPG image named plot_geopandas.jpg:\n\nfig, axes = plt.subplots(ncols=2, figsize=(9,5))\ntanzania.plot(ax=axes[0], color='lightgrey', edgecolor='grey')\ntanzania_neigh.plot(ax=axes[1], color='lightgrey', edgecolor='grey')\ntanzania_buf.plot(ax=axes[1], color='none', edgecolor='red')\naxes[0].set_title('where')\naxes[1].set_title('mask')\ntanzania.apply(lambda x: axes[0].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1)\ntanzania_neigh.apply(lambda x: axes[1].annotate(text=x['name_long'], xy=x.geometry.centroid.coords[0], ha='center'), axis=1);\nplt.savefig('output/plot_geopandas.jpg')\n\nFigures with rasters can be exported exactly the same way. For example, the following code section (see next chapter…) creates an image of a raster and a vector layer, which is then exported to a file named plot_rasterio.jpg:\n\nfig, ax = plt.subplots(figsize=(5, 5))\nrasterio.plot.show(nz_elev, ax=ax)\nnz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='r');\nplt.savefig('output/plot_rasterio.jpg')\n\nImage file properties can be controlled through the plt.subplots and plt.savefig parameters. For example, the following code section exports the same raster plot to a file named plot_rasterio2.svg, which has different dimensions (width = 5 \\(in\\), height = 7 \\(in\\)), a different format (SVG), and different resolution (300 \\(DPI\\):)\n\nfig, ax = plt.subplots(figsize=(5, 7))\nrasterio.plot.show(nz_elev, ax=ax)\nnz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='r');\nplt.savefig('output/plot_rasterio2.svg', dpi=300)" + }, + { + "objectID": "08-read-write-plot.html#exercises", + "href": "08-read-write-plot.html#exercises", + "title": "7  Geographic data I/O", + "section": "7.10 Exercises", + "text": "7.10 Exercises" + }, + { + "objectID": "08-read-write-plot.html#footnotes", + "href": "08-read-write-plot.html#footnotes", + "title": "7  Geographic data I/O", + "section": "", + "text": "For example, visit https://freegisdata.rtwilson.com/ for a list of websites with freely available geographic datasets.↩︎" + }, + { + "objectID": "09-mapping.html#prerequisites", + "href": "09-mapping.html#prerequisites", + "title": "8  Making maps with Python", + "section": "8.1 Prerequisites", + "text": "8.1 Prerequisites\nLet’s import the required packages:\n\nimport matplotlib.pyplot as plt\nimport geopandas as gpd\nimport rasterio\nimport rasterio.plot\n\nand load the sample data for this chapter:\n\nnz = gpd.read_file('data/nz.gpkg')\nnz_height = gpd.read_file('data/nz_height.gpkg')\nnz_elev = rasterio.open('data/nz_elev.tif')" + }, + { + "objectID": "09-mapping.html#introduction", + "href": "09-mapping.html#introduction", + "title": "8  Making maps with Python", + "section": "8.2 Introduction", + "text": "8.2 Introduction\n\n\n\nA satisfying and important aspect of geographic research is communicating the results. Map making—the art of cartography—is an ancient skill that involves communication, intuition, and an element of creativity. In addition to being fun and creative, cartography also has important practical applications. A carefully crafted map can be the best way of communicating the results of your work, but poorly designed maps can leave a bad impression. Common design issues include poor placement, size and readability of text and careless selection of colors, as outlined in the style guide of the Journal of Maps. Furthermore, poor map making can hinder the communication of results (Brewer 2015, add citation…):\n\nAmateur-looking maps can undermine your audience’s ability to understand important information and weaken the presentation of a professional data investigation. Maps have been used for several thousand years for a wide variety of purposes. Historic examples include maps of buildings and land ownership in the Old Babylonian dynasty more than 3000 years ago and Ptolemy’s world map in his masterpiece Geography nearly 2000 years ago (Talbert 2014, add citation…).\n\nMap making has historically been an activity undertaken only by, or on behalf of, the elite. This has changed with the emergence of open source mapping software such as mapping packages in Python, R, and other languages, and the “print composer” in QGIS which enable anyone to make high-quality maps, enabling “citizen science”. Maps are also often the best way to present the findings of geocomputational research in a way that is accessible. Map making is therefore a critical part of geocomputation and its emphasis not only on describing, but also changing the world.\nBasic static display of vector layers in Python is done with the .plot method or the rasterio.plot.show function, for vector layers and rasters, as we saw in Sections Section 1.2.2 and Section 1.3.2, respectively. Other, more advaned uses of these methods, were also encountered in later chapters, when demonstrating the various outputs we got. In this chapter, we provide a comprehensive summary of the most useful workflows of these two methods for creating static maps (Section 8.3). Then, we move on to elaborate on the .explore method for creating interactive maps, which was also briefly introduced earlier (Section 1.2.2)." + }, + { + "objectID": "09-mapping.html#sec-static-maps", + "href": "09-mapping.html#sec-static-maps", + "title": "8  Making maps with Python", + "section": "8.3 Static maps", + "text": "8.3 Static maps\nStatic maps are the most common type of visual output from geocomputation. Standard formats include .png and .pdf for raster and vector outputs, respectively. Static maps can be easily shared and viewed (whether digitally or in print), however they can only convey as much information as a static image can. Interactive maps provide much more flexibilty in terms of user experience and amout of information, however they often require more work to design and effectively share.\n\n\nLet’s move on to the basics of static mapping with Python.\nA vector layer (GeoDataFrame) or a geometry column (GeoSeries) can be displayed using their .plot method. Most common visual properties include color, edgecolor, and markersize (for points) (Figure 8.1):\n\nnz.plot(color='grey');\nnz.plot(color='none', edgecolor='blue');\nnz.plot(color='grey', edgecolor='blue');\n\n\n\n\n\n\n\n(a) Grey fill\n\n\n\n\n\n\n\n(b) No fill, blue edge\n\n\n\n\n\n\n\n(c) Grey fill, blue edge\n\n\n\n\nFigure 8.1: Setting color and edgecolor in static maps of a vector layer\n\n\n\nAs shown in Section 1.3.2, you can plot raster datasets using rasterio.plot.show, as follows (Figure 8.2):\n\nrasterio.plot.show(nz_elev);\n\n\n\n\nFigure 8.2: Plotting a raster using rasterio.plot.show\n\n\n\n\nYou can combine the raster and vector plotting methods shown above into a single visualisation with multiple layers, which we already used earlier when explaining masking and cropping (Figure 5.1). For example, Figure 8.3 demonstrated plotting a raster with increasingly complicated additions:\n\nThe left panel shows a raster (New Zealand elevation) and a vector layer (New Zealand administrative division)\nThe center panel shows the raster with a buffer of 22.2 \\(km\\) around the dissolved administrative borders, representing New Zealand’s territorial waters (see Section 3.4.6)\nThe right panel shows the raster with two vector layers: the territorial waters (in red) and elevation measurement points (in yellow)\n\n\n\n# Raster + vector layer\nfig, ax = plt.subplots(figsize=(5, 5))\nrasterio.plot.show(nz_elev, ax=ax)\nnz.to_crs(nz_elev.crs).plot(ax=ax, facecolor='none', edgecolor='red');\n\n# Raster + computed vector layer\nfig, ax = plt.subplots(figsize=(5, 5))\nrasterio.plot.show(nz_elev, ax=ax)\ngpd.GeoSeries(nz.unary_union, crs=nz.crs) \\\n .to_crs(nz_elev.crs) \\\n .buffer(22200) \\\n .boundary \\\n .plot(ax=ax, color='red');\n\n# Raster + two vector layers\nfig, ax = plt.subplots(figsize=(5, 5))\nrasterio.plot.show(nz_elev, ax=ax)\ngpd.GeoSeries(nz.unary_union, crs=nz.crs) \\\n .to_crs(nz_elev.crs) \\\n .buffer(22200) \\\n .exterior \\\n .plot(ax=ax, color='red')\nnz_height.to_crs(nz_elev.crs).plot(ax=ax, color='yellow');\n\n\n\n\n\n\n\n(a) Raster + vector layer\n\n\n\n\n\n\n\n(b) Raster + computed vector layer\n\n\n\n\n\n\n\n(c) Raster + two vector layers\n\n\n\n\nFigure 8.3: Combining a raster and vector layers in the same plot\n\n\n\n\n8.3.1 Palettes\nTo complete…\n\n\n8.3.2 Layers\nTo complete…\n\n\n8.3.3 Faceted maps\nTo complete…\n\n\n8.3.4 Exporting maps as images\nTo complete…" + }, + { + "objectID": "09-mapping.html#interactive-maps", + "href": "09-mapping.html#interactive-maps", + "title": "8  Making maps with Python", + "section": "8.4 Interactive maps", + "text": "8.4 Interactive maps\n\nWhen are interactive maps useful\n\nAn interactive map is an important way to understand and interpret complex geographical information. A good interactive map enables movement across the map area, change the area of interest and provide additional context or text information. In this section we will look an interactive map based of national public transport access nodes (NaPTAN), the UK Department for Transport repository of public transport point-of-interest in England, Scotland and Wales consisting of: - bus stops and railway stations - tram, metro and underground stops - airports and ferry terminals\nWe will show how to create this may restricted to railway stations, tram stops and ferry terminals in Yorkshire. This will also match data to the National Rail customer reservation code (CRS) and timing point location (TIPLOC) attributes used in the the national rail timetable.\nIn the first code block we define a function get_databuffer that uses the requests library to download the NaPTAN data-set in CSV format to a StringIO buffer.\n\nimport io\nimport requests\n\ndef get_databuffer(uri, encoding='UTF-8'):\n \"\"\"Download data from URI and returns as an StringIO buffer\"\"\"\n r = requests.get(uri, timeout=10)\n return io.StringIO(str(r.content, encoding))\n\n# NaPTAN data service\nURI='https://multiple-la-generator-dot-dft-add-naptan-prod.ew.r.appspot.com/v1/access-nodes?dataFormat=csv'\nBUFFER = get_databuffer(URI)\n\nWe then read the in-memory string-buffer into a Panda data-frame, treating the buffer as if it were a CSV file. We then extract the location data into a numpy two-dimensional array.\n\nimport pandas as pd\n\nDF1 = pd.read_csv(BUFFER, low_memory=False)\nDATA = DF1[['Longitude', 'Latitude']].values\n\nWe then convert the \\(transposed data-array\\) into a GeoSeries and use this to create a GeoDataFrame. Which we then tidy by dropping any columns that only contain invalid (pd.NA) values.\n\nimport geopandas as gpd\n\nPOINTS = gpd.points_from_xy(*DATA.T, crs='WGS84')\nNaPTAN = gpd.GeoDataFrame(data=DF1, geometry=POINTS)\n\nNaPTAN = NaPTAN.dropna(how='all', axis=1)\n\nThe next step is to create the timing-point TIPLOC data based on the StopType and a subset of the ATCOCode columns.\n\nNaPTAN['TIPLOC'] = ''\n# Heavy railway stations\nIDX1 = NaPTAN['StopType'] == 'RLY'\nNaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[4:]\n\n# Ferrys\nIDX1 = NaPTAN['StopType'] == 'FER'\nNaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[4:]\n\n# Metro and trams\nIDX1 = NaPTAN['StopType'] == 'MET'\nNaPTAN.loc[IDX1, 'TIPLOC'] = NaPTAN['ATCOCode'].str[6:]\n\nWe extract the heavy and light rail, or ferry locationsFrom the 435,298 rows in the NaPTAN data-frame.\n\nIDX1 = NaPTAN['StopType'].isin(['RLY', 'FER', 'MET'])\nSTATIONS = NaPTAN[IDX1]\n\nFilter columns and drop points within Yorkshire.\n\nFIELDS = ['ATCOCode', 'CommonName', 'ShortCommonName', 'LocalityName',\n 'StopType', 'Status', 'TIPLOC', 'geometry']\n\n# Clean up data-frame columns\nSTATIONS = STATIONS[FIELDS]\n\nYORKSHIRE = gpd.read_file('data/yorkshire.json').iloc[0, 0]\nIDX = STATIONS.within(YORKSHIRE)\n\nSTATIONS = STATIONS[IDX]\n\n# Write to GeoJSON\nSTATIONS.to_file('stations.geojson', driver='GeoJSON')\n# Write file to GeoPackage\n\nOUTPUT = STATIONS.copy()\nCRS = 'EPSG:32630'\nOUTPUT['geometry'] = OUTPUT['geometry'].to_crs(CRS)\nOUTPUT.to_file('stations.gpkg', driver='GPKG', layer='stations')\n\n\nHoloviews: facetted plotting\nPanel: allows you to create applications/dashboards\n\n\n8.4.1 GeoPandas explore\n…\n\n\n8.4.2 Layers\n…\n\n\n8.4.3 Publishing interactive maps\n…\n\n\n8.4.4 Linking geographic and non-geographic visualisations\n…" + }, + { + "objectID": "09-mapping.html#exercises", + "href": "09-mapping.html#exercises", + "title": "8  Making maps with Python", + "section": "8.5 Exercises", + "text": "8.5 Exercises" + } +] \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..de5321e8 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,43 @@ + + + + https://py.geocompx.org/index.html + 2023-08-11T12:58:28.106Z + + + https://py.geocompx.org/preface.html + 2023-08-11T12:58:28.114Z + + + https://py.geocompx.org/02-spatial-data.html + 2023-08-11T12:58:28.206Z + + + https://py.geocompx.org/03-attribute-operations.html + 2023-08-11T12:58:28.318Z + + + https://py.geocompx.org/04-spatial-operations.html + 2023-08-11T12:58:28.486Z + + + https://py.geocompx.org/05-geometry-operations.html + 2023-08-11T12:58:28.562Z + + + https://py.geocompx.org/06-raster-vector.html + 2023-08-11T12:58:28.646Z + + + https://py.geocompx.org/07-reproj.html + 2023-08-11T12:58:28.706Z + + + https://py.geocompx.org/08-read-write-plot.html + 2023-08-11T12:58:28.794Z + + + https://py.geocompx.org/09-mapping.html + 2023-08-11T12:58:28.814Z + +

+ +