Point and point-cloud workflows
In addition to file-based raster transformation, Vyperdatum transforms coordinates directly and transforms point-cloud files.
Direct point transformation
transform_points() transforms
arrays of coordinates without any file input or output. Lists or NumPy arrays
are accepted for x, y, and z. A four-tuple is returned in the
order (success, x, y, z), where success is a boolean and the
remaining elements are the transformed coordinate arrays.
import numpy as np
from vyperdatum.transformer import Transformer
tf = Transformer(crs_from="EPSG:6346", crs_to="EPSG:6346+NOAA:98")
xi, yi, zi = np.array([278881.198]), np.array([2719890.433]), np.array([0])
success, xt, yt, zt = tf.transform_points(x=xi, y=yi, z=zi, always_xy=True)
An optional vdatum_check flag compares a sample of the transformed values
against the VDatum REST API and records discrepancies when the comparison
fails.
Point-cloud files
Point-cloud files are transformed through the format-specific methods, each of which reads the input, applies the transformation, and writes the output:
LAZ via
transform_laz().NPZ via
transform_npz().XYZ via
transform_xyz().GeoParquet via
transform_geoparquet().PDAL-supported formats via
transform_pdal().
Because point-cloud transformation is not anchored to a raster pixel grid, it is not subject to the same-horizontal-CRS restriction that applies to the raster path, and it is therefore the recommended route when a change of horizontal CRS is required.