tf_load_point_cloud

Loads one or more las or laz point cloud/LiDAR files from a local file or directory source, optionally tranforming the output SRID to out_srs (if not specified, output points are automatically transformed to EPSG:4326 lon/lat pairs).

If use_cache is set to true, an internal point cloud-specific cache will be used to hold the results per input file, and if queried again will significantly speed up the query time, allowing for interactive querying of a point cloud source. If the results of tf_load_point_cloud will only be consumed once (for example, as part of a CREATE TABLE statement), it is highly recommended that use_cache is set to false or left unspecified (as it is defaulted to false) to avoid the performance and memory overhead incurred by used of the cache.

The bounds of the data retrieved can be optionally specified with the x_min, x_max, y_min, y_max arguments. These arguments can be useful when the user desires to retrieve a small geographic area from a large point-cloud file set, as files containing data outside the bounds of the specified bounding box will be quickly skipped by tf_load_point_cloud, only requiring a quick read of the spatial metadata for the file.

SELECT * FROM TABLE(
    tf_load_point_cloud(
        path => <path>,
        [out_srs => <out_srs>,
        use_cache => <use_cache>,
        x_min => <x_min>,
        x_max => <x_max>,
        y_min => <y_min>,
        y_max => <y_max>]
    )
)    

Input Arguments

ParameterDescriptionData Types

path

The path of the file or directory containing the las/laz file or files. Can contain globs. Path must be in allowed-import-paths.

TEXT ENCODING NONE

out_srs (optional)

EPSG code of the output SRID. If not specified, output points are automatically converted to lon/lat (EPSG 4326).

TEXT ENCODING NONE

use_cache (optional)

If true, use internal point cloud cache. Useful for inline querying of the output of tf_load_point_cloud. Should turn off for one-shot queries or when creating a table from the output, as adding data to the cache incurs performance and memory usage overhead. If not specified, is defaulted to false/off.

BOOLEAN

x_min (optional)

Min x-coordinate value (in degrees) for the output data.

DOUBLE

x_max (optional)

Max x-coordinate value (in degrees) for the output data.

DOUBLE

y_min(optional)

Min y-coordinate value (in degrees) for the output data.

DOUBLE

y_max (optional)

Max y-coordinate value (in degrees) for the output data.

DOUBLE

Output Columns

NameDescriptionData Types

x

Point x-coordinate

Column<DOUBLE>

y

Point y-coordinate

Column<DOUBLE>

z

Point z-coordinate

Column<DOUBLE>

intensity

Point intensity

Column<INT>

return_num

The ordered number of the return for a given LiDAR pulse. The first returns (lowest return numbers) are generally associated with the highest-elevation points for a LiDAR pulse, i.e. the forest canopy will generally have a lower return_num than the ground beneath it.

Column<TINYINT>

num_returns

The total number of returns for a LiDAR pulse. Multiple returns occur when there are multiple objects between the LiDAR source and the lowest ground or water elevation for a location.

Column<TINYINT>

scan_direction_flag

From the ASPRS LiDAR Data Exchange Format Standard: "The scan direction flag denotes the direction at which the scanner mirror was traveling at the time of the output pulse. A bit value of 1 is a positive scan direction, and a bit value of 0 is a negative scan direction."

Column<TINYINT>

edge_of_flight_line_flag

From the ASPRS LiDAR Data Exchange Format Standard: "The edge of flight line data bit has a value of 1 only when the point is at the end of a scan. It is the last point on a given scan line before it changes direction."

Column<TINYINT>

classification

From the ASPRS LiDAR Data Exchange Format Standard: "The classification field is a number to signify a given classification during filter processing. The ASPRS standard has a public list of classifications which shall be used when mixing vendor specific user software."

Column<SMALLINT>

scan_angle_rank

From the ASPRS LiDAR Data Exchange Format Standard: "The angle at which the laser point was output from the laser system, including the roll of the aircraft... The scan angle is an angle based on 0 degrees being NADIR, and –90 degrees to the left side of the aircraft in the direction of flight."

Column<TINYINT>

Example A

CREATE TABLE wake_co_lidar_test AS
SELECT
  *
FROM
  TABLE(
    tf_load_point_cloud(
      path => '/path/to/20150118_LA_37_20066601.laz'
    )
  );

Example B

SELECT
  x, y, z, classification
FROM
  TABLE(
    tf_load_point_cloud(
      path => '/path/to/las_files/*.las',
      out_srs => 'EPSG:4326',
      use_cache => true,
      y_min => 37.0,
      y_max => 38.0,
      x_min => -123.0,
      x_max => -122.0
    )
  )