# 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**

| Parameter              | Description                                                                                                                                                                                                                                                                                                         | Data 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**

| Name                       | Description                                                                                                                                                                                                                                                                                                                                                                              | Data 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](http://www.asprs.org/a/society/committees/standards/asprs_las_format_v10.pdf): "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](http://www.asprs.org/a/society/committees/standards/asprs_las_format_v10.pdf): "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](http://www.asprs.org/a/society/committees/standards/asprs_las_format_v10.pdf): "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](http://www.asprs.org/a/society/committees/standards/asprs_las_format_v10.pdf): "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
    )
  )
```

<figure><img src="/files/F0mjB85YnHhH32ObBpEF" alt=""><figcaption><p>LiDAR data from downtown Tallahassee, FL, colored by Z-value</p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.heavy.ai/v8.3.0/sql/data-manipulation-dml/system-table-functions/tf_load_point_cloud.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
