Comments (4)
get_descriptor
get_descriptor request
Storage type has been replaced with finer grained elements:
- satellite (eg 'LANDSAT_8')
- sensor (eg 'TM', 'OLI_TIRS')
- product (eg 'EODS_NBAR', 'EODS_PQ')
Should we still support a 'storage_type' identifier? Should the response be keyed with a concatenation of satellite and sensor?
- dimensions
- range
- crs
Support for CRS in dimension specifiers limited to latitude and longitude using EPSG codes.
Time range can be a datetime object or seconds since UNIX epoch. Further support to be added.
get_descriptor response
get_descriptor now returns storage_units with values for storage_max, storage_min, storage_shape, storage_path.
Not yet implemented:
- 'buffer_size'
- 'irregular_indices'
- 'grouping_function' - Use of xray may cause a rethink of how this is used and implemented.
Known issues:
- result_shape sometimes suffers from a rounding error when calculating the impact of the bounding box range specifier using an estimated nearest neighbor method than differs from the get_data call by a pixel. Currently looking to fix this.
get_data
get_data request
Currently supported:
- satellite
- sensor
- variables (mandatory - should it return all if not specified?)
- dimensions
- range
- array_range
- coordinate_reference_system (see get_descriptor)
get_data response
- 'indices' currently returns numpy.datetime64 objects for time fields, rather than the stored coordinate labels.
- 'element_sizes' returns the "pixel" size. Behavior is undefined for irregular variables eg time.
Not yet implemented:
- 'coordinate_reference_systems'
Known Issues:
- Irregular variables (eg time) are currently causing issues when times do not line up over storage boundaries. (Eg Times stacked in a file) Currently fixing this, after discussing the issue with Alex.
from datacube-core.
Thanks Andrew.
Note that we can’t rely on satellite/sensor: not all datasets/units will have them, and are dynamic fields specific to the ‘eo’ dataset metadata type.
Given that this is storage-unit focused (?), the name/id of the storage mapping (essentially a "storage type" by the old definition*) may be an alternative. But it depends on the intended use-case or user of the API.
(*Note that we're currently looking at merging storage types and mappings into one concept, probably to be called "storage type" — Greg's started doing it in a branch, which would simplify this)
from datacube-core.
Thanks Andrew for adding more information.
The GDF concept for the idea is as follows:
storage_type is a mapping to the type of storage unit, a unique handle to type of data if you'd like.
This handle is defined in the database.
This should really be more generic like in the GDF.
It should be able to define the names/attributes in the database. i.e. it shouldn't be hard coded to "Satellite", "Sensor", "Product".
(Satellite, Sensor, Product) should have more generic names to cater for other data sets.
As an example (family, sensor, product) or (family, product).
To answer your question about whether we should have a storage_type, Yes it should still have a storage_type.
One thing to keep in mind regarding the storage_type is how to handle composite datasets e.g. modis/landsat blending. derived datasets, datasets that are the results of analytics that is re-ingested, or other datasets that people want to ingest and use that are not acquired by a satellite.
My suggestion and is only a suggestion, is to keep it as a tag/id and keep information about the data about the storage_type in the the database. It simplifies the issue when you have composite datasets.
To answer your question about concatenation of satellite and sensor. This is how the storage_type pretty much worked in the GDF. It isn't supposed to be just a concatenation but a unique handle/tag to the type of data. Having said that, most of the storage_types were just concatenations. Just make sure you can do a get_data with this tag instead of (Satellite, Sensor, Product). Lets have a chat about this offline to prevent cluttering up GitHub.
What do you mean when you say merging the storage types and mappings into one concept?
Are you planning on using the storage_type concept in the GDF or is it something different?
from datacube-core.
Closing this.
Thanks Andrew for completing this task in a timely manner.
I'll create new tasks for the next iteration of get_descriptor and get_data for HPC soon once the EDA milestone is complete.
from datacube-core.
Related Issues (20)
- Deprecation Warnings from `jsonschema` and SQLAlchemy HOT 1
- Dask load returning all nan values HOT 3
- Support for per-grid CRS, for better STAC interoperability
- API Query doctest fails due to different timezone representation
- --with-docker unable to connect to local postgres when running integration tests HOT 1
- Errors following documentation build instructions HOT 1
- AttributeError: module 'ee.data' has no attribute '_get_cloud_api_resource' HOT 1
- issue in find_less_mature when indexing datasets without region_code HOT 3
- Installation environment issues HOT 2
- Error running `datacube system init --no-init-users` HOT 1
- datacube.utils.documents.UnknownMetadataType: Unknown metadata type: 'eo3' while running the command datacube product add s2_l2a.odc-product.yaml in opendatacube HOT 4
- Record intentional omissions from collections HOT 3
- Compatibility issue - python version and aiohttp HOT 6
- Unable to Work with Temporary AWS Security Credentials HOT 6
- lost date time and measurements after ingesting the data using the template s2amsil1c_albers_10.yaml HOT 3
- ODC feature request: env var for `skip_broken_datasets`? HOT 2
- list_products ignores information in load hints
- Replace datacube GeoBox with odc-geo GeoBox? HOT 1
- Use odc-geo GridSpec model internally HOT 6
- Cannot pass `odc.geo` GeoBoxes to `dc.load` HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from datacube-core.