@@ -135,117 +135,117 @@ In the GIS world, rasters are used for representing continuous phenomena (e.g. e
135135
136136### ** Classification**
137137
138- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
139- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
140- | [ Box Plot] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
141- | [ Equal Interval] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
142- | [ Head/Tail Breaks] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
143- | [ Maximum Breaks] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
144- | [ Natural Breaks] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
145- | [ Percentiles] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
146- | [ Quantile] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
147- | [ Reclassify] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
148- | [ Std Mean] ( xrspatial/classify.py ) | ✅️ | ✅ | ✅ | ✅ |
138+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
139+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
140+ | [ Box Plot] ( xrspatial/classify.py ) | Classifies values into bins based on box plot quartile boundaries | ✅️ | ✅ | ✅ | ✅ |
141+ | [ Equal Interval] ( xrspatial/classify.py ) | Divides the value range into equal-width bins | ✅️ | ✅ | ✅ | ✅ |
142+ | [ Head/Tail Breaks] ( xrspatial/classify.py ) | Classifies heavy-tailed distributions using recursive mean splitting | ✅️ | ✅ | ✅ | ✅ |
143+ | [ Maximum Breaks] ( xrspatial/classify.py ) | Finds natural groupings by maximizing differences between sorted values | ✅️ | ✅ | ✅ | ✅ |
144+ | [ Natural Breaks] ( xrspatial/classify.py ) | Optimizes class boundaries to minimize within-class variance (Jenks) | ✅️ | ✅ | ✅ | ✅ |
145+ | [ Percentiles] ( xrspatial/classify.py ) | Assigns classes based on user-defined percentile breakpoints | ✅️ | ✅ | ✅ | ✅ |
146+ | [ Quantile] ( xrspatial/classify.py ) | Distributes values into classes with equal observation counts | ✅️ | ✅ | ✅ | ✅ |
147+ | [ Reclassify] ( xrspatial/classify.py ) | Remaps pixel values to new classes using a user-defined lookup | ✅️ | ✅ | ✅ | ✅ |
148+ | [ Std Mean] ( xrspatial/classify.py ) | Classifies values by standard deviation intervals from the mean | ✅️ | ✅ | ✅ | ✅ |
149149
150150-------
151151
152152### ** Focal**
153153
154- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
155- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
156- | [ Apply] ( xrspatial/focal.py ) | ✅️ | ✅️ | | |
157- | [ Hotspots] ( xrspatial/focal.py ) | ✅️ | ✅️ | ✅️ | |
158- | [ Mean] ( xrspatial/focal.py ) | ✅️ | ✅️ | ✅️ | |
159- | [ Focal Statistics] ( xrspatial/focal.py ) | ✅️ | ✅️ | ✅️ | |
154+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
155+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
156+ | [ Apply] ( xrspatial/focal.py ) | Applies a custom function over a sliding neighborhood window | ✅️ | ✅️ | | |
157+ | [ Hotspots] ( xrspatial/focal.py ) | Identifies statistically significant spatial clusters using Getis-Ord Gi * | ✅️ | ✅️ | ✅️ | |
158+ | [ Mean] ( xrspatial/focal.py ) | Computes the mean value within a sliding neighborhood window | ✅️ | ✅️ | ✅️ | |
159+ | [ Focal Statistics] ( xrspatial/focal.py ) | Computes summary statistics over a sliding neighborhood window | ✅️ | ✅️ | ✅️ | |
160160
161161-------
162162
163163### ** Multispectral**
164164
165- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
166- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
167- | [ Atmospherically Resistant Vegetation Index (ARVI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
168- | [ Enhanced Built-Up and Bareness Index (EBBI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
169- | [ Enhanced Vegetation Index (EVI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
170- | [ Green Chlorophyll Index (GCI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
171- | [ Normalized Burn Ratio (NBR)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
172- | [ Normalized Burn Ratio 2 (NBR2)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
173- | [ Normalized Difference Moisture Index (NDMI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
174- | [ Normalized Difference Vegetation Index (NDVI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
175- | [ Soil Adjusted Vegetation Index (SAVI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
176- | [ Structure Insensitive Pigment Index (SIPI)] ( xrspatial/multispectral.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
177- | [ True Color] ( xrspatial/multispectral.py ) | ✅️ | ️ | ✅️ | ️ |
165+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
166+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
167+ | [ Atmospherically Resistant Vegetation Index (ARVI)] ( xrspatial/multispectral.py ) | Vegetation index resistant to atmospheric effects using blue band correction | ✅️ | ✅️ | ✅️ | ✅️ |
168+ | [ Enhanced Built-Up and Bareness Index (EBBI)] ( xrspatial/multispectral.py ) | Highlights built-up areas and barren land from thermal and SWIR bands | ✅️ | ✅️ | ✅️ | ✅️ |
169+ | [ Enhanced Vegetation Index (EVI)] ( xrspatial/multispectral.py ) | Enhanced vegetation index reducing soil and atmospheric noise | ✅️ | ✅️ | ✅️ | ✅️ |
170+ | [ Green Chlorophyll Index (GCI)] ( xrspatial/multispectral.py ) | Estimates leaf chlorophyll content from green and NIR reflectance | ✅️ | ✅️ | ✅️ | ✅️ |
171+ | [ Normalized Burn Ratio (NBR)] ( xrspatial/multispectral.py ) | Measures burn severity using NIR and SWIR band difference | ✅️ | ✅️ | ✅️ | ✅️ |
172+ | [ Normalized Burn Ratio 2 (NBR2)] ( xrspatial/multispectral.py ) | Refines burn severity mapping using two SWIR bands | ✅️ | ✅️ | ✅️ | ✅️ |
173+ | [ Normalized Difference Moisture Index (NDMI)] ( xrspatial/multispectral.py ) | Detects vegetation moisture stress from NIR and SWIR reflectance | ✅️ | ✅️ | ✅️ | ✅️ |
174+ | [ Normalized Difference Vegetation Index (NDVI)] ( xrspatial/multispectral.py ) | Quantifies vegetation density from red and NIR band difference | ✅️ | ✅️ | ✅️ | ✅️ |
175+ | [ Soil Adjusted Vegetation Index (SAVI)] ( xrspatial/multispectral.py ) | Vegetation index with soil brightness correction factor | ✅️ | ✅️ | ✅️ | ✅️ |
176+ | [ Structure Insensitive Pigment Index (SIPI)] ( xrspatial/multispectral.py ) | Estimates carotenoid-to-chlorophyll ratio for plant stress detection | ✅️ | ✅️ | ✅️ | ✅️ |
177+ | [ True Color] ( xrspatial/multispectral.py ) | Composites red, green, and blue bands into a natural color image | ✅️ | ️ | ✅️ | ️ |
178178
179179-------
180180
181181
182182### ** Pathfinding**
183183
184- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
185- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
186- | [ A* Pathfinding] ( xrspatial/pathfinding.py ) | ✅️ | | | |
184+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
185+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
186+ | [ A* Pathfinding] ( xrspatial/pathfinding.py ) | Finds the least-cost path between two cells on a cost surface | ✅️ | | | |
187187
188188----------
189189
190190### ** Proximity**
191191
192- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
193- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
194- | [ Allocation] ( xrspatial/proximity.py ) | ✅️ | ✅ | | |
195- | [ Direction] ( xrspatial/proximity.py ) | ✅️ | ✅ | | |
196- | [ Proximity] ( xrspatial/proximity.py ) | ✅️ | ✅ | | |
192+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
193+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
194+ | [ Allocation] ( xrspatial/proximity.py ) | Assigns each cell to the identity of the nearest source feature | ✅️ | ✅ | | |
195+ | [ Direction] ( xrspatial/proximity.py ) | Computes the direction from each cell to the nearest source feature | ✅️ | ✅ | | |
196+ | [ Proximity] ( xrspatial/proximity.py ) | Computes the distance from each cell to the nearest source feature | ✅️ | ✅ | | |
197197
198198--------
199199
200200### ** Raster to vector**
201201
202- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
203- | :-----| :------------------:| :-----------------:| :---------------------:| :---------------------:|
204- | [ Polygonize] ( xrspatial/experimental/polygonize.py ) | ✅️ | | | |
202+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
203+ | :-----| :------------| :------------ ------:| :-----------------:| :---------------------:| :---------------------:|
204+ | [ Polygonize] ( xrspatial/experimental/polygonize.py ) | Converts contiguous regions of equal value into vector polygons | ✅️ | | | |
205205
206206--------
207207
208208### ** Surface**
209209
210- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
211- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
212- | [ Aspect] ( xrspatial/aspect.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
213- | [ Curvature] ( xrspatial/curvature.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
214- | [ Hillshade] ( xrspatial/hillshade.py ) | ✅️ | ✅️ | | |
215- | [ Slope] ( xrspatial/slope.py ) | ✅️ | ✅️ | ✅️ | ✅️ |
216- | [ Terrain Generation] ( xrspatial/terrain.py ) | ✅️ | ✅️ | ✅️ | |
217- | [ Viewshed] ( xrspatial/viewshed.py ) | ✅️ | | | |
218- | [ Perlin Noise] ( xrspatial/perlin.py ) | ✅️ | ✅️ | ✅️ | |
219- | [ Bump Mapping] ( xrspatial/bump.py ) | ✅️ | | | |
210+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
211+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
212+ | [ Aspect] ( xrspatial/aspect.py ) | Computes downslope direction of each cell in degrees | ✅️ | ✅️ | ✅️ | ✅️ |
213+ | [ Curvature] ( xrspatial/curvature.py ) | Measures rate of slope change (concavity/convexity) at each cell | ✅️ | ✅️ | ✅️ | ✅️ |
214+ | [ Hillshade] ( xrspatial/hillshade.py ) | Simulates terrain illumination from a given sun angle and azimuth | ✅️ | ✅️ | | |
215+ | [ Slope] ( xrspatial/slope.py ) | Computes terrain gradient steepness at each cell in degrees | ✅️ | ✅️ | ✅️ | ✅️ |
216+ | [ Terrain Generation] ( xrspatial/terrain.py ) | Generates synthetic terrain elevation using fractal noise | ✅️ | ✅️ | ✅️ | |
217+ | [ Viewshed] ( xrspatial/viewshed.py ) | Determines visible cells from a given observer point on terrain | ✅️ | | | |
218+ | [ Perlin Noise] ( xrspatial/perlin.py ) | Generates smooth continuous random noise for procedural textures | ✅️ | ✅️ | ✅️ | |
219+ | [ Bump Mapping] ( xrspatial/bump.py ) | Adds randomized bump features to simulate natural terrain variation | ✅️ | | | |
220220
221221-----------
222222
223223### ** Zonal**
224224
225- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
226- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
227- | [ Apply] ( xrspatial/zonal.py ) | ✅️ | ✅️ | | |
228- | [ Crop] ( xrspatial/zonal.py ) | ✅️ | | | |
229- | [ Regions] ( xrspatial/zonal.py ) | | | | |
230- | [ Trim] ( xrspatial/zonal.py ) | ✅️ | | | |
231- | [ Zonal Statistics] ( xrspatial/zonal.py ) | ✅️ | ✅️| | |
232- | [ Zonal Cross Tabulate] ( xrspatial/zonal.py ) | ✅️ | ✅️| | |
225+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
226+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
227+ | [ Apply] ( xrspatial/zonal.py ) | Applies a custom function to each zone in a classified raster | ✅️ | ✅️ | | |
228+ | [ Crop] ( xrspatial/zonal.py ) | Extracts the bounding rectangle of a specific zone | ✅️ | | | |
229+ | [ Regions] ( xrspatial/zonal.py ) | Identifies connected regions of non-zero cells | | | | |
230+ | [ Trim] ( xrspatial/zonal.py ) | Removes nodata border rows and columns from a raster | ✅️ | | | |
231+ | [ Zonal Statistics] ( xrspatial/zonal.py ) | Computes summary statistics for a value raster within each zone | ✅️ | ✅️| | |
232+ | [ Zonal Cross Tabulate] ( xrspatial/zonal.py ) | Cross-tabulates agreement between two categorical rasters | ✅️ | ✅️| | |
233233
234234-----------
235235
236236### ** Local**
237237
238- | Name | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
239- | :----------:| :----------------------:| :--------------------:| :-------------------:| :------:|
240- | [ Cell Stats] ( xrspatial/local.py ) | ✅️ | | | |
241- | [ Combine] ( xrspatial/local.py ) | ✅️ | | | |
242- | [ Lesser Frequency] ( xrspatial/local.py ) | ✅️ | | | |
243- | [ Equal Frequency] ( xrspatial/local.py ) | ✅️ | | | |
244- | [ Greater Frequency] ( xrspatial/local.py ) | ✅️ | | | |
245- | [ Lowest Position] ( xrspatial/local.py ) | ✅️ | | | |
246- | [ Highest Position] ( xrspatial/local.py ) | ✅️ | | | |
247- | [ Popularity] ( xrspatial/local.py ) | ✅️ | | | |
248- | [ Rank] ( xrspatial/local.py ) | ✅️ | | | |
238+ | Name | Description | NumPy xr.DataArray | Dask xr.DataArray | CuPy GPU xr.DataArray | Dask GPU xr.DataArray |
239+ | :----------:| :------------| :------------ ----------:| :--------------------:| :-------------------:| :------:|
240+ | [ Cell Stats] ( xrspatial/local.py ) | Computes summary statistics across multiple rasters per cell | ✅️ | | | |
241+ | [ Combine] ( xrspatial/local.py ) | Assigns unique IDs to each distinct combination across rasters | ✅️ | | | |
242+ | [ Lesser Frequency] ( xrspatial/local.py ) | Counts how many rasters have values less than a reference | ✅️ | | | |
243+ | [ Equal Frequency] ( xrspatial/local.py ) | Counts how many rasters have values equal to a reference | ✅️ | | | |
244+ | [ Greater Frequency] ( xrspatial/local.py ) | Counts how many rasters have values greater than a reference | ✅️ | | | |
245+ | [ Lowest Position] ( xrspatial/local.py ) | Identifies which raster has the minimum value at each cell | ✅️ | | | |
246+ | [ Highest Position] ( xrspatial/local.py ) | Identifies which raster has the maximum value at each cell | ✅️ | | | |
247+ | [ Popularity] ( xrspatial/local.py ) | Returns the value from the most common position across rasters | ✅️ | | | |
248+ | [ Rank] ( xrspatial/local.py ) | Ranks cell values across multiple rasters per cell | ✅️ | | | |
249249
250250#### Usage
251251
0 commit comments