Releases: descarteslabs/descarteslabs-python
Releases · descarteslabs/descarteslabs-python
v0.18.0: Client release 0.18.0 (#4264)
Changed
- Many old and obsolete examples were removed from the package.
- Scene.ndarray, SceneCollection.stack, and SceneCollection.mosaic now will automatically mask alpha if the alpha band is available in the relevant scene(s), and will set mask_alpha to False if the alpha band does not exist.
- FeatureCollection.add, FeatureCollection.upload, Vector.create_feature, Vector.create_features, and Vector.upload_features all accept a fix_geometry string argument that determines how to handle certain problem geometries including those which do not follow counter-clockwise winding order (which is required by the GeoJSON spec but not many popular tools). Allowed values are reject (reject invalid geometries with an error), fix (correct invalid geometries if possible and use this corrected value when creating the feature), and accept (the default) which will correct the geometry for internal use but retain the original geometry in the results.
Vector.get_upload_results and Vector.get_upload_result now accept a pending parameter to include pending uploads in the results. Such pending results will have status: PENDING and, in lieu of a task id, the id attribute will contain the upload id as returned by Vector.upload_features - UploadTask.status no longer blocks until the upload task is completed, but rather returns the current status of the upload job, which may be PENDING, RUNNING, SUCCESS, or FAILURE.
- The FutureTask.ready and UploadTask.ready property has been added to test whether the task has completed. A return value of True means that if get_result(wait=True) were to be called, it would return without blocking.
- You can now export features to a storage data blob. To export from the vector client, use Vector.export_product_from_query() with a storage key and an optional query. This returns the task id of the export task. You can ask for status using Vector.get_export_results() for all export tasks or Vector.get_export_result() for a specific task by task id.
- FeatureCollection has been extended with this functionality with a FeatureCollection.export() method that takes a storage key. This operates on the filter chain that FeatureCollection represents, or the full product if there is no filter chain. It returns an ExportTask which behaves similar to the FutureTask.
- Catalog.upload_image() and Catalog.upload_ndarray() now will return an upload_id that can be used to query the status of that upload using Catalog.upload_result(). Note that the upload id is the image id and if you use identical image ids Catalog.upload_result() will only show the result of the most recent upload.
v0.17.3
Minor changes
Changed
- Tasks methods
create_function
,create_or_get_function
, andnew_group
now have image as a required parameter - The
name
parameter is renamed toproduct_id
inVector.create_product
, andFeatureCollection.create
andFeatureCollection.copy
. The 'name' parameter is renamed tonew_product_id
inVector.create_product_from_query
. Usingname
will continue to work, but will be removed completely in future versions. - The
name
parameter is no longer required, and is ignored forVector.replace_product
,Vector.update_product
,FeatureCollection.update
andFeatureCollection.replace
. This parameter will be removed completely in future versions.
Added
Metadata.paged_search
has been added and essentially supports the original behavior ofMetadata.search
prior to release 0.16.0.
This method should generally be avoided in favor ofMetadata.features
(orMetadata.search
).
Minor bugfixes
Changed
- Fixed typo in UploadTask.status which caused exception when handling certain failure conditions
- FeatureCollection.upload parameter max_errors was not being passed to Vector client.
- Ensure cloudpickle==0.4.0 is version used when creating Tasks.
- Eliminate redundant queries from FeatureCollection.list.
Vector and Storage enhancements
Added
FeatureCollection.upload
andVector.upload_features
now accept an optionalmax_errors
parameter to control how many errors are acceptable before declaring an upload a failure.UploadTask
(as returned byFeatureCollection.upload
andVector.list_uploads
) now has added attributes to better identify what was processed and what errors occurred.Storage
now has added methodsset_file
andget_file
to allow for better uploading and downloading, respectively, of large files.Storage
class now has anexists()
method that checks whether an object exists in storage at the location of a givenkey
and returns a boolean.Scenes.search
allowslimit=None
FeatureCollection.delete_features
added to support deletingFeature
s that match afilter
FeatureCollection.delete_features
andFeatureCollection.wait_for_copy
now useAsyncJob
to poll for asynchronous job completion.Vector.delete_features_from_query
andVector.get_delete_features_status
added to support newFeatureCollection
andAsyncJob
methods.
Changed
- Fixed tasks bugs when including modules with relative paths in
sys.path
Tasks enhancements
Added
- Tasks now support passing modules, data and requirements along with the function code, allowing for a more complex and customized execution environment.
- Vector search query results now report their total number of results by means of the standard
len()
function.
Changed
Metadata.search
no longer has a 10,000-item limit, and the number of items returned will be closer tolimit
.
Vector enhancements
Added
- Raster client can now handle arbitrarily large numbers of tiles generated from a shape using the new iter_dltiles_from_shape() method which allows you to iterate over large numbers of tiles in a time- and memory-efficient manner. Similarly the existing dltiles_from_shape() method can now handle arbitrarily large numbers of tiles although it can be very slow.
- Vector client upload_features() can now upload contents of a stream (e.g. io.IOBase derivative such as io.StringIO) as well as the contents of a named file.
- Vector FeatureCollection add() method can now handle an arbitrary number of Features. Use of the upload_features() method is still encouraged for large collections.
- Vector client now supports creating a new product from the results of a query against an existing product with the create_product_from_query() method. This support is also accessible via the new FeatureCollection.copy() method.
- XYZTile GeoContext class, helpful for rendering to web maps that use XYZ-style tiles in a spherical Mercator CRS.
Changed
- Tasks client FutureTask now instantiates a client if none provided (the default).
- Catalog client methods now properly handle add_namespace parameter.
- Vector Feature now includes valid geojson type 'Feature'.
- Tasks client now raises new GroupTerminalException if a task group stops accepting tasks.
- General documentation fixes.
Raster processing level
Added
- Scenes and raster clients have a
processing_level
parameter that can be used to turn on surface reflectance processing for products that support it
Scenes Bounds Updates
Changed
scenes.GeoContext
: better defaults andbounds_crs
parameterbounds
are no longer limited to WGS84, but can be expressed in anybounds_crs
- New
Scene.default_ctx
uses a Scene'sgeotrans
to more accurately determine aGeoContext
that will result in no warping of the original data, better handling sinusoidal and other non-rectilinear coordinate reference systems. - Important: the default GeoContexts will now return differently-sized rasters than before!
They will now be more accurate to the original, unwarped data, but if you were relying on the old defaults, you should now explicitly set thebounds
togeometry.bounds
,
bounds_crs
to"EPSG:4326"
, andalign_pixels
to True.
Scene.coverage
andSceneCollection.filter_coverage
accept any geometry-like object, not just aGeoContext
.
GPU Tasks and Vectors Bulk Upload Objects
Changed
FutureTask
inheritance changed fromdict
toobject
.
Added
- Can now specify a GPU parameter for tasks.
Vectors.upload
allows you to upload a JSON newline delimited file.Vectors.list_uploads
allows you to list all uploads for a vector product.UploadTask
contains the information about an upload and is returned by both methods.