Skip to content

REPROJECT_LAS

Reprojects a LiDAR point cloud from one coordinate reference system (CRS) to another. The workflow retrieves projection definitions from epsg.io and builds a PDAL pipeline that transforms the dataset using filters.reprojection. Both simple horizontal CRS transformations and compound horizontal+vertical CRS transformations are supported.

The resulting dataset is written as a COPC (Cloud Optimized Point Cloud) file with appropriate scaling and offsets and returned as a LAS-compatible artifact.

Typical use: normalizing datasets into a common coordinate system before further processing, tiling, or visualization. Usually the first step in any pipeline that works with data in a non-standard CRS.


Contract

TypeREPROJECT_LAS
Acceptsinput_las: las
Producesoutput_las: las
Paramssource_epsg (string), target_epsg (string)

Inputs

SlotTypeDescription
input_laslasSource point cloud dataset

Outputs

SlotTypeDescription
output_laslasReprojected point cloud dataset

Parameters

NameTypeDescription
source_epsgstringCRS of the input dataset (e.g. "EPSG:2271" or "EPSG:26915+EPSG:5703")
target_epsgstringTarget CRS to transform into (e.g. "EPSG:3857")

Both parameters accept standard EPSG codes, ESRI codes, and compound CRS strings (horizontal+vertical).


What it does internally

1. Parse CRS definitions

CRS strings are split on + to separate horizontal and vertical components, allowing support for compound CRS such as EPSG:26915+EPSG:5703.

2. Fetch WKT definitions

For each CRS component, the workflow queries https://epsg.io/{code}.wkt to retrieve the full WKT projection definition. PDAL performs more reliably with explicit WKT than with bare EPSG codes in some edge cases.

3. Build PDAL pipeline

Depending on whether the CRS is simple or compound, one of two pipelines is used:

Simple reprojection (horizontal only):

LAS → filters.reprojection → writers.copc

Compound reprojection (horizontal + vertical):

LAS → filters.reprojection (horizontal) → filters.reprojection (vertical) → writers.copc

This enables vertical datum transformations (e.g. ellipsoidal height → NAVD88).

4. Write output

Output is written with writers.copc using scale_x/y/z = 0.001 and offset = auto for correct quantization.


Recipe usage

json
{
  "id": "reproject",
  "type": "REPROJECT_LAS",
  "inputs":  { "input_las": "job:input_las" },
  "outputs": { "output_las": "step:reproject.output_las" },
  "param_keys": ["source_epsg", "target_epsg"]
}

Job params:

json
"params": {
  "reproject": {
    "source_epsg": "EPSG:2271",
    "target_epsg": "EPSG:3857"
  }
}

Artifact storage path

artifacts/job_{id}/reproject/output.las