Skip to content

reproject-las

Reprojects a LAS/LAZ dataset into the site's SRS with no further conversion. DATASET_INFO runs in parallel on the reprojected output. Fires a webhook on completion.

Use this preset right after upload when the only goal is getting the dataset into the site's SRS — for a derived product (COPC, EPT, Potree, hillshade, contours), use one of the build-* presets instead, which already include reprojection as their first step.

REPROJECT_LAS always downloads and inspects the input file's embedded CRS before transforming. If source_epsg and target_epsg are set to the same value, it normally skips the transform — unless the file's embedded CRS metadata turns out to be invalid or inconsistent with its coordinates, in which case it corrects the file by stamping target_epsg on without moving any points. This makes reproject-las usable both to reproject and, with source_epsg == target_epsg, to repair a dataset's CRS metadata. See REPROJECT_LAS for the full decision logic.

Recipe name: reproject-lasVersion: 1.0.0Reprojection: Yes (set target_epsg to the site's SRS; set source_epsg equal to it to only correct broken CRS metadata without moving points) Output format: LAS/LAZ (reprojected) + JSON metadata


Steps

StepTypeRuns
reprojectREPROJECT_LASFirst
dataset_infoDATASET_INFOAfter reproject
call_webhookCALL_WEBHOOKon_exit

Recipe (v1.0.0 snapshot)

json
{
  "name": "reproject-las",
  "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": "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": 44,
    "inputs": {
      "job:input_las": {
        "type": "las",
        "uri": "development/survey/dataset.las",
        "hash": "abc123"
      }
    },
    "params": {
      "reproject": {
        "source_epsg": "EPSG:2271",
        "target_epsg": "EPSG:3857"
      },
      "call_webhook": {
        "webhook_url": "https://myapp.example.com/hooks/done"
      }
    },
    "outputs": {
      "step:reproject.output_las": {
        "path": "development/results/survey/dataset-reprojected.las"
      },
      "step:dataset_info.metadata": {
        "path": "development/results/survey/metadata.json"
      }
    }
  }'

Required inputs

Artifact keyTypeDescription
job:input_laslasSource LAS/LAZ file

Required params

StepParamDescription
reprojectsource_epsgSource CRS of the uploaded dataset (e.g. "EPSG:2271")
reprojecttarget_epsgThe site's target CRS (e.g. "EPSG:3857")
call_webhookwebhook_urlURL to POST the job result to

Producible outputs

ArtifactTypeDescription
step:reproject.output_laslasLAS/LAZ reprojected into the site's SRS
step:dataset_info.metadatajsonPDAL metadata report (reflecting the reprojected CRS)