- Added a
geoprocessing.get_unique_values
which is a parallelized operation to determine the unique values in a raster. - Removed the output of temporary token
.ECOSHARDED
and.BUILDOVERIVEWS
files. - Added a
--ndv [VALUE]
flag that replaces the nodata value of a raster with the provided one. If the nodata value existed prior, the values of those values are replaced with the given value as well as many non-finite values with this value. - Added a
--remove_hash [HASH FN]
function that can copy or rename a filename with an embedded hash to remove the hash entirely. - Added Python threaded paralelization to
convolve_2d
and included an additional parameterlargest_block
to set the size of the work units processed in parallel. - Added
ecoshard.utils
package for functionality that's repeatedly useful when processing GIS data. - Added parallel processing to
raster_calculator
. - Modified
reclassify_raster
to let undefined codes map to nodata by default rather than raising an exception. - Added an
output_type
flag towarp_raster
so it can be used to aggregate from a base type like a byte, to a float if an interpolation scheme causes more information to be created. - Added
'geometry_type'
field toget_vector_info
that is useful to pass when callingreproject_vector
. - Added
n_workers
toconvolve_2d
to help control memory overflow errors by reducing the number of simultaneous workers. raster_calculator
now raises an exception if passed rasters that are not of the same blocksize, added an additional parameter,allow_different_blocksizes
to override this behavior.- Added an 'all_touched' option to any
vector_mask_option
ingeoprocessing
to allow for the ALL_TOUCHED=TRUE OGR clipping algorithm on polygons. - Removed the
values_required
argument fromgeoprocessing.reclassify_raster
to streamline implementation and remove non-orthogonality in the API. - Upgrading
shapely
dependancy to version 2.0. - Adding
target_mask_value
option forwarp_raster
vector_mask_option
to set target nodata value when masking a raster by vector coverage. - Fixing issue where taskgraph wouldn't filter logs based on outer level setting.
- Changed default of
geometry_type
inreproject_vector
to beNone
to either default to the geometry type of the input layer or require a user to set it manually. - Adding a
get_pixel_area_in_target_projection
function which calculates the area of a pixel of a raster if transformed to the target projection system. - Allowing for a
allow_different_blocksizes
initerblocks
. - Fixed an issue in
fetch_and_clip
where a lat/long raster ranging from 0-360 longitude would have a 0 valued strip to the left of the meridian when clipped to a -180/180 range. - Fixed issue where NaNs present in the raster would cause a complex number to be generated when calculating raster stats.
- Added
--hash_length
flag to command line to limit the hash character length of hashed files. - Added functionality to run
python -m ecoshard process ...
command in parallel if multiple files match the file pattern target.
- Added a
run_parallel
flag to allow for parallel warpsgeoprocessing.stitch_rasters
for parallel warping of rasters.
Added functionality to publish a local file directly to an EcoShard server. This is available in the command line publish command whose arguments have been redefined from the previous version.
Added flag to allow for multi-thread version of TaskGraph.
Fixed issue with geoprocessing bounding box projection on exotic projections such as sinusoidal to wgs84.
Added a
get_utm_zone
function that calculates the EPSG code for the major UTM zones given a lat/lng coordinate.Fixed an issue that would cause a crash in stitching rasters where the base raster was too far up/left of the target stitch raster but still overlapped with the stitch target.
Added functionality to
geoprocessing.routing
to extract stream layer based on Strahler stream order and build subwatersheds and vector stream layer from that information.geoproceesing.routing.extract_strahler_streams_d8
geoprocessing.routing.calculate_subwatershed_boundary
Added functionality to detect the lowest drain or sink in a DEM in
geoprocessing.routing.detect_lowest_drain_and_sink
.Added functionality to detect all outlets as a geometry layer in
geoprocessing.routing.detect_outlets
.Added a
--hash_substring_len
flag to limit the number of characters in the hash generated by--hash_file
.
- Changed behavior of command line function, now takes one of two primary
commands
process
orpublish
. The commandprocess
behaves like the original command line utility with same arguments and behavior. Thepublish
command takes a Google Bucket URI, host to an ecoshard server, and an api key and published the raster to that server. - Fixed an issue when summing up that would ignore nodata values.
- Fixes an issue where the overview interpolation argument was ignored.
- Added a
download_and_unzip
function to the API.
- Fixed an issue that would cause the download rate to be under estimated.
- Fixing an issue in download_to_url where the file might not be flushed and the final log message is not printed.
Added a new command line mode –reduce_factor that reduces the number of pixels in a raster by that integer amount. Ex:
python -m ecoshard base.tif --reduce_factor 4 max target.tif
this call makes the size of the pixels in base.tif 4 times larger on the edge, thus reducing the total size of the image by 16 times, the convolution upsample is done with a "max" and the output file is
target.tif
. The modes "min", "max", "sum", "average", "mode" are available.
- Added a
download_url
function toecoshard
to fetch files via http(s). - Developing Flask module to visualize ecoshards.
- Hotfix: gs to gsutil for copying to buckets.
- Added functionality to download a url.
- Added functionality to copy to a google bucket.
- Fixed an issue on functions that should write a token file but didn't.
- Added a
--force
flag to the command line utility.
- Initial release.