├── .gitignore
├── Readme.MD
├── data
├── csv
│ └── population.csv
├── geojson
│ └── municipality.json
├── geotiff
│ ├── MODIS_18Dec17_NIR.tif
│ ├── MODIS_18Dec17_RED.tif
│ ├── MODIS_18Nov02_NIR.tif
│ ├── MODIS_18Nov02_RED.tif
│ ├── nepal_lc_2020.tif
│ └── srtm_57_08_1.tif
└── shp
│ ├── municipality.dbf
│ ├── municipality.json
│ ├── municipality.prj
│ ├── municipality.sbn
│ ├── municipality.sbx
│ ├── municipality.shp
│ ├── municipality.shp.xml
│ ├── municipality.shx
│ ├── nepal_district
│ ├── district.dbf
│ ├── district.prj
│ ├── district.shp
│ └── district.shx
│ ├── pokhara.cpg
│ ├── pokhara.dbf
│ ├── pokhara.prj
│ ├── pokhara.sbn
│ ├── pokhara.sbx
│ ├── pokhara.shp
│ ├── pokhara.shp.xml
│ └── pokhara.shx
├── image
├── LULC class.png
├── SpatialDataModel.png
├── dataframe.svg
├── geopandas_output.png
├── gpd_map_output.jpg
├── lulc_class_dn_values.png
├── rasterstats.png
└── zones_elevation.png
└── notebooks
├── .ipynb_checkpoints
├── 01. Raster analysis with python-checkpoint.ipynb
└── 02. Vector analysis with python-checkpoint.ipynb
├── 01. Raster analysis with python.ipynb
├── 02. Vector analysis with python.ipynb
├── 03. Raster state with python.ipynb
├── 04. big_data_with_dask.ipynb
├── 05. beautiful_maps_with_geopandas.ipynb
├── 06. addband_remove_band.ipynb
└── 07. geoparquet_basic.ipynb
/.gitignore:
--------------------------------------------------------------------------------
1 | output/
2 | html/
3 |
4 | .ipynb_checkpoints/
5 | parquet/
--------------------------------------------------------------------------------
/Readme.MD:
--------------------------------------------------------------------------------
1 | # Documentation
2 |
3 | It is the GitHub repo for the Udemy course: [Geospatial data analysis with python](https://www.udemy.com/course/geospatial-data-analysis-with-python/?referralCode=5B58238C5392672D17B7)
4 |
5 | ## Course Outline
6 |
7 | ### 1. Vector data analysis with geopandas and shaply
8 | Geopandas, built on Python, is a powerful library for working with geospatial data. It leverages the capabilities of Pandas for data manipulation and couples it with tools from Shapely and other libraries to handle geometric objects. Geopandas enables efficient handling of geospatial datasets, allowing users to read, write, analyze, and visualize various spatial formats like shapefiles, GeoJSON, and more. It offers functionalities such as spatial joins, overlays, geometric operations, and map plotting, making it a go-to choice for tasks involving geographic data analysis, manipulation, and visualization within a familiar Pandas framework.
9 |
10 | 
11 |
12 | ### 2. Raster data analysis with Rasterio
13 | Rasterio is an essential Python library tailored for raster data analysis, offering a robust suite of tools for working with geospatial raster datasets. Leveraging the power of GDAL (Geospatial Data Abstraction Library), Rasterio facilitates the reading, writing, and processing of diverse raster formats such as satellite imagery, digital elevation models, and aerial photographs. Its functionalities enable users to efficiently access, manipulate, and extract information from raster data, perform complex geospatial operations, and seamlessly integrate with other Python libraries for advanced analysis and visualization, making it a pivotal tool for raster data exploration and analysis within the Python ecosystem.
14 |
15 | 
16 |
17 | ### 3. Beautiful map layout using geopandas
18 | Geopandas provides a versatile framework for creating visually stunning and informative map layouts. By leveraging its integration with Matplotlib, Geopandas allows users to craft visually appealing maps with ease. With functionalities for plotting spatial data directly from GeoDataFrames, users can customize map elements, such as colors, legends, labels, and symbology, to effectively communicate spatial information. Additionally, Geopandas' compatibility with other visualization libraries like Seaborn and Plotly extends the possibilities for creating interactive and polished map visualizations. Whether for professional presentations, data exploration, or publication-ready visualizations, Geopandas empowers users to craft beautiful and informative map layouts that effectively convey complex spatial insights.
19 |
20 | 
21 |
22 | ### 4. Working with large datasets using Dask
23 | Dask is a versatile parallel computing library in Python designed to handle large datasets that do not fit into memory. It provides efficient tools for distributed computing and task scheduling, allowing users to process data that exceeds the memory capacity of a single machine. With Dask, users can perform computations in parallel across multiple cores or even on clusters, utilizing its array, data frame, and bag collections to manage and manipulate large datasets seamlessly. Its ability to scale to larger-than-memory datasets makes it an ideal choice for tasks involving big data analytics, machine learning, and other computationally intensive operations where traditional tools might struggle. By harnessing Dask's capabilities, users can efficiently tackle large-scale data processing and analysis while optimizing computational resources.
24 |
25 | ### 5. Generate raster statistics using raster stats
26 | The `rasterstats` library in Python is a powerful tool for generating statistics from raster datasets based on vector geometries. Leveraging the capabilities of `rasterio` and `fiona`, `rasterstats` allows users to extract statistics, such as mean, sum, count, or custom calculations, from a raster dataset (like satellite imagery or elevation data) based on the geometries defined in vector data (such as polygons or points). By overlaying vector geometries on the raster, it computes summary statistics for each geometry, providing valuable insights into the characteristics of the underlying raster data within those specific regions or features. This library facilitates efficient analysis, making it useful for tasks like land cover analysis, environmental studies, and various geospatial analyses by aggregating raster information according to defined vector regions.
27 |
28 | 
29 |
30 |
--------------------------------------------------------------------------------
/data/csv/population.csv:
--------------------------------------------------------------------------------
1 | District,registered voters,Total population,,DIST UPPER
2 | Achham,257477,127742,,ACHHAM
3 | Arghakhanchi,197632,126699,,ARGHAKHANCHI
4 | Baglung,268613,156802,,BAGLUNG
5 | Baitadi,250898,124824,,BAITADI
6 | Bajhang,195159,97610,,BAJHANG
7 | Bajura,134912,64950,,BAJURA
8 | Banke,491313,246078,,BANKE
9 | Bara,687708,333678,,BARA
10 | Bardiya,426576,253185,,BARDIYA
11 | Bhaktapur,304651,161529,,BHAKTAPUR
12 | Bhojpur,182459,105553,,BHOJPUR
13 | Chitwan,579984,313002,,CHITAWAN
14 | Dadeldhura,142094,75780,,DADELDHURA
15 | Dailekh,261770,132965,,DAILEKH
16 | Dang,552583,291150,,DANG
17 | Darchula,133274,72906,,DARCHULA
18 | Dhading,336067,206002,,DHADING
19 | Dhankuta,163412,95367,,DHANKUTA
20 | Dhanusa,754777,389386,,DHANUSHA
21 | Dolakha,186557,133482,,DOLAKHA
22 | Dolpa,36700,16703,,DOLPA
23 | Doti,211746,100887,,DOTI
24 | Gorkha,271061,169046,,GORKHA
25 | Gulmi,280160,180775,,GULMI
26 | Humla,50858,24562,,HUMLA
27 | Ilam,290254,189274,,ILAM
28 | Jajarkot,171304,78947,,JAJARKOT
29 | Jhapa,812650,510216,,JHAPA
30 | Jumla,108921,54677,,JUMLA
31 | Kailali,775709,403280,,KAILALI
32 | Kalikot,136948,61028,,KALIKOT
33 | Kanchanpur,451248,235735,,KANCHANPUR
34 | Kapilbastu,571936,286548,,KAPILBASTU
35 | Kaski,492098,224811,,KASKI
36 | Kathmandu,1744240,559400,,KATHMANDU
37 | Kavrepalanchok,381937,230849,,KABHREPALANCHOK
38 | Khotang,206312,115644,,KHOTANG
39 | Lalitpur,468132,213073,,LALITPUR
40 | Lamjung,167724,105992,,LAMJUNG
41 | Mahottari,627580,308404,,MAHOTTARI
42 | Makwanpur,420477,227759,,MAKAWANPUR
43 | Manang,6538,5095,,MANANG
44 | Morang,965370,563870,,MORANG
45 | Mugu,55286,27435,,MUGU
46 | Mustang,13452,8263,,MUSTANG
47 | Myagdi,113641,71463,,MYAGDI
48 | Nawalparasi,643508,369894,,NAWALPARASI
49 | Nuwakot,277471,185782,,NUWAKOT
50 | Okhaldhunga,147984,91508,,OKHALDHUNGA
51 | Palpa,261180,162253,,PALPA
52 | Panchthar,191817,116626,,PANCHTHAR
53 | Parbat,146590,99243,,PARBAT
54 | Parsa,601017,280211,,PARSA
55 | Pyuthan,228102,127447,,PYUTHAN
56 | Ramechhap,202646,134620,,RAMECHHAP
57 | Rasuwa,43300,27756,,RASUWA
58 | Rautahat,686722,323450,,RAUTAHAT
59 | Rolpa,224506,114243,,ROLPA
60 | Rukum,208567,101932,,RUKUM
61 | Rupandehi,880196,458616,,RUPANDEHI
62 | Salyan,242444,125256,,SALYAN
63 | Sankhuwasabha,158742,96657,,SANKHUWASABHA
64 | Saptari,639284,331462,,SAPTARI
65 | Sarlahi,769729,366605,,SARLAHI
66 | Sindhuli,296192,168247,,SINDHULI
67 | Sindhupalchok,287798,198681,,SINDHUPALCHOK
68 | Siraha,637328,331596,,SIRAHA
69 | Solukhumbu,105886,61746,,SOLUKHUMBU
70 | Sunsari,763487,421159,,SUNSARI
71 | Surkhet,350804,184399,,SURKHET
72 | Syangja,289148,191253,,SYANGJA
73 | Tanahu,323288,194471,,TANAHU
74 | Taplejung,127461,70778,,TAPLEJUNG
75 | Terhathum,101577,60704,,TERHATHUM
76 | Udayapur,317532,175461,,UDAYAPUR
77 |
--------------------------------------------------------------------------------
/data/geotiff/MODIS_18Dec17_NIR.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/MODIS_18Dec17_NIR.tif
--------------------------------------------------------------------------------
/data/geotiff/MODIS_18Dec17_RED.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/MODIS_18Dec17_RED.tif
--------------------------------------------------------------------------------
/data/geotiff/MODIS_18Nov02_NIR.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/MODIS_18Nov02_NIR.tif
--------------------------------------------------------------------------------
/data/geotiff/MODIS_18Nov02_RED.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/MODIS_18Nov02_RED.tif
--------------------------------------------------------------------------------
/data/geotiff/nepal_lc_2020.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/nepal_lc_2020.tif
--------------------------------------------------------------------------------
/data/geotiff/srtm_57_08_1.tif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/geotiff/srtm_57_08_1.tif
--------------------------------------------------------------------------------
/data/shp/municipality.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/municipality.dbf
--------------------------------------------------------------------------------
/data/shp/municipality.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/shp/municipality.sbn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/municipality.sbn
--------------------------------------------------------------------------------
/data/shp/municipality.sbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/municipality.sbx
--------------------------------------------------------------------------------
/data/shp/municipality.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/municipality.shp
--------------------------------------------------------------------------------
/data/shp/municipality.shp.xml:
--------------------------------------------------------------------------------
1 |
2 | 20200812162003001.0FALSEmunicipality_code_gen002file://\\HKD\E$\Me\0Data\Nepal.gdbLocal Area Network0.000GeographicGCS_WGS_1984Angular Unit: Degree (0.017453)<GeographicCoordinateSystem xsi:type='typens:GeographicCoordinateSystem' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/10.5'><WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433],AUTHORITY["EPSG",4326]]</WKT><XOrigin>-400</XOrigin><YOrigin>-400</YOrigin><XYScale>11258999068426.238</XYScale><ZOrigin>-100000</ZOrigin><ZScale>10000</ZScale><MOrigin>-100000</MOrigin><MScale>10000</MScale><XYTolerance>8.983152841195215e-009</XYTolerance><ZTolerance>0.001</ZTolerance><MTolerance>0.001</MTolerance><HighPrecision>true</HighPrecision><LeftLongitude>-180</LeftLongitude><WKID>4326</WKID><LatestWKID>4326</LatestWKID></GeographicCoordinateSystem>SimplifyPolygon municipality_code e:\Me\0Data\del\municipality_code_gen.shp POINT_REMOVE "20 Meters" "0 Unknown" RESOLVE_ERRORS KEEP_COLLAPSED_POINTS #CalculateField "Municipal boundary" OBJECTID [FID]+1 VB #20200812140907002020081214090700 Version 6.2 (Build 9200) ; Esri ArcGIS 10.5.0.6491municipality_code_genShapefile0.000datasetEPSG6.14(3.0.1)0SimpleFALSE0FALSEFALSEmunicipality_code_genFeature Class0FIDFIDOID400Internal feature number.EsriSequential unique whole numbers that are automatically generated.OBJECTIDOBJECTIDInteger10100Internal feature number.EsriSequential unique whole numbers that are automatically generated.ShapeShapeGeometry000Feature geometry.EsriCoordinates defining the features.DISTRICTDISTRICTString5000GaPa_NaPaGaPa_NaPaString5000Type_GNType_GNString5000ProvinceProvinceString5000SCodeSCodeInteger10100DCodeDCodeInteger10100SDDSDDInteger10100MCodeMCodeInteger10100lengthlengthDouble1900areaareaDouble1900SDDMMSDDMMInteger10100Shape_LengShape_LengDouble1900Shape_AreaShape_AreaDouble1900Area of feature in internal units squared.EsriPositive real numbers that are automatically generated.NepaliNepaliString500020200812
3 |
--------------------------------------------------------------------------------
/data/shp/municipality.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/municipality.shx
--------------------------------------------------------------------------------
/data/shp/nepal_district/district.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/nepal_district/district.dbf
--------------------------------------------------------------------------------
/data/shp/nepal_district/district.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/shp/nepal_district/district.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/nepal_district/district.shp
--------------------------------------------------------------------------------
/data/shp/nepal_district/district.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/nepal_district/district.shx
--------------------------------------------------------------------------------
/data/shp/pokhara.cpg:
--------------------------------------------------------------------------------
1 | UTF-8
--------------------------------------------------------------------------------
/data/shp/pokhara.dbf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/pokhara.dbf
--------------------------------------------------------------------------------
/data/shp/pokhara.prj:
--------------------------------------------------------------------------------
1 | GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
--------------------------------------------------------------------------------
/data/shp/pokhara.sbn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/pokhara.sbn
--------------------------------------------------------------------------------
/data/shp/pokhara.sbx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/pokhara.sbx
--------------------------------------------------------------------------------
/data/shp/pokhara.shp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/pokhara.shp
--------------------------------------------------------------------------------
/data/shp/pokhara.shp.xml:
--------------------------------------------------------------------------------
1 |
2 | 20210730100015001.0FALSEmunicipality_code_gen002file://\\HKD\E$\Me\0Data\Nepal.gdbLocal Area Network0.000GeographicGCS_WGS_1984Angular Unit: Degree (0.017453)<GeographicCoordinateSystem xsi:type='typens:GeographicCoordinateSystem' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:typens='http://www.esri.com/schemas/ArcGIS/10.5'><WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433],AUTHORITY["EPSG",4326]]</WKT><XOrigin>-400</XOrigin><YOrigin>-400</YOrigin><XYScale>11258999068426.238</XYScale><ZOrigin>-100000</ZOrigin><ZScale>10000</ZScale><MOrigin>-100000</MOrigin><MScale>10000</MScale><XYTolerance>8.983152841195215e-009</XYTolerance><ZTolerance>0.001</ZTolerance><MTolerance>0.001</MTolerance><HighPrecision>true</HighPrecision><LeftLongitude>-180</LeftLongitude><WKID>4326</WKID><LatestWKID>4326</LatestWKID></GeographicCoordinateSystem>SimplifyPolygon municipality_code e:\Me\0Data\del\municipality_code_gen.shp POINT_REMOVE "20 Meters" "0 Unknown" RESOLVE_ERRORS KEEP_COLLAPSED_POINTS #CalculateField "Municipal boundary" OBJECTID [FID]+1 VB #20200812140907002020081214090700 Version 6.2 (Build 9200) ; Esri ArcGIS 10.5.0.6491municipality_code_genShapefile0.000datasetEPSG6.14(3.0.1)0SimpleFALSE0FALSEFALSEmunicipality_code_genFeature Class0FIDFIDOID400Internal feature number.EsriSequential unique whole numbers that are automatically generated.OBJECTIDOBJECTIDInteger10100Internal feature number.EsriSequential unique whole numbers that are automatically generated.ShapeShapeGeometry000Feature geometry.EsriCoordinates defining the features.DISTRICTDISTRICTString5000GaPa_NaPaGaPa_NaPaString5000Type_GNType_GNString5000ProvinceProvinceString5000SCodeSCodeInteger10100DCodeDCodeInteger10100SDDSDDInteger10100MCodeMCodeInteger10100lengthlengthDouble1900areaareaDouble1900SDDMMSDDMMInteger10100Shape_LengShape_LengDouble1900Shape_AreaShape_AreaDouble1900Area of feature in internal units squared.EsriPositive real numbers that are automatically generated.NepaliNepaliString500020200812
3 |
--------------------------------------------------------------------------------
/data/shp/pokhara.shx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/data/shp/pokhara.shx
--------------------------------------------------------------------------------
/image/LULC class.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/LULC class.png
--------------------------------------------------------------------------------
/image/SpatialDataModel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/SpatialDataModel.png
--------------------------------------------------------------------------------
/image/dataframe.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
203 |
--------------------------------------------------------------------------------
/image/geopandas_output.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/geopandas_output.png
--------------------------------------------------------------------------------
/image/gpd_map_output.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/gpd_map_output.jpg
--------------------------------------------------------------------------------
/image/lulc_class_dn_values.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/lulc_class_dn_values.png
--------------------------------------------------------------------------------
/image/rasterstats.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/rasterstats.png
--------------------------------------------------------------------------------
/image/zones_elevation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/iamtekson/geospatial-data-analysis-python/4717ca6090fb0f01362eba09e56cd71cb4806185/image/zones_elevation.png
--------------------------------------------------------------------------------
/notebooks/03. Raster state with python.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "id": "ccd0c635",
6 | "metadata": {},
7 | "source": [
8 | "# Raster states\n",
9 | "\n",
10 | "rasterstats is a Python module for summarizing geospatial raster datasets based on vector geometries. It includes functions for zonal statistics and interpolated point queries.\n",
11 | "\n",
12 | "The instalation can be done with pip,\n",
13 | "\n",
14 | "```bash\n",
15 | "pip install rasterstats\n",
16 | "```\n",
17 | "\n",
18 | "installation with conda,\n",
19 | "\n",
20 | "```bash\n",
21 | "conda install -c conda-forge rasterstats\n",
22 | "```\n",
23 | "\n",
24 | "By default, the zonal_stats function will return the following statistics: `min`, `max`, `mean`,`count`. But, optionally, these statistics are also available: `sum`, `std`, `median`, `majority`, `minority`, `unique`, `range`, `nodata`, `percentile`."
25 | ]
26 | },
27 | {
28 | "cell_type": "code",
29 | "execution_count": 14,
30 | "id": "49b0e2f4",
31 | "metadata": {},
32 | "outputs": [],
33 | "source": [
34 | "from rasterstats import zonal_stats\n",
35 | "import pandas as pd"
36 | ]
37 | },
38 | {
39 | "cell_type": "markdown",
40 | "id": "393af3a2",
41 | "metadata": {},
42 | "source": [
43 | "## Constant variables"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 9,
49 | "id": "b931c520",
50 | "metadata": {},
51 | "outputs": [],
52 | "source": [
53 | "DIR_MUNICIPALITY_SHP = r\"../data/shp/municipality.shp\"\n",
54 | "DIR_POKHARA_SHP = r\"../data/shp/pokhara.shp\"\n",
55 | "DIR_LULC = r\"../data/geotiff/nepal_lc_2020.tif\"\n",
56 | "DIR_SRTM = r\"../data/geotiff/srtm_57_08_1.tif\""
57 | ]
58 | },
59 | {
60 | "cell_type": "markdown",
61 | "id": "8d82ac48",
62 | "metadata": {},
63 | "source": [
64 | "##### Raster stats for single feature"
65 | ]
66 | },
67 | {
68 | "cell_type": "code",
69 | "execution_count": 18,
70 | "id": "50025c15",
71 | "metadata": {},
72 | "outputs": [
73 | {
74 | "data": {
75 | "text/plain": [
76 | "[{'min': 10.0, 'max': 210.0, 'mean': 55.69660281893748, 'count': 5534}]"
77 | ]
78 | },
79 | "execution_count": 18,
80 | "metadata": {},
81 | "output_type": "execute_result"
82 | }
83 | ],
84 | "source": [
85 | "# zonal stats of raster\n",
86 | "zonal_stats(DIR_POKHARA_SHP, DIR_LULC)"
87 | ]
88 | },
89 | {
90 | "cell_type": "markdown",
91 | "id": "3dcd2122",
92 | "metadata": {},
93 | "source": [
94 | "##### Raster stats for multiple features"
95 | ]
96 | },
97 | {
98 | "cell_type": "code",
99 | "execution_count": 20,
100 | "id": "a12ec516",
101 | "metadata": {},
102 | "outputs": [
103 | {
104 | "data": {
105 | "text/plain": [
106 | "[{'min': 10.0, 'max': 121.0, 'mean': 47.148042024832854, 'count': 1047},\n",
107 | " {'min': 10.0, 'max': 130.0, 'mean': 60.31011097410604, 'count': 1622},\n",
108 | " {'min': 10.0, 'max': 130.0, 'mean': 63.60129136400323, 'count': 2478},\n",
109 | " {'min': 10.0, 'max': 220.0, 'mean': 89.81027894535728, 'count': 5234},\n",
110 | " {'min': 10.0, 'max': 220.0, 'mean': 131.13959737657132, 'count': 21956},\n",
111 | " {'min': 10.0, 'max': 120.0, 'mean': 61.545638945233264, 'count': 1479},\n",
112 | " {'min': 10.0, 'max': 130.0, 'mean': 67.40462427745665, 'count': 2422},\n",
113 | " {'min': 10.0, 'max': 220.0, 'mean': 92.84327176781002, 'count': 5685},\n",
114 | " {'min': 10.0, 'max': 100.0, 'mean': 53.39944903581267, 'count': 1089},\n",
115 | " {'min': 10.0, 'max': 120.0, 'mean': 61.100370218017275, 'count': 2431},\n",
116 | " {'min': 10.0, 'max': 130.0, 'mean': 56.57710651828299, 'count': 1258},\n",
117 | " {'min': 10.0, 'max': 210.0, 'mean': 48.99038461538461, 'count': 1456},\n",
118 | " {'min': 10.0, 'max': 130.0, 'mean': 60.89349112426036, 'count': 1521},\n",
119 | " {'min': 10.0, 'max': 121.0, 'mean': 58.75574859478794, 'count': 1957},\n",
120 | " {'min': 10.0, 'max': 210.0, 'mean': 57.31244483671668, 'count': 2266},\n",
121 | " {'min': 10.0, 'max': 130.0, 'mean': 60.17489114658926, 'count': 1378},\n",
122 | " {'min': 30.0, 'max': 130.0, 'mean': 67.47106764466177, 'count': 2454},\n",
123 | " {'min': 10.0, 'max': 121.0, 'mean': 48.79009433962264, 'count': 1272},\n",
124 | " {'min': 10.0, 'max': 130.0, 'mean': 54.07079252003562, 'count': 2246},\n",
125 | " {'min': 10.0, 'max': 121.0, 'mean': 45.7546875, 'count': 1280},\n",
126 | " {'min': 10.0, 'max': 121.0, 'mean': 54.09799118079373, 'count': 2041},\n",
127 | " {'min': 10.0, 'max': 130.0, 'mean': 53.44713870029098, 'count': 3093},\n",
128 | " {'min': 10.0, 'max': 130.0, 'mean': 53.64783427495292, 'count': 1593},\n",
129 | " {'min': 10.0, 'max': 121.0, 'mean': 62.48936170212766, 'count': 2021},\n",
130 | " {'min': 10.0, 'max': 121.0, 'mean': 55.57498616491422, 'count': 1807},\n",
131 | " {'min': 11.0, 'max': 121.0, 'mean': 60.18712493180578, 'count': 1833},\n",
132 | " {'min': 10.0, 'max': 121.0, 'mean': 54.3014733660748, 'count': 2647},\n",
133 | " {'min': 10.0, 'max': 130.0, 'mean': 25.36760124610592, 'count': 1284},\n",
134 | " {'min': 10.0, 'max': 20.0, 'mean': 10.630180658873538, 'count': 941},\n",
135 | " {'min': 10.0, 'max': 210.0, 'mean': 15.843555555555556, 'count': 1125},\n",
136 | " {'min': 10.0, 'max': 190.0, 'mean': 14.159041394335512, 'count': 918},\n",
137 | " {'min': 10.0, 'max': 190.0, 'mean': 44.544871794871796, 'count': 936},\n",
138 | " {'min': 10.0, 'max': 190.0, 'mean': 25.82593037214886, 'count': 833},\n",
139 | " {'min': 10.0, 'max': 190.0, 'mean': 11.773809523809524, 'count': 1764},\n",
140 | " {'min': 10.0, 'max': 210.0, 'mean': 11.426756985605419, 'count': 1181},\n",
141 | " {'min': 10.0, 'max': 121.0, 'mean': 31.394181818181817, 'count': 1375},\n",
142 | " {'min': 10.0, 'max': 60.0, 'mean': 10.72054794520548, 'count': 1095},\n",
143 | " {'min': 10.0, 'max': 100.0, 'mean': 13.035294117647059, 'count': 1275},\n",
144 | " {'min': 10.0, 'max': 100.0, 'mean': 12.444991789819376, 'count': 1218},\n",
145 | " {'min': 10.0, 'max': 130.0, 'mean': 21.375541125541126, 'count': 924},\n",
146 | " {'min': 10.0, 'max': 190.0, 'mean': 24.85226264418811, 'count': 2254},\n",
147 | " {'min': 10.0, 'max': 130.0, 'mean': 18.076742823667253, 'count': 1707},\n",
148 | " {'min': 10.0, 'max': 190.0, 'mean': 26.981993569131834, 'count': 1555},\n",
149 | " {'min': 10.0, 'max': 190.0, 'mean': 37.41832229580574, 'count': 906},\n",
150 | " {'min': 10.0, 'max': 190.0, 'mean': 19.0381679389313, 'count': 655},\n",
151 | " {'min': 10.0, 'max': 20.0, 'mean': 15.890243902439025, 'count': 820},\n",
152 | " {'min': 10.0, 'max': 30.0, 'mean': 14.287410926365796, 'count': 842},\n",
153 | " {'min': 10.0, 'max': 20.0, 'mean': 19.62962962962963, 'count': 729},\n",
154 | " {'min': 10.0, 'max': 100.0, 'mean': 24.68125, 'count': 960},\n",
155 | " {'min': 10.0, 'max': 190.0, 'mean': 14.7682119205298, 'count': 604},\n",
156 | " {'min': 10.0, 'max': 130.0, 'mean': 54.50581846392552, 'count': 2578},\n",
157 | " {'min': 10.0, 'max': 190.0, 'mean': 51.96378504672897, 'count': 2568},\n",
158 | " {'min': 10.0, 'max': 130.0, 'mean': 51.2171581769437, 'count': 1865},\n",
159 | " {'min': 10.0, 'max': 190.0, 'mean': 20.068595927116828, 'count': 933},\n",
160 | " {'min': 10.0, 'max': 20.0, 'mean': 16.9032749428789, 'count': 1313},\n",
161 | " {'min': 10.0, 'max': 130.0, 'mean': 13.15105740181269, 'count': 1655},\n",
162 | " {'min': 10.0, 'max': 121.0, 'mean': 25.348062015503874, 'count': 1290},\n",
163 | " {'min': 10.0, 'max': 20.0, 'mean': 15.274258219727345, 'count': 1247},\n",
164 | " {'min': 10.0, 'max': 190.0, 'mean': 17.621436716077536, 'count': 877},\n",
165 | " {'min': 10.0, 'max': 210.0, 'mean': 53.86991557943208, 'count': 2606},\n",
166 | " {'min': 10.0, 'max': 20.0, 'mean': 17.736318407960198, 'count': 804},\n",
167 | " {'min': 10.0, 'max': 100.0, 'mean': 18.51150202976996, 'count': 739},\n",
168 | " {'min': 10.0, 'max': 210.0, 'mean': 21.35566188197767, 'count': 627},\n",
169 | " {'min': 10.0, 'max': 190.0, 'mean': 55.32109685979655, 'count': 2261},\n",
170 | " {'min': 10.0, 'max': 190.0, 'mean': 18.925, 'count': 800},\n",
171 | " {'min': 10.0, 'max': 20.0, 'mean': 15.395674300254452, 'count': 786},\n",
172 | " {'min': 10.0, 'max': 190.0, 'mean': 19.407166123778502, 'count': 614},\n",
173 | " {'min': 10.0, 'max': 190.0, 'mean': 17.11437908496732, 'count': 918},\n",
174 | " {'min': 10.0, 'max': 190.0, 'mean': 28.603088101725703, 'count': 1101},\n",
175 | " {'min': 10.0, 'max': 210.0, 'mean': 34.41891891891892, 'count': 888},\n",
176 | " {'min': 10.0, 'max': 190.0, 'mean': 21.876750700280112, 'count': 1071},\n",
177 | " {'min': 10.0, 'max': 210.0, 'mean': 97.87150127226464, 'count': 786},\n",
178 | " {'min': 10.0, 'max': 130.0, 'mean': 56.785714285714285, 'count': 1736},\n",
179 | " {'min': 10.0, 'max': 130.0, 'mean': 46.17323481116585, 'count': 1218},\n",
180 | " {'min': 10.0, 'max': 121.0, 'mean': 38.52578906851424, 'count': 1299},\n",
181 | " {'min': 10.0, 'max': 210.0, 'mean': 48.8586118251928, 'count': 1167},\n",
182 | " {'min': 10.0, 'max': 130.0, 'mean': 51.73795379537954, 'count': 1515},\n",
183 | " {'min': 10.0, 'max': 210.0, 'mean': 49.08362779740872, 'count': 1698},\n",
184 | " {'min': 10.0, 'max': 210.0, 'mean': 57.532547411583806, 'count': 1951},\n",
185 | " {'min': 10.0, 'max': 210.0, 'mean': 46.168447837150126, 'count': 1965},\n",
186 | " {'min': 10.0, 'max': 130.0, 'mean': 45.392020265991135, 'count': 1579},\n",
187 | " {'min': 10.0, 'max': 121.0, 'mean': 46.05099150141643, 'count': 1059},\n",
188 | " {'min': 10.0, 'max': 70.0, 'mean': 54.45169082125604, 'count': 828},\n",
189 | " {'min': 10.0, 'max': 130.0, 'mean': 48.3901192504259, 'count': 1174},\n",
190 | " {'min': 10.0, 'max': 121.0, 'mean': 43.19815668202765, 'count': 1302},\n",
191 | " {'min': 10.0, 'max': 220.0, 'mean': 89.45160918214327, 'count': 8669},\n",
192 | " {'min': 10.0, 'max': 210.0, 'mean': 55.133206831119544, 'count': 2635},\n",
193 | " {'min': 10.0, 'max': 100.0, 'mean': 57.59942911512845, 'count': 1051},\n",
194 | " {'min': 10.0, 'max': 210.0, 'mean': 56.68575063613232, 'count': 1572},\n",
195 | " {'min': 10.0, 'max': 210.0, 'mean': 47.41436464088398, 'count': 1448},\n",
196 | " {'min': 10.0, 'max': 70.0, 'mean': 58.338201383551116, 'count': 1301},\n",
197 | " {'min': 10.0, 'max': 220.0, 'mean': 104.21467487440742, 'count': 14133},\n",
198 | " {'min': 10.0, 'max': 120.0, 'mean': 55.18821510297483, 'count': 1748},\n",
199 | " {'min': 10.0, 'max': 130.0, 'mean': 68.1283422459893, 'count': 2618},\n",
200 | " {'min': 10.0, 'max': 220.0, 'mean': 74.23356926188069, 'count': 5934},\n",
201 | " {'min': 10.0, 'max': 210.0, 'mean': 48.770114942528735, 'count': 2175},\n",
202 | " {'min': 10.0, 'max': 210.0, 'mean': 42.30382513661202, 'count': 1830},\n",
203 | " {'min': 10.0, 'max': 121.0, 'mean': 48.54173312068049, 'count': 1881},\n",
204 | " {'min': 10.0, 'max': 210.0, 'mean': 44.20023837902264, 'count': 1678},\n",
205 | " {'min': 10.0, 'max': 210.0, 'mean': 42.32663316582914, 'count': 1393},\n",
206 | " {'min': 10.0, 'max': 100.0, 'mean': 47.13304721030043, 'count': 1864},\n",
207 | " {'min': 10.0, 'max': 130.0, 'mean': 57.53802447552447, 'count': 2288},\n",
208 | " {'min': 10.0, 'max': 210.0, 'mean': 47.27580133849947, 'count': 2839},\n",
209 | " {'min': 10.0, 'max': 130.0, 'mean': 48.68462291870715, 'count': 2042},\n",
210 | " {'min': 10.0, 'max': 130.0, 'mean': 51.480983031012286, 'count': 1709},\n",
211 | " {'min': 10.0, 'max': 110.0, 'mean': 54.91289023162135, 'count': 1986},\n",
212 | " {'min': 10.0, 'max': 220.0, 'mean': 144.23959018189788, 'count': 18252},\n",
213 | " {'min': 10.0, 'max': 130.0, 'mean': 66.30570652173913, 'count': 1472},\n",
214 | " {'min': 10.0, 'max': 220.0, 'mean': 113.17875343002744, 'count': 7653},\n",
215 | " {'min': 10.0, 'max': 100.0, 'mean': 51.24120603015076, 'count': 796},\n",
216 | " {'min': 10.0, 'max': 220.0, 'mean': 78.06973959892248, 'count': 6682},\n",
217 | " {'min': 10.0, 'max': 110.0, 'mean': 58.936677631578945, 'count': 1216},\n",
218 | " {'min': 10.0, 'max': 190.0, 'mean': 54.70671140939597, 'count': 1490},\n",
219 | " {'min': 10.0, 'max': 190.0, 'mean': 40.5450416351249, 'count': 1321},\n",
220 | " {'min': 11.0, 'max': 130.0, 'mean': 62.7905119774542, 'count': 2129},\n",
221 | " {'min': 10.0, 'max': 190.0, 'mean': 60.75478927203065, 'count': 1044},\n",
222 | " {'min': 10.0, 'max': 210.0, 'mean': 43.82686740011581, 'count': 1727},\n",
223 | " {'min': 10.0, 'max': 190.0, 'mean': 52.20889894419306, 'count': 1326},\n",
224 | " {'min': 10.0, 'max': 130.0, 'mean': 51.68888888888889, 'count': 1980},\n",
225 | " {'min': 10.0, 'max': 210.0, 'mean': 47.65339578454333, 'count': 1708},\n",
226 | " {'min': 10.0, 'max': 130.0, 'mean': 53.614141414141415, 'count': 1485},\n",
227 | " {'min': 10.0, 'max': 210.0, 'mean': 57.0162552679109, 'count': 1661},\n",
228 | " {'min': 10.0, 'max': 130.0, 'mean': 52.337694704049845, 'count': 1605},\n",
229 | " {'min': 10.0, 'max': 210.0, 'mean': 51.71181818181818, 'count': 3300},\n",
230 | " {'min': 10.0, 'max': 210.0, 'mean': 53.830575777630706, 'count': 1511},\n",
231 | " {'min': 10.0, 'max': 120.0, 'mean': 59.3656914893617, 'count': 2256},\n",
232 | " {'min': 10.0, 'max': 130.0, 'mean': 46.53020134228188, 'count': 1937},\n",
233 | " {'min': 10.0, 'max': 190.0, 'mean': 55.063533507397736, 'count': 1149},\n",
234 | " {'min': 10.0, 'max': 130.0, 'mean': 47.20784583620097, 'count': 2906},\n",
235 | " {'min': 10.0, 'max': 130.0, 'mean': 57.09186906019007, 'count': 947},\n",
236 | " {'min': 10.0, 'max': 210.0, 'mean': 47.75489703666499, 'count': 3982},\n",
237 | " {'min': 10.0, 'max': 210.0, 'mean': 46.45773381294964, 'count': 3336},\n",
238 | " {'min': 10.0, 'max': 210.0, 'mean': 48.702897102897104, 'count': 5005},\n",
239 | " {'min': 10.0, 'max': 121.0, 'mean': 51.975843398583926, 'count': 2401},\n",
240 | " {'min': 10.0, 'max': 210.0, 'mean': 51.99444003177125, 'count': 1259},\n",
241 | " {'min': 10.0, 'max': 210.0, 'mean': 57.74320457796853, 'count': 1398},\n",
242 | " {'min': 10.0, 'max': 210.0, 'mean': 50.45108103904184, 'count': 6429},\n",
243 | " {'min': 10.0, 'max': 190.0, 'mean': 49.819413803971, 'count': 3173},\n",
244 | " {'min': 10.0, 'max': 130.0, 'mean': 30.403225806451612, 'count': 62},\n",
245 | " {'min': 10.0, 'max': 130.0, 'mean': 38.04730290456432, 'count': 1205},\n",
246 | " {'min': 10.0, 'max': 130.0, 'mean': 18.721227621483376, 'count': 391},\n",
247 | " {'min': 10.0, 'max': 20.0, 'mean': 10.878136200716845, 'count': 558},\n",
248 | " {'min': 10.0, 'max': 20.0, 'mean': 11.194379391100703, 'count': 427},\n",
249 | " {'min': 10.0, 'max': 20.0, 'mean': 13.573487031700289, 'count': 694},\n",
250 | " {'min': 10.0, 'max': 20.0, 'mean': 12.395604395604396, 'count': 455},\n",
251 | " {'min': 10.0, 'max': 20.0, 'mean': 13.514925373134329, 'count': 804},\n",
252 | " {'min': 10.0, 'max': 210.0, 'mean': 91.64548736462093, 'count': 1385},\n",
253 | " {'min': 10.0, 'max': 210.0, 'mean': 40.209150326797385, 'count': 1377},\n",
254 | " {'min': 10.0, 'max': 100.0, 'mean': 21.090669014084508, 'count': 1136},\n",
255 | " {'min': 10.0, 'max': 130.0, 'mean': 17.13235294117647, 'count': 408},\n",
256 | " {'min': 10.0, 'max': 190.0, 'mean': 18.12213740458015, 'count': 655},\n",
257 | " {'min': 10.0, 'max': 130.0, 'mean': 22.29742033383915, 'count': 659},\n",
258 | " {'min': 10.0, 'max': 190.0, 'mean': 41.35294117647059, 'count': 714},\n",
259 | " {'min': 10.0, 'max': 100.0, 'mean': 30.202511773940344, 'count': 1274},\n",
260 | " {'min': 10.0, 'max': 130.0, 'mean': 21.906995230524643, 'count': 1258},\n",
261 | " {'min': 10.0, 'max': 210.0, 'mean': 29.177377892030847, 'count': 389},\n",
262 | " {'min': 10.0, 'max': 130.0, 'mean': 14.783599088838269, 'count': 439},\n",
263 | " {'min': 10.0, 'max': 210.0, 'mean': 32.59759036144578, 'count': 830},\n",
264 | " {'min': 10.0, 'max': 20.0, 'mean': 15.06787330316742, 'count': 442},\n",
265 | " {'min': 10.0, 'max': 20.0, 'mean': 19.021479713603817, 'count': 419},\n",
266 | " {'min': 10.0, 'max': 20.0, 'mean': 14.97737556561086, 'count': 442},\n",
267 | " {'min': 10.0, 'max': 130.0, 'mean': 17.246753246753247, 'count': 385},\n",
268 | " {'min': 10.0, 'max': 20.0, 'mean': 14.35897435897436, 'count': 312},\n",
269 | " {'min': 10.0, 'max': 130.0, 'mean': 27.645677694770544, 'count': 1874},\n",
270 | " {'min': 10.0, 'max': 100.0, 'mean': 20.888973384030418, 'count': 1315},\n",
271 | " {'min': 10.0, 'max': 210.0, 'mean': 21.804226918798665, 'count': 899},\n",
272 | " {'min': 10.0, 'max': 210.0, 'mean': 34.50055248618784, 'count': 905},\n",
273 | " {'min': 10.0, 'max': 190.0, 'mean': 23.570188871873405, 'count': 1959},\n",
274 | " {'min': 10.0, 'max': 20.0, 'mean': 11.586345381526105, 'count': 498},\n",
275 | " {'min': 10.0, 'max': 100.0, 'mean': 22.909926470588236, 'count': 1088},\n",
276 | " {'min': 10.0, 'max': 20.0, 'mean': 12.982456140350877, 'count': 342},\n",
277 | " {'min': 10.0, 'max': 20.0, 'mean': 13.121693121693122, 'count': 378},\n",
278 | " {'min': 10.0, 'max': 130.0, 'mean': 23.102564102564102, 'count': 390},\n",
279 | " {'min': 10.0, 'max': 210.0, 'mean': 22.680505415162454, 'count': 1108},\n",
280 | " {'min': 10.0, 'max': 20.0, 'mean': 15.0625, 'count': 640},\n",
281 | " {'min': 10.0, 'max': 210.0, 'mean': 17.8476821192053, 'count': 302},\n",
282 | " {'min': 10.0, 'max': 20.0, 'mean': 12.953929539295393, 'count': 369},\n",
283 | " {'min': 10.0, 'max': 30.0, 'mean': 16.685499058380415, 'count': 531},\n",
284 | " {'min': 10.0, 'max': 130.0, 'mean': 15.28735632183908, 'count': 609},\n",
285 | " {'min': 10.0, 'max': 20.0, 'mean': 17.441860465116278, 'count': 258},\n",
286 | " {'min': 10.0, 'max': 100.0, 'mean': 17.784644194756556, 'count': 1068},\n",
287 | " {'min': 10.0, 'max': 210.0, 'mean': 46.09888965995836, 'count': 2882},\n",
288 | " {'min': 10.0, 'max': 20.0, 'mean': 17.4430823117338, 'count': 571},\n",
289 | " {'min': 10.0, 'max': 210.0, 'mean': 28.523219814241486, 'count': 323},\n",
290 | " {'min': 10.0, 'max': 190.0, 'mean': 27.715078630897317, 'count': 1081},\n",
291 | " {'min': 10.0, 'max': 210.0, 'mean': 27.638709677419357, 'count': 775},\n",
292 | " {'min': 10.0, 'max': 20.0, 'mean': 18.158640226628894, 'count': 353},\n",
293 | " {'min': 10.0, 'max': 130.0, 'mean': 40.04285069914299, 'count': 2217},\n",
294 | " {'min': 10.0, 'max': 20.0, 'mean': 17.5, 'count': 444},\n",
295 | " {'min': 10.0, 'max': 20.0, 'mean': 19.84375, 'count': 320},\n",
296 | " {'min': 10.0, 'max': 190.0, 'mean': 19.52173913043478, 'count': 460},\n",
297 | " {'min': 10.0, 'max': 210.0, 'mean': 21.182654402102497, 'count': 761},\n",
298 | " {'min': 10.0, 'max': 210.0, 'mean': 19.761194029850746, 'count': 670},\n",
299 | " {'min': 10.0, 'max': 20.0, 'mean': 15.271867612293144, 'count': 423},\n",
300 | " {'min': 10.0, 'max': 20.0, 'mean': 18.953488372093023, 'count': 516},\n",
301 | " {'min': 10.0, 'max': 130.0, 'mean': 43.858373721055465, 'count': 3714},\n",
302 | " {'min': 10.0, 'max': 130.0, 'mean': 12.850877192982455, 'count': 912},\n",
303 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 286},\n",
304 | " {'min': 10.0, 'max': 130.0, 'mean': 28.985907222548445, 'count': 1703},\n",
305 | " {'min': 10.0, 'max': 210.0, 'mean': 21.8042226487524, 'count': 521},\n",
306 | " {'min': 10.0, 'max': 20.0, 'mean': 18.088737201365188, 'count': 586},\n",
307 | " {'min': 10.0, 'max': 20.0, 'mean': 19.666666666666668, 'count': 330},\n",
308 | " {'min': 10.0, 'max': 20.0, 'mean': 19.828767123287673, 'count': 584},\n",
309 | " {'min': 10.0, 'max': 190.0, 'mean': 21.305637982195847, 'count': 337},\n",
310 | " {'min': 10.0, 'max': 190.0, 'mean': 19.473684210526315, 'count': 475},\n",
311 | " {'min': 10.0, 'max': 20.0, 'mean': 18.189655172413794, 'count': 464},\n",
312 | " {'min': 10.0, 'max': 20.0, 'mean': 18.74015748031496, 'count': 254},\n",
313 | " {'min': 10.0, 'max': 190.0, 'mean': 18.896907216494846, 'count': 679},\n",
314 | " {'min': 10.0, 'max': 130.0, 'mean': 32.44006705783738, 'count': 1193},\n",
315 | " {'min': 10.0, 'max': 210.0, 'mean': 26.555360281195078, 'count': 569},\n",
316 | " {'min': 10.0, 'max': 130.0, 'mean': 20.23771790808241, 'count': 1262},\n",
317 | " {'min': 10.0, 'max': 210.0, 'mean': 22.636103151862464, 'count': 349},\n",
318 | " {'min': 10.0, 'max': 20.0, 'mean': 19.96951219512195, 'count': 328},\n",
319 | " {'min': 10.0, 'max': 30.0, 'mean': 19.489795918367346, 'count': 392},\n",
320 | " {'min': 10.0, 'max': 210.0, 'mean': 21.62162162162162, 'count': 296},\n",
321 | " {'min': 10.0, 'max': 210.0, 'mean': 20.23049645390071, 'count': 564},\n",
322 | " {'min': 10.0, 'max': 210.0, 'mean': 20.055350553505534, 'count': 542},\n",
323 | " {'min': 10.0, 'max': 190.0, 'mean': 20.086805555555557, 'count': 576},\n",
324 | " {'min': 10.0, 'max': 130.0, 'mean': 29.6875, 'count': 784},\n",
325 | " {'min': 10.0, 'max': 190.0, 'mean': 20.10989010989011, 'count': 364},\n",
326 | " {'min': 10.0, 'max': 190.0, 'mean': 33.49688888888889, 'count': 1125},\n",
327 | " {'min': 10.0, 'max': 130.0, 'mean': 36.33679294239751, 'count': 1927},\n",
328 | " {'min': 10.0, 'max': 190.0, 'mean': 21.320422535211268, 'count': 568},\n",
329 | " {'min': 10.0, 'max': 20.0, 'mean': 19.899328859060404, 'count': 298},\n",
330 | " {'min': 10.0, 'max': 130.0, 'mean': 43.58620689655172, 'count': 2813},\n",
331 | " {'min': 10.0, 'max': 190.0, 'mean': 22.668539325842698, 'count': 356},\n",
332 | " {'min': 10.0, 'max': 20.0, 'mean': 19.66542750929368, 'count': 269},\n",
333 | " {'min': 10.0, 'max': 210.0, 'mean': 23.685897435897434, 'count': 312},\n",
334 | " {'min': 10.0, 'max': 210.0, 'mean': 44.93660130718954, 'count': 4590},\n",
335 | " {'min': 10.0, 'max': 190.0, 'mean': 57.43473844591163, 'count': 1969},\n",
336 | " {'min': 10.0, 'max': 190.0, 'mean': 58.46387482742752, 'count': 2173},\n",
337 | " {'min': 10.0, 'max': 130.0, 'mean': 55.56542056074766, 'count': 4066},\n",
338 | " {'min': 10.0, 'max': 190.0, 'mean': 55.69101123595506, 'count': 5696},\n",
339 | " {'min': 10.0, 'max': 130.0, 'mean': 57.36187214611872, 'count': 3504},\n",
340 | " {'min': 10.0, 'max': 210.0, 'mean': 56.79286694101509, 'count': 2187},\n",
341 | " {'min': 10.0, 'max': 210.0, 'mean': 55.51417666303163, 'count': 1834},\n",
342 | " {'min': 10.0, 'max': 190.0, 'mean': 52.83993948562784, 'count': 3305},\n",
343 | " {'min': 10.0, 'max': 130.0, 'mean': 58.07959305804907, 'count': 1671},\n",
344 | " {'min': 10.0, 'max': 130.0, 'mean': 65.9677145284622, 'count': 2354},\n",
345 | " {'min': 10.0, 'max': 190.0, 'mean': 46.12260967379078, 'count': 1778},\n",
346 | " {'min': 10.0, 'max': 190.0, 'mean': 48.59836623553438, 'count': 1469},\n",
347 | " {'min': 10.0, 'max': 190.0, 'mean': 44.40080160320641, 'count': 2495},\n",
348 | " {'min': 10.0, 'max': 210.0, 'mean': 45.151983298538624, 'count': 2395},\n",
349 | " {'min': 10.0, 'max': 130.0, 'mean': 56.33599202392821, 'count': 1003},\n",
350 | " {'min': 10.0, 'max': 220.0, 'mean': 87.47874133732908, 'count': 5339},\n",
351 | " {'min': 10.0, 'max': 100.0, 'mean': 54.71055381400209, 'count': 957},\n",
352 | " {'min': 10.0, 'max': 190.0, 'mean': 49.35286624203822, 'count': 1570},\n",
353 | " {'min': 10.0, 'max': 220.0, 'mean': 88.64672794622034, 'count': 7289},\n",
354 | " {'min': 10.0, 'max': 220.0, 'mean': 108.288206905086, 'count': 8081},\n",
355 | " {'min': 10.0, 'max': 220.0, 'mean': 67.78662930344275, 'count': 2498},\n",
356 | " {'min': 10.0, 'max': 190.0, 'mean': 51.61259541984733, 'count': 1572},\n",
357 | " {'min': 10.0, 'max': 130.0, 'mean': 43.1201171875, 'count': 1024},\n",
358 | " {'min': 10.0, 'max': 110.0, 'mean': 53.01114754098361, 'count': 1525},\n",
359 | " {'min': 10.0, 'max': 190.0, 'mean': 50.36494845360825, 'count': 970},\n",
360 | " {'min': 10.0, 'max': 130.0, 'mean': 50.50205761316872, 'count': 729},\n",
361 | " {'min': 10.0, 'max': 130.0, 'mean': 50.35696361355082, 'count': 1594},\n",
362 | " {'min': 10.0, 'max': 220.0, 'mean': 68.61536135470215, 'count': 3307},\n",
363 | " {'min': 10.0, 'max': 130.0, 'mean': 47.37927514037774, 'count': 1959},\n",
364 | " {'min': 10.0, 'max': 220.0, 'mean': 77.56202457577531, 'count': 3418},\n",
365 | " {'min': 10.0, 'max': 200.0, 'mean': 46.8035143769968, 'count': 1252},\n",
366 | " {'min': 10.0, 'max': 220.0, 'mean': 96.86768232472845, 'count': 7089},\n",
367 | " {'min': 10.0, 'max': 100.0, 'mean': 53.048885077186966, 'count': 1166},\n",
368 | " {'min': 10.0, 'max': 190.0, 'mean': 44.24130663856691, 'count': 1898},\n",
369 | " {'min': 10.0, 'max': 220.0, 'mean': 82.20774715744845, 'count': 5189},\n",
370 | " {'min': 10.0, 'max': 100.0, 'mean': 49.89017341040462, 'count': 865},\n",
371 | " {'min': 11.0, 'max': 130.0, 'mean': 62.60717488789238, 'count': 1115},\n",
372 | " {'min': 10.0, 'max': 190.0, 'mean': 50.76315789473684, 'count': 646},\n",
373 | " {'min': 10.0, 'max': 100.0, 'mean': 58.328859060402685, 'count': 1192},\n",
374 | " {'min': 10.0, 'max': 130.0, 'mean': 53.953831948291786, 'count': 1083},\n",
375 | " {'min': 10.0, 'max': 130.0, 'mean': 36.11754537597234, 'count': 1157},\n",
376 | " {'min': 10.0, 'max': 190.0, 'mean': 44.48840803709428, 'count': 647},\n",
377 | " {'min': 10.0, 'max': 121.0, 'mean': 56.01741935483871, 'count': 1550},\n",
378 | " {'min': 10.0, 'max': 120.0, 'mean': 55.295156179266634, 'count': 2209},\n",
379 | " {'min': 10.0, 'max': 190.0, 'mean': 44.94269340974212, 'count': 1047},\n",
380 | " {'min': 10.0, 'max': 190.0, 'mean': 44.17912900575185, 'count': 1217},\n",
381 | " {'min': 10.0, 'max': 190.0, 'mean': 51.65453247680228, 'count': 1401},\n",
382 | " {'min': 10.0, 'max': 190.0, 'mean': 48.122950819672134, 'count': 1220},\n",
383 | " {'min': 10.0, 'max': 190.0, 'mean': 56.43457267020763, 'count': 2071},\n",
384 | " {'min': 10.0, 'max': 190.0, 'mean': 46.854304635761586, 'count': 1057},\n",
385 | " {'min': 10.0, 'max': 130.0, 'mean': 56.06575963718821, 'count': 1323},\n",
386 | " {'min': 10.0, 'max': 190.0, 'mean': 62.747581354441515, 'count': 1137},\n",
387 | " {'min': 10.0, 'max': 120.0, 'mean': 54.12643678160919, 'count': 522},\n",
388 | " {'min': 10.0, 'max': 190.0, 'mean': 153.53846153846155, 'count': 429},\n",
389 | " {'min': 11.0, 'max': 190.0, 'mean': 120.83653846153847, 'count': 312},\n",
390 | " {'min': 10.0, 'max': 121.0, 'mean': 58.504615384615384, 'count': 975},\n",
391 | " {'min': 11.0, 'max': 190.0, 'mean': 185.35064935064935, 'count': 77},\n",
392 | " {'min': 10.0, 'max': 190.0, 'mean': 87.62082777036048, 'count': 749},\n",
393 | " {'min': 10.0, 'max': 190.0, 'mean': 166.22727272727272, 'count': 132},\n",
394 | " {'min': 10.0, 'max': 190.0, 'mean': 99.13267326732674, 'count': 505},\n",
395 | " {'min': 10.0, 'max': 190.0, 'mean': 81.29904306220095, 'count': 418},\n",
396 | " {'min': 10.0, 'max': 190.0, 'mean': 80.56866537717602, 'count': 517},\n",
397 | " {'min': 10.0, 'max': 190.0, 'mean': 42.15674603174603, 'count': 504},\n",
398 | " {'min': 10.0, 'max': 190.0, 'mean': 60.55426917510854, 'count': 691},\n",
399 | " {'min': 10.0, 'max': 190.0, 'mean': 74.85975609756098, 'count': 328},\n",
400 | " {'min': 10.0, 'max': 190.0, 'mean': 182.81001727115716, 'count': 579},\n",
401 | " {'min': 10.0, 'max': 190.0, 'mean': 110.63934426229508, 'count': 183},\n",
402 | " {'min': 10.0, 'max': 190.0, 'mean': 65.61408450704225, 'count': 355},\n",
403 | " {'min': 10.0, 'max': 190.0, 'mean': 43.89525139664804, 'count': 716},\n",
404 | " {'min': 10.0, 'max': 190.0, 'mean': 54.995215311004785, 'count': 418},\n",
405 | " {'min': 10.0, 'max': 190.0, 'mean': 93.85572139303483, 'count': 201},\n",
406 | " {'min': 10.0, 'max': 190.0, 'mean': 45.455826558265585, 'count': 1845},\n",
407 | " {'min': 10.0, 'max': 190.0, 'mean': 38.50096961861668, 'count': 1547},\n",
408 | " {'min': 10.0, 'max': 210.0, 'mean': 55.14267434420985, 'count': 1563},\n",
409 | " {'min': 10.0, 'max': 190.0, 'mean': 45.32372718539865, 'count': 1041},\n",
410 | " {'min': 10.0, 'max': 130.0, 'mean': 44.60122075279756, 'count': 983},\n",
411 | " {'min': 10.0, 'max': 190.0, 'mean': 58.48421052631579, 'count': 570},\n",
412 | " {'min': 10.0, 'max': 100.0, 'mean': 49.71009490940466, 'count': 1159},\n",
413 | " {'min': 10.0, 'max': 190.0, 'mean': 50.9006309148265, 'count': 634},\n",
414 | " {'min': 10.0, 'max': 120.0, 'mean': 54.09958506224066, 'count': 1205},\n",
415 | " {'min': 10.0, 'max': 190.0, 'mean': 43.295025728987994, 'count': 583},\n",
416 | " {'min': 10.0, 'max': 210.0, 'mean': 43.80385078219013, 'count': 831},\n",
417 | " {'min': 10.0, 'max': 110.0, 'mean': 37.019653179190755, 'count': 865},\n",
418 | " {'min': 50.0, 'max': 70.0, 'mean': 56.83848797250859, 'count': 291},\n",
419 | " {'min': 10.0, 'max': 130.0, 'mean': 80.98484848484848, 'count': 1056},\n",
420 | " {'min': 10.0, 'max': 220.0, 'mean': 125.5150369479292, 'count': 11638},\n",
421 | " {'min': 10.0, 'max': 210.0, 'mean': 56.0990099009901, 'count': 505},\n",
422 | " {'min': 10.0, 'max': 130.0, 'mean': 60.369942196531795, 'count': 1384},\n",
423 | " {'min': 10.0, 'max': 220.0, 'mean': 85.46169560776302, 'count': 2937},\n",
424 | " {'min': 10.0, 'max': 210.0, 'mean': 57.3866382373845, 'count': 1407},\n",
425 | " {'min': 10.0, 'max': 120.0, 'mean': 58.85609157808667, 'count': 2446},\n",
426 | " {'min': 10.0, 'max': 190.0, 'mean': 49.9641638225256, 'count': 1172},\n",
427 | " {'min': 10.0, 'max': 210.0, 'mean': 54.315440289505425, 'count': 1658},\n",
428 | " {'min': 10.0, 'max': 210.0, 'mean': 46.860199714693294, 'count': 1402},\n",
429 | " {'min': 10.0, 'max': 190.0, 'mean': 48.34970760233918, 'count': 1710},\n",
430 | " {'min': 10.0, 'max': 100.0, 'mean': 46.001488095238095, 'count': 1344},\n",
431 | " {'min': 10.0, 'max': 190.0, 'mean': 64.24057738572574, 'count': 1247},\n",
432 | " {'min': 10.0, 'max': 100.0, 'mean': 45.42840095465394, 'count': 838},\n",
433 | " {'min': 10.0, 'max': 190.0, 'mean': 50.89309764309764, 'count': 2376},\n",
434 | " {'min': 10.0, 'max': 220.0, 'mean': 89.03732227488152, 'count': 5064},\n",
435 | " {'min': 10.0, 'max': 210.0, 'mean': 46.03650793650794, 'count': 1260},\n",
436 | " {'min': 10.0, 'max': 190.0, 'mean': 44.181500872600346, 'count': 1146},\n",
437 | " {'min': 10.0, 'max': 190.0, 'mean': 44.77755511022044, 'count': 998},\n",
438 | " {'min': 10.0, 'max': 130.0, 'mean': 50.97061224489796, 'count': 3675},\n",
439 | " {'min': 10.0, 'max': 190.0, 'mean': 57.04019776440241, 'count': 4652},\n",
440 | " {'min': 10.0, 'max': 121.0, 'mean': 57.02033781454671, 'count': 2901},\n",
441 | " {'min': 10.0, 'max': 210.0, 'mean': 42.71959896507115, 'count': 3092},\n",
442 | " {'min': 10.0, 'max': 210.0, 'mean': 56.342287694974004, 'count': 1154},\n",
443 | " {'min': 10.0, 'max': 120.0, 'mean': 56.55913978494624, 'count': 2418},\n",
444 | " {'min': 10.0, 'max': 190.0, 'mean': 50.005672149744754, 'count': 1763},\n",
445 | " {'min': 10.0, 'max': 190.0, 'mean': 50.83100381194409, 'count': 2361},\n",
446 | " {'min': 10.0, 'max': 130.0, 'mean': 54.23134051243966, 'count': 2693},\n",
447 | " {'min': 10.0, 'max': 190.0, 'mean': 53.69203539823009, 'count': 2260},\n",
448 | " {'min': 10.0, 'max': 130.0, 'mean': 51.737564322469986, 'count': 1166},\n",
449 | " {'min': 10.0, 'max': 130.0, 'mean': 56.472186287192756, 'count': 773},\n",
450 | " {'min': 10.0, 'max': 130.0, 'mean': 21.599045346062052, 'count': 419},\n",
451 | " {'min': 10.0, 'max': 130.0, 'mean': 34.040998217468804, 'count': 1122},\n",
452 | " {'min': 10.0, 'max': 210.0, 'mean': 46.981029810298104, 'count': 2952},\n",
453 | " {'min': 10.0, 'max': 130.0, 'mean': 20.25445292620865, 'count': 393},\n",
454 | " {'min': 10.0, 'max': 210.0, 'mean': 32.91139240506329, 'count': 237},\n",
455 | " {'min': 10.0, 'max': 210.0, 'mean': 35.22569444444444, 'count': 576},\n",
456 | " {'min': 10.0, 'max': 20.0, 'mean': 19.849624060150376, 'count': 532},\n",
457 | " {'min': 10.0, 'max': 190.0, 'mean': 21.09375, 'count': 256},\n",
458 | " {'min': 10.0, 'max': 130.0, 'mean': 39.996631106120155, 'count': 1781},\n",
459 | " {'min': 10.0, 'max': 20.0, 'mean': 19.877750611246945, 'count': 409},\n",
460 | " {'min': 10.0, 'max': 130.0, 'mean': 23.734177215189874, 'count': 474},\n",
461 | " {'min': 10.0, 'max': 210.0, 'mean': 26.93661971830986, 'count': 568},\n",
462 | " {'min': 10.0, 'max': 190.0, 'mean': 20.146699266503667, 'count': 409},\n",
463 | " {'min': 10.0, 'max': 190.0, 'mean': 19.68609865470852, 'count': 446},\n",
464 | " {'min': 10.0, 'max': 130.0, 'mean': 25.51365409622887, 'count': 769},\n",
465 | " {'min': 10.0, 'max': 210.0, 'mean': 33.45565749235474, 'count': 327},\n",
466 | " {'min': 10.0, 'max': 190.0, 'mean': 20.16348773841962, 'count': 367},\n",
467 | " {'min': 10.0, 'max': 20.0, 'mean': 19.794871794871796, 'count': 195},\n",
468 | " {'min': 10.0, 'max': 20.0, 'mean': 19.74418604651163, 'count': 430},\n",
469 | " {'min': 10.0, 'max': 30.0, 'mean': 19.47826086956522, 'count': 460},\n",
470 | " {'min': 10.0, 'max': 20.0, 'mean': 19.78540772532189, 'count': 233},\n",
471 | " {'min': 10.0, 'max': 30.0, 'mean': 20.0, 'count': 274},\n",
472 | " {'min': 10.0, 'max': 190.0, 'mean': 40.68782348134023, 'count': 3671},\n",
473 | " {'min': 10.0, 'max': 190.0, 'mean': 20.523076923076925, 'count': 1300},\n",
474 | " {'min': 10.0, 'max': 30.0, 'mean': 18.95017793594306, 'count': 562},\n",
475 | " {'min': 10.0, 'max': 210.0, 'mean': 37.42688172043011, 'count': 1860},\n",
476 | " {'min': 10.0, 'max': 30.0, 'mean': 19.56923076923077, 'count': 650},\n",
477 | " {'min': 10.0, 'max': 130.0, 'mean': 49.44242601816584, 'count': 3413},\n",
478 | " {'min': 10.0, 'max': 20.0, 'mean': 19.521988527724666, 'count': 523},\n",
479 | " {'min': 10.0, 'max': 30.0, 'mean': 19.513513513513512, 'count': 185},\n",
480 | " {'min': 10.0, 'max': 30.0, 'mean': 19.96415770609319, 'count': 279},\n",
481 | " {'min': 10.0, 'max': 20.0, 'mean': 19.914893617021278, 'count': 235},\n",
482 | " {'min': 20.0, 'max': 190.0, 'mean': 20.344827586206897, 'count': 493},\n",
483 | " {'min': 10.0, 'max': 20.0, 'mean': 19.485981308411215, 'count': 428},\n",
484 | " {'min': 10.0, 'max': 61.0, 'mean': 26.058823529411764, 'count': 17},\n",
485 | " {'min': 10.0, 'max': 20.0, 'mean': 19.78609625668449, 'count': 374},\n",
486 | " {'min': 10.0, 'max': 20.0, 'mean': 19.96732026143791, 'count': 306},\n",
487 | " {'min': 10.0, 'max': 190.0, 'mean': 27.265725288831835, 'count': 1558},\n",
488 | " {'min': 10.0, 'max': 20.0, 'mean': 19.965986394557824, 'count': 294},\n",
489 | " {'min': 10.0, 'max': 20.0, 'mean': 19.757785467128027, 'count': 289},\n",
490 | " {'min': 10.0, 'max': 30.0, 'mean': 19.022556390977442, 'count': 532},\n",
491 | " {'min': 10.0, 'max': 100.0, 'mean': 26.717557251908396, 'count': 655},\n",
492 | " {'min': 10.0, 'max': 20.0, 'mean': 19.895104895104897, 'count': 286},\n",
493 | " {'min': 10.0, 'max': 20.0, 'mean': 19.9203187250996, 'count': 251},\n",
494 | " {'min': 10.0, 'max': 100.0, 'mean': 32.593537414965986, 'count': 1176},\n",
495 | " {'min': 10.0, 'max': 100.0, 'mean': 26.176084099868593, 'count': 761},\n",
496 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 379},\n",
497 | " {'min': 10.0, 'max': 100.0, 'mean': 25.69169510807736, 'count': 879},\n",
498 | " {'min': 10.0, 'max': 130.0, 'mean': 36.20355731225296, 'count': 1518},\n",
499 | " {'min': 10.0, 'max': 130.0, 'mean': 58.16053921568628, 'count': 7344},\n",
500 | " {'min': 10.0, 'max': 210.0, 'mean': 43.65224171539961, 'count': 5130},\n",
501 | " {'min': 10.0, 'max': 210.0, 'mean': 57.22026209677419, 'count': 1984},\n",
502 | " {'min': 10.0, 'max': 121.0, 'mean': 52.67816742081448, 'count': 1768},\n",
503 | " {'min': 10.0, 'max': 100.0, 'mean': 29.474409448818896, 'count': 1016},\n",
504 | " {'min': 10.0, 'max': 100.0, 'mean': 44.69331788335265, 'count': 2589},\n",
505 | " {'min': 10.0, 'max': 121.0, 'mean': 50.72449384676459, 'count': 2519},\n",
506 | " {'min': 10.0, 'max': 210.0, 'mean': 30.957107843137255, 'count': 816},\n",
507 | " {'min': 10.0, 'max': 210.0, 'mean': 58.188695084413766, 'count': 10721},\n",
508 | " {'min': 10.0, 'max': 130.0, 'mean': 53.0041775456919, 'count': 1915},\n",
509 | " {'min': 10.0, 'max': 220.0, 'mean': 67.84337860780985, 'count': 2356},\n",
510 | " {'min': 10.0, 'max': 100.0, 'mean': 42.16019818331957, 'count': 1211},\n",
511 | " {'min': 10.0, 'max': 220.0, 'mean': 131.08109616848515, 'count': 19705},\n",
512 | " {'min': 10.0, 'max': 220.0, 'mean': 91.00952748809064, 'count': 7767},\n",
513 | " {'min': 10.0, 'max': 100.0, 'mean': 47.446562287270254, 'count': 1469},\n",
514 | " {'min': 10.0, 'max': 210.0, 'mean': 42.382165605095544, 'count': 1570},\n",
515 | " {'min': 10.0, 'max': 190.0, 'mean': 39.87533016376123, 'count': 1893},\n",
516 | " {'min': 10.0, 'max': 130.0, 'mean': 47.355442176870746, 'count': 1764},\n",
517 | " {'min': 10.0, 'max': 121.0, 'mean': 46.15698478561549, 'count': 1446},\n",
518 | " {'min': 10.0, 'max': 220.0, 'mean': 62.30284043441938, 'count': 2394},\n",
519 | " {'min': 10.0, 'max': 100.0, 'mean': 51.226526592252135, 'count': 1523},\n",
520 | " {'min': 10.0, 'max': 220.0, 'mean': 84.365265169613, 'count': 4186},\n",
521 | " {'min': 10.0, 'max': 130.0, 'mean': 56.996706915477496, 'count': 1822},\n",
522 | " {'min': 10.0, 'max': 130.0, 'mean': 60.883898709985665, 'count': 2093},\n",
523 | " {'min': 10.0, 'max': 190.0, 'mean': 46.233823529411765, 'count': 1360},\n",
524 | " {'min': 10.0, 'max': 220.0, 'mean': 76.80741156653565, 'count': 7124},\n",
525 | " {'min': 10.0, 'max': 120.0, 'mean': 43.402582159624416, 'count': 852},\n",
526 | " {'min': 10.0, 'max': 100.0, 'mean': 39.612412177985945, 'count': 854},\n",
527 | " {'min': 10.0, 'max': 210.0, 'mean': 48.0844327176781, 'count': 1516},\n",
528 | " {'min': 10.0, 'max': 121.0, 'mean': 48.38824503311258, 'count': 1208},\n",
529 | " {'min': 10.0, 'max': 190.0, 'mean': 41.824954296160875, 'count': 2188},\n",
530 | " {'min': 10.0, 'max': 190.0, 'mean': 41.6601689408707, 'count': 1539},\n",
531 | " {'min': 10.0, 'max': 190.0, 'mean': 45.58680203045685, 'count': 2955},\n",
532 | " {'min': 10.0, 'max': 210.0, 'mean': 56.04278922345483, 'count': 1893},\n",
533 | " {'min': 10.0, 'max': 210.0, 'mean': 38.66444740346205, 'count': 1502},\n",
534 | " {'min': 10.0, 'max': 190.0, 'mean': 46.425438596491226, 'count': 1368},\n",
535 | " {'min': 10.0, 'max': 210.0, 'mean': 49.1108934169279, 'count': 2552},\n",
536 | " {'min': 10.0, 'max': 190.0, 'mean': 52.1368044920878, 'count': 1959},\n",
537 | " {'min': 10.0, 'max': 100.0, 'mean': 43.84375, 'count': 832},\n",
538 | " {'min': 10.0, 'max': 100.0, 'mean': 45.32937685459941, 'count': 674},\n",
539 | " {'min': 10.0, 'max': 130.0, 'mean': 45.37271750805586, 'count': 931},\n",
540 | " {'min': 10.0, 'max': 100.0, 'mean': 43.49255039439088, 'count': 1141},\n",
541 | " {'min': 10.0, 'max': 210.0, 'mean': 40.33797909407666, 'count': 1435},\n",
542 | " {'min': 10.0, 'max': 210.0, 'mean': 41.59931506849315, 'count': 1460},\n",
543 | " {'min': 10.0, 'max': 130.0, 'mean': 47.07988450433109, 'count': 1039},\n",
544 | " {'min': 10.0, 'max': 210.0, 'mean': 47.61379310344827, 'count': 870},\n",
545 | " {'min': 10.0, 'max': 120.0, 'mean': 46.42455621301775, 'count': 676},\n",
546 | " {'min': 10.0, 'max': 120.0, 'mean': 48.05929304446978, 'count': 1754},\n",
547 | " {'min': 10.0, 'max': 190.0, 'mean': 40.074803149606296, 'count': 1524},\n",
548 | " {'min': 10.0, 'max': 220.0, 'mean': 99.56873369456152, 'count': 4983},\n",
549 | " {'min': 10.0, 'max': 220.0, 'mean': 93.9049815498155, 'count': 6504},\n",
550 | " {'min': 10.0, 'max': 220.0, 'mean': 86.82648809523809, 'count': 6720},\n",
551 | " {'min': 10.0, 'max': 210.0, 'mean': 55.69660281893748, 'count': 5534},\n",
552 | " {'min': 10.0, 'max': 210.0, 'mean': 46.24046140195208, 'count': 1127},\n",
553 | " {'min': 10.0, 'max': 220.0, 'mean': 123.96386822529225, 'count': 941},\n",
554 | " {'min': 10.0, 'max': 220.0, 'mean': 158.69644103279833, 'count': 10031},\n",
555 | " {'min': 10.0, 'max': 220.0, 'mean': 129.99705188679246, 'count': 8480},\n",
556 | " {'min': 10.0, 'max': 220.0, 'mean': 141.48254274018782, 'count': 8306},\n",
557 | " {'min': 10.0, 'max': 220.0, 'mean': 138.01374505742797, 'count': 10622},\n",
558 | " {'min': 10.0, 'max': 220.0, 'mean': 148.63489019486545, 'count': 16165},\n",
559 | " {'min': 10.0, 'max': 220.0, 'mean': 113.46634996041172, 'count': 3789},\n",
560 | " {'min': 10.0, 'max': 220.0, 'mean': 145.95031554790592, 'count': 8715},\n",
561 | " {'min': 10.0, 'max': 220.0, 'mean': 103.41283084004603, 'count': 3476},\n",
562 | " {'min': 10.0, 'max': 220.0, 'mean': 100.97322100195576, 'count': 6647},\n",
563 | " {'min': 10.0, 'max': 190.0, 'mean': 46.257425742574256, 'count': 909},\n",
564 | " {'min': 10.0, 'max': 220.0, 'mean': 114.50813443740867, 'count': 10265},\n",
565 | " {'min': 10.0, 'max': 130.0, 'mean': 56.173219373219375, 'count': 1755},\n",
566 | " {'min': 10.0, 'max': 120.0, 'mean': 57.19793621013133, 'count': 1066},\n",
567 | " {'min': 10.0, 'max': 220.0, 'mean': 80.02582781456954, 'count': 4530},\n",
568 | " {'min': 10.0, 'max': 220.0, 'mean': 119.57463734206831, 'count': 2137},\n",
569 | " {'min': 10.0, 'max': 100.0, 'mean': 44.317669172932334, 'count': 532},\n",
570 | " {'min': 10.0, 'max': 190.0, 'mean': 57.58984771573604, 'count': 985},\n",
571 | " {'min': 10.0, 'max': 190.0, 'mean': 46.60889292196007, 'count': 1102},\n",
572 | " {'min': 10.0, 'max': 100.0, 'mean': 42.06429780033841, 'count': 591},\n",
573 | " {'min': 10.0, 'max': 130.0, 'mean': 54.021650087770624, 'count': 1709},\n",
574 | " {'min': 10.0, 'max': 130.0, 'mean': 49.31041257367387, 'count': 509},\n",
575 | " {'min': 10.0, 'max': 100.0, 'mean': 55.573385518590996, 'count': 1022},\n",
576 | " {'min': 10.0, 'max': 130.0, 'mean': 54.707648991084, 'count': 2131},\n",
577 | " {'min': 10.0, 'max': 190.0, 'mean': 43.727655986509276, 'count': 1186},\n",
578 | " {'min': 10.0, 'max': 100.0, 'mean': 54.491638795986624, 'count': 897},\n",
579 | " {'min': 10.0, 'max': 130.0, 'mean': 57.653107344632765, 'count': 2655},\n",
580 | " {'min': 10.0, 'max': 130.0, 'mean': 58.639931004743424, 'count': 2319},\n",
581 | " {'min': 10.0, 'max': 110.0, 'mean': 45.22127659574468, 'count': 1410},\n",
582 | " {'min': 10.0, 'max': 130.0, 'mean': 52.71443089430894, 'count': 984},\n",
583 | " {'min': 10.0, 'max': 130.0, 'mean': 58.11813186813187, 'count': 2912},\n",
584 | " {'min': 10.0, 'max': 130.0, 'mean': 60.722535211267605, 'count': 2130},\n",
585 | " {'min': 11.0, 'max': 120.0, 'mean': 59.965025906735754, 'count': 1544},\n",
586 | " {'min': 10.0, 'max': 130.0, 'mean': 90.62714592274678, 'count': 3728},\n",
587 | " {'min': 10.0, 'max': 130.0, 'mean': 47.8321400159109, 'count': 1257},\n",
588 | " {'min': 10.0, 'max': 130.0, 'mean': 44.164888457807955, 'count': 1031},\n",
589 | " {'min': 10.0, 'max': 70.0, 'mean': 50.96960486322188, 'count': 987},\n",
590 | " {'min': 10.0, 'max': 121.0, 'mean': 42.38060479666319, 'count': 959},\n",
591 | " {'min': 10.0, 'max': 100.0, 'mean': 48.42622950819672, 'count': 976},\n",
592 | " {'min': 10.0, 'max': 210.0, 'mean': 48.76372712146423, 'count': 1202},\n",
593 | " {'min': 10.0, 'max': 130.0, 'mean': 49.04255319148936, 'count': 1128},\n",
594 | " {'min': 10.0, 'max': 100.0, 'mean': 47.426884650317895, 'count': 1101},\n",
595 | " {'min': 10.0, 'max': 130.0, 'mean': 52.01387874360847, 'count': 1369},\n",
596 | " {'min': 10.0, 'max': 100.0, 'mean': 52.45454545454545, 'count': 990},\n",
597 | " {'min': 10.0, 'max': 121.0, 'mean': 44.5982478097622, 'count': 799},\n",
598 | " {'min': 10.0, 'max': 130.0, 'mean': 52.209689081706436, 'count': 1383},\n",
599 | " {'min': 10.0, 'max': 190.0, 'mean': 41.8714859437751, 'count': 996},\n",
600 | " {'min': 10.0, 'max': 190.0, 'mean': 53.536986301369865, 'count': 2555},\n",
601 | " {'min': 10.0, 'max': 130.0, 'mean': 55.755642361111114, 'count': 2304},\n",
602 | " {'min': 10.0, 'max': 130.0, 'mean': 53.51890243902439, 'count': 1640},\n",
603 | " {'min': 10.0, 'max': 130.0, 'mean': 56.68017159199238, 'count': 2098},\n",
604 | " {'min': 10.0, 'max': 121.0, 'mean': 46.32139659803044, 'count': 1117},\n",
605 | " {'min': 10.0, 'max': 210.0, 'mean': 45.267394270122786, 'count': 1466},\n",
606 | " {'min': 10.0, 'max': 130.0, 'mean': 52.0, 'count': 1475},\n",
607 | " {'min': 10.0, 'max': 210.0, 'mean': 45.32927756653992, 'count': 1315},\n",
608 | " {'min': 10.0, 'max': 130.0, 'mean': 57.68896321070234, 'count': 2392},\n",
609 | " {'min': 10.0, 'max': 121.0, 'mean': 43.08164228409627, 'count': 2119},\n",
610 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 528},\n",
611 | " {'min': 10.0, 'max': 210.0, 'mean': 21.684964200477328, 'count': 838},\n",
612 | " {'min': 10.0, 'max': 20.0, 'mean': 19.964061096136568, 'count': 1113},\n",
613 | " {'min': 10.0, 'max': 61.0, 'mean': 22.005760368663594, 'count': 868},\n",
614 | " {'min': 10.0, 'max': 100.0, 'mean': 39.50243427458617, 'count': 2054},\n",
615 | " {'min': 10.0, 'max': 210.0, 'mean': 41.82070240295749, 'count': 1082},\n",
616 | " {'min': 10.0, 'max': 190.0, 'mean': 47.31182795698925, 'count': 1209},\n",
617 | " {'min': 10.0, 'max': 120.0, 'mean': 40.02881667688535, 'count': 1631},\n",
618 | " {'min': 10.0, 'max': 60.0, 'mean': 20.380622837370243, 'count': 1156},\n",
619 | " {'min': 10.0, 'max': 100.0, 'mean': 25.325, 'count': 680},\n",
620 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 685},\n",
621 | " {'min': 10.0, 'max': 20.0, 'mean': 19.583648750946253, 'count': 1321},\n",
622 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 576},\n",
623 | " {'min': 10.0, 'max': 190.0, 'mean': 20.150987224157955, 'count': 861},\n",
624 | " {'min': 10.0, 'max': 210.0, 'mean': 20.569948186528496, 'count': 579},\n",
625 | " {'min': 20.0, 'max': 20.0, 'mean': 20.0, 'count': 765},\n",
626 | " {'min': 10.0, 'max': 100.0, 'mean': 42.09419152276295, 'count': 1911},\n",
627 | " {'min': 10.0, 'max': 20.0, 'mean': 19.867768595041323, 'count': 605},\n",
628 | " {'min': 10.0, 'max': 190.0, 'mean': 31.223529411764705, 'count': 425},\n",
629 | " {'min': 10.0, 'max': 100.0, 'mean': 20.076824583866838, 'count': 781},\n",
630 | " {'min': 10.0, 'max': 30.0, 'mean': 19.779086892488955, 'count': 679},\n",
631 | " {'min': 10.0, 'max': 190.0, 'mean': 22.61888814467515, 'count': 1493},\n",
632 | " {'min': 10.0, 'max': 40.0, 'mean': 16.354166666666668, 'count': 96},\n",
633 | " {'min': 10.0, 'max': 130.0, 'mean': 35.132756132756136, 'count': 2772},\n",
634 | " {'min': 10.0, 'max': 210.0, 'mean': 34.95732298739088, 'count': 2062},\n",
635 | " {'min': 10.0, 'max': 210.0, 'mean': 42.30623992631821, 'count': 4343},\n",
636 | " {'min': 10.0, 'max': 210.0, 'mean': 21.583025830258304, 'count': 1626},\n",
637 | " {'min': 10.0, 'max': 190.0, 'mean': 20.061135371179038, 'count': 1145},\n",
638 | " {'min': 10.0, 'max': 20.0, 'mean': 19.63882618510158, 'count': 1329},\n",
639 | " {'min': 10.0, 'max': 20.0, 'mean': 19.197707736389685, 'count': 1047},\n",
640 | " {'min': 10.0, 'max': 120.0, 'mean': 43.08751112429546, 'count': 3371},\n",
641 | " {'min': 10.0, 'max': 20.0, 'mean': 19.595588235294116, 'count': 1088},\n",
642 | " {'min': 10.0, 'max': 20.0, 'mean': 19.78616352201258, 'count': 795},\n",
643 | " {'min': 10.0, 'max': 130.0, 'mean': 49.79441222983658, 'count': 1897},\n",
644 | " {'min': 10.0, 'max': 100.0, 'mean': 40.234390009606145, 'count': 1041},\n",
645 | " {'min': 10.0, 'max': 130.0, 'mean': 48.14879467996675, 'count': 1203},\n",
646 | " {'min': 10.0, 'max': 130.0, 'mean': 53.196220122290164, 'count': 1799},\n",
647 | " {'min': 10.0, 'max': 130.0, 'mean': 40.47062663185378, 'count': 1532},\n",
648 | " {'min': 10.0, 'max': 130.0, 'mean': 58.362506902263945, 'count': 7244},\n",
649 | " {'min': 10.0, 'max': 121.0, 'mean': 58.30280172413793, 'count': 1856},\n",
650 | " {'min': 10.0, 'max': 130.0, 'mean': 53.0072202166065, 'count': 1662},\n",
651 | " {'min': 10.0, 'max': 130.0, 'mean': 51.4259842519685, 'count': 1270},\n",
652 | " {'min': 10.0, 'max': 130.0, 'mean': 47.12617309697602, 'count': 959},\n",
653 | " {'min': 10.0, 'max': 120.0, 'mean': 56.060089020771514, 'count': 1348},\n",
654 | " {'min': 10.0, 'max': 130.0, 'mean': 56.88627450980392, 'count': 2550},\n",
655 | " {'min': 10.0, 'max': 190.0, 'mean': 46.71269633507853, 'count': 1528},\n",
656 | " {'min': 10.0, 'max': 130.0, 'mean': 54.343965975544926, 'count': 1881},\n",
657 | " {'min': 10.0, 'max': 190.0, 'mean': 57.21765145848916, 'count': 2674},\n",
658 | " {'min': 10.0, 'max': 130.0, 'mean': 53.57083977331273, 'count': 1941},\n",
659 | " {'min': 10.0, 'max': 130.0, 'mean': 59.51957737725295, 'count': 1609},\n",
660 | " {'min': 10.0, 'max': 130.0, 'mean': 54.84395318595579, 'count': 1538},\n",
661 | " {'min': 10.0, 'max': 130.0, 'mean': 60.744904261890056, 'count': 3238},\n",
662 | " {'min': 10.0, 'max': 130.0, 'mean': 53.37928545651389, 'count': 2771},\n",
663 | " {'min': 10.0, 'max': 130.0, 'mean': 53.921581769437, 'count': 1492},\n",
664 | " {'min': 10.0, 'max': 130.0, 'mean': 59.42822605016622, 'count': 3309},\n",
665 | " {'min': 10.0, 'max': 130.0, 'mean': 55.88978494623656, 'count': 1860},\n",
666 | " {'min': 10.0, 'max': 130.0, 'mean': 60.011393514461, 'count': 2282},\n",
667 | " {'min': 10.0, 'max': 130.0, 'mean': 54.90372798033593, 'count': 2441},\n",
668 | " {'min': 10.0, 'max': 220.0, 'mean': 78.33134506412168, 'count': 6706},\n",
669 | " {'min': 10.0, 'max': 210.0, 'mean': 57.515124945199474, 'count': 2281},\n",
670 | " {'min': 10.0, 'max': 190.0, 'mean': 49.98048399687744, 'count': 1281},\n",
671 | " {'min': 10.0, 'max': 130.0, 'mean': 53.91784181483752, 'count': 1631},\n",
672 | " {'min': 10.0, 'max': 130.0, 'mean': 54.23379052369077, 'count': 1604},\n",
673 | " {'min': 10.0, 'max': 100.0, 'mean': 50.5327468230694, 'count': 1023},\n",
674 | " {'min': 10.0, 'max': 130.0, 'mean': 50.64487905301081, 'count': 1943},\n",
675 | " {'min': 10.0, 'max': 210.0, 'mean': 61.27437360456462, 'count': 4031},\n",
676 | " {'min': 10.0, 'max': 190.0, 'mean': 54.5748469671675, 'count': 1797},\n",
677 | " {'min': 10.0, 'max': 100.0, 'mean': 51.64959016393443, 'count': 976},\n",
678 | " {'min': 10.0, 'max': 130.0, 'mean': 53.31865042174321, 'count': 1067},\n",
679 | " {'min': 10.0, 'max': 190.0, 'mean': 60.16679245283019, 'count': 5300},\n",
680 | " {'min': 10.0, 'max': 130.0, 'mean': 53.96907940969782, 'count': 1423},\n",
681 | " {'min': 10.0, 'max': 190.0, 'mean': 57.98818525519849, 'count': 2116},\n",
682 | " {'min': 10.0, 'max': 190.0, 'mean': 54.06900931414056, 'count': 2362},\n",
683 | " {'min': 10.0, 'max': 190.0, 'mean': 59.19434628975265, 'count': 1415},\n",
684 | " {'min': 10.0, 'max': 120.0, 'mean': 52.90617848970252, 'count': 3059},\n",
685 | " {'min': 10.0, 'max': 121.0, 'mean': 57.51714677640604, 'count': 2916},\n",
686 | " {'min': 10.0, 'max': 190.0, 'mean': 35.993145468392996, 'count': 1313},\n",
687 | " {'min': 10.0, 'max': 130.0, 'mean': 47.741988689915175, 'count': 4244},\n",
688 | " {'min': 10.0, 'max': 190.0, 'mean': 40.5917512485903, 'count': 6207},\n",
689 | " {'min': 10.0, 'max': 210.0, 'mean': 43.11162670791441, 'count': 3879},\n",
690 | " {'min': 10.0, 'max': 210.0, 'mean': 51.54550766983199, 'count': 6845},\n",
691 | " {'min': 10.0, 'max': 130.0, 'mean': 44.94569190600522, 'count': 1915},\n",
692 | " {'min': 10.0, 'max': 130.0, 'mean': 39.898916967509024, 'count': 1385},\n",
693 | " {'min': 10.0, 'max': 190.0, 'mean': 31.744973776223777, 'count': 4576},\n",
694 | " {'min': 10.0, 'max': 70.0, 'mean': 30.387307236061684, 'count': 1686},\n",
695 | " {'min': 10.0, 'max': 210.0, 'mean': 31.93327154772938, 'count': 1079},\n",
696 | " {'min': 10.0, 'max': 20.0, 'mean': 19.313077939233818, 'count': 757},\n",
697 | " {'min': 10.0, 'max': 20.0, 'mean': 18.445723684210527, 'count': 1216},\n",
698 | " {'min': 10.0, 'max': 100.0, 'mean': 44.33622658748287, 'count': 2189},\n",
699 | " {'min': 10.0, 'max': 210.0, 'mean': 38.1419481155164, 'count': 2043},\n",
700 | " {'min': 10.0, 'max': 210.0, 'mean': 29.362745098039216, 'count': 1020},\n",
701 | " {'min': 10.0, 'max': 210.0, 'mean': 52.60285691227504, 'count': 12391},\n",
702 | " {'min': 10.0, 'max': 210.0, 'mean': 22.22953216374269, 'count': 1368},\n",
703 | " {'min': 10.0, 'max': 100.0, 'mean': 39.03875968992248, 'count': 2451},\n",
704 | " {'min': 10.0, 'max': 210.0, 'mean': 34.90188818955942, 'count': 2701},\n",
705 | " {'min': 10.0, 'max': 210.0, 'mean': 28.224358974358974, 'count': 936},\n",
706 | " {'min': 10.0, 'max': 210.0, 'mean': 20.44982206405694, 'count': 1405},\n",
707 | " {'min': 10.0, 'max': 210.0, 'mean': 32.623948220064726, 'count': 1545},\n",
708 | " {'min': 10.0, 'max': 210.0, 'mean': 25.183498349834984, 'count': 1515},\n",
709 | " {'min': 10.0, 'max': 100.0, 'mean': 29.181013676588897, 'count': 1243},\n",
710 | " {'min': 10.0, 'max': 210.0, 'mean': 64.1445524201084, 'count': 10702},\n",
711 | " {'min': 10.0, 'max': 210.0, 'mean': 60.72425861116228, 'count': 5429},\n",
712 | " {'min': 10.0, 'max': 190.0, 'mean': 56.9342277486911, 'count': 3056},\n",
713 | " {'min': 10.0, 'max': 190.0, 'mean': 57.07715944008194, 'count': 2929},\n",
714 | " {'min': 10.0, 'max': 210.0, 'mean': 60.429103659872894, 'count': 4563},\n",
715 | " {'min': 10.0, 'max': 130.0, 'mean': 54.35661583866207, 'count': 2033},\n",
716 | " {'min': 10.0, 'max': 190.0, 'mean': 54.600367647058825, 'count': 2720},\n",
717 | " {'min': 10.0, 'max': 210.0, 'mean': 54.82361111111111, 'count': 2160},\n",
718 | " {'min': 10.0, 'max': 210.0, 'mean': 58.80541497975708, 'count': 3952},\n",
719 | " {'min': 10.0, 'max': 190.0, 'mean': 51.345209270148736, 'count': 2891},\n",
720 | " {'min': 10.0, 'max': 210.0, 'mean': 62.04199604743083, 'count': 2024},\n",
721 | " {'min': 10.0, 'max': 130.0, 'mean': 55.6219512195122, 'count': 1804},\n",
722 | " {'min': 10.0, 'max': 130.0, 'mean': 48.445283018867926, 'count': 1325},\n",
723 | " {'min': 10.0, 'max': 130.0, 'mean': 49.0, 'count': 1082},\n",
724 | " {'min': 10.0, 'max': 190.0, 'mean': 47.350802139037434, 'count': 1870},\n",
725 | " {'min': 10.0, 'max': 110.0, 'mean': 61.19968178202068, 'count': 1257},\n",
726 | " {'min': 10.0, 'max': 130.0, 'mean': 62.86828774062817, 'count': 1974},\n",
727 | " {'min': 10.0, 'max': 130.0, 'mean': 54.026986506746624, 'count': 1334},\n",
728 | " {'min': 10.0, 'max': 130.0, 'mean': 45.428786737000756, 'count': 1327},\n",
729 | " {'min': 10.0, 'max': 130.0, 'mean': 60.13408841797589, 'count': 2737},\n",
730 | " {'min': 10.0, 'max': 130.0, 'mean': 45.27867298578199, 'count': 1055},\n",
731 | " {'min': 10.0, 'max': 201.0, 'mean': 77.16188554130028, 'count': 6937},\n",
732 | " {'min': 10.0, 'max': 190.0, 'mean': 48.651595744680854, 'count': 2632},\n",
733 | " {'min': 10.0, 'max': 130.0, 'mean': 56.91507493388187, 'count': 3403},\n",
734 | " {'min': 10.0, 'max': 130.0, 'mean': 61.427539720751085, 'count': 4154},\n",
735 | " {'min': 10.0, 'max': 130.0, 'mean': 60.46499541424641, 'count': 3271},\n",
736 | " {'min': 10.0, 'max': 130.0, 'mean': 53.20536828963795, 'count': 1602},\n",
737 | " {'min': 10.0, 'max': 180.0, 'mean': 61.039697950377565, 'count': 4635},\n",
738 | " {'min': 10.0, 'max': 220.0, 'mean': 140.42102807702096, 'count': 23578},\n",
739 | " {'min': 10.0, 'max': 220.0, 'mean': 134.2481520591341, 'count': 14205},\n",
740 | " {'min': 10.0, 'max': 220.0, 'mean': 133.63956349630897, 'count': 9347},\n",
741 | " {'min': 10.0, 'max': 220.0, 'mean': 121.09185132237312, 'count': 5596},\n",
742 | " {'min': 10.0, 'max': 220.0, 'mean': 85.59920239282154, 'count': 3009},\n",
743 | " {'min': 10.0, 'max': 220.0, 'mean': 133.42313809088756, 'count': 29553},\n",
744 | " {'min': 10.0, 'max': 220.0, 'mean': 100.85540196435068, 'count': 5498},\n",
745 | " {'min': 10.0, 'max': 220.0, 'mean': 100.96079677897859, 'count': 4719},\n",
746 | " {'min': 10.0, 'max': 190.0, 'mean': 67.81188925081433, 'count': 1228},\n",
747 | " {'min': 10.0, 'max': 220.0, 'mean': 92.5740487804878, 'count': 5125},\n",
748 | " {'min': 10.0, 'max': 130.0, 'mean': 69.86997487437186, 'count': 1592},\n",
749 | " {'min': 10.0, 'max': 130.0, 'mean': 76.68238761974945, 'count': 2714},\n",
750 | " {'min': 10.0, 'max': 220.0, 'mean': 107.60565248444037, 'count': 9801},\n",
751 | " {'min': 10.0, 'max': 130.0, 'mean': 77.55013550135502, 'count': 1845},\n",
752 | " {'min': 10.0, 'max': 180.0, 'mean': 90.64220038046925, 'count': 6308},\n",
753 | " {'min': 10.0, 'max': 130.0, 'mean': 76.83325438180957, 'count': 2111},\n",
754 | " {'min': 10.0, 'max': 130.0, 'mean': 60.262027491408936, 'count': 1164},\n",
755 | " {'min': 10.0, 'max': 130.0, 'mean': 66.65334166146158, 'count': 1601},\n",
756 | " {'min': 10.0, 'max': 130.0, 'mean': 77.17571059431525, 'count': 3870},\n",
757 | " {'min': 10.0, 'max': 130.0, 'mean': 58.07527504342791, 'count': 1727},\n",
758 | " {'min': 10.0, 'max': 210.0, 'mean': 72.83607374190333, 'count': 2007},\n",
759 | " {'min': 10.0, 'max': 130.0, 'mean': 73.22294654498045, 'count': 3835},\n",
760 | " {'min': 10.0, 'max': 130.0, 'mean': 54.19583333333333, 'count': 720},\n",
761 | " {'min': 10.0, 'max': 210.0, 'mean': 63.94865525672372, 'count': 1636},\n",
762 | " {'min': 10.0, 'max': 130.0, 'mean': 69.40756035578144, 'count': 3148},\n",
763 | " {'min': 10.0, 'max': 210.0, 'mean': 83.13965130329709, 'count': 5793},\n",
764 | " {'min': 10.0, 'max': 130.0, 'mean': 74.83775811209439, 'count': 3390},\n",
765 | " {'min': 10.0, 'max': 220.0, 'mean': 124.02822659904864, 'count': 25437},\n",
766 | " {'min': 10.0, 'max': 130.0, 'mean': 76.86501814882033, 'count': 4408},\n",
767 | " {'min': 10.0, 'max': 130.0, 'mean': 64.86388583973655, 'count': 1822},\n",
768 | " {'min': 10.0, 'max': 220.0, 'mean': 118.20242225446287, 'count': 15853},\n",
769 | " {'min': 10.0, 'max': 220.0, 'mean': 128.86273774946125, 'count': 10673},\n",
770 | " {'min': 10.0, 'max': 220.0, 'mean': 133.6418561832998, 'count': 29329},\n",
771 | " {'min': 10.0, 'max': 130.0, 'mean': 75.31127982646422, 'count': 3688},\n",
772 | " {'min': 10.0, 'max': 220.0, 'mean': 131.02771653543306, 'count': 9525},\n",
773 | " {'min': 10.0, 'max': 130.0, 'mean': 74.37825182101977, 'count': 1922},\n",
774 | " {'min': 10.0, 'max': 130.0, 'mean': 70.69448629105152, 'count': 3319},\n",
775 | " {'min': 10.0, 'max': 210.0, 'mean': 32.30715287517531, 'count': 713},\n",
776 | " {'min': 10.0, 'max': 130.0, 'mean': 71.79071428571429, 'count': 2800},\n",
777 | " {'min': 10.0, 'max': 130.0, 'mean': 43.37296946068876, 'count': 1539},\n",
778 | " {'min': 10.0, 'max': 220.0, 'mean': 72.87565997888068, 'count': 3788},\n",
779 | " {'min': 10.0, 'max': 220.0, 'mean': 97.40470494417863, 'count': 10032},\n",
780 | " {'min': 10.0, 'max': 130.0, 'mean': 63.702415458937196, 'count': 2070},\n",
781 | " {'min': 10.0, 'max': 130.0, 'mean': 81.65718562874251, 'count': 1336},\n",
782 | " {'min': 10.0, 'max': 210.0, 'mean': 70.34083129584351, 'count': 2045},\n",
783 | " {'min': 11.0, 'max': 110.0, 'mean': 60.02197802197802, 'count': 91},\n",
784 | " {'min': 10.0, 'max': 110.0, 'mean': 49.23226433430515, 'count': 1029},\n",
785 | " {'min': 10.0, 'max': 220.0, 'mean': 75.2465728047425, 'count': 5398},\n",
786 | " {'min': 10.0, 'max': 130.0, 'mean': 51.20014295925661, 'count': 1399},\n",
787 | " {'min': 10.0, 'max': 130.0, 'mean': 46.013422818791945, 'count': 745},\n",
788 | " {'min': 10.0, 'max': 130.0, 'mean': 55.07818725099602, 'count': 2008},\n",
789 | " {'min': 10.0, 'max': 220.0, 'mean': 128.04865809652685, 'count': 17736},\n",
790 | " {'min': 10.0, 'max': 130.0, 'mean': 53.86754002911208, 'count': 1374},\n",
791 | " {'min': 10.0, 'max': 130.0, 'mean': 55.44533527696793, 'count': 1372},\n",
792 | " {'min': 10.0, 'max': 130.0, 'mean': 62.68012185833968, 'count': 1313},\n",
793 | " {'min': 10.0, 'max': 220.0, 'mean': 77.18148487626031, 'count': 3273},\n",
794 | " {'min': 10.0, 'max': 130.0, 'mean': 73.07201187824796, 'count': 4041},\n",
795 | " {'min': 10.0, 'max': 190.0, 'mean': 59.296031746031744, 'count': 1260},\n",
796 | " {'min': 10.0, 'max': 100.0, 'mean': 60.41260404280618, 'count': 841},\n",
797 | " {'min': 10.0, 'max': 100.0, 'mean': 38.05882352941177, 'count': 697},\n",
798 | " {'min': 10.0, 'max': 130.0, 'mean': 56.41410902427852, 'count': 2183},\n",
799 | " {'min': 10.0, 'max': 130.0, 'mean': 61.151526296432515, 'count': 2719},\n",
800 | " {'min': 10.0, 'max': 190.0, 'mean': 44.88154269972452, 'count': 1452},\n",
801 | " {'min': 10.0, 'max': 130.0, 'mean': 60.80786686838124, 'count': 2644},\n",
802 | " {'min': 10.0, 'max': 130.0, 'mean': 53.76604938271605, 'count': 1620},\n",
803 | " {'min': 10.0, 'max': 210.0, 'mean': 45.439864483342745, 'count': 1771},\n",
804 | " {'min': 10.0, 'max': 130.0, 'mean': 57.315206929740135, 'count': 2078},\n",
805 | " {'min': 10.0, 'max': 130.0, 'mean': 37.64606181455633, 'count': 2006},\n",
806 | " {'min': 10.0, 'max': 210.0, 'mean': 57.59275206315034, 'count': 2787},\n",
807 | " {'min': 10.0, 'max': 100.0, 'mean': 58.94206008583691, 'count': 466},\n",
808 | " {'min': 10.0, 'max': 130.0, 'mean': 55.19624352331606, 'count': 1544},\n",
809 | " {'min': 10.0, 'max': 130.0, 'mean': 59.536701860231275, 'count': 3978},\n",
810 | " {'min': 10.0, 'max': 210.0, 'mean': 60.463590883824345, 'count': 3598},\n",
811 | " {'min': 10.0, 'max': 130.0, 'mean': 46.692814765985496, 'count': 1517},\n",
812 | " {'min': 10.0, 'max': 110.0, 'mean': 62.11584394904459, 'count': 5024},\n",
813 | " {'min': 10.0, 'max': 130.0, 'mean': 52.061639344262296, 'count': 1525},\n",
814 | " {'min': 10.0, 'max': 130.0, 'mean': 49.39182522903453, 'count': 1419},\n",
815 | " {'min': 10.0, 'max': 130.0, 'mean': 53.17881241565452, 'count': 1482},\n",
816 | " {'min': 10.0, 'max': 190.0, 'mean': 56.633605600933485, 'count': 3428},\n",
817 | " {'min': 10.0, 'max': 130.0, 'mean': 66.34656084656085, 'count': 1134},\n",
818 | " {'min': 10.0, 'max': 100.0, 'mean': 35.17965367965368, 'count': 924},\n",
819 | " {'min': 10.0, 'max': 210.0, 'mean': 32.48516746411483, 'count': 2090},\n",
820 | " {'min': 10.0, 'max': 121.0, 'mean': 63.715011000169234, 'count': 5909},\n",
821 | " {'min': 10.0, 'max': 190.0, 'mean': 30.319653735171528, 'count': 3119},\n",
822 | " {'min': 10.0, 'max': 130.0, 'mean': 43.13128205128205, 'count': 2925},\n",
823 | " {'min': 10.0, 'max': 121.0, 'mean': 45.18587623996221, 'count': 4234},\n",
824 | " {'min': 10.0, 'max': 130.0, 'mean': 45.86163011102085, 'count': 3693},\n",
825 | " {'min': 10.0, 'max': 200.0, 'mean': 25.41226708074534, 'count': 1288},\n",
826 | " {'min': 20.0, 'max': 60.0, 'mean': 20.102564102564102, 'count': 780},\n",
827 | " {'min': 10.0, 'max': 210.0, 'mean': 38.29544639655791, 'count': 2789},\n",
828 | " {'min': 10.0, 'max': 210.0, 'mean': 45.50989175065323, 'count': 2679},\n",
829 | " {'min': 10.0, 'max': 210.0, 'mean': 62.718157543391186, 'count': 7490},\n",
830 | " {'min': 10.0, 'max': 210.0, 'mean': 30.30490405117271, 'count': 1407},\n",
831 | " {'min': 10.0, 'max': 121.0, 'mean': 39.59833072509129, 'count': 1917},\n",
832 | " {'min': 10.0, 'max': 210.0, 'mean': 22.37449118046133, 'count': 1474},\n",
833 | " {'min': 10.0, 'max': 40.0, 'mean': 20.276497695852534, 'count': 434},\n",
834 | " {'min': 10.0, 'max': 210.0, 'mean': 39.85728202630297, 'count': 2053},\n",
835 | " {'min': 10.0, 'max': 130.0, 'mean': 38.815928618638466, 'count': 3026},\n",
836 | " {'min': 10.0, 'max': 61.0, 'mean': 30.88286334056399, 'count': 1844},\n",
837 | " {'min': 10.0, 'max': 210.0, 'mean': 39.76470588235294, 'count': 680},\n",
838 | " {'min': 10.0, 'max': 70.0, 'mean': 21.184103811841037, 'count': 1233},\n",
839 | " {'min': 10.0, 'max': 130.0, 'mean': 36.663254861821905, 'count': 1954},\n",
840 | " {'min': 10.0, 'max': 210.0, 'mean': 49.26372015081692, 'count': 4774},\n",
841 | " {'min': 10.0, 'max': 130.0, 'mean': 52.82174887892376, 'count': 1784},\n",
842 | " {'min': 10.0, 'max': 190.0, 'mean': 62.47604107244723, 'count': 3506},\n",
843 | " {'min': 10.0, 'max': 110.0, 'mean': 52.29940476190476, 'count': 1680},\n",
844 | " {'min': 10.0, 'max': 110.0, 'mean': 64.64168451106353, 'count': 2802},\n",
845 | " {'min': 10.0, 'max': 100.0, 'mean': 58.48367221195317, 'count': 1623},\n",
846 | " {'min': 10.0, 'max': 190.0, 'mean': 52.10257913247362, 'count': 1706},\n",
847 | " {'min': 10.0, 'max': 210.0, 'mean': 60.74853564936377, 'count': 4951},\n",
848 | " {'min': 10.0, 'max': 130.0, 'mean': 56.27395577395578, 'count': 1628},\n",
849 | " {'min': 10.0, 'max': 130.0, 'mean': 63.416721964167216, 'count': 1507},\n",
850 | " {'min': 10.0, 'max': 130.0, 'mean': 61.439184746877054, 'count': 1521},\n",
851 | " {'min': 10.0, 'max': 130.0, 'mean': 49.47688060731539, 'count': 1449},\n",
852 | " {'min': 10.0, 'max': 210.0, 'mean': 64.20943134535368, 'count': 1442},\n",
853 | " {'min': 10.0, 'max': 110.0, 'mean': 60.45733788395904, 'count': 2637},\n",
854 | " {'min': 10.0, 'max': 130.0, 'mean': 58.33765690376569, 'count': 2390},\n",
855 | " {'min': 10.0, 'max': 130.0, 'mean': 50.342158859470466, 'count': 982},\n",
856 | " {'min': 10.0, 'max': 130.0, 'mean': 61.32092078537576, 'count': 2954},\n",
857 | " {'min': 10.0, 'max': 130.0, 'mean': 55.578418230563, 'count': 1492},\n",
858 | " {'min': 10.0, 'max': 220.0, 'mean': 96.67305615550755, 'count': 7408},\n",
859 | " {'min': 10.0, 'max': 220.0, 'mean': 131.35773480662982, 'count': 14480},\n",
860 | " {'min': 10.0, 'max': 130.0, 'mean': 66.25761421319797, 'count': 788},\n",
861 | " {'min': 10.0, 'max': 110.0, 'mean': 58.12376237623762, 'count': 1010},\n",
862 | " {'min': 10.0, 'max': 130.0, 'mean': 68.74785801713587, 'count': 1634},\n",
863 | " {'min': 10.0, 'max': 130.0, 'mean': 65.73184818481849, 'count': 1212},\n",
864 | " {'min': 10.0, 'max': 130.0, 'mean': 68.61013567438148, 'count': 2506},\n",
865 | " {'min': 10.0, 'max': 130.0, 'mean': 63.74390804597701, 'count': 2175},\n",
866 | " {'min': 10.0, 'max': 130.0, 'mean': 54.67274001401542, 'count': 1427},\n",
867 | " {'min': 10.0, 'max': 210.0, 'mean': 52.159929701230226, 'count': 3414},\n",
868 | " {'min': 10.0, 'max': 210.0, 'mean': 51.57843696520251, 'count': 1753},\n",
869 | " {'min': 10.0, 'max': 210.0, 'mean': 52.27007299270073, 'count': 1096},\n",
870 | " {'min': 10.0, 'max': 210.0, 'mean': 46.53874813710879, 'count': 1342},\n",
871 | " {'min': 10.0, 'max': 210.0, 'mean': 53.05496828752643, 'count': 1892},\n",
872 | " {'min': 10.0, 'max': 130.0, 'mean': 50.68181818181818, 'count': 2244},\n",
873 | " {'min': 10.0, 'max': 210.0, 'mean': 36.35027365129007, 'count': 1279},\n",
874 | " {'min': 10.0, 'max': 210.0, 'mean': 46.74403470715835, 'count': 2766},\n",
875 | " {'min': 10.0, 'max': 210.0, 'mean': 88.26554174067496, 'count': 1126},\n",
876 | " {'min': 10.0, 'max': 130.0, 'mean': 61.24151635585448, 'count': 3271},\n",
877 | " {'min': 10.0, 'max': 220.0, 'mean': 75.89382642409782, 'count': 6706},\n",
878 | " {'min': 10.0, 'max': 220.0, 'mean': 73.87362496802251, 'count': 3909},\n",
879 | " {'min': 10.0, 'max': 220.0, 'mean': 104.3256336220725, 'count': 6234}]"
880 | ]
881 | },
882 | "execution_count": 20,
883 | "metadata": {},
884 | "output_type": "execute_result"
885 | }
886 | ],
887 | "source": [
888 | "zonal_stats(DIR_MUNICIPALITY_SHP, DIR_LULC)"
889 | ]
890 | },
891 | {
892 | "cell_type": "markdown",
893 | "id": "0f527281",
894 | "metadata": {},
895 | "source": [
896 | "##### Raster stats for catagorical raster data"
897 | ]
898 | },
899 | {
900 | "cell_type": "code",
901 | "execution_count": 21,
902 | "id": "c79eabfc",
903 | "metadata": {},
904 | "outputs": [
905 | {
906 | "data": {
907 | "text/plain": [
908 | "[{10: 275,\n",
909 | " 11: 347,\n",
910 | " 20: 27,\n",
911 | " 30: 638,\n",
912 | " 40: 1547,\n",
913 | " 50: 908,\n",
914 | " 60: 431,\n",
915 | " 61: 38,\n",
916 | " 70: 833,\n",
917 | " 100: 64,\n",
918 | " 110: 2,\n",
919 | " 120: 15,\n",
920 | " 190: 305,\n",
921 | " 210: 104}]"
922 | ]
923 | },
924 | "execution_count": 21,
925 | "metadata": {},
926 | "output_type": "execute_result"
927 | }
928 | ],
929 | "source": [
930 | "# zonal stats for catagorical data\n",
931 | "zonal_stats(DIR_POKHARA_SHP, DIR_LULC, categorical=True)"
932 | ]
933 | },
934 | {
935 | "cell_type": "markdown",
936 | "id": "9918ebe2",
937 | "metadata": {},
938 | "source": [
939 | "##### Raster stats to pandas dataframe"
940 | ]
941 | },
942 | {
943 | "cell_type": "code",
944 | "execution_count": 23,
945 | "id": "1ffd1e89",
946 | "metadata": {},
947 | "outputs": [
948 | {
949 | "data": {
950 | "text/html": [
951 | "
\n",
952 | "\n",
965 | "
\n",
966 | " \n",
967 | " \n",
968 | " | \n",
969 | " 10 | \n",
970 | " 11 | \n",
971 | " 20 | \n",
972 | " 30 | \n",
973 | " 40 | \n",
974 | " 50 | \n",
975 | " 60 | \n",
976 | " 61 | \n",
977 | " 70 | \n",
978 | " 100 | \n",
979 | " ... | \n",
980 | " 150 | \n",
981 | " 200 | \n",
982 | " 201 | \n",
983 | " 202 | \n",
984 | " 210 | \n",
985 | " 12 | \n",
986 | " 190 | \n",
987 | " 122 | \n",
988 | " 180 | \n",
989 | " 90 | \n",
990 | "
\n",
991 | " \n",
992 | " \n",
993 | " \n",
994 | " 0 | \n",
995 | " 63.0 | \n",
996 | " 42.0 | \n",
997 | " 3.0 | \n",
998 | " 149.0 | \n",
999 | " 133.0 | \n",
1000 | " 322.0 | \n",
1001 | " 157.0 | \n",
1002 | " 20.0 | \n",
1003 | " 140.0 | \n",
1004 | " 14.0 | \n",
1005 | " ... | \n",
1006 | " NaN | \n",
1007 | " NaN | \n",
1008 | " NaN | \n",
1009 | " NaN | \n",
1010 | " NaN | \n",
1011 | " NaN | \n",
1012 | " NaN | \n",
1013 | " NaN | \n",
1014 | " NaN | \n",
1015 | " NaN | \n",
1016 | "
\n",
1017 | " \n",
1018 | " 1 | \n",
1019 | " 18.0 | \n",
1020 | " 22.0 | \n",
1021 | " 1.0 | \n",
1022 | " 38.0 | \n",
1023 | " 110.0 | \n",
1024 | " 447.0 | \n",
1025 | " 185.0 | \n",
1026 | " 41.0 | \n",
1027 | " 696.0 | \n",
1028 | " 15.0 | \n",
1029 | " ... | \n",
1030 | " NaN | \n",
1031 | " NaN | \n",
1032 | " NaN | \n",
1033 | " NaN | \n",
1034 | " NaN | \n",
1035 | " NaN | \n",
1036 | " NaN | \n",
1037 | " NaN | \n",
1038 | " NaN | \n",
1039 | " NaN | \n",
1040 | "
\n",
1041 | " \n",
1042 | " 2 | \n",
1043 | " 30.0 | \n",
1044 | " 34.0 | \n",
1045 | " 1.0 | \n",
1046 | " 154.0 | \n",
1047 | " 216.0 | \n",
1048 | " 425.0 | \n",
1049 | " 125.0 | \n",
1050 | " 117.0 | \n",
1051 | " 1139.0 | \n",
1052 | " 35.0 | \n",
1053 | " ... | \n",
1054 | " NaN | \n",
1055 | " NaN | \n",
1056 | " NaN | \n",
1057 | " NaN | \n",
1058 | " NaN | \n",
1059 | " NaN | \n",
1060 | " NaN | \n",
1061 | " NaN | \n",
1062 | " NaN | \n",
1063 | " NaN | \n",
1064 | "
\n",
1065 | " \n",
1066 | " 3 | \n",
1067 | " 29.0 | \n",
1068 | " 11.0 | \n",
1069 | " NaN | \n",
1070 | " 50.0 | \n",
1071 | " 117.0 | \n",
1072 | " 278.0 | \n",
1073 | " 77.0 | \n",
1074 | " 74.0 | \n",
1075 | " 2503.0 | \n",
1076 | " 76.0 | \n",
1077 | " ... | \n",
1078 | " NaN | \n",
1079 | " NaN | \n",
1080 | " NaN | \n",
1081 | " NaN | \n",
1082 | " NaN | \n",
1083 | " NaN | \n",
1084 | " NaN | \n",
1085 | " NaN | \n",
1086 | " NaN | \n",
1087 | " NaN | \n",
1088 | "
\n",
1089 | " \n",
1090 | " 4 | \n",
1091 | " 58.0 | \n",
1092 | " 70.0 | \n",
1093 | " 21.0 | \n",
1094 | " 167.0 | \n",
1095 | " 287.0 | \n",
1096 | " 812.0 | \n",
1097 | " 177.0 | \n",
1098 | " 174.0 | \n",
1099 | " 4999.0 | \n",
1100 | " 170.0 | \n",
1101 | " ... | \n",
1102 | " 6.0 | \n",
1103 | " 820.0 | \n",
1104 | " 27.0 | \n",
1105 | " 10.0 | \n",
1106 | " 5.0 | \n",
1107 | " NaN | \n",
1108 | " NaN | \n",
1109 | " NaN | \n",
1110 | " NaN | \n",
1111 | " NaN | \n",
1112 | "
\n",
1113 | " \n",
1114 | "
\n",
1115 | "
5 rows × 25 columns
\n",
1116 | "
"
1117 | ],
1118 | "text/plain": [
1119 | " 10 11 20 30 40 50 60 61 70 100 ... \\\n",
1120 | "0 63.0 42.0 3.0 149.0 133.0 322.0 157.0 20.0 140.0 14.0 ... \n",
1121 | "1 18.0 22.0 1.0 38.0 110.0 447.0 185.0 41.0 696.0 15.0 ... \n",
1122 | "2 30.0 34.0 1.0 154.0 216.0 425.0 125.0 117.0 1139.0 35.0 ... \n",
1123 | "3 29.0 11.0 NaN 50.0 117.0 278.0 77.0 74.0 2503.0 76.0 ... \n",
1124 | "4 58.0 70.0 21.0 167.0 287.0 812.0 177.0 174.0 4999.0 170.0 ... \n",
1125 | "\n",
1126 | " 150 200 201 202 210 12 190 122 180 90 \n",
1127 | "0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
1128 | "1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
1129 | "2 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
1130 | "3 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
1131 | "4 6.0 820.0 27.0 10.0 5.0 NaN NaN NaN NaN NaN \n",
1132 | "\n",
1133 | "[5 rows x 25 columns]"
1134 | ]
1135 | },
1136 | "execution_count": 23,
1137 | "metadata": {},
1138 | "output_type": "execute_result"
1139 | }
1140 | ],
1141 | "source": [
1142 | "area_list = zonal_stats(DIR_MUNICIPALITY_SHP, DIR_LULC, categorical=True)\n",
1143 | "df = pd.DataFrame(area_list)\n",
1144 | "df.head()"
1145 | ]
1146 | },
1147 | {
1148 | "cell_type": "markdown",
1149 | "id": "f6ec9504",
1150 | "metadata": {},
1151 | "source": [
1152 | "# Thank You"
1153 | ]
1154 | }
1155 | ],
1156 | "metadata": {
1157 | "kernelspec": {
1158 | "display_name": "Python 3 (ipykernel)",
1159 | "language": "python",
1160 | "name": "python3"
1161 | },
1162 | "language_info": {
1163 | "codemirror_mode": {
1164 | "name": "ipython",
1165 | "version": 3
1166 | },
1167 | "file_extension": ".py",
1168 | "mimetype": "text/x-python",
1169 | "name": "python",
1170 | "nbconvert_exporter": "python",
1171 | "pygments_lexer": "ipython3",
1172 | "version": "3.9.7"
1173 | }
1174 | },
1175 | "nbformat": 4,
1176 | "nbformat_minor": 5
1177 | }
1178 |
--------------------------------------------------------------------------------
/notebooks/04. big_data_with_dask.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "attachments": {},
5 | "cell_type": "markdown",
6 | "metadata": {},
7 | "source": [
8 | "# Big data with Dask\n",
9 | "\n",
10 | "The following code is part of the youtube videos below,\n",
11 | "\n",
12 | "1. [Download building footprint dataset from Google](https://youtu.be/R0ElIJS4C70?si=P5DI7Rz67EtKrMqd)\n",
13 | "2. [Working with big data in panadas](https://youtu.be/7kBL83my5I0?si=ta1k0KT-no-Pzfi5)"
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": null,
19 | "metadata": {},
20 | "outputs": [],
21 | "source": [
22 | "import pandas as pd \n",
23 | "import numpy as np \n",
24 | "import geopandas as gpd "
25 | ]
26 | },
27 | {
28 | "cell_type": "markdown",
29 | "metadata": {},
30 | "source": [
31 | "## Dataset\n",
32 | "There are two input dataset;\n",
33 | "1. 20 GB csv file\n",
34 | "This is the dataset downloaded from [Google's open buildings](https://sites.research.google/open-buildings/#download).\n",
35 | "2. AOI shapefile\n",
36 | "AOI shapefile is the created on [geojson.io](https://geojson.io) website. It is the small area near Kathmandu."
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": null,
42 | "metadata": {},
43 | "outputs": [],
44 | "source": [
45 | "df = pd.read_csv(r\"C:\\Users\\tek.kshetri\\Downloads\\30f_buildings.csv\\30f_buildings.csv\")\n",
46 | "df.head()"
47 | ]
48 | },
49 | {
50 | "cell_type": "code",
51 | "execution_count": null,
52 | "metadata": {},
53 | "outputs": [],
54 | "source": [
55 | "df['geometry'] = gpd.GeoSeries.from_wkt(df['geometry'])\n",
56 | "gdf = gpd.GeoDataFrame(df, geometry='geometry')\n",
57 | "gdf.head()"
58 | ]
59 | },
60 | {
61 | "cell_type": "code",
62 | "execution_count": null,
63 | "metadata": {},
64 | "outputs": [],
65 | "source": [
66 | "gdf.to_file(r\"C:\\Users\\tek.kshetri\\Downloads\\687_buildings.shp\")"
67 | ]
68 | },
69 | {
70 | "cell_type": "code",
71 | "execution_count": null,
72 | "metadata": {},
73 | "outputs": [],
74 | "source": [
75 | "import dask.dataframe as dd\n",
76 | "\n",
77 | "ddf = dd.read_csv(r\"C:\\Users\\tek.kshetri\\Downloads\\39f_buildings.csv\\39f_buildings.csv\")\n",
78 | "ddf.head()"
79 | ]
80 | },
81 | {
82 | "cell_type": "code",
83 | "execution_count": null,
84 | "metadata": {},
85 | "outputs": [],
86 | "source": [
87 | "import dask_geopandas\n",
88 | "# ddf['geometry'] = ddf.set_geometry(dask_geopandas.from_wkt(ddf['geometry']))"
89 | ]
90 | },
91 | {
92 | "cell_type": "code",
93 | "execution_count": null,
94 | "metadata": {},
95 | "outputs": [],
96 | "source": [
97 | "# add ddf to the geopandas dataframe using dask geopandas \n",
98 | "gddf = dask_geopandas.from_dask_dataframe(ddf, \n",
99 | " geometry=ddf['geometry']\n",
100 | " .map_partitions(gpd.GeoSeries\n",
101 | " .from_wkt, meta=gpd.GeoSeries([])))\n",
102 | "\n",
103 | "gddf = gddf.reset_index()"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": null,
109 | "metadata": {},
110 | "outputs": [],
111 | "source": [
112 | "gddf.crs = 'epsg:4326'"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": null,
118 | "metadata": {},
119 | "outputs": [],
120 | "source": [
121 | "aoi = gpd.read_file(r\"C:\\Users\\tek.kshetri\\Downloads\\download\\layers\\POLYGON.shp\")\n",
122 | "aoi.head()"
123 | ]
124 | },
125 | {
126 | "cell_type": "code",
127 | "execution_count": null,
128 | "metadata": {},
129 | "outputs": [],
130 | "source": [
131 | "aoi.crs = 'epsg:4326'"
132 | ]
133 | },
134 | {
135 | "cell_type": "code",
136 | "execution_count": null,
137 | "metadata": {},
138 | "outputs": [],
139 | "source": [
140 | "gddf = gddf.to_crs(aoi.crs)"
141 | ]
142 | },
143 | {
144 | "cell_type": "code",
145 | "execution_count": null,
146 | "metadata": {},
147 | "outputs": [],
148 | "source": [
149 | "## clip the buildings to the aoi\n",
150 | "clipped = dask_geopandas.clip(gddf, aoi)"
151 | ]
152 | },
153 | {
154 | "cell_type": "code",
155 | "execution_count": null,
156 | "metadata": {},
157 | "outputs": [],
158 | "source": [
159 | "clipped.head()"
160 | ]
161 | },
162 | {
163 | "cell_type": "code",
164 | "execution_count": null,
165 | "metadata": {},
166 | "outputs": [],
167 | "source": [
168 | "clipped.to_file(r\"C:\\Users\\tek.kshetri\\Downloads\\test_buildings.shp\")"
169 | ]
170 | },
171 | {
172 | "cell_type": "code",
173 | "execution_count": null,
174 | "metadata": {},
175 | "outputs": [],
176 | "source": [
177 | "clipped = clipped.compute()\n",
178 | "clipped.to_file(r\"C:\\Users\\tek.kshetri\\Downloads\\test_buildings.shp\")"
179 | ]
180 | },
181 | {
182 | "cell_type": "code",
183 | "execution_count": null,
184 | "metadata": {},
185 | "outputs": [],
186 | "source": []
187 | }
188 | ],
189 | "metadata": {
190 | "kernelspec": {
191 | "display_name": "gdal",
192 | "language": "python",
193 | "name": "python3"
194 | },
195 | "language_info": {
196 | "codemirror_mode": {
197 | "name": "ipython",
198 | "version": 3
199 | },
200 | "file_extension": ".py",
201 | "mimetype": "text/x-python",
202 | "name": "python",
203 | "nbconvert_exporter": "python",
204 | "pygments_lexer": "ipython3",
205 | "version": "3.9.15"
206 | },
207 | "orig_nbformat": 4
208 | },
209 | "nbformat": 4,
210 | "nbformat_minor": 2
211 | }
212 |
--------------------------------------------------------------------------------
/notebooks/07. geoparquet_basic.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# GeoParquet data analysis\n",
8 | "\n",
9 | "This notebook is for the basic geospatial analysis using geoparquet file format. The input data can be downloaded from [nz-building-outlines.parquet](https://storage.googleapis.com/open-geodata/linz-examples/nz-building-outlines.parquet)."
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": null,
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "! pip install pyarrow\n",
19 | "! pip install geopandas==1.0.0"
20 | ]
21 | },
22 | {
23 | "cell_type": "markdown",
24 | "metadata": {},
25 | "source": [
26 | "## Reading and writing"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 1,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "data": {
36 | "text/plain": [
37 | "'1.0.0'"
38 | ]
39 | },
40 | "execution_count": 1,
41 | "metadata": {},
42 | "output_type": "execute_result"
43 | }
44 | ],
45 | "source": [
46 | "import geopandas as gpd\n",
47 | "\n",
48 | "gpd.__version__"
49 | ]
50 | },
51 | {
52 | "cell_type": "code",
53 | "execution_count": 2,
54 | "metadata": {},
55 | "outputs": [
56 | {
57 | "data": {
58 | "text/html": [
59 | "\n",
60 | "\n",
73 | "
\n",
74 | " \n",
75 | " \n",
76 | " | \n",
77 | " building_id | \n",
78 | " name | \n",
79 | " use | \n",
80 | " suburb_locality | \n",
81 | " town_city | \n",
82 | " territorial_authority | \n",
83 | " capture_method | \n",
84 | " capture_source_group | \n",
85 | " capture_source_id | \n",
86 | " capture_source_name | \n",
87 | " capture_source_from | \n",
88 | " capture_source_to | \n",
89 | " last_modified | \n",
90 | " geometry | \n",
91 | "
\n",
92 | " \n",
93 | " \n",
94 | " \n",
95 | " 0 | \n",
96 | " 2292028 | \n",
97 | " | \n",
98 | " Unknown | \n",
99 | " Akitio | \n",
100 | " | \n",
101 | " Tararua District | \n",
102 | " Feature Extraction | \n",
103 | " NZ Aerial Imagery | \n",
104 | " 1042 | \n",
105 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
106 | " 2015-12-27 | \n",
107 | " 2016-04-21 | \n",
108 | " 2019-01-04 | \n",
109 | " MULTIPOLYGON (((1890386.169 5501282.718, 18903... | \n",
110 | "
\n",
111 | " \n",
112 | " 1 | \n",
113 | " 2292051 | \n",
114 | " | \n",
115 | " Unknown | \n",
116 | " Marton | \n",
117 | " Marton | \n",
118 | " Rangitikei District | \n",
119 | " Feature Extraction | \n",
120 | " NZ Aerial Imagery | \n",
121 | " 1042 | \n",
122 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
123 | " 2015-12-27 | \n",
124 | " 2016-04-21 | \n",
125 | " 2019-01-04 | \n",
126 | " MULTIPOLYGON (((1796386.756 5560662.126, 17963... | \n",
127 | "
\n",
128 | " \n",
129 | " 2 | \n",
130 | " 2292290 | \n",
131 | " | \n",
132 | " Unknown | \n",
133 | " Rangataua | \n",
134 | " | \n",
135 | " Ruapehu District | \n",
136 | " Feature Extraction | \n",
137 | " NZ Aerial Imagery | \n",
138 | " 1042 | \n",
139 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
140 | " 2015-12-27 | \n",
141 | " 2016-04-21 | \n",
142 | " 2019-01-04 | \n",
143 | " MULTIPOLYGON (((1811431.727 5632559.044, 18114... | \n",
144 | "
\n",
145 | " \n",
146 | " 3 | \n",
147 | " 2292353 | \n",
148 | " | \n",
149 | " Unknown | \n",
150 | " Durie Hill | \n",
151 | " Whanganui | \n",
152 | " Whanganui District | \n",
153 | " Feature Extraction | \n",
154 | " NZ Aerial Imagery | \n",
155 | " 1042 | \n",
156 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
157 | " 2015-12-27 | \n",
158 | " 2016-04-21 | \n",
159 | " 2019-01-04 | \n",
160 | " MULTIPOLYGON (((1776387.292 5576785.712, 17763... | \n",
161 | "
\n",
162 | " \n",
163 | " 4 | \n",
164 | " 2292407 | \n",
165 | " | \n",
166 | " Unknown | \n",
167 | " Durie Hill | \n",
168 | " Whanganui | \n",
169 | " Whanganui District | \n",
170 | " Feature Extraction | \n",
171 | " NZ Aerial Imagery | \n",
172 | " 1042 | \n",
173 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
174 | " 2015-12-27 | \n",
175 | " 2016-04-21 | \n",
176 | " 2019-01-04 | \n",
177 | " MULTIPOLYGON (((1776318.375 5576879.269, 17763... | \n",
178 | "
\n",
179 | " \n",
180 | "
\n",
181 | "
"
182 | ],
183 | "text/plain": [
184 | " building_id name use suburb_locality town_city territorial_authority \\\n",
185 | "0 2292028 Unknown Akitio Tararua District \n",
186 | "1 2292051 Unknown Marton Marton Rangitikei District \n",
187 | "2 2292290 Unknown Rangataua Ruapehu District \n",
188 | "3 2292353 Unknown Durie Hill Whanganui Whanganui District \n",
189 | "4 2292407 Unknown Durie Hill Whanganui Whanganui District \n",
190 | "\n",
191 | " capture_method capture_source_group capture_source_id \\\n",
192 | "0 Feature Extraction NZ Aerial Imagery 1042 \n",
193 | "1 Feature Extraction NZ Aerial Imagery 1042 \n",
194 | "2 Feature Extraction NZ Aerial Imagery 1042 \n",
195 | "3 Feature Extraction NZ Aerial Imagery 1042 \n",
196 | "4 Feature Extraction NZ Aerial Imagery 1042 \n",
197 | "\n",
198 | " capture_source_name capture_source_from \\\n",
199 | "0 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
200 | "1 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
201 | "2 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
202 | "3 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
203 | "4 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
204 | "\n",
205 | " capture_source_to last_modified \\\n",
206 | "0 2016-04-21 2019-01-04 \n",
207 | "1 2016-04-21 2019-01-04 \n",
208 | "2 2016-04-21 2019-01-04 \n",
209 | "3 2016-04-21 2019-01-04 \n",
210 | "4 2016-04-21 2019-01-04 \n",
211 | "\n",
212 | " geometry \n",
213 | "0 MULTIPOLYGON (((1890386.169 5501282.718, 18903... \n",
214 | "1 MULTIPOLYGON (((1796386.756 5560662.126, 17963... \n",
215 | "2 MULTIPOLYGON (((1811431.727 5632559.044, 18114... \n",
216 | "3 MULTIPOLYGON (((1776387.292 5576785.712, 17763... \n",
217 | "4 MULTIPOLYGON (((1776318.375 5576879.269, 17763... "
218 | ]
219 | },
220 | "execution_count": 2,
221 | "metadata": {},
222 | "output_type": "execute_result"
223 | }
224 | ],
225 | "source": [
226 | "# Load the geoparquet file\n",
227 | "gdf = gpd.read_parquet('./data/nz-building-outlines.parquet')\n",
228 | "gdf.head()"
229 | ]
230 | },
231 | {
232 | "cell_type": "code",
233 | "execution_count": 3,
234 | "metadata": {},
235 | "outputs": [
236 | {
237 | "data": {
238 | "text/plain": [
239 | "3320498"
240 | ]
241 | },
242 | "execution_count": 3,
243 | "metadata": {},
244 | "output_type": "execute_result"
245 | }
246 | ],
247 | "source": [
248 | "len(gdf)"
249 | ]
250 | },
251 | {
252 | "cell_type": "code",
253 | "execution_count": null,
254 | "metadata": {},
255 | "outputs": [],
256 | "source": [
257 | "gdf.plot()"
258 | ]
259 | },
260 | {
261 | "cell_type": "code",
262 | "execution_count": 7,
263 | "metadata": {},
264 | "outputs": [
265 | {
266 | "data": {
267 | "text/plain": [
268 | "\n",
269 | "Name: NZGD2000 / New Zealand Transverse Mercator 2000\n",
270 | "Axis Info [cartesian]:\n",
271 | "- N[north]: Northing (metre)\n",
272 | "- E[east]: Easting (metre)\n",
273 | "Area of Use:\n",
274 | "- name: New Zealand - North Island, South Island, Stewart Island - onshore.\n",
275 | "- bounds: (166.37, -47.33, 178.63, -34.1)\n",
276 | "Coordinate Operation:\n",
277 | "- name: New Zealand Transverse Mercator 2000\n",
278 | "- method: Transverse Mercator\n",
279 | "Datum: New Zealand Geodetic Datum 2000\n",
280 | "- Ellipsoid: GRS 1980\n",
281 | "- Prime Meridian: Greenwich"
282 | ]
283 | },
284 | "execution_count": 7,
285 | "metadata": {},
286 | "output_type": "execute_result"
287 | }
288 | ],
289 | "source": [
290 | "gdf.crs"
291 | ]
292 | },
293 | {
294 | "cell_type": "code",
295 | "execution_count": 8,
296 | "metadata": {},
297 | "outputs": [],
298 | "source": [
299 | "gdf.to_file('./data/nz-building-outlines.geojson', driver='GeoJSON')"
300 | ]
301 | },
302 | {
303 | "cell_type": "code",
304 | "execution_count": 9,
305 | "metadata": {},
306 | "outputs": [
307 | {
308 | "name": "stderr",
309 | "output_type": "stream",
310 | "text": [
311 | "C:\\Users\\tek\\AppData\\Local\\Temp\\ipykernel_18796\\1341848182.py:1: UserWarning: Column names longer than 10 characters will be truncated when saved to ESRI Shapefile.\n",
312 | " gdf.to_file('./data/shp/nz-building-outlines.shp')\n",
313 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'building_id' to 'building_i'\n",
314 | " ogr_write(\n",
315 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'suburb_locality' to 'suburb_loc'\n",
316 | " ogr_write(\n",
317 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'territorial_authority' to 'territoria'\n",
318 | " ogr_write(\n",
319 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_method' to 'capture_me'\n",
320 | " ogr_write(\n",
321 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_source_group' to 'capture_so'\n",
322 | " ogr_write(\n",
323 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_source_id' to 'capture__1'\n",
324 | " ogr_write(\n",
325 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_source_name' to 'capture__2'\n",
326 | " ogr_write(\n",
327 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_source_from' to 'capture__3'\n",
328 | " ogr_write(\n",
329 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Field capture__3 create as date field, though DateTime requested.\n",
330 | " ogr_write(\n",
331 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'capture_source_to' to 'capture__4'\n",
332 | " ogr_write(\n",
333 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Field capture__4 create as date field, though DateTime requested.\n",
334 | " ogr_write(\n",
335 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Normalized/laundered field name: 'last_modified' to 'last_modif'\n",
336 | " ogr_write(\n",
337 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: Field last_modif create as date field, though DateTime requested.\n",
338 | " ogr_write(\n",
339 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\pyogrio\\raw.py:709: RuntimeWarning: 2GB file size limit reached for data/shp\\nz-building-outlines.dbf. Going on, but might cause compatibility issues with third party software\n",
340 | " ogr_write(\n"
341 | ]
342 | }
343 | ],
344 | "source": [
345 | "gdf.to_file('./data/shp/nz-building-outlines.shp')"
346 | ]
347 | },
348 | {
349 | "cell_type": "code",
350 | "execution_count": 11,
351 | "metadata": {},
352 | "outputs": [
353 | {
354 | "data": {
355 | "text/html": [
356 | "\n",
357 | "\n",
370 | "
\n",
371 | " \n",
372 | " \n",
373 | " | \n",
374 | " building_id | \n",
375 | " name | \n",
376 | " use | \n",
377 | " suburb_locality | \n",
378 | " town_city | \n",
379 | " territorial_authority | \n",
380 | " capture_method | \n",
381 | " capture_source_group | \n",
382 | " capture_source_id | \n",
383 | " capture_source_name | \n",
384 | " capture_source_from | \n",
385 | " capture_source_to | \n",
386 | " last_modified | \n",
387 | " geometry | \n",
388 | "
\n",
389 | " \n",
390 | " \n",
391 | " \n",
392 | " 0 | \n",
393 | " 2292028 | \n",
394 | " | \n",
395 | " Unknown | \n",
396 | " Akitio | \n",
397 | " | \n",
398 | " Tararua District | \n",
399 | " Feature Extraction | \n",
400 | " NZ Aerial Imagery | \n",
401 | " 1042 | \n",
402 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
403 | " 2015-12-27 | \n",
404 | " 2016-04-21 | \n",
405 | " 2019-01-04 | \n",
406 | " MULTIPOLYGON (((1890386.169 5501282.718, 18903... | \n",
407 | "
\n",
408 | " \n",
409 | " 1 | \n",
410 | " 2292051 | \n",
411 | " | \n",
412 | " Unknown | \n",
413 | " Marton | \n",
414 | " Marton | \n",
415 | " Rangitikei District | \n",
416 | " Feature Extraction | \n",
417 | " NZ Aerial Imagery | \n",
418 | " 1042 | \n",
419 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
420 | " 2015-12-27 | \n",
421 | " 2016-04-21 | \n",
422 | " 2019-01-04 | \n",
423 | " MULTIPOLYGON (((1796386.756 5560662.126, 17963... | \n",
424 | "
\n",
425 | " \n",
426 | " 2 | \n",
427 | " 2292290 | \n",
428 | " | \n",
429 | " Unknown | \n",
430 | " Rangataua | \n",
431 | " | \n",
432 | " Ruapehu District | \n",
433 | " Feature Extraction | \n",
434 | " NZ Aerial Imagery | \n",
435 | " 1042 | \n",
436 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
437 | " 2015-12-27 | \n",
438 | " 2016-04-21 | \n",
439 | " 2019-01-04 | \n",
440 | " MULTIPOLYGON (((1811431.727 5632559.044, 18114... | \n",
441 | "
\n",
442 | " \n",
443 | " 3 | \n",
444 | " 2292353 | \n",
445 | " | \n",
446 | " Unknown | \n",
447 | " Durie Hill | \n",
448 | " Whanganui | \n",
449 | " Whanganui District | \n",
450 | " Feature Extraction | \n",
451 | " NZ Aerial Imagery | \n",
452 | " 1042 | \n",
453 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
454 | " 2015-12-27 | \n",
455 | " 2016-04-21 | \n",
456 | " 2019-01-04 | \n",
457 | " MULTIPOLYGON (((1776387.292 5576785.712, 17763... | \n",
458 | "
\n",
459 | " \n",
460 | " 4 | \n",
461 | " 2292407 | \n",
462 | " | \n",
463 | " Unknown | \n",
464 | " Durie Hill | \n",
465 | " Whanganui | \n",
466 | " Whanganui District | \n",
467 | " Feature Extraction | \n",
468 | " NZ Aerial Imagery | \n",
469 | " 1042 | \n",
470 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
471 | " 2015-12-27 | \n",
472 | " 2016-04-21 | \n",
473 | " 2019-01-04 | \n",
474 | " MULTIPOLYGON (((1776318.375 5576879.269, 17763... | \n",
475 | "
\n",
476 | " \n",
477 | "
\n",
478 | "
"
479 | ],
480 | "text/plain": [
481 | " building_id name use suburb_locality town_city territorial_authority \\\n",
482 | "0 2292028 Unknown Akitio Tararua District \n",
483 | "1 2292051 Unknown Marton Marton Rangitikei District \n",
484 | "2 2292290 Unknown Rangataua Ruapehu District \n",
485 | "3 2292353 Unknown Durie Hill Whanganui Whanganui District \n",
486 | "4 2292407 Unknown Durie Hill Whanganui Whanganui District \n",
487 | "\n",
488 | " capture_method capture_source_group capture_source_id \\\n",
489 | "0 Feature Extraction NZ Aerial Imagery 1042 \n",
490 | "1 Feature Extraction NZ Aerial Imagery 1042 \n",
491 | "2 Feature Extraction NZ Aerial Imagery 1042 \n",
492 | "3 Feature Extraction NZ Aerial Imagery 1042 \n",
493 | "4 Feature Extraction NZ Aerial Imagery 1042 \n",
494 | "\n",
495 | " capture_source_name capture_source_from \\\n",
496 | "0 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
497 | "1 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
498 | "2 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
499 | "3 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
500 | "4 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
501 | "\n",
502 | " capture_source_to last_modified \\\n",
503 | "0 2016-04-21 2019-01-04 \n",
504 | "1 2016-04-21 2019-01-04 \n",
505 | "2 2016-04-21 2019-01-04 \n",
506 | "3 2016-04-21 2019-01-04 \n",
507 | "4 2016-04-21 2019-01-04 \n",
508 | "\n",
509 | " geometry \n",
510 | "0 MULTIPOLYGON (((1890386.169 5501282.718, 18903... \n",
511 | "1 MULTIPOLYGON (((1796386.756 5560662.126, 17963... \n",
512 | "2 MULTIPOLYGON (((1811431.727 5632559.044, 18114... \n",
513 | "3 MULTIPOLYGON (((1776387.292 5576785.712, 17763... \n",
514 | "4 MULTIPOLYGON (((1776318.375 5576879.269, 17763... "
515 | ]
516 | },
517 | "execution_count": 11,
518 | "metadata": {},
519 | "output_type": "execute_result"
520 | }
521 | ],
522 | "source": [
523 | "gdf = gpd.read_file('data/nz-building-outlines.geojson')\n",
524 | "gdf.head()"
525 | ]
526 | },
527 | {
528 | "cell_type": "code",
529 | "execution_count": 12,
530 | "metadata": {},
531 | "outputs": [
532 | {
533 | "data": {
534 | "text/html": [
535 | "\n",
536 | "\n",
549 | "
\n",
550 | " \n",
551 | " \n",
552 | " | \n",
553 | " building_i | \n",
554 | " name | \n",
555 | " use | \n",
556 | " suburb_loc | \n",
557 | " town_city | \n",
558 | " territoria | \n",
559 | " capture_me | \n",
560 | " capture_so | \n",
561 | " capture__1 | \n",
562 | " capture__2 | \n",
563 | " capture__3 | \n",
564 | " capture__4 | \n",
565 | " last_modif | \n",
566 | " geometry | \n",
567 | "
\n",
568 | " \n",
569 | " \n",
570 | " \n",
571 | " 0 | \n",
572 | " 2292028 | \n",
573 | " None | \n",
574 | " Unknown | \n",
575 | " Akitio | \n",
576 | " None | \n",
577 | " Tararua District | \n",
578 | " Feature Extraction | \n",
579 | " NZ Aerial Imagery | \n",
580 | " 1042 | \n",
581 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
582 | " 2015-12-27 | \n",
583 | " 2016-04-21 | \n",
584 | " 2019-01-04 | \n",
585 | " POLYGON ((1890386.169 5501282.718, 1890380.894... | \n",
586 | "
\n",
587 | " \n",
588 | " 1 | \n",
589 | " 2292051 | \n",
590 | " None | \n",
591 | " Unknown | \n",
592 | " Marton | \n",
593 | " Marton | \n",
594 | " Rangitikei District | \n",
595 | " Feature Extraction | \n",
596 | " NZ Aerial Imagery | \n",
597 | " 1042 | \n",
598 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
599 | " 2015-12-27 | \n",
600 | " 2016-04-21 | \n",
601 | " 2019-01-04 | \n",
602 | " POLYGON ((1796386.756 5560662.126, 1796394.053... | \n",
603 | "
\n",
604 | " \n",
605 | " 2 | \n",
606 | " 2292290 | \n",
607 | " None | \n",
608 | " Unknown | \n",
609 | " Rangataua | \n",
610 | " None | \n",
611 | " Ruapehu District | \n",
612 | " Feature Extraction | \n",
613 | " NZ Aerial Imagery | \n",
614 | " 1042 | \n",
615 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
616 | " 2015-12-27 | \n",
617 | " 2016-04-21 | \n",
618 | " 2019-01-04 | \n",
619 | " POLYGON ((1811431.727 5632559.044, 1811437.183... | \n",
620 | "
\n",
621 | " \n",
622 | " 3 | \n",
623 | " 2292353 | \n",
624 | " None | \n",
625 | " Unknown | \n",
626 | " Durie Hill | \n",
627 | " Whanganui | \n",
628 | " Whanganui District | \n",
629 | " Feature Extraction | \n",
630 | " NZ Aerial Imagery | \n",
631 | " 1042 | \n",
632 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
633 | " 2015-12-27 | \n",
634 | " 2016-04-21 | \n",
635 | " 2019-01-04 | \n",
636 | " POLYGON ((1776387.292 5576785.712, 1776394.41 ... | \n",
637 | "
\n",
638 | " \n",
639 | " 4 | \n",
640 | " 2292407 | \n",
641 | " None | \n",
642 | " Unknown | \n",
643 | " Durie Hill | \n",
644 | " Whanganui | \n",
645 | " Whanganui District | \n",
646 | " Feature Extraction | \n",
647 | " NZ Aerial Imagery | \n",
648 | " 1042 | \n",
649 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
650 | " 2015-12-27 | \n",
651 | " 2016-04-21 | \n",
652 | " 2019-01-04 | \n",
653 | " POLYGON ((1776318.375 5576879.269, 1776321.881... | \n",
654 | "
\n",
655 | " \n",
656 | "
\n",
657 | "
"
658 | ],
659 | "text/plain": [
660 | " building_i name use suburb_loc town_city territoria \\\n",
661 | "0 2292028 None Unknown Akitio None Tararua District \n",
662 | "1 2292051 None Unknown Marton Marton Rangitikei District \n",
663 | "2 2292290 None Unknown Rangataua None Ruapehu District \n",
664 | "3 2292353 None Unknown Durie Hill Whanganui Whanganui District \n",
665 | "4 2292407 None Unknown Durie Hill Whanganui Whanganui District \n",
666 | "\n",
667 | " capture_me capture_so capture__1 \\\n",
668 | "0 Feature Extraction NZ Aerial Imagery 1042 \n",
669 | "1 Feature Extraction NZ Aerial Imagery 1042 \n",
670 | "2 Feature Extraction NZ Aerial Imagery 1042 \n",
671 | "3 Feature Extraction NZ Aerial Imagery 1042 \n",
672 | "4 Feature Extraction NZ Aerial Imagery 1042 \n",
673 | "\n",
674 | " capture__2 capture__3 capture__4 \\\n",
675 | "0 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 2016-04-21 \n",
676 | "1 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 2016-04-21 \n",
677 | "2 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 2016-04-21 \n",
678 | "3 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 2016-04-21 \n",
679 | "4 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 2016-04-21 \n",
680 | "\n",
681 | " last_modif geometry \n",
682 | "0 2019-01-04 POLYGON ((1890386.169 5501282.718, 1890380.894... \n",
683 | "1 2019-01-04 POLYGON ((1796386.756 5560662.126, 1796394.053... \n",
684 | "2 2019-01-04 POLYGON ((1811431.727 5632559.044, 1811437.183... \n",
685 | "3 2019-01-04 POLYGON ((1776387.292 5576785.712, 1776394.41 ... \n",
686 | "4 2019-01-04 POLYGON ((1776318.375 5576879.269, 1776321.881... "
687 | ]
688 | },
689 | "execution_count": 12,
690 | "metadata": {},
691 | "output_type": "execute_result"
692 | }
693 | ],
694 | "source": [
695 | "gdf = gpd.read_file('data/shp/nz-building-outlines.shp')\n",
696 | "gdf.head()"
697 | ]
698 | },
699 | {
700 | "cell_type": "code",
701 | "execution_count": 14,
702 | "metadata": {},
703 | "outputs": [
704 | {
705 | "data": {
706 | "text/plain": [
707 | "\n",
708 | "Name: NZGD2000 / New Zealand Transverse Mercator 2000\n",
709 | "Axis Info [cartesian]:\n",
710 | "- N[north]: Northing (metre)\n",
711 | "- E[east]: Easting (metre)\n",
712 | "Area of Use:\n",
713 | "- name: New Zealand - North Island, South Island, Stewart Island - onshore.\n",
714 | "- bounds: (166.37, -47.33, 178.63, -34.1)\n",
715 | "Coordinate Operation:\n",
716 | "- name: New Zealand Transverse Mercator 2000\n",
717 | "- method: Transverse Mercator\n",
718 | "Datum: New Zealand Geodetic Datum 2000\n",
719 | "- Ellipsoid: GRS 1980\n",
720 | "- Prime Meridian: Greenwich"
721 | ]
722 | },
723 | "execution_count": 14,
724 | "metadata": {},
725 | "output_type": "execute_result"
726 | }
727 | ],
728 | "source": [
729 | "gdf.crs"
730 | ]
731 | },
732 | {
733 | "cell_type": "code",
734 | "execution_count": 13,
735 | "metadata": {},
736 | "outputs": [],
737 | "source": [
738 | "gdf.to_parquet('./data/output/nz-building-outlines.parquet')"
739 | ]
740 | },
741 | {
742 | "cell_type": "code",
743 | "execution_count": 15,
744 | "metadata": {},
745 | "outputs": [
746 | {
747 | "name": "stdout",
748 | "output_type": "stream",
749 | "text": [
750 | "--------------------------------------------------\n",
751 | "Parquet data read time: 0:00:06.995695\n",
752 | "Shapefile data read time: 0:00:52.704218\n",
753 | "GeoJSON data read time: 0:04:34.113218\n",
754 | "--------------------------------------------------\n"
755 | ]
756 | }
757 | ],
758 | "source": [
759 | "from datetime import datetime\n",
760 | "\n",
761 | "print('-'*50)\n",
762 | "start_p = datetime.now()\n",
763 | "gdf = gpd.read_parquet('./data/nz-building-outlines.parquet')\n",
764 | "end_p = datetime.now()\n",
765 | "print('Parquet data read time: ', end_p - start_p)\n",
766 | "\n",
767 | "start_s = datetime.now()\n",
768 | "gdf = gpd.read_file('./data/shp/nz-building-outlines.shp')\n",
769 | "end_s = datetime.now()\n",
770 | "print('Shapefile data read time: ', end_s - start_s)\n",
771 | "\n",
772 | "start_g = datetime.now()\n",
773 | "gdf = gpd.read_file('./data/nz-building-outlines.geojson')\n",
774 | "end_g = datetime.now()\n",
775 | "print('GeoJSON data read time: ', end_g - start_g)\n",
776 | "\n",
777 | "print('-'*50)\n"
778 | ]
779 | },
780 | {
781 | "cell_type": "markdown",
782 | "metadata": {},
783 | "source": [
784 | "## Geospatial analysis"
785 | ]
786 | },
787 | {
788 | "cell_type": "code",
789 | "execution_count": 17,
790 | "metadata": {},
791 | "outputs": [
792 | {
793 | "data": {
794 | "text/html": [
795 | "\n",
796 | "\n",
809 | "
\n",
810 | " \n",
811 | " \n",
812 | " | \n",
813 | " building_id | \n",
814 | " name | \n",
815 | " use | \n",
816 | " suburb_locality | \n",
817 | " town_city | \n",
818 | " territorial_authority | \n",
819 | " capture_method | \n",
820 | " capture_source_group | \n",
821 | " capture_source_id | \n",
822 | " capture_source_name | \n",
823 | " capture_source_from | \n",
824 | " capture_source_to | \n",
825 | " last_modified | \n",
826 | " geometry | \n",
827 | "
\n",
828 | " \n",
829 | " \n",
830 | " \n",
831 | " 0 | \n",
832 | " 2292028 | \n",
833 | " | \n",
834 | " Unknown | \n",
835 | " Akitio | \n",
836 | " | \n",
837 | " Tararua District | \n",
838 | " Feature Extraction | \n",
839 | " NZ Aerial Imagery | \n",
840 | " 1042 | \n",
841 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
842 | " 2015-12-27 | \n",
843 | " 2016-04-21 | \n",
844 | " 2019-01-04 | \n",
845 | " MULTIPOLYGON (((1890386.169 5501282.718, 18903... | \n",
846 | "
\n",
847 | " \n",
848 | " 1 | \n",
849 | " 2292051 | \n",
850 | " | \n",
851 | " Unknown | \n",
852 | " Marton | \n",
853 | " Marton | \n",
854 | " Rangitikei District | \n",
855 | " Feature Extraction | \n",
856 | " NZ Aerial Imagery | \n",
857 | " 1042 | \n",
858 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
859 | " 2015-12-27 | \n",
860 | " 2016-04-21 | \n",
861 | " 2019-01-04 | \n",
862 | " MULTIPOLYGON (((1796386.756 5560662.126, 17963... | \n",
863 | "
\n",
864 | " \n",
865 | " 2 | \n",
866 | " 2292290 | \n",
867 | " | \n",
868 | " Unknown | \n",
869 | " Rangataua | \n",
870 | " | \n",
871 | " Ruapehu District | \n",
872 | " Feature Extraction | \n",
873 | " NZ Aerial Imagery | \n",
874 | " 1042 | \n",
875 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
876 | " 2015-12-27 | \n",
877 | " 2016-04-21 | \n",
878 | " 2019-01-04 | \n",
879 | " MULTIPOLYGON (((1811431.727 5632559.044, 18114... | \n",
880 | "
\n",
881 | " \n",
882 | " 3 | \n",
883 | " 2292353 | \n",
884 | " | \n",
885 | " Unknown | \n",
886 | " Durie Hill | \n",
887 | " Whanganui | \n",
888 | " Whanganui District | \n",
889 | " Feature Extraction | \n",
890 | " NZ Aerial Imagery | \n",
891 | " 1042 | \n",
892 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
893 | " 2015-12-27 | \n",
894 | " 2016-04-21 | \n",
895 | " 2019-01-04 | \n",
896 | " MULTIPOLYGON (((1776387.292 5576785.712, 17763... | \n",
897 | "
\n",
898 | " \n",
899 | " 4 | \n",
900 | " 2292407 | \n",
901 | " | \n",
902 | " Unknown | \n",
903 | " Durie Hill | \n",
904 | " Whanganui | \n",
905 | " Whanganui District | \n",
906 | " Feature Extraction | \n",
907 | " NZ Aerial Imagery | \n",
908 | " 1042 | \n",
909 | " Manawatu Whanganui 0.3m Rural Aerial Photos (2... | \n",
910 | " 2015-12-27 | \n",
911 | " 2016-04-21 | \n",
912 | " 2019-01-04 | \n",
913 | " MULTIPOLYGON (((1776318.375 5576879.269, 17763... | \n",
914 | "
\n",
915 | " \n",
916 | "
\n",
917 | "
"
918 | ],
919 | "text/plain": [
920 | " building_id name use suburb_locality town_city territorial_authority \\\n",
921 | "0 2292028 Unknown Akitio Tararua District \n",
922 | "1 2292051 Unknown Marton Marton Rangitikei District \n",
923 | "2 2292290 Unknown Rangataua Ruapehu District \n",
924 | "3 2292353 Unknown Durie Hill Whanganui Whanganui District \n",
925 | "4 2292407 Unknown Durie Hill Whanganui Whanganui District \n",
926 | "\n",
927 | " capture_method capture_source_group capture_source_id \\\n",
928 | "0 Feature Extraction NZ Aerial Imagery 1042 \n",
929 | "1 Feature Extraction NZ Aerial Imagery 1042 \n",
930 | "2 Feature Extraction NZ Aerial Imagery 1042 \n",
931 | "3 Feature Extraction NZ Aerial Imagery 1042 \n",
932 | "4 Feature Extraction NZ Aerial Imagery 1042 \n",
933 | "\n",
934 | " capture_source_name capture_source_from \\\n",
935 | "0 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
936 | "1 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
937 | "2 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
938 | "3 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
939 | "4 Manawatu Whanganui 0.3m Rural Aerial Photos (2... 2015-12-27 \n",
940 | "\n",
941 | " capture_source_to last_modified \\\n",
942 | "0 2016-04-21 2019-01-04 \n",
943 | "1 2016-04-21 2019-01-04 \n",
944 | "2 2016-04-21 2019-01-04 \n",
945 | "3 2016-04-21 2019-01-04 \n",
946 | "4 2016-04-21 2019-01-04 \n",
947 | "\n",
948 | " geometry \n",
949 | "0 MULTIPOLYGON (((1890386.169 5501282.718, 18903... \n",
950 | "1 MULTIPOLYGON (((1796386.756 5560662.126, 17963... \n",
951 | "2 MULTIPOLYGON (((1811431.727 5632559.044, 18114... \n",
952 | "3 MULTIPOLYGON (((1776387.292 5576785.712, 17763... \n",
953 | "4 MULTIPOLYGON (((1776318.375 5576879.269, 17763... "
954 | ]
955 | },
956 | "execution_count": 17,
957 | "metadata": {},
958 | "output_type": "execute_result"
959 | }
960 | ],
961 | "source": [
962 | "# Load the geoparquet file\n",
963 | "gdf = gpd.read_parquet('./data/nz-building-outlines.parquet')\n",
964 | "gdf.head()"
965 | ]
966 | },
967 | {
968 | "cell_type": "code",
969 | "execution_count": 18,
970 | "metadata": {},
971 | "outputs": [
972 | {
973 | "name": "stderr",
974 | "output_type": "stream",
975 | "text": [
976 | "c:\\Users\\tek\\.conda\\envs\\gdal\\Lib\\site-packages\\geopandas\\geodataframe.py:1819: SettingWithCopyWarning: \n",
977 | "A value is trying to be set on a copy of a slice from a DataFrame.\n",
978 | "Try using .loc[row_indexer,col_indexer] = value instead\n",
979 | "\n",
980 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
981 | " super().__setitem__(key, value)\n"
982 | ]
983 | }
984 | ],
985 | "source": [
986 | "# filter the data based on attribute\n",
987 | "gdf_filtered = gdf[gdf['town_city'] == 'Marton']\n",
988 | "\n",
989 | "# buffer geometry by 10 meters\n",
990 | "gdf_filtered['geometry'] = gdf_filtered.buffer(10)\n",
991 | "\n",
992 | "# load only the first 10000 rows\n",
993 | "gdf_filtered = gdf_filtered.head(10000)"
994 | ]
995 | },
996 | {
997 | "cell_type": "markdown",
998 | "metadata": {},
999 | "source": [
1000 | "## visualization"
1001 | ]
1002 | },
1003 | {
1004 | "cell_type": "code",
1005 | "execution_count": 19,
1006 | "metadata": {},
1007 | "outputs": [
1008 | {
1009 | "data": {
1010 | "text/plain": [
1011 | ""
1012 | ]
1013 | },
1014 | "execution_count": 19,
1015 | "metadata": {},
1016 | "output_type": "execute_result"
1017 | },
1018 | {
1019 | "data": {
1020 | "image/png": "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",
1021 | "text/plain": [
1022 | ""
1023 | ]
1024 | },
1025 | "metadata": {},
1026 | "output_type": "display_data"
1027 | }
1028 | ],
1029 | "source": [
1030 | "# plot the data\n",
1031 | "gdf_filtered.plot()"
1032 | ]
1033 | },
1034 | {
1035 | "cell_type": "code",
1036 | "execution_count": 20,
1037 | "metadata": {},
1038 | "outputs": [],
1039 | "source": [
1040 | "# save the data\n",
1041 | "gdf_filtered.to_file('./data/output/marton-buildings-buffered.geojson', driver='GeoJSON')"
1042 | ]
1043 | }
1044 | ],
1045 | "metadata": {
1046 | "kernelspec": {
1047 | "display_name": "gdal",
1048 | "language": "python",
1049 | "name": "python3"
1050 | },
1051 | "language_info": {
1052 | "codemirror_mode": {
1053 | "name": "ipython",
1054 | "version": 3
1055 | },
1056 | "file_extension": ".py",
1057 | "mimetype": "text/x-python",
1058 | "name": "python",
1059 | "nbconvert_exporter": "python",
1060 | "pygments_lexer": "ipython3",
1061 | "version": "3.12.1"
1062 | }
1063 | },
1064 | "nbformat": 4,
1065 | "nbformat_minor": 2
1066 | }
1067 |
--------------------------------------------------------------------------------