RasterFlow Overview
Learn about RasterFlow’s key features and capabilities
S3 Storage Integration
Set up the integration that grants Wherobots access to your bucket.
Reference
Browse the RasterFlow API documentation
Run as a Job
Submit RasterFlow workflows as automated Job Runs.
bucket parameter that controls where its outputs and intermediate data land.
By default, that destination is a temporary user storage location. Point bucket at a Storage Integration instead when you want RasterFlow output to live in your own S3 bucket, under your own retention and access rules.
Where RasterFlow writes
Before you start
Wherobots requirements
Wherobots requirements
- Access to RasterFlow in your Organization.
- A Wherobots notebook, a VS Code Extension workspace, or a Job Run with
rasterflow_remoteavailable.
Storage requirements
Storage requirements
- A storage integration that is already configured through the normal Wherobots setup flow. See S3 Storage Integration for the guided CloudFormation wizard.
- Read & Write access on the integration if you intend to use the bucket as a RasterFlow destination. A Read integration can supply inputs only.
Runtime Restart Required After Data IntegrationTo use new storage integrations or catalogs in your notebooks, you must start a new runtime.
Notebooks can only access storage integrations or catalogs that were created before the runtime started.
How RasterFlow authenticates to storage
You do not supply an IAM role, an access key, or a credential file to RasterFlow. Access is resolved per path, at the moment the workflow needs it:Scoped, path-aware credentials
Scoped, path-aware credentials
RasterFlow matches the S3 path it is about to read or write against the storage scopes configured for your Organization, then mints short-lived AWS credentials scoped to that path and to the access mode it needs — read for inputs, read-write for destinations. Credentials are cached and refreshed before they expire, so long-running mosaic and inference workflows keep working without intervention.
Anonymous access to public S3
Anonymous access to public S3
Publicly readable S3 URIs are read anonymously — no storage integration and no Cloud Connection are involved. This is what lets you point
gti or aoi at an open dataset while writing results to your own private bucket.No credentials in your code
No credentials in your code
Because credentials are resolved from your authenticated Wherobots session, RasterFlow scripts stay free of secrets. The same script runs unchanged in a notebook and in a scheduled Job Run.
Credential resolution is automatic, but the integration itself is not. RasterFlow can only reach buckets that an Admin has already added as a storage integration — it will not prompt you to create one.
Set a destination bucket
Passbucket as an s3:// URI prefix. RasterFlow writes its outputs and intermediate data under that prefix.
bucket is accepted by every RasterflowClient workflow method — build_mosaics, build_gti_mosaics, predict_mosaic and its recipe and geometry variants, run_mosaics_change, vectorize_mosaic, and build_zarr_multiscales.
Use different buckets for input and output
bucket is set per call and applies only to that workflow’s output, so inputs and outputs are independent. A built-in dataset, a public tile index, or a store in a bucket you only read from can each be an input while everything you produce goes to your own bucket.
That holds across the steps of a pipeline too. Each call reads the URI returned by the previous step and writes wherever you send it:
Every bucket you reference — whether as an input URI or as a
bucket destination — needs to be either publicly readable or covered by a storage integration. Reading from one integrated bucket and writing to another is supported; reading from a bucket that has no integration is not.Supported formats
RasterFlow reads and writes standard open formats at these locations. Supported examples include:Zarr
Zarr
Mosaics, model predictions, and change-detection outputs are written as Zarr stores.
build_zarr_multiscales reads a Zarr store and writes an optimized one.COG
COG
Cloud Optimized GeoTIFFs are read as mosaic inputs through a GDAL Raster Tile Index with
build_gti_mosaics.GeoParquet
GeoParquet
Areas of Interest and tile indexes are read as GeoParquet. Mosaic index tables and
vectorize_mosaic results are written as GeoParquet.Parquet
Parquet
Non-spatial tabular inputs and outputs alongside your raster products.
Iceberg
Iceberg
Tables in an integrated bucket, reachable from Wherobots through a Managed Catalog.
Enable map access to outputs in your bucket
Wherobots-GL — the renderer behind the Wherobots Cloud Map page and the notebookMap widget — loads outputs by URL, in the browser. Outputs in Wherobots Managed Storage work with no extra setup. Outputs in your own bucket have to be reachable with the credentials in play and allow cross-origin browser requests (CORS).
Before you visualize
Confirm that:- The output path points at the intended bucket and AWS region.
- The output objects exist and the identity used for visualization can read them.
- The bucket’s CORS policy allows requests from the Wherobots Cloud origins.
- The policy permits
GETandHEADrequests. - The policy allows the
Rangerequest header and exposes theETagandContent-Rangeresponse headers. Wherobots-GL uses partial reads to stream raster data efficiently rather than downloading whole stores.
Validate access
Two different things have to be true, and they are checked separately:Integration access
Integration access
Go to Organization Settings > Storage and use … > Verify Access. Wherobots checks read access, and write access for a Read & Write integration.This confirms RasterFlow can reach the bucket. It exercises the storage integration, not the browser.
Browser CORS access
Browser CORS access
Verify Access does not test the cross-origin path, so a bucket that verifies cleanly can still fail to render. Confirm CORS by opening the output URL on the Map page — a CORS failure shows up as a blank layer and a blocked request in your browser’s developer console.
Troubleshooting visualization
CORS error or blank layer
CORS error or blank layer
Cause: The browser is blocked from reading the output.Solution:
- Update the bucket’s CORS policy using Setting up CORS, then retry.
- Confirm the policy includes the Wherobots Cloud origins,
GETandHEADmethods,Rangeas an allowed request header, andETagandContent-Rangeamong the exposed response headers.
AWS region error
AWS region error
Cause: The output location and the bucket’s region do not match, or the bucket is configured for a different region than expected.Solution:
- Verify the output location, bucket name, and AWS region.
- Re-run the workflow with a corrected
bucket, or republish the output to a bucket in the expected region.
Access denied or object not found
Access denied or object not found
Cause: The output is not where you think it is, or the identity used for visualization cannot read it.Solution:
- Print the URI the workflow returned rather than reconstructing the path by hand.
- Confirm the identity used for visualization has read access to that prefix.
- Do not put long-lived cloud access keys into browser-based configuration. Use short-lived credentials or scoped access instead — in a notebook, pass them with
Map(..., aws_credentials={...})as shown in Visualize RasterFlow Outputs.
Security guidance
Grant only the minimum permissions needed to read the output objects. Keep write and administrative permissions out of anything browser-accessible, and scope temporary credentials to the relevant bucket and prefix.Run a RasterFlow Job against your bucket
Job Runs accept the same input and output options as the examples above, including thebucket argument, which makes storage integration the natural choice for scheduled work — a Job’s output outlives the 7-day temporary storage window and lands where your downstream systems already look. Read the destination from the Job Run environment rather than hardcoding it, so the same script stays portable across buckets.
See Run RasterFlow as a Job for the full job script and submission workflow.
Troubleshooting
WorkflowExecutionError on a bucket you can see in Wherobots Cloud
WorkflowExecutionError on a bucket you can see in Wherobots Cloud
Cause: The integration exists but does not grant the access the workflow needs, or the runtime started before the integration was created.Solution:
- Confirm the integration is Read & Write if you are using the bucket as a
bucketdestination. A Read integration cannot receive output. - Start a new runtime. Notebooks can only reach integrations that existed when the runtime started.
- Re-verify the integration from Organization Settings > Storage using … > Verify Access.
Outputs from last week are gone
Outputs from last week are gone
Cause: The workflow ran without a
bucket argument, so its output went to temporary user storage and was removed on the 7-day lifecycle.Solution:- Re-run the workflow with
bucketpointed at your storage integration or Managed Storage. - Audit long-lived scripts for calls that still omit
bucket.
An input URI cannot be read
An input URI cannot be read
Cause: The bucket is private and has no storage integration, so RasterFlow falls back to anonymous access and is denied.Solution:
- Add a storage integration for the bucket, or copy the input into a bucket that already has one.
- Verify the URI itself, including any
.zarror.parquetsuffix, by printing it before the call.
Bucket path is rejected
Bucket path is rejected
Cause: The bucket name contains periods, which storage integrations do not support.Solution:
- Use a bucket whose name has no periods —
s3://my-bucketrather thans3://my.bucket.name. See Limitations.
Usage and best practices
- Do
- Don't
- Set
bucketon anything you want to keep: The default destination is temporary and expires on a 7-day lifecycle. - Separate prefixes by stage: Distinct prefixes for mosaics, predictions, and vectors make outputs easy to find and easy to expire independently.
- Read public imagery directly: Anonymous access means there is no reason to copy an open dataset into your bucket before mosaicking it.
- Parameterize the destination in Job Runs: Reading the bucket from an environment variable keeps one script usable across environments.
- Set CORS once, up front: Add the CORS policy when you add the storage integration, so outputs are viewable on the map the first time you open one.
Next steps
Set up S3 Storage Integration
Create the integration that grants Wherobots access to your bucket.
Run RasterFlow as a Job
Schedule RasterFlow workflows that write to your own storage.
Build Multiscales
Add overview levels to a Zarr store so it can be visualized interactively.
API reference
For detailed API documentation, see:- Client API Reference -
RasterflowClientmethods - Data Models Reference - Enums and configuration objects
- Exceptions Reference - Error handling

