Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions datasets/predicted-damage-colombia-2026/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Colombia Damage 2026

## First-time publishing

Validate the STAC collection first and fix any validation errors:

```bash
pctasks dataset validate-collection datasets/predicted-damage-colombia-2026/collection/template.json
```

Then submit the collection ingestion:

```bash
pctasks dataset ingest-collection -d datasets/predicted-damage-colombia-2026/dataset.yaml -s -a registry pccomponents
```

Take the workflow ID from the output and watch it. It must succeed.

```bash
pctasks runs status $WORKFLOW_ID --watch
curl "https://planetarycomputer.microsoft.com/api/stac/v1/collections/predicted-damage-colombia-2026"
```

## Updating

Simply add `-u` to the command.

```bash
pctasks dataset ingest-collection -d datasets/predicted-damage-colombia-2026/dataset.yaml -u -s -a registry pccomponents
```

## Item ingestion

Assets live under `blob://ai4edataeuwest/ai4good/colombia2026/` and are
organized as `<area>/<YYYY-MM-DD>/`. Chunking lists the `*model-predictions.tif`
files, so each folder produces exactly one STAC item. The sibling GeoPackages
and valid-area mask in that folder become its assets.

Print the workflow without submitting anything:

```bash
pctasks dataset process-items -d datasets/predicted-damage-colombia-2026/dataset.yaml \
initial-ingest -a registry pccomponents.azurecr.io
```

Try a single item first:

```bash
pctasks dataset process-items -d datasets/predicted-damage-colombia-2026/dataset.yaml \
test-ingest -a registry pccomponents.azurecr.io --limit 1 --submit
```

Then ingest everything:

```bash
pctasks dataset process-items -d datasets/predicted-damage-colombia-2026/dataset.yaml \
initial-ingest -a registry pccomponents.azurecr.io --upsert --submit
```

`initial-ingest` and `test-ingest` are chunkset IDs. Use a fresh one whenever
you want to re-list the assets, or pass `-e` to reuse an existing chunkset.

Watch the run and read logs with:

```bash
pctasks runs status $RUN_ID --watch
pctasks runs get run-log $RUN_ID
pctasks runs get task-log $RUN_ID create-splits create-splits -p 0
```

Verify the items landed:

```bash
curl "https://planetarycomputer.microsoft.com/api/stac/v1/collections/predicted-damage-colombia-2026/items?limit=10"
```

## Adding a new area

Upload four files to `colombia2026/<area>/<YYYY-MM-DD>/`:

| File | Becomes |
| --- | --- |
| `*model-predictions.tif` | `visual` |
| `*valid_area_mask.geojson` | `valid-area-mask` |
| `*overture*.gpkg` | `overture-buildings` |
| `*google*.gpkg` or `*hdx*.gpkg` | `google-buildings` |

The folder name sets the item ID, so `pereira/2026-08-12` produces
`pereira-2026-08-12`. Use lowercase, hyphenated area names. Nothing is read
from the file names except the four patterns above.

Then widen `extent.spatial.bbox` in `collection/template.json` if the new area
falls outside it, re-run the collection ingestion with `-u`, and run
`process-items` with a new chunkset ID.

## FAQs

> The workflow failed with "Expected exactly one file matching ...". Why?

Every item needs all four files in its folder, and each pattern must match
exactly one file. Check for a missing upload or two files matching the same
pattern.

> Can I reuse a chunkset ID?

Only with `-e`, which skips re-listing the assets. Newly uploaded areas will
not be picked up that way.

65 changes: 65 additions & 0 deletions datasets/predicted-damage-colombia-2026/collection/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{
"render_config": {
"render_params": {
"tile_format": "png",
"colormap": "{\"2\":[0,255,0,255],\"3\":[255,0,0,255],\"4\":[128,128,128,255]}",
"nodata": 0
},
"minzoom": 11,
"assets": [
"visual"
],
"maxzoom": 18,
"create_links": true,
"has_mosaic": false,
"mosaic_preview_zoom": 13,
"mosaic_preview_coords": [
3.4803,
-76.5367
],
"requires_token": true,
"max_items_per_tile": null,
"vector_tilesets": null,
"hidden": false
},
"mosaic_info": {
"mosaics": [
{
"name": "Most recent available",
"description": null,
"cql": []
}
],
"render_options": [
{
"name": "Predicted building damage",
"description": "Per-building damage predictions from the Microsoft AI for Good Lab damage assessment model.",
"type": "raster-tile",
"options": "assets=visual&colormap=%7B%222%22%3A%5B0%2C255%2C0%2C255%5D%2C%223%22%3A%5B255%2C0%2C0%2C255%5D%2C%224%22%3A%5B128%2C128%2C128%2C255%5D%7D&nodata=0",
"vector_options": null,
"min_zoom": 11,
"legend": {
"type": "classmap",
"labels": [
"Building (no damage)",
"Damaged",
"Unknown"
],
"trim_start": null,
"trim_end": null,
"scale_factor": null
},
"conditions": null
}
],
"default_location": {
"zoom": 13,
"coordinates": [
3.4803,
-76.5367
]
},
"default_custom_query": null,
"animation_hint": null
}
}
29 changes: 29 additions & 0 deletions datasets/predicted-damage-colombia-2026/collection/description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Creamos evaluaciones de daños a nivel de edificio tras el terremoto en Colombia
mediante el entrenamiento y la posterior ejecución de un modelo de inteligencia
artificial sobre imágenes satelitales adquiridas después del desastre. El modelo
de IA clasifica cada edificio identificado en las imágenes como "sin daños",
"afectado" o "desconocido". La categoría "desconocido" se utiliza cuando el
edificio no puede ser evaluado adecuadamente, por ejemplo, debido a la presencia
de nubes. Utilizamos los polígonos de edificios de Overture Maps, que representan
el estado de las edificaciones sobre el terreno antes del evento. Los resultados
se distribuyen como un archivo vectorial en formato GeoPackage, con los
siguientes atributos para cada edificio:

- `id` – identificador único de Overture Maps y Google para cada edificio.
- `damaged` – valor 1 si el edificio está dañado; de lo contrario, 0.
- `unknown` – valor 1 si el edificio está cubierto por nubes, neblina, humo o
si, por alguna otra razón, no fue posible clasificarlo; de lo contrario, 0.
- `area` – área del edificio en metros cuadrados.

We create building level damage assessments by training and then running an AI
model on the post-disaster imagery. The AI model predicts whether each footprint
in the imagery is "building", "damaged", or "unknown" (i.e. cloudy). We use
Overture Maps and Google building footprints which represent the state on the
ground pre-event and distribute the resulting data as a vector file GeoPackage
with the following per-footprint attributes:

- `id` – the Overture Maps unique ID for each footprint.
- `damaged` – 1 if the building is damaged, else 0.
- `unknown` – 1 if the building was covered by clouds/haze/smoke or otherwise
unable to be classified, else 0.
- `area` – area of the building in sq meters.
184 changes: 184 additions & 0 deletions datasets/predicted-damage-colombia-2026/collection/template.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
{
"type": "Collection",
"id": "predicted-damage-colombia-2026",
"stac_version": "1.0.0",
"description": "{{ collection.description }}",
"links": [
{
"rel": "cite-as",
"href": "https://www.microsoft.com/en-us/research/group/ai-for-good-research-lab/",
"type": "text/html",
"title": "AI For Good Lab Harnessing AI to help solve some of the world’s greatest challenges"
},
{
"rel": "license",
"href": "https://creativecommons.org/licenses/by/4.0/",
"type": "text/html",
"title": "Creative Commons Attribution 4.0 International"
},
{
"rel": "describedby",
"href": "https://planetarycomputer.microsoft.com/dataset/predicted-damage-colombia-2026",
"type": "text/html",
"title": "Human readable dataset overview and reference"
}
],
"stac_extensions": [
"https://stac-extensions.github.io/table/v1.2.0/schema.json",
"https://stac-extensions.github.io/storage/v2.0.0/schema.json"
],
"item_assets": {
"visual": {
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
"roles": [
"data",
"visual"
],
"title": "Model prediction imagery",
"description": "Cloud-optimized GeoTIFF of the post-event imagery that the damage model was run on."
},
"overture-buildings": {
"type": "application/geopackage+sqlite3",
"roles": [
"data"
],
"title": "Overture Maps building damage footprints",
"description": "GeoPackage of Overture Maps building footprints with predicted earthquake damage.",
"table:storage_options": {
"account_name": "ai4edataeuwest"
}
},
"google-buildings": {
"type": "application/geopackage+sqlite3",
"roles": [
"data"
],
"title": "Google building damage footprints",
"description": "GeoPackage of Google building footprints with predicted earthquake damage.",
"table:storage_options": {
"account_name": "ai4edataeuwest"
}
},
"valid-area-mask": {
"type": "application/geo+json",
"roles": [
"metadata"
],
"title": "Valid area mask",
"description": "GeoJSON mask delineating the area covered by the damage assessment."
}
},
"msft:region": "westeurope",
"table:columns": [
{
"name": "geometry",
"type": "byte_array",
"description": "Building footprint polygons"
},
{
"name": "id",
"type": "string",
"description": "Overture Maps unique ID for each footprint"
},
{
"name": "damaged",
"type": "int64",
"description": "1 if the building is damaged, else 0"
},
{
"name": "unknown",
"type": "int64",
"description": "1 if the building was covered by clouds/haze/smoke or otherwise unable to be classified, else 0"
},
{
"name": "area",
"type": "double",
"description": "Area of the building in square meters",
"unit": "m2"
}
],
"msft:container": "ai4good",
"msft:storage_account": "ai4edataeuwest",
"msft:short_description": "AI-predicted building damage footprints for areas of Colombia affected by the August 2026 earthquake.",
"title": "Predicted Building Damage: Colombia Earthquake 2026",
"extent": {
"spatial": {
"bbox": [
[
-76.6146,
3.4127,
-75.6922,
4.8433
],
[
-76.6146,
3.4127,
-76.4588,
3.5479
],
[
-75.7856,
4.7758,
-75.6922,
4.8433
]
]
},
"temporal": {
"interval": [
[
"2026-08-08T00:00:00Z",
null
]
]
}
},
"license": "CC-BY-4.0",
"keywords": [
"Colombia",
"Cali",
"Pereira",
"Earthquake",
"Building damage",
"Damage assessment",
"Buildings",
"Microsoft AI for Good Lab"
],
"providers": [
{
"name": "Microsoft AI for Good Lab",
"roles": [
"producer",
"licensor"
],
"url": "https://www.microsoft.com/en-us/research/group/ai-for-good-research-lab/"
},
{
"name": "Microsoft",
"roles": [
"host",
"processor"
],
"url": "https://planetarycomputer.microsoft.com"
}
],
"assets": {
"thumbnail": {
"href": "https://ai4edatasetspublicassets.blob.core.windows.net/assets/pc_thumbnails/colombia2026.png",
"type": "image/png",
"title": "Predicted Building Damage Thumbnail",
"roles": [
"thumbnail"
]
}
},
"storage:schemes": {
"azure": {
"type": "ms-azure",
"platform": "https://{account}.blob.core.windows.net",
"account": "ai4edataeuwest",
"container": "ai4good",
"region": "westeurope"
}
}
}
Loading
Loading