Documentation
|
Console
|
Discord
Tilebox Generate
CLI tool to generate Tilebox datasets types for Go. It is intended be used alongside tilebox-go.
Installation
go install github.com/tilebox/tilebox-generate@latest
Examples
Generate a dataset type for Sentinel-1 SAR dataset to ./protogen using $TILEBOX_API_KEY api key:
tilebox-generate --dataset open_data.copernicus.sentinel1_sar
Same as above, but override the output directory, package name and message name:
tilebox-generate --dataset open_data.copernicus.sentinel1_sar --out ./protogen --package tilebox.v1 --name MyDataset
Usage
NAME:
tilebox-generate - Generate Tilebox datasets types for Go
USAGE:
tilebox-generate [global options]
GLOBAL OPTIONS:
--dataset value A valid dataset slug e.g. 'open_data.copernicus.sentinel1_sar'
--out value The directory to generate output files in (default: protogen)
--package value Package name (default: tilebox.v1)
--name value Protobuf message name for the dataset (optional)
--tilebox-api-key value A Tilebox API key [$TILEBOX_API_KEY]
--tilebox-api-url value The Tilebox API URL (default: https://api.tilebox.com) [$TILEBOX_API_URL]
--help, -h show help
Usage with go generate
A handy way to generate the dataset types is to use go generate. Add the following to your generate.go file:
package main
//go:generate go tool tilebox-generate --dataset open_data.copernicus.sentinel1_sar
Then run go generate ./... to generate the dataset types.
Usage with tilebox-go
Usage example to query typed data from Tilebox.
To have typed datasets in Go you need to replace datapoints type with the generated one.
package main
import (
"github.com/google/uuid"
"github.com/tilebox/tilebox-go/datasets/v1"
"log"
// TODO: replace with your own path to the generated package
tileboxv1 "path/to/protogen/tilebox/v1"
)
func main() {
// ...
// Perform a temporal query
// TODO: replace tileboxv1.Sentinel1Sar with your own dataset type
var datapoints []*tileboxv1.Sentinel1Sar
err := client.Datapoints.QueryInto(ctx,
[]uuid.UUID{collection.ID}, &datapoints,
datasets.WithTemporalExtent(timeInterval),
)
if err != nil {
log.Fatalf("Failed to query datapoints: %v", err)
}
_ = datapoints // now datapoints are typed using tileboxv1.Sentinel1Sar
// ...
}