Skip to content

tilebox/tilebox-generate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tilebox Logo

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 run -mod=mod github.com/tilebox/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
	
	// ...
}