Skip to content

Commit caacdd3

Browse files
authored
Merge pull request #251 from joshuacortez/chore/testing_notebooks
Chore / Making notebooks up-to-date
2 parents a6abea3 + 39ed72b commit caacdd3

23 files changed

+1127
-1509
lines changed

geowrangler/area_zonal_stats.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
# %% auto 0
44
__all__ = ['create_area_zonal_stats']
55

6-
# %% ../notebooks/06_area_zonal_stats.ipynb 9
6+
# %% ../notebooks/06_area_zonal_stats.ipynb 7
77
from typing import Any, Dict, List
88

99
import geopandas as gpd
1010
import numpy as np
1111
import geowrangler.vector_zonal_stats as vzs
1212
from .vector_zonal_stats import GEO_INDEX_NAME
1313

14-
# %% ../notebooks/06_area_zonal_stats.ipynb 11
14+
# %% ../notebooks/06_area_zonal_stats.ipynb 9
1515
def extract_func(func):
1616
# extra by default is none
1717
extra = []
@@ -32,7 +32,7 @@ def extract_func(func):
3232

3333
return func, extra
3434

35-
# %% ../notebooks/06_area_zonal_stats.ipynb 13
35+
# %% ../notebooks/06_area_zonal_stats.ipynb 11
3636
def fix_area_agg(agg):
3737
if "func" not in agg:
3838
return agg # skip fix as agg spec is invalid
@@ -53,7 +53,7 @@ def fix_area_agg(agg):
5353

5454
return agg
5555

56-
# %% ../notebooks/06_area_zonal_stats.ipynb 16
56+
# %% ../notebooks/06_area_zonal_stats.ipynb 14
5757
def get_source_column(agg):
5858

5959
if "raw" in agg["extras"]:
@@ -74,35 +74,35 @@ def get_source_column(agg):
7474
return intersect_aoi_column
7575
return agg["column"] # everything else based on raw column
7676

77-
# %% ../notebooks/06_area_zonal_stats.ipynb 18
77+
# %% ../notebooks/06_area_zonal_stats.ipynb 16
7878
INTERSECT_AREA_AGG = {
7979
"column": "intersect_area",
8080
"func": "sum",
8181
"output": "intersect_area_sum",
8282
"extras": "raw",
8383
}
8484

85-
# %% ../notebooks/06_area_zonal_stats.ipynb 19
85+
# %% ../notebooks/06_area_zonal_stats.ipynb 17
8686
def build_agg_area_dicts(aggs):
8787
aggs = [INTERSECT_AREA_AGG, *aggs]
8888
agg_dicts = {agg["output"]: (get_source_column(agg), agg["func"]) for agg in aggs}
8989
return agg_dicts
9090

91-
# %% ../notebooks/06_area_zonal_stats.ipynb 22
91+
# %% ../notebooks/06_area_zonal_stats.ipynb 20
9292
def validate_area_aoi(aoi):
9393
if aoi.crs.is_geographic:
9494
raise ValueError(
9595
f"aoi has geographic crs: {aoi.crs}, areas maybe incorrectly computed"
9696
)
9797

98-
# %% ../notebooks/06_area_zonal_stats.ipynb 23
98+
# %% ../notebooks/06_area_zonal_stats.ipynb 21
9999
def validate_area_data(data):
100100
if data.crs.is_geographic:
101101
raise ValueError(
102102
f"data has geographic crs: {data.crs}, areas maybe incorrectly computed"
103103
)
104104

105-
# %% ../notebooks/06_area_zonal_stats.ipynb 24
105+
# %% ../notebooks/06_area_zonal_stats.ipynb 22
106106
def expand_area_aggs(aggs):
107107
expanded_aggs = []
108108
for agg in aggs:
@@ -117,7 +117,7 @@ def expand_area_aggs(aggs):
117117
expanded_aggs += [expanded_agg]
118118
return expanded_aggs
119119

120-
# %% ../notebooks/06_area_zonal_stats.ipynb 25
120+
# %% ../notebooks/06_area_zonal_stats.ipynb 23
121121
def compute_intersect_stats(intersect, expanded_aggs):
122122
# optimization - use df.apply to create all new columns simultaneously
123123
for agg in expanded_aggs:
@@ -135,7 +135,7 @@ def compute_intersect_stats(intersect, expanded_aggs):
135135
)
136136
return intersect
137137

138-
# %% ../notebooks/06_area_zonal_stats.ipynb 26
138+
# %% ../notebooks/06_area_zonal_stats.ipynb 24
139139
def compute_imputed_stats(results, expanded_aggs):
140140
# optimize with df.apply
141141
# handle when intersect_area_sum is np.nan
@@ -147,7 +147,7 @@ def compute_imputed_stats(results, expanded_aggs):
147147

148148
return results
149149

150-
# %% ../notebooks/06_area_zonal_stats.ipynb 27
150+
# %% ../notebooks/06_area_zonal_stats.ipynb 25
151151
def create_area_zonal_stats(
152152
aoi: gpd.GeoDataFrame, # Area of interest for which zonal stats are to be computed for
153153
data: gpd.GeoDataFrame, # Source gdf of region/areas containing data to compute zonal stats from

geowrangler/distance_zonal_stats.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# %% auto 0
44
__all__ = ['create_distance_zonal_stats']
55

6-
# %% ../notebooks/07_distance_zonal_stats.ipynb 9
6+
# %% ../notebooks/07_distance_zonal_stats.ipynb 7
77
from typing import Any, Dict, List
88

99
import geopandas as gpd
@@ -12,7 +12,7 @@
1212
import geowrangler.vector_zonal_stats as vzs
1313
from .vector_zonal_stats import GEO_INDEX_NAME
1414

15-
# %% ../notebooks/07_distance_zonal_stats.ipynb 11
15+
# %% ../notebooks/07_distance_zonal_stats.ipynb 9
1616
INTERNAL_DISTANCE_COL = "__Geowrangleer_nearest_distance"
1717

1818

@@ -22,7 +22,7 @@ def build_agg_distance_dicts(expanded_aggs, distance_col):
2222
agg_dicts[distance_col] = (INTERNAL_DISTANCE_COL, "mean")
2323
return agg_dicts
2424

25-
# %% ../notebooks/07_distance_zonal_stats.ipynb 12
25+
# %% ../notebooks/07_distance_zonal_stats.ipynb 10
2626
def create_distance_zonal_stats(
2727
aoi: gpd.GeoDataFrame, # Area of interest for which zonal stats are to be computed for
2828
data: gpd.GeoDataFrame, # Source gdf of region/areas containing data to compute zonal stats from

geowrangler/raster_to_dataframe.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# %% auto 0
44
__all__ = ['GRID_ID', 'generate_mask', 'read_bands']
55

6-
# %% ../notebooks/08_raster_to_dataframe.ipynb 10
6+
# %% ../notebooks/08_raster_to_dataframe.ipynb 8
77
import json
88
from typing import Any, Dict, List
99

@@ -13,7 +13,7 @@
1313
import rasterio as rio
1414
import rasterio.mask
1515

16-
# %% ../notebooks/08_raster_to_dataframe.ipynb 13
16+
# %% ../notebooks/08_raster_to_dataframe.ipynb 11
1717
def _explode(gdf):
1818
"""
1919
Explodes a geodataframe
@@ -38,7 +38,7 @@ def _explode(gdf):
3838

3939
return gdf_out
4040

41-
# %% ../notebooks/08_raster_to_dataframe.ipynb 14
41+
# %% ../notebooks/08_raster_to_dataframe.ipynb 12
4242
GRID_ID = 1
4343

4444

@@ -116,7 +116,7 @@ def generate_mask(
116116

117117
return masks, grids, label_values
118118

119-
# %% ../notebooks/08_raster_to_dataframe.ipynb 16
119+
# %% ../notebooks/08_raster_to_dataframe.ipynb 14
120120
def read_bands(image_list: List[str], mask: str):
121121

122122
data = []

geowrangler/spatialjoin_highest_intersection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
# %% auto 0
44
__all__ = ['get_highest_intersection']
55

6-
# %% ../notebooks/12_spatialjoin_highest_intersection.ipynb 8
6+
# %% ../notebooks/12_spatialjoin_highest_intersection.ipynb 6
77
import json
88
import os
99
import geopandas as gpd
1010
import pandas as pd
1111
import requests
1212
from . import grids
1313

14-
# %% ../notebooks/12_spatialjoin_highest_intersection.ipynb 28
14+
# %% ../notebooks/12_spatialjoin_highest_intersection.ipynb 23
1515
def get_highest_intersection(
1616
gdf1: gpd.GeoDataFrame, # gdf1 will be the basis of output geometry
1717
gdf2: gpd.GeoDataFrame, # gdf2 data will all be included during intersection

geowrangler/vector_to_raster_mask.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
# %% auto 0
44
__all__ = ['GRID_ID', 'generate_mask']
55

6-
# %% ../notebooks/10_vector_to_raster_mask.ipynb 10
6+
# %% ../notebooks/10_vector_to_raster_mask.ipynb 8
77
import json
88
from typing import Any, Dict
99

@@ -13,7 +13,7 @@
1313
import rasterio as rio
1414
import rasterio.mask
1515

16-
# %% ../notebooks/10_vector_to_raster_mask.ipynb 12
16+
# %% ../notebooks/10_vector_to_raster_mask.ipynb 10
1717
def _explode(gdf):
1818
"""
1919
Explodes a geodataframe
@@ -38,7 +38,7 @@ def _explode(gdf):
3838

3939
return gdf_out
4040

41-
# %% ../notebooks/10_vector_to_raster_mask.ipynb 13
41+
# %% ../notebooks/10_vector_to_raster_mask.ipynb 11
4242
GRID_ID = 1
4343

4444

geowrangler/vector_zonal_stats.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
# %% auto 0
44
__all__ = ['create_zonal_stats', 'compute_quadkey', 'create_bingtile_zonal_stats']
55

6-
# %% ../notebooks/02_vector_zonal_stats.ipynb 8
6+
# %% ../notebooks/02_vector_zonal_stats.ipynb 6
77
GEO_INDEX_NAME = "__GeoWrangleer_aoi_index"
88

9-
# %% ../notebooks/02_vector_zonal_stats.ipynb 9
9+
# %% ../notebooks/02_vector_zonal_stats.ipynb 7
1010
from functools import partial
1111
from typing import Any, Dict, List
1212

@@ -15,7 +15,7 @@
1515
import numpy as np
1616
import pandas as pd
1717

18-
# %% ../notebooks/02_vector_zonal_stats.ipynb 13
18+
# %% ../notebooks/02_vector_zonal_stats.ipynb 11
1919
def _fix_agg(
2020
agg: Dict[str, Any], # A dict containing at the minimum a 'func' key
2121
) -> Dict[str, Any]:
@@ -54,7 +54,7 @@ def _fix_agg(
5454

5555
return agg
5656

57-
# %% ../notebooks/02_vector_zonal_stats.ipynb 18
57+
# %% ../notebooks/02_vector_zonal_stats.ipynb 16
5858
def _check_agg(
5959
agg: Dict[str, Any], # A dict containing at the minimum a 'func' key
6060
i: int, # The index into the list of aggregations
@@ -95,7 +95,7 @@ def _check_agg(
9595
f"fillna list {agg['fillna']} doesn't match func list {agg['func']} in agg[{i}] {agg}"
9696
)
9797

98-
# %% ../notebooks/02_vector_zonal_stats.ipynb 21
98+
# %% ../notebooks/02_vector_zonal_stats.ipynb 19
9999
def _validate_aggs(
100100
fixed_aggs: List[Dict[str, Any]], # A list of fixed agg specs
101101
data: pd.DataFrame, # Source dataframe
@@ -111,7 +111,7 @@ def _validate_aggs(
111111
)
112112
outputs += agg["output"]
113113

114-
# %% ../notebooks/02_vector_zonal_stats.ipynb 26
114+
# %% ../notebooks/02_vector_zonal_stats.ipynb 24
115115
def _validate_aoi(
116116
aoi: pd.DataFrame, # Source dataframe
117117
) -> None:
@@ -120,7 +120,7 @@ def _validate_aoi(
120120
"AOI has a pandas.MultiIndex. Please convert the index to a single level such as pd.RangeIndex"
121121
)
122122

123-
# %% ../notebooks/02_vector_zonal_stats.ipynb 27
123+
# %% ../notebooks/02_vector_zonal_stats.ipynb 25
124124
def _expand_aggs(
125125
aggs: List[Dict[str, Any]], # List of fixed valid aggs
126126
) -> List[Dict[str, Any]]:
@@ -137,14 +137,14 @@ def _expand_aggs(
137137
expanded_aggs += [expanded_agg]
138138
return expanded_aggs
139139

140-
# %% ../notebooks/02_vector_zonal_stats.ipynb 29
140+
# %% ../notebooks/02_vector_zonal_stats.ipynb 27
141141
def _build_agg_args(
142142
aggs: List[Dict[str, Any]], # A list of expanded aggs
143143
) -> Dict:
144144
"""Builds a dict of args with output as key and a tuple of column and func as value from a list of expanded aggs"""
145145
return {agg["output"]: (agg["column"], agg["func"]) for agg in aggs}
146146

147-
# %% ../notebooks/02_vector_zonal_stats.ipynb 31
147+
# %% ../notebooks/02_vector_zonal_stats.ipynb 29
148148
def _prep_aoi(
149149
aoi: pd.DataFrame, # Area of interest
150150
) -> pd.DataFrame:
@@ -164,7 +164,7 @@ def _prep_aoi(
164164
aoi = aoi.reset_index(level=0) # index added as new column named GEO_INDEX_NAME
165165
return aoi
166166

167-
# %% ../notebooks/02_vector_zonal_stats.ipynb 36
167+
# %% ../notebooks/02_vector_zonal_stats.ipynb 34
168168
def _fillnas(
169169
expanded_aggs: List[Dict[str, Any]], # list of expanded aggs
170170
results: pd.DataFrame, # results dataframe to be filled with NAs if flag set
@@ -186,7 +186,7 @@ def _fillnas(
186186

187187
return results
188188

189-
# %% ../notebooks/02_vector_zonal_stats.ipynb 40
189+
# %% ../notebooks/02_vector_zonal_stats.ipynb 38
190190
def _aggregate_stats(
191191
aoi: pd.DataFrame, # Area of interest
192192
groups: pd.core.groupby.DataFrameGroupBy, # Source data aggregated into groups by GEO_INDEX_NAME
@@ -204,7 +204,7 @@ def _aggregate_stats(
204204

205205
return results
206206

207-
# %% ../notebooks/02_vector_zonal_stats.ipynb 46
207+
# %% ../notebooks/02_vector_zonal_stats.ipynb 44
208208
def create_zonal_stats(
209209
aoi: gpd.GeoDataFrame, # Area of interest for which zonal stats are to be computed for
210210
data: gpd.GeoDataFrame, # Source gdf containing data to compute zonal stats from
@@ -248,14 +248,14 @@ def create_zonal_stats(
248248

249249
return results
250250

251-
# %% ../notebooks/02_vector_zonal_stats.ipynb 62
251+
# %% ../notebooks/02_vector_zonal_stats.ipynb 60
252252
tms = morecantile.tms.get("WebMercatorQuad") # Tile Matrix for Bing Maps
253253

254-
# %% ../notebooks/02_vector_zonal_stats.ipynb 63
254+
# %% ../notebooks/02_vector_zonal_stats.ipynb 61
255255
def get_quadkey(geometry, zoom_level):
256256
return tms.quadkey(tms.tile(geometry.x, geometry.y, zoom_level))
257257

258-
# %% ../notebooks/02_vector_zonal_stats.ipynb 64
258+
# %% ../notebooks/02_vector_zonal_stats.ipynb 62
259259
def compute_quadkey(
260260
data: gpd.GeoDataFrame, # The geodataframe
261261
zoom_level: int, # The quadkey zoom level (1-23)
@@ -282,7 +282,7 @@ def compute_quadkey(
282282

283283
return data
284284

285-
# %% ../notebooks/02_vector_zonal_stats.ipynb 71
285+
# %% ../notebooks/02_vector_zonal_stats.ipynb 69
286286
def validate_aoi_quadkey(aoi, aoi_quadkey_column) -> None:
287287

288288
if aoi_quadkey_column not in list(aoi.columns.values):
@@ -310,7 +310,7 @@ def validate_data_quadkey(data, data_quadkey_column, min_zoom_level):
310310
f"data quadkey levels cannot be less than aoi quadkey level {min_zoom_level}"
311311
)
312312

313-
# %% ../notebooks/02_vector_zonal_stats.ipynb 72
313+
# %% ../notebooks/02_vector_zonal_stats.ipynb 70
314314
def create_bingtile_zonal_stats(
315315
aoi: pd.DataFrame, # An aoi with quadkey column
316316
data: pd.DataFrame, # Data with quadkey column

0 commit comments

Comments
 (0)