UNPKG

@giro3d/giro3d

Version:

A JS/WebGL framework for 3D geospatial data visualization

109 lines 4.21 kB
import type { Getter } from 'copc'; import { type DimensionFilter } from './las/filter'; import type { GetNodeDataOptions, PointCloudMetadata, PointCloudNode, PointCloudNodeData } from './PointCloudSource'; import { PointCloudSourceBase } from './PointCloudSource'; export type COPCSourceOptions = { /** * The URL to the remote COPC LAS file, or a copc.js `Getter` function to directly access the file. */ url: string | Getter; /** * If true, colors are compressed to 8-bit (instead of 16-bit). * @defaultValue true */ compressColorsTo8Bit?: boolean; /** * If specified, will keep every Nth point. For example, a decimation value of 10 will keep * one point out of ten, and discard the 9 other points. Useful to reduce memory usage. * @defaultValue 1 */ decimate?: number; /** * Enable web workers to perform CPU intensive tasks. * @defaultValue true */ enableWorkers?: boolean; /** * The filters to use. */ filters?: Readonly<DimensionFilter[]>; }; /** * A source that reads from a remote [Cloud Optimized Point Cloud (COPC)](https://copc.io/) LAS file. * * LAZ decompression is done in background threads using workers. If you wish to disable workers * (for a noticeable cost in performance), you can set {@link COPCSourceOptions.enableWorkers} to * `false` in constructor options. * * Note: this source uses the **laz-perf** package to perform decoding of point cloud data. This * package uses WebAssembly. If you wish to override the path to the required .wasm file, use * {@link sources.las.config.setLazPerfPath | setLazPerfPath()} before using this source. * The default path is {@link sources.las.config.DEFAULT_LAZPERF_PATH | DEFAULT_LAZPERF_PATH}. * * ### Decimation * * This source supports decimation. By passing the {@link COPCSourceOptions.decimate} argument to * a value other than 1, every Nth point will be kept and other points will be discarded during * read operations. * * ### Dimensions filtering * * This source supports filtering over dimensions (also known as attributes) to eliminate points * during reads. For example, it is possible to remove unwanted classifications such as noise * from the output points. * * Note that dimension filtering is independent from the selected attribute. In other words, it is * possible to select the dimension `"Intensity"`, while filtering on dimensions `"Classification"` * and `"ReturnNumber"` for example. * * For example, if we wish to remove all points that have the dimension "High noise" (dimension 18 * in the ASPRS classification list), as well as removing all points whose intensity is lower than * 1000: * * ```ts * const source = new COPCSource(...); * * source.filters = [ * { dimension: 'Classification', operator: 'not', value: 18 }, * { dimension: 'Intensity', operator: 'greaterequal', value: 1000 }, * ]; * ``` */ export default class COPCSource extends PointCloudSourceBase { /** Readonly flag to indicate that this object is a COPCSource. */ readonly isCOPCSource: true; readonly type = "COPCSource"; private readonly _getter; private readonly _opCounter; private readonly _nodeMap; private readonly _filters; private readonly _options; private _data?; get loading(): boolean; get progress(): number; /** * Gets or sets the dimension filters. * @defaultValue `[]` */ get filters(): Readonly<DimensionFilter[]>; set filters(v: Readonly<DimensionFilter[]> | null | undefined); constructor(options: COPCSourceOptions); protected initializeOnce(): Promise<this>; getMetadata(): Promise<PointCloudMetadata>; getHierarchy(): Promise<PointCloudNode>; getNodeData(params: GetNodeDataOptions): Promise<PointCloudNodeData>; private loadNodeData; private loadNodeDataWithWorker; private ensureInitialized; /** * Loads a view buffer. */ private loadPointDataViewBuffer; /** * Loads a view and delegate LAZ decoding into a worker. */ private loadPointDataView; getMemoryUsage(): void; dispose(): void; } //# sourceMappingURL=COPCSource.d.ts.map