Output#
Configure where model results are published.
Constructor#
Output(
geocatalog_uri,
collection_name,
credential,
storage_url,
blob_container,
storage_account_key=None,
run_id=None,
save_local=False,
output_dir="./output"
)
Required Parameters#
geocatalog_uri : str
GeoCatalog/STAC endpoint URL where results will be published.
collection_name : str
Name of the collection to create or use for results.
credential : Any
Azure credential for GeoCatalog and blob storage authentication.
storage_url : str
Azure Blob Storage account URL (e.g., https://account.blob.core.windows.net).
blob_container : str
Blob container name for storing chip imagery and STAC item assets.
Optional Parameters#
storage_account_key : str | None
Storage account key for SAS generation. Only needed if Azure AD delegation is unavailable.
Recommended: Use Azure RBAC roles instead:
Storage Blob Data Contributor (for uploads)
Storage Blob Delegator (for SAS generation)
run_id : str | None
Run identifier for organizing results. Auto-generated UUID if not provided.
save_local : bool
Save results to local files for debugging. Default: False.
output_dir : str
Local directory for saved files (only used if save_local=True). Default: ./output.
Publishing Behavior#
GeoCatalog publishing happens automatically when you provide an Output object to model.run().
Results include:
STAC items with detection/segmentation metadata
Chip imagery and overlays in blob storage
GeoJSON features with geometries and properties
Examples#
Standard Configuration#
from azure.identity import DefaultAzureCredential
import geoai
output = geoai.Output(
geocatalog_uri="https://geocatalog.contoso.com",
collection_name="building-detections",
credential=DefaultAzureCredential(),
storage_url="https://myaccount.blob.core.windows.net",
blob_container="results"
)
With Local Debugging#
output = geoai.Output(
geocatalog_uri="https://geocatalog.contoso.com",
collection_name="road-detections",
credential=DefaultAzureCredential(),
storage_url="https://myaccount.blob.core.windows.net",
blob_container="results",
save_local=True,
output_dir="./debug_output"
)
With Storage Account Key (Fallback)#
import os
output = geoai.Output(
geocatalog_uri="https://geocatalog.contoso.com",
collection_name="detections",
credential=DefaultAzureCredential(),
storage_url="https://myaccount.blob.core.windows.net",
blob_container="results",
storage_account_key=os.getenv("STORAGE_ACCOUNT_KEY") # Fallback auth
)
Blob Storage Layout#
Results are organized in blob storage:
{blob_container}/
└── {model_name}/
└── {run_id}/
├── chips/
│ ├── chip_0_0.tif
│ ├── chip_0_1.tif
│ └── ...
└── results/
├── merged_imagery.tif
├── final_overlay.tif
├── final_overlay.jpg
└── detections.geojson
Validation#
Output destinations are validated when you call model.validate_input() or model.run().
Validation checks:
GeoCatalog endpoint is reachable
Credential has write permissions
Blob storage account is accessible
Blob container exists or can be created
See Validation for details.
Common Issues#
Error: “Failed to generate SAS token”#
Cause: Missing RBAC roles or storage account key.
Solution: Either:
Assign Azure RBAC roles (recommended):
Storage Blob Data Contributor
Storage Blob Delegator
Or provide
storage_account_keyparameter
See Also#
Complete Example - Full workflow with Output configuration
Input - Configure data sources
Validation - Pre-flight checks