├── .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 | ![geopandas demo output](https://github.com/iamtekson/geospatial-data-analysis-python/blob/master/image/geopandas_output.png) 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 | ![rasterio demo output](https://github.com/iamtekson/geospatial-data-analysis-python/blob/master/image/lulc_class_dn_values.png) 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 | ![geopandas map layout](https://github.com/iamtekson/geospatial-data-analysis-python/blob/master/image/gpd_map_output.jpg) 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 | ![rasterstats demo image](https://github.com/iamtekson/geospatial-data-analysis-python/blob/master/image/zones_elevation.png) 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[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137.0,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0.0],UNIT[&quot;Degree&quot;,0.0174532925199433],AUTHORITY[&quot;EPSG&quot;,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[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137.0,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0.0],UNIT[&quot;Degree&quot;,0.0174532925199433],AUTHORITY[&quot;EPSG&quot;,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 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 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 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | "
101120304050606170100...1502002012022101219012218090
063.042.03.0149.0133.0322.0157.020.0140.014.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
118.022.01.038.0110.0447.0185.041.0696.015.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
230.034.01.0154.0216.0425.0125.0117.01139.035.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
329.011.0NaN50.0117.0278.077.074.02503.076.0...NaNNaNNaNNaNNaNNaNNaNNaNNaNNaN
458.070.021.0167.0287.0812.0177.0174.04999.0170.0...6.0820.027.010.05.0NaNNaNNaNNaNNaN
\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 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | "
building_idnameusesuburb_localitytown_cityterritorial_authoritycapture_methodcapture_source_groupcapture_source_idcapture_source_namecapture_source_fromcapture_source_tolast_modifiedgeometry
02292028UnknownAkitioTararua DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1890386.169 5501282.718, 18903...
12292051UnknownMartonMartonRangitikei DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1796386.756 5560662.126, 17963...
22292290UnknownRangatauaRuapehu DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1811431.727 5632559.044, 18114...
32292353UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776387.292 5576785.712, 17763...
42292407UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776318.375 5576879.269, 17763...
\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 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | "
building_idnameusesuburb_localitytown_cityterritorial_authoritycapture_methodcapture_source_groupcapture_source_idcapture_source_namecapture_source_fromcapture_source_tolast_modifiedgeometry
02292028UnknownAkitioTararua DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1890386.169 5501282.718, 18903...
12292051UnknownMartonMartonRangitikei DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1796386.756 5560662.126, 17963...
22292290UnknownRangatauaRuapehu DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1811431.727 5632559.044, 18114...
32292353UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776387.292 5576785.712, 17763...
42292407UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776318.375 5576879.269, 17763...
\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 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | "
building_inameusesuburb_loctown_cityterritoriacapture_mecapture_socapture__1capture__2capture__3capture__4last_modifgeometry
02292028NoneUnknownAkitioNoneTararua DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04POLYGON ((1890386.169 5501282.718, 1890380.894...
12292051NoneUnknownMartonMartonRangitikei DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04POLYGON ((1796386.756 5560662.126, 1796394.053...
22292290NoneUnknownRangatauaNoneRuapehu DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04POLYGON ((1811431.727 5632559.044, 1811437.183...
32292353NoneUnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04POLYGON ((1776387.292 5576785.712, 1776394.41 ...
42292407NoneUnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04POLYGON ((1776318.375 5576879.269, 1776321.881...
\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 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | "
building_idnameusesuburb_localitytown_cityterritorial_authoritycapture_methodcapture_source_groupcapture_source_idcapture_source_namecapture_source_fromcapture_source_tolast_modifiedgeometry
02292028UnknownAkitioTararua DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1890386.169 5501282.718, 18903...
12292051UnknownMartonMartonRangitikei DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1796386.756 5560662.126, 17963...
22292290UnknownRangatauaRuapehu DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1811431.727 5632559.044, 18114...
32292353UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776387.292 5576785.712, 17763...
42292407UnknownDurie HillWhanganuiWhanganui DistrictFeature ExtractionNZ Aerial Imagery1042Manawatu Whanganui 0.3m Rural Aerial Photos (2...2015-12-272016-04-212019-01-04MULTIPOLYGON (((1776318.375 5576879.269, 17763...
\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 | --------------------------------------------------------------------------------