Protocol Documentation
Table of Contents
Top
pb/geocube.proto
Geocube
API
Documentation may be detailed in Request/Response sections.
Top
pb/geocubeDownloader.proto
GeocubeDownloader
API GeocubeDownloader to download a cube from metadata
Top
pb/admin.proto
DeleteDatasetsRequest
Remove the datasets referenced by instances and records without any control
The containers (if empty) are not deleted
Field |
Type |
Label |
Description |
record_ids |
string |
repeated |
bool simulate = 1; // DEPRECATED If true, a simulation is done, nothing is actually deleted. Use StepByStep=2 instead |
Instance id that references the datasets to be deleted |
| instance_ids | string | repeated | Record ids that reference the datasets to be deleted |
| dataset_patterns | string | repeated | Dataset file patterns (support * and ? for all or any characters and trailing (?i) for case-insensitiveness) (or empty to ignore) |
| execution_level | ExecutionLevel | | Execution level (see enum) |
| job_name | string | | Name of the job (if empty, a name will be generated) |
DeleteDatasetsResponse
Return the number of deleted datasets
Field |
Type |
Label |
Description |
job |
Job |
|
repeated string results = 1; // DEPRECATED: use the log of the job |
TidyDBRequest
Request to remove from the database all the pending entities (entities that are not linked to any dataset)
Field |
Type |
Label |
Description |
Simulate |
bool |
|
If true, a simulation is done, nothing is actually deleted |
PendingAOIs |
bool |
|
Remove AOIs that are not linked to any Records |
PendingRecords |
bool |
|
Remove Records that do not reference any Datasets |
PendingVariables |
bool |
|
Remove Variables that have not any instances |
PendingInstances |
bool |
|
Remove Instances that do not reference any Datasets |
PendingContainers |
bool |
|
Remove Containers that do not contain any Datasets |
PendingParams |
bool |
|
Remove ConsolidationParams that are not linked to any Variable or Job |
TidyDBResponse
Return the number of entities that were deleted (or should have been deleted if Simulate=True)
UpdateDatasetsRequest
Update fields of datasets that can be tricky
Field |
Type |
Label |
Description |
simulate |
bool |
|
If true, a simulation is done, nothing is actually updated |
instance_id |
string |
|
Instance id that references the datasets to be updated |
record_ids |
string |
repeated |
Record ids that reference the datasets to be updated |
dformat |
DataFormat |
|
Internal data format (DType can be Undefined) |
real_min_value |
double |
|
Real min value (dformat.min_value maps to real_min_value) |
real_max_value |
double |
|
Real max value (dformat.max_value maps to real_max_value) |
exponent |
double |
|
1: linear scaling (RealMax - RealMin) * pow( (Value - Min) / (Max - Min), Exponent) + RealMin |
UpdateDatasetsResponse
Return the number of modifications per kind of modification
UpdateDatasetsResponse.ResultsEntry
Admin
Service providing some functions to update or clean the database
Must be used cautiously because there is no control neither possible rollback
Top
pb/records.proto
AOI
Geographic AOI
Field |
Type |
Label |
Description |
polygons |
Polygon |
repeated |
|
Add the given tags to a set of records
AddRecordsTagsRequest.TagsEntry
Returns the number of records impacted by the addition
Field |
Type |
Label |
Description |
nb |
int64 |
|
|
Coord
Geographic coordinates (4326)
CreateAOIRequest
Create a new AOI
Field |
Type |
Label |
Description |
aoi |
AOI |
|
|
CreateAOIResponse
Returns the ID of the AOI
Field |
Type |
Label |
Description |
id |
string |
|
|
CreateRecordsRequest
Create new records
Field |
Type |
Label |
Description |
records |
NewRecord |
repeated |
|
CreateRecordsResponse
Returns the ID of the created records
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
DeleteRecordsRequest
Delete records by ID
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
no_fail |
bool |
|
If true, do not fail if some records still have datasets that refer to them and delete the others. |
DeleteRecordsResponse
Return the number of deleted records
Field |
Type |
Label |
Description |
nb |
int64 |
|
|
GetAOIRequest
Request the AOI given its ID
Field |
Type |
Label |
Description |
id |
string |
|
|
GetAOIResponse
Returns a geometric AOI
Field |
Type |
Label |
Description |
aoi |
AOI |
|
|
GetRecordsRequest
Get record from its id
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
GetRecordsResponseItem
Return a record
Field |
Type |
Label |
Description |
record |
Record |
|
|
GroupedRecordIds
Record ids that are considered as a unique, merged record (e.g. all records of a given date, whatever the time of the day)
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
GroupedRecordIdsList
List of groupedRecordIds
GroupedRecords
Records that are considered as a unique, merged record (e.g. all records of a given date, whatever the time of the day)
Field |
Type |
Label |
Description |
records |
Record |
repeated |
|
LinearRing
Geographic linear ring
Field |
Type |
Label |
Description |
points |
Coord |
repeated |
|
ListRecordsRequest
Request to find the list of records corresponding to multiple filters (inclusive)
ListRecordsRequest.TagsEntry
ListRecordsResponseItem
Field |
Type |
Label |
Description |
record |
Record |
|
|
NewRecord
Structure to create a new record
NewRecord.TagsEntry
Polygon
Geographic polygon
Field |
Type |
Label |
Description |
linearrings |
LinearRing |
repeated |
|
Record
Record
Record.TagsEntry
RecordFilters
RecordFilters defines some filters to identify records
RecordFilters.TagsEntry
RecordFiltersWithAOI
RecordFiltersWithAOI defines some filters to identify records, including an AOI in geometric coordinates
Field |
Type |
Label |
Description |
filters |
RecordFilters |
|
|
aoi |
AOI |
|
Geometric coordinates of an AOI that intersects the AOI of the records |
RecordIdList
List of record ids that are considered separately
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
Remove the given tags for a set of records
Field |
Type |
Label |
Description |
ids |
string |
repeated |
|
tagsKey |
string |
repeated |
|
Returns the number of records impacted by the removal
Field |
Type |
Label |
Description |
nb |
int64 |
|
|
Top
pb/variables.proto
CreatePaletteRequest
Create a new palette or update it if already exists (provided replace=True)
Field |
Type |
Label |
Description |
palette |
Palette |
|
Palette to be created |
replace |
bool |
|
Replace the current existing palette if exists |
CreatePaletteResponse
Return nothing.
CreateVariableRequest
Define a new variable.
Return an error if the name already exists.
Field |
Type |
Label |
Description |
variable |
Variable |
|
|
CreateVariableResponse
Return the id of the new variable.
Field |
Type |
Label |
Description |
id |
string |
|
|
DeleteInstanceRequest
Delete an instance
Return an error if the instance is linked to datasets.
Field |
Type |
Label |
Description |
id |
string |
|
UUID-4 of the instance to delete |
DeleteInstanceResponse
Return nothing
DeleteVariableRequest
Delete a variable
Return an error if the variable has still instances
Field |
Type |
Label |
Description |
id |
string |
|
UUID-4 of the variable to delete |
DeleteVariableResponse
Return nothing
GetVariableRequest
Read a variable given either its id, its name or the id of one of its instance
Field |
Type |
Label |
Description |
id |
string |
|
UUID-4 of the variable |
name |
string |
|
Name of the variable |
instance_id |
string |
|
UUID-4 of an instance |
GetVariableResponse
Return the variable and its instances
Field |
Type |
Label |
Description |
variable |
Variable |
|
|
Instance
Instance.MetadataEntry
InstantiateVariableRequest
Instantiate a variable.
Return an error if the instance_name already exists for this variable.
InstantiateVariableRequest.InstanceMetadataEntry
InstantiateVariableResponse
Return the new instance (its id, name and metadata)
Field |
Type |
Label |
Description |
instance |
Instance |
|
|
ListVariablesRequest
List variables given a name pattern
Field |
Type |
Label |
Description |
name |
string |
|
Pattern of the name of the variable (support * and ? for all or any characters, (?i) suffix for case-insensitiveness) |
limit |
int32 |
|
Limit the number of variables returned |
page |
int32 |
|
Navigate through results (start at 0) |
ListVariablesResponseItem
Return a stream of variables
Field |
Type |
Label |
Description |
variable |
Variable |
|
|
Palette
Define a palette with a name and a set of colorPoint.
Maps all values in [0,1] to an RGBA value, using piecewise curve defined by colorPoints.
All intermediate values are linearly interpolated.
Field |
Type |
Label |
Description |
name |
string |
|
Name of the palette (Alpha-numerics characters, dots, dashes and underscores are supported) |
colors |
colorPoint |
repeated |
Set of colorPoints. At least two points must be defined, corresponding to value=0 and value=1. |
UpdateInstanceRequest
Update an instance
Return an error if the name is to be updated but the new name already exists.
UpdateInstanceRequest.AddMetadataEntry
UpdateInstanceResponse
Return nothing
UpdateVariableRequest
Update the non-critical fields of a variable
Return an error if the name is to be updated but the new name already exists.
UpdateVariableResponse
Return nothing
Variable
Variable
Field |
Type |
Label |
Description |
id |
string |
|
Internal UUID-4 of the variable (ignored at creation) |
name |
string |
|
Name of the variable (Alpha-numerics characters, dashs, dots and underscores) |
unit |
string |
|
Unit of the variable (for user information only) |
description |
string |
|
Description of the variable (for user information only) |
dformat |
DataFormat |
|
Format of the data. Range.Min and Range.Max are used for data mapping from internal data format of a dataset (See IndexDatasets for more details), DType and NoData are used for the outputs of GetCube. |
bands |
string |
repeated |
Name of each band. Can be empty when the variable refers to only one band, must be unique otherwise. |
palette |
string |
|
Name of the default palette for color rendering. |
resampling_alg |
Resampling |
|
Default resampling algorithm in case of reprojection. |
instances |
Instance |
repeated |
List of instances of the variable (ignored at creation) |
colorPoint
Define a color mapping from a value [0-1] to a RGBA value.
Resampling
Resampling algorithms (supported by GDAL)
Name |
Number |
Description |
UNDEFINED |
0 |
|
NEAR |
1 |
|
BILINEAR |
2 |
|
CUBIC |
3 |
|
CUBICSPLINE |
4 |
|
LANCZOS |
5 |
|
AVERAGE |
6 |
|
MODE |
7 |
|
MAX |
8 |
|
MIN |
9 |
|
MED |
10 |
|
Q1 |
11 |
|
Q3 |
12 |
|
Top
Format of the data of a dataset.
Format is defined by the type of the data, its no-data value and the range of values (its interpretation depends on the use)
Field |
Type |
Label |
Description |
dtype |
DataFormat.Dtype |
|
Type of the data |
no_data |
double |
|
No-data value (supports any float values, including NaN) |
min_value |
double |
|
Min value (usually used to map from one min value to another) |
max_value |
double |
|
Max value (usually used to map from one min value to another) |
Type of data supported by the Geocube & GDAL
Name |
Number |
Description |
UNDEFINED |
0 |
|
UInt8 |
1 |
|
UInt16 |
2 |
|
UInt32 |
3 |
|
Int8 |
4 |
|
Int16 |
5 |
|
Int32 |
6 |
|
Float32 |
7 |
|
Float64 |
8 |
|
Complex64 |
9 |
Pair of float32 |
Top
pb/catalog.proto
Request a cube from metadatas (provided by Geocube.GetCube())
Field |
Type |
Label |
Description |
datasets_meta |
DatasetMeta |
repeated |
List of Metadatas needed to download and generate the slices of the cube |
grouped_records |
GroupedRecords |
repeated |
List of GroupedRecords describing the slices of the cube |
ref_dformat |
DataFormat |
|
Output dataformat |
resampling_alg |
Resampling |
|
Resampling algorithm to use for reprojection |
pix_to_crs |
GeoTransform |
|
|
crs |
string |
|
|
size |
Size |
|
|
format |
FileFormat |
|
Format of the output data |
predownload |
bool |
|
Predownload the datasets before merging them. When the dataset is remote and all the dataset is required, it is more efficient to predownload it. |
Return either information on the cube, information on an image or a chunk of an image
GetCubeRequest
Request a cube of data
Field |
Type |
Label |
Description |
records |
RecordIdList |
|
List of record ids requested. At least one. One image will be returned by record (if not empty) |
filters |
RecordFilters |
|
Filters to list the records that will be used to create the cube |
grouped_records |
GroupedRecordIdsList |
|
List of groups of record ids requested. At least one. One image will be returned by group of records (if not empty). All the datasets of a group of records will be merged together using the latest first. |
instances_id |
string |
repeated |
Instances of a variable defining the kind of images requested. At least one, and all must be instance of the same variable. Only one is actually supported |
crs |
string |
|
Coordinates Reference System of the output images (images will be reprojected on the fly if necessary) |
pix_to_crs |
GeoTransform |
|
GeoTransform of the requested cube (images will be rescaled on the fly if necessary) |
size |
Size |
|
Shape of the output images |
compression_level |
int32 |
|
Define a level of compression to speed up the transfer, values: -3 to 9 (-2: Huffman only, -1:default, 0->9: level of compression from the fastest to the best compression, -3: disable the compression). The data is compressed by the server and decompressed by the Client. Use -3 or -2 if the bandwidth is not limited. 0 is level 0 of DEFLATE (thus, it must be decompressed by DEFLATE even though the data is not compressed). If the client can support -3, 0 is useless. |
headers_only |
bool |
|
Only returns headers (including all metadatas on datasets) |
format |
FileFormat |
|
Format of the output images |
resampling_alg |
Resampling |
|
Resampling algorithm used for reprojecion. If undefined, the default resampling algorithm associated to the variable is used. |
GetCubeResponse
Return either information on the cube, information on an image or a chunk of an image
Return global information on the requested cube
GetTileRequest
Request a web-mercator tile, given a variable and a group of records
Field |
Type |
Label |
Description |
instance_id |
string |
|
|
x |
int32 |
|
|
y |
int32 |
|
|
z |
int32 |
|
|
min |
float |
|
|
max |
float |
|
|
records |
GroupedRecordIds |
|
Group of record ids. At least one. All the datasets of the group of records will be merged together using the latest first. |
filters |
RecordFilters |
|
All the datasets whose records have RecordTags and time between from_time and to_time |
GetTileResponse
Return a 256x256 png image
ImageChunk
Chunk of the full image, to handle the GRPC limit of 4Mbytes/message
Field |
Type |
Label |
Description |
part |
int32 |
|
Index of the chunk (from 1 to ImageHeader.nb_parts-1). The first part (=0) is ImageHeader.data |
data |
bytes |
|
Chunk of the full array of bytes |
ImageFile
ByteArray of a PNG image 256x256pixels
Field |
Type |
Label |
Description |
data |
bytes |
|
|
Header of an image (slice of the cube)
It describes the image, the underlying datasets and the way to recreate it from the array of byte :
1. Append ImageHeader.data and ImageChunk.data from part=0 to part=nb_parts-1
2. If compression=True, decompress the array of bytes using deflate
3. Cast the result to the dtype using byteOrder
4. Reshape the result
Field |
Type |
Label |
Description |
shape |
Shape |
|
Shape of the image (widthxheight) |
dtype |
DataFormat.Dtype |
|
Type of the data (to interprete "ImageHeader.data + ImageChunk.data") |
nb_parts |
int32 |
|
Number of parts the image is splitted into |
data |
bytes |
|
First part of the image as an array of bytes |
size |
int64 |
|
Size of the full array of bytes |
order |
ByteOrder |
|
ByteOrder of the datatype |
compression |
bool |
|
Deflate compressed data format, described in RFC 1951 |
grouped_records |
GroupedRecords |
|
Group of records used to generate this image |
dataset_meta |
DatasetMeta |
|
All information on the underlying datasets that composed the image |
error |
string |
|
If not empty, an error occured and the image was not retrieved. |
Shape
Shape of an image width x height x channels
ByteOrder
ByteOrder for the conversion between data type and byte.
Name |
Number |
Description |
LittleEndian |
0 |
|
BigEndian |
1 |
|
Available file formats
Name |
Number |
Description |
Raw |
0 |
raw bitmap |
GTiff |
1 |
|
Top
pb/layouts.proto
Cell
Define a cell of a grid
Field |
Type |
Label |
Description |
id |
string |
|
Cell identifier |
crs |
string |
|
Coordinate reference system used in the cell |
coordinates |
LinearRing |
|
Geographic coordinates |
CreateGridRequest
Create a new grid.
Field |
Type |
Label |
Description |
grid |
Grid |
|
|
CreateGridResponse
CreateLayoutRequest
Create a new layout
Return an error if the name already exists
Field |
Type |
Label |
Description |
layout |
Layout |
|
|
CreateLayoutResponse
DeleteGridRequest
Delete a grid
Field |
Type |
Label |
Description |
name |
string |
|
|
DeleteGridResponse
DeleteLayoutRequest
Delete a layout by name
Field |
Type |
Label |
Description |
name |
string |
|
|
DeleteLayoutResponse
FindContainerLayoutsRequest
Find all the layouts used by the datasets on an AOI or a set of records
It can be used to tile the AOI with an optimal layout.
FindContainerLayoutsResponse
Stream the name of the layout and the associated containers
Field |
Type |
Label |
Description |
layout_name |
string |
|
Name of the layout |
container_uris |
string |
repeated |
List of containers having the layout |
GDAL GeoTransform
Grid
Define a grid
Field |
Type |
Label |
Description |
name |
string |
|
Unique name of the grid |
description |
string |
|
Description of the grid |
cells |
Cell |
repeated |
Cells of the grid |
Layout
Define a layout for consolidation. A layout is composed of an external and an internal layout.
External layout is a grid that is used to cover any area with tiles.
TODO Internal layout defines the internal structure of a dataset
Interlacing_pattern defines how to interlace the [R]ecords, the [B]ands, the [Z]ooms level/overview and the [T]iles (geotiff blocks).
The four levels of interlacing must be prioritized in the following way L1>L2>L3>L4 where each L is in [R, B, Z, T]. This order should be understood as:
for each L1:
for each L2:
for each L3:
for each L4:
addBlock(L1, L2, L3, L4)
In other words, all L4 for a given (L1, L2, L3) will be contiguous in memory.
For example:
- To optimize the access to geographical information of all the bands (such as in COG) : R>Z>T>B => For a given record, zoom level and block, all the bands will be contiguous.
- To optimize the access to geographical information of one band at a time : B>R>Z>T => For a given band, record and zoom, all the blocks will be contiguous.
- To optimize the access to timeseries of all the bands (such as in MUCOG): Z>T>R>B => For a given zoom level and block, all the records will be contiguous.
Interlacing pattern can be specialized to only select a list or a range for each level (except Tile level).
- By values: L=0,2,3 will only select the value 0, 2 and 3 of the level L. For example B=0,2,3 to select the corresponding band level.
- By range: L=0:3 will only select the values from 0 to 3 (not included) of the level L. For example B=0:3 to select the three firsts bands.
First and last values of the range can be omitted to define 0 or last element of the level. e.g B=2: means all the bands from the second.
Z=0 is the full resolution, Z=1 is the overview with zoom factor 2, Z=2 is the zoom factor 4, and so on.
To chain interlacing patterns, use ";" separator.
For example:
- MUCOG optimizes access to timeseries for full resolution (Z=0), but geographic for overviews (Z=1:). Z=0>T>R>B;Z=1:>R>T>B
- Same example, but the bands are separated: B>Z=0>T>R;B>Z=1:>R>T
- To optimize access to geographic information of the three first bands together, but timeseries of the others: Z>T>R>B=0:3;B=3:>Z>R>T
Field |
Type |
Label |
Description |
name |
string |
|
|
grid_flags |
string |
repeated |
External layout: Grid:Cell (CRS) |
grid_parameters |
Layout.GridParametersEntry |
repeated |
|
block_x_size |
int64 |
|
Internal layout: Cell, Tile |
block_y_size |
int64 |
|
|
max_records |
int64 |
|
|
overviews_min_size |
int64 |
|
Maximum width or height of the smallest overview level. 0: No overview, -1: default=256. |
interlacing_pattern |
string |
|
Define how to interlace the [R]ecords, the [B]ands, the [Z]ooms level/overview and the [T]iles (geotiff blocks). |
Layout.GridParametersEntry
ListGridsRequest
List all the grids given a name pattern (does not retrieve the cells)
Field |
Type |
Label |
Description |
name_like |
string |
|
Name pattern (support * and ? for all or any characters and trailing (?i) for case-insensitiveness) |
ListGridsResponse
Return a list of grids
Field |
Type |
Label |
Description |
grids |
Grid |
repeated |
|
ListLayoutsRequest
List all the layouts given a name pattern
Field |
Type |
Label |
Description |
name_like |
string |
|
Name pattern (support * and ? for all or any characters and trailing (?i) for case-insensitiveness) |
ListLayoutsResponse
Return a list of layouts
Field |
Type |
Label |
Description |
layouts |
Layout |
repeated |
|
Size
Define a size
Field |
Type |
Label |
Description |
width |
int32 |
|
|
height |
int32 |
|
|
Tile
Define a rectangular tile in a given coordinate system (CRS).
Field |
Type |
Label |
Description |
transform |
GeoTransform |
|
Transform to map from pixel coordinates to CRS |
size_px |
Size |
|
Size of the tile in pixel |
crs |
string |
|
Coordinate reference system |
TileAOIRequest
Tile an AOI, covering it with cells defined by a grid.
In the future, it will be able to find the best tiling given the internal layout of datasets.
Field |
Type |
Label |
Description |
aoi |
AOI |
|
|
layout_name |
string |
|
Name of an existing layout |
layout |
Layout |
|
User-defined layout |
TileAOIResponse
Return tiles, thousand by thousand.
Field |
Type |
Label |
Description |
tiles |
Tile |
repeated |
|
Top
pb/operations.proto
CancelJobRequest
Cancel a job (e.g. during consolidation)
Field |
Type |
Label |
Description |
id |
string |
|
|
force_any_state |
bool |
|
Force cancel even when the job is not in a failed state or consolidation step (could corrupt the data) |
CancelJobResponse
CleanJobsRequest
Clean terminated jobs
Field |
Type |
Label |
Description |
name_like |
string |
|
Filter by name (support *, ? and (?i)-suffix for case-insensitivity) |
state |
string |
|
Filter by terminated state (DONE, FAILED) |
CleanJobsResponse
Return the number of jobs that have been deleted
Field |
Type |
Label |
Description |
count |
int32 |
|
|
ConfigConsolidationRequest
Configure the parameters of the consolidation attached to the variable
ConfigConsolidationResponse
ConsolidateRequest
Create and start a consolidation job given a list of records and an instance_id to be consolidated on a layout
Optionnaly, the job can be done step by step, pausing and waiting for user action, with three levels:
- 1: after each critical steps
- 2: after each major steps
- 3: after all steps
Field |
Type |
Label |
Description |
job_name |
string |
|
|
instance_id |
string |
|
|
layout_name |
string |
|
|
execution_level |
ExecutionLevel |
|
Execution level of a job. A consolidation job cannot be executed synchronously |
collapse_on_record_id |
string |
|
[Optional] Collapse all records on this record (in this case only, original datasets are kept, data is duplicated) |
records |
RecordIdList |
|
At least one |
filters |
RecordFilters |
|
|
ConsolidateResponse
Return the id of the job created
Field |
Type |
Label |
Description |
job_id |
string |
|
|
ConsolidationParams
Parameters of consolidation that are linked to a variable, to define:
- how to resample the data during consolidation
- how to store the data:
- Compression
- CreationParams (supported: see GDAL drivers: PHOTOMETRIC, COMPRESS, PREDICTOR, ZLEVEL, ZSTDLEVEL, MAX_Z_ERROR, JPEGTABLESMODE and with _OVERVIEW suffix if exists)
Field |
Type |
Label |
Description |
dformat |
DataFormat |
|
dataformat of the data. See exponent for the mapping formula. |
exponent |
double |
|
1: linear scaling (RealMax - RealMin) * pow( (Value - Min) / (Max - Min), Exponent) + RealMin |
create_overviews |
bool |
|
Deprecated. Use Layout.overviews_min_size instead |
resampling_alg |
Resampling |
|
Define how to resample the data during the consolidation (if a reprojection is needed or if the overviews are created) |
compression |
ConsolidationParams.Compression |
|
Define how the data is compressed at block level |
creation_params |
ConsolidationParams.CreationParamsEntry |
repeated |
map of params:value to configure the creation of the file. See Compression to list the supported params |
bands_interleave |
bool |
|
Deprecated. If the variable is multibands, define whether the bands are interleaved. Use Layout.interlacing_pattern instead |
storage_class |
StorageClass |
|
Define the storage class of the created file (support only GCS) |
ConsolidationParams.CreationParamsEntry
Container
Define a container of datasets.
Usually a container is a file containing one dataset.
But after a consolidation or if the container has several bands, it can contain several datasets.
Field |
Type |
Label |
Description |
uri |
string |
|
URI of the file |
managed |
bool |
|
True if the Geocube is responsible for the lifecycle of this file |
datasets |
Dataset |
repeated |
List of datasets of the container |
ContinueJobRequest
Proceed the next step of a step-by-step job
Field |
Type |
Label |
Description |
id |
string |
|
|
ContinueJobResponse
Dataset
Define a dataset. A dataset is the metadata to retrieve an image from a file.
It is defined by a record and the instance of a variable.
A dataset defines:
- Which band(s) are indexed (usually all the bands, but it can be a subset)
- How to map the value of its pixels to the dataformat of the variable. In more details:
. the dataformat of the dataset (dformat.[no_data, min, max]) that describes the pixel of the image
. the mapping from each pixel to the data format of the variable (variable.dformat). This mapping is defined as [MinOut, MaxOut, Exponent].
Field |
Type |
Label |
Description |
record_id |
string |
|
|
instance_id |
string |
|
|
container_subdir |
string |
|
|
bands |
int64 |
repeated |
|
dformat |
DataFormat |
|
Internal data format (DType can be Undefined) |
real_min_value |
double |
|
Real min value (dformat.min_value maps to real_min_value) |
real_max_value |
double |
|
Real max value (dformat.max_value maps to real_max_value) |
exponent |
double |
|
1: linear scaling (RealMax - RealMin) * pow( (Value - Min) / (Max - Min), Exponent) + RealMin |
GetConsolidationParamsRequest
Retrieve the consolidation parameters attached to the given variable
Field |
Type |
Label |
Description |
variable_id |
string |
|
|
GetConsolidationParamsResponse
Return consolidation parameters
GetContainersRequest
Request info on containers
Field |
Type |
Label |
Description |
uris |
string |
repeated |
List of container uris |
GetContainersResponse
Field |
Type |
Label |
Description |
containers |
Container |
repeated |
|
GetJobRequest
Retrieve a job given its id
GetJobResponse
Return a job with the requested id
Field |
Type |
Label |
Description |
job |
Job |
|
|
IndexDatasetsRequest
Request to index all the datasets of a container
Field |
Type |
Label |
Description |
container |
Container |
|
TODO Index several containers: repeated ? |
IndexDatasetsResponse
Job
Job to modify datasets (consolidation, deletion, ingestion...)
Some lifecycle operations are required to be done cautiously, in order to garantee the integrity of the database.
Such operations are defined by a job and are done asynchronously.
A job is a state-machine that can be rollbacked anytime during the operation until it ends.
Field |
Type |
Label |
Description |
id |
string |
|
Id of the job |
name |
string |
|
Name of the job (must be unique) |
type |
string |
|
Type of the job (consolidation, deletion...) |
state |
string |
|
Current state of the state machine |
creation_time |
google.protobuf.Timestamp |
|
Time of creation of the job |
last_update_time |
google.protobuf.Timestamp |
|
Time of the last update |
logs |
string |
repeated |
Job logs: if logs are too big to fit in a grpc response, logs will only be a subset (by default, the latest) |
active_tasks |
int32 |
|
If the job is divided into sub tasks, number of pending tasks |
failed_tasks |
int32 |
|
If the job is divided into sub tasks, number of failed tasks |
execution_level |
ExecutionLevel |
|
Execution level of a job (see ExecutionLevel) |
waiting |
bool |
|
If true, the job is waiting for user to continue |
ListJobsRequest
List jobs given a name pattern
ListJobsResponse
Return a list of the job whose name matchs the pattern
Field |
Type |
Label |
Description |
jobs |
Job |
repeated |
|
RetryJobRequest
Retry a job that failed or is stuck (e.g. during consolidation)
Field |
Type |
Label |
Description |
id |
string |
|
|
force_any_state |
bool |
|
Force retry even when the job is not in a failed state (could corrupt the data) |
RetryJobResponse
ConsolidationParams.Compression
Name |
Number |
Description |
NO |
0 |
|
LOSSLESS |
1 |
|
LOSSY |
2 |
|
CUSTOM |
3 |
configured by creation_params |
ExecutionLevel
Execution level of a job
Name |
Number |
Description |
ExecutionSynchronous |
0 |
Job is done synchronously |
ExecutionAsynchronous |
1 |
Job is done asynchronously, but without any pause |
StepByStepCritical |
2 |
Job is done asynchronously, step-by-step, pausing at every critical steps |
StepByStepMajor |
3 |
Job is done asynchronously, step-by-step, pausing at every major steps |
StepByStepAll |
4 |
Job is done asynchronously, step-by-step, pausing at every steps |
StorageClass
Storage class of a container. Depends on the storage
Name |
Number |
Description |
STANDARD |
0 |
|
INFREQUENT |
1 |
|
ARCHIVE |
2 |
|
DEEPARCHIVE |
3 |
|
Top
DatasetMeta contains all the metadata on files and fileformats to download and generate a slice of a cube
Field |
Type |
Label |
Description |
internalsMeta |
InternalMeta |
repeated |
Information on the images composing the slice |
InternalMeta contains all the metadata on a file to download it and to map its internal values to the external range.
Field |
Type |
Label |
Description |
container_uri |
string |
|
URI of the file storing the data |
container_subdir |
string |
|
Subdir of the file storing the data |
bands |
int64 |
repeated |
Subbands of the file requested |
dformat |
DataFormat |
|
Internal dataformat of the data |
range_min |
double |
|
dformat.RangeMin will be mapped to this value |
range_max |
double |
|
dformat.RangeMax will be mapped to this value |
exponent |
double |
|
Exponent used to map the value from dformat to [RangeMin, RangeMax] |
Top
pb/version.proto
GetVersionRequest
Request the version of the Geocube
GetVersionResponse
Return the version of the Geocube
Field |
Type |
Label |
Description |
Version |
string |
|
|
Scalar Value Types
.proto Type |
Notes |
C++ |
Java |
Python |
Go |
C# |
PHP |
Ruby |
double |
|
double |
double |
float |
float64 |
double |
float |
Float |
float |
|
float |
float |
float |
float32 |
float |
float |
Float |
int32 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
int64 |
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
uint32 |
Uses variable-length encoding. |
uint32 |
int |
int/long |
uint32 |
uint |
integer |
Bignum or Fixnum (as required) |
uint64 |
Uses variable-length encoding. |
uint64 |
long |
int/long |
uint64 |
ulong |
integer/string |
Bignum or Fixnum (as required) |
sint32 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
sint64 |
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
fixed32 |
Always four bytes. More efficient than uint32 if values are often greater than 2^28. |
uint32 |
int |
int |
uint32 |
uint |
integer |
Bignum or Fixnum (as required) |
fixed64 |
Always eight bytes. More efficient than uint64 if values are often greater than 2^56. |
uint64 |
long |
int/long |
uint64 |
ulong |
integer/string |
Bignum |
sfixed32 |
Always four bytes. |
int32 |
int |
int |
int32 |
int |
integer |
Bignum or Fixnum (as required) |
sfixed64 |
Always eight bytes. |
int64 |
long |
int/long |
int64 |
long |
integer/string |
Bignum |
bool |
|
bool |
boolean |
boolean |
bool |
bool |
boolean |
TrueClass/FalseClass |
string |
A string must always contain UTF-8 encoded or 7-bit ASCII text. |
string |
String |
str/unicode |
string |
string |
string |
String (UTF-8) |
bytes |
May contain any arbitrary sequence of bytes. |
string |
ByteString |
str |
[]byte |
ByteString |
string |
String (ASCII-8BIT) |