mbes-backscatter-potree
Processes a multibeam echo sounder (MBES) point cloud and a backscatter TIF into three Potree tilesets. The input is reprojected from a survey CRS to EPSG:3857, then three independent visualization products are produced in parallel: an elevation-colored DEM (regridded surface with terrain colorization), a backscatter-draped point cloud (raw survey points colored from the backscatter raster), and a raw reprojected point cloud. DATASET_INFO runs in parallel with the main branches and its metadata is available in the completion webhook payload.
Recipe name: mbes-backscatter-potreeVersion: 1.0.0Ordo ID: 27 Reprojection: Yes (source CRS supplied at job submission) Output format: Potree (×3)
Steps
| Step | Type | Depends on | Runs |
|---|---|---|---|
reproject | REPROJECT_LAS | job:input_las | First |
regrid | REGRID_LAS | step:reproject.output_las | After reproject |
colorize_dem | COLORIZE_AS_DEM | step:regrid.output_las | After regrid |
colorize_backscatter | COLORIZE_FROM_TIF | step:reproject.output_las, job:input_tif | After reproject (parallel with regrid) |
potree_dem | BUILD_POTREE | step:colorize_dem.output_las | After colorize_dem |
potree_backscatter | BUILD_POTREE | step:colorize_backscatter.output_las | After colorize_backscatter |
potree_raw | BUILD_POTREE | step:reproject.output_las | After reproject (parallel) |
dataset_info | DATASET_INFO | step:reproject.output_las | After reproject (parallel) |
call_webhook | CALL_WEBHOOK | step:dataset_info.metadata | on_exit |
Recipe (v1.0.0 snapshot)
json
{
"name": "mbes-backscatter-potree",
"version": "1.0.0",
"definition": {
"recipe": [
{
"id": "reproject",
"type": "REPROJECT_LAS",
"inputs": { "input_las": "job:input_las" },
"outputs": { "output_las": "step:reproject.output_las" },
"param_keys": ["source_epsg", "target_epsg"]
},
{
"id": "regrid",
"type": "REGRID_LAS",
"inputs": { "input_las": "step:reproject.output_las" },
"outputs": { "output_las": "step:regrid.output_las" },
"param_keys": ["resolution"]
},
{
"id": "colorize_dem",
"type": "COLORIZE_AS_DEM",
"inputs": { "input_las": "step:regrid.output_las" },
"outputs": { "output_las": "step:colorize_dem.output_las" },
"param_keys": ["pallete", "resolution"]
},
{
"id": "colorize_backscatter",
"type": "COLORIZE_FROM_TIF",
"inputs": { "input_las": "step:reproject.output_las", "input_tif": "job:input_tif" },
"outputs": { "output_las": "step:colorize_backscatter.output_las" }
},
{
"id": "potree_dem",
"type": "BUILD_POTREE",
"inputs": { "input_las": "step:colorize_dem.output_las" },
"outputs": { "output_potree": "step:potree_dem.output_potree" }
},
{
"id": "potree_backscatter",
"type": "BUILD_POTREE",
"inputs": { "input_las": "step:colorize_backscatter.output_las" },
"outputs": { "output_potree": "step:potree_backscatter.output_potree" }
},
{
"id": "potree_raw",
"type": "BUILD_POTREE",
"inputs": { "input_las": "step:reproject.output_las" },
"outputs": { "output_potree": "step:potree_raw.output_potree" }
},
{
"id": "dataset_info",
"type": "DATASET_INFO",
"inputs": { "input_las": "step:reproject.output_las" },
"outputs": { "metadata": "step:dataset_info.metadata" }
}
],
"on_exit": {
"id": "call_webhook",
"type": "CALL_WEBHOOK",
"inputs": { "waits_for": "step:dataset_info.metadata" },
"param_keys": ["webhook_url"]
}
}
}Submitting a job
bash
curl -X POST https://dev.mapprism.com/ordo/jobs \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"recipe_id": 27,
"inputs": {
"job:input_las": {
"type": "las",
"uri": "development/survey/mbes.las",
"hash": "<file-hash>"
},
"job:input_tif": {
"type": "tif",
"uri": "development/survey/backscatter.tif",
"hash": "<file-hash>"
}
},
"params": {
"reproject": {
"source_epsg": "EPSG:6565",
"target_epsg": "EPSG:3857"
},
"regrid": {
"resolution": 1.0
},
"colorize_dem": {
"pallete": "bathymetry",
"resolution": 1.0
},
"call_webhook": {
"webhook_url": "https://myapp.example.com/hooks/done"
}
},
"outputs": {
"step:potree_dem.output_potree": { "path": "development/results/survey/potree-dem" },
"step:potree_backscatter.output_potree": { "path": "development/results/survey/potree-backscatter" },
"step:potree_raw.output_potree": { "path": "development/results/survey/potree-raw" }
}
}'Required inputs
| Artifact key | Type | Description |
|---|---|---|
job:input_las | las | MBES point cloud (source CRS: as declared in reproject params) |
job:input_tif | tif | Backscatter mosaic raster (must be spatially aligned with the point cloud) |
Required params
| Step | Param | Description |
|---|---|---|
reproject | source_epsg | CRS of the input MBES scan (e.g. "EPSG:6565") |
reproject | target_epsg | Target CRS (e.g. "EPSG:3857") |
regrid | resolution | DEM grid cell size in the target CRS units (meters for EPSG:3857) |
colorize_dem | pallete | GDAL .cpt palette name for DEM colorization (e.g. "bathymetry") |
colorize_dem | resolution | DEM rasterization resolution for colorization step |
call_webhook | webhook_url | URL to POST the completed job object to |
Producible outputs
| Artifact | Type | Description |
|---|---|---|
step:potree_dem.output_potree | potree | Elevation-colored DEM as Potree tileset |
step:potree_backscatter.output_potree | potree | Backscatter-draped point cloud as Potree tileset |
step:potree_raw.output_potree | potree | Raw reprojected point cloud as Potree tileset |
step:dataset_info.metadata | json | PDAL metadata report for the reprojected point cloud |