Skip to main content
You need to have write permission on the collection to be able to ingest data.
Check out the examples below for common scenarios of ingesting data into a collection.

Dataset schema

Tilebox Datasets are strongly typed. This means you can only ingest data that matches the schema of a dataset. The schema is defined during dataset creation time. The examples on this page assume that you have access to a Timeseries dataset that has the following schema:
Check out the Build a spatio-temporal catalog guide for an example of how to create such a dataset.
MyCustomDataset schema
A full overview of available data types can be found in the here.
Once you’ve defined the schema and created a dataset, you can access it and create a collection to ingest data into.

Preparing data for ingestion

Ingestion can be done either in Python or Go.

Python

collection.ingest supports a wide range of input types. Below is an example of using either a pandas.DataFrame or an xarray.Dataset as input.

pandas DataFrame

A pandas.DataFrame is a representation of two-dimensional, potentially heterogeneous tabular data. It’s a powerful tool for working with structured data, and Tilebox supports it as input for ingest. The example below shows how to construct a pandas.DataFrame from scratch, that matches the schema of the MyCustomDataset dataset and can be ingested into it.
Once you have the data ready in this format, you can ingest it into a collection.
You can now also head on over to the Tilebox Console and view the newly ingested data points there.

xarray Dataset

xarray.Dataset is the default format in which Tilebox Datasets returns data when querying data from a collection. Tilebox also supports it as input for ingestion. The example below shows how to construct an xarray.Dataset from scratch, that matches the schema of the MyCustomDataset dataset and can then be ingested into it. To learn more about xarray.Dataset, visit Tilebox dedicated Xarray documentation page.
Array fields manifest in xarray using an extra dimension, in this case n_sensor_history. In case of different array sizes for each data point, remaining values are filled up with a fill value, depending on the dtype of the array. For float64 this is np.nan (not a number). Don’t worry - when ingesting data into a Tilebox dataset, Tilebox will automatically skip those padding fill values and not store them in the dataset.
Now that you have the xarray.Dataset in the correct format, you can ingest it into the Tilebox dataset collection.

Go

Client.Datapoints.Ingest supports ingestion of data points in the form of a slice of protobuf messages.

Protobuf

Protobuf is Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data. More details on protobuf can be found in the protobuf section. In the example below, the v1.Modis type has been generated with tilebox dataset generate, as described in the protobuf section.
Go

Copying or moving data

Since ingest takes query’s output as input, you can easily copy or move data from one collection to another.
Copying data like this also works across datasets in case the dataset schemas are compatible.

Automatic batching

Tilebox automatically batches the ingestion requests for you, so you don’t have to worry about the maximum request size.

Idempotency

Tilebox will auto-generate datapoint IDs based on the data of all its fields - except for the auto-generated ingestion_time, so ingesting the same data twice will result in the same ID being generated. By default, Tilebox will silently skip any data points that are duplicates of existing ones in a collection. This behavior is especially useful when implementing idempotent algorithms. That way, re-executions of certain ingestion tasks due to retries or other reasons will never result in duplicate data points. You can instead also request an error to be raised if any of the generated datapoint IDs already exist. This can be done by setting the allow_existing parameter to False.

Ingestion from common file formats

Through the usage of xarray and pandas you can also easily ingest existing datasets available in file formats, such as CSV, Parquet, Feather and more. Check out the Ingestion from common file formats guide for examples of how to achieve this.

Geometries

Ingesting Geometries can traditionally be a bit tricky, especially when working with geometries that cross the antimeridian or cover a pole. Tilebox is designed to take away most of the friction involved in this, but it’s still recommended to follow the best practices for handling geometries.