@@ -517,9 +517,8 @@ def stats(
517
517
stats() works with Dask with NumPy backed DataArray
518
518
>>> import dask.array as da
519
519
>>> import dask.array as da
520
- >>> values_dask = xr.DataArray(da.from_array(values, chunks=(3, 3)))
521
- >>> zones_dask = xr.DataArray(da.from_array(zones, chunks=(3, 3)))
522
-
520
+ >>> values_dask = xr.DataArray(da.from_array(values_data, chunks=(3, 3)))
521
+ >>> zones_dask = xr.DataArray(da.from_array(zones_data, chunks=(3, 3)))
523
522
>>> # Calculate Stats with dask backed xarray DataArrays
524
523
>>> dask_stats_df = stats(zones=zones_dask, values=values_dask)
525
524
>>> print(type(dask_stats_df))
@@ -530,20 +529,6 @@ def stats(
530
529
1 10 27.0 49 5 675 14.21267 202.0 25
531
530
2 20 72.0 94 50 1800 14.21267 202.0 25
532
531
3 30 77.0 99 55 1925 14.21267 202.0 25
533
-
534
- >>> # Custom Stats with dask backed xarray DataArrays
535
- >>> dask_custom_stats ={'double_sum': lambda val: val.sum()*2}
536
- >>> dask_custom_stats_df = stats(
537
- >>> zones=zones_dask, values=values_dask, stats_funcs=custom_stats
538
- >>> )
539
- >>> print(type(dask_custom_stats_df))
540
- <class 'dask.dataframe.core.DataFrame'>
541
- >>> print(dask_custom_stats_df.compute())
542
- zone double_sum
543
- 0 0 1100
544
- 1 10 1350
545
- 2 20 3600
546
- 3 30 3850
547
532
"""
548
533
549
534
validate_arrays (zones , values )
@@ -968,10 +953,10 @@ def crosstab(
968
953
.. sourcecode:: python
969
954
970
955
>>> import dask.array as da
971
- >>> values_dask = xr.DataArray(da.from_array(values , chunks=(3, 3)))
972
- >>> zones_dask = xr.DataArray(da.from_array(zones , chunks=(3, 3)))
973
- >>> df = crosstab(zones=zones_dask, values=values_dask)
974
- >>> print(df )
956
+ >>> values_dask = xr.DataArray(da.from_array(values_data , chunks=(3, 3)))
957
+ >>> zones_dask = xr.DataArray(da.from_array(zones_data , chunks=(3, 3)))
958
+ >>> dask_df = crosstab(zones=zones_dask, values=values_dask)
959
+ >>> print(dask_df )
975
960
Dask DataFrame Structure:
976
961
zone 0.0 10.0 20.0 30.0 40.0 50.0
977
962
npartitions=5
@@ -981,7 +966,7 @@ def crosstab(
981
966
4 ... ... ... ... ... ... ...
982
967
5 ... ... ... ... ... ... ...
983
968
Dask Name: astype, 1186 tasks
984
- >>> print(dask_df.compute)
969
+ >>> print(dask_df.compute() )
985
970
zone 0.0 10.0 20.0 30.0 40.0 50.0
986
971
0 0 1 0 0 0 0 0
987
972
1 1 3 0 0 0 0 0
@@ -1120,6 +1105,7 @@ def apply(
1120
1105
1121
1106
>>> import numpy as np
1122
1107
>>> import xarray as xr
1108
+ >>> from xrspatial.zonal import apply
1123
1109
>>> zones_val = np.array([
1124
1110
[1, 1, 0, 2],
1125
1111
[0, 2, 1, 2]])
@@ -1132,7 +1118,7 @@ def apply(
1132
1118
>>> apply(zones, agg, func)
1133
1119
>>> agg
1134
1120
array([[0, 0, 5, 0],
1135
- [3, 0 , 0, 0]])
1121
+ [3, np.nan , 0, 0]])
1136
1122
"""
1137
1123
if not isinstance (zones , xr .DataArray ):
1138
1124
raise TypeError ("zones must be instance of DataArray" )
@@ -1276,6 +1262,7 @@ def suggest_zonal_canvas(
1276
1262
>>> from spatialpandas import GeoDataFrame
1277
1263
>>> import geopandas as gpd
1278
1264
>>> import datashader as ds
1265
+ >>> from xrspatial.zonal import suggest_zonal_canvas
1279
1266
1280
1267
>>> df = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
1281
1268
>>> df = df.to_crs("EPSG:3857")
@@ -1298,12 +1285,16 @@ def suggest_zonal_canvas(
1298
1285
crs='Mercator',
1299
1286
min_pixels=min_pixels,
1300
1287
)
1288
+ >>> height, width
1289
+ (1537, 2376)
1301
1290
>>> cvs = ds.Canvas(x_range=x_range, y_range=y_range,
1302
1291
>>> plot_height=height, plot_width=width)
1303
1292
>>> spatial_df = GeoDataFrame(df, geometry='geometry')
1304
1293
>>> agg = cvs.polygons(spatial_df, 'geometry', agg=ds.max('id'))
1305
1294
>>> min_poly_id = df.area.argmin()
1306
1295
>>> actual_min_pixels = len(np.where(agg.data==min_poly_id)[0])
1296
+ >>> actual_min_pixels
1297
+ 22
1307
1298
"""
1308
1299
full_xrange , full_yrange = get_full_extent (crs )
1309
1300
xmin , xmax = full_xrange
0 commit comments