SDK JS
    Preparing search index...

    Interface I3sPointCloudLayerOptions

    Configuration for I3sPointCloudLayer. Only id and url are required; a public, geographic lidar service needs nothing else.

    The fields worth deciding up front: colorMode (left unset, the layer opens in 'rgb' when the service publishes an RGB attribute and 'intensity' otherwise), datum (how the cloud is seated vertically), and maxScreenSpaceError with budget (how densely it streams and how much stays resident). A secured ArcGIS service needs auth; a projected service in a CRS the SDK's registry does not know needs reproject, or opening it throws.

    interface I3sPointCloudLayerOptions {
        anchor?: { altitude?: number };
        attenuation?: boolean;
        attribution?: string;
        auth?: RequestAuthorizer;
        budget?: { maxBytes?: number; maxPoints?: number };
        classColors?: Readonly<Record<number, Rgb>>;
        clippingPlanes?: ClippingPlanesOptions;
        colorMode?: PointColorMode;
        colorRamp?: ColorRamp;
        datum?: VerticalDatum;
        debugBounds?: boolean;
        decoder?: I3sPointCloudDecoder | "lepcc" | "bvc";
        edlRadius?: number;
        edlStrength?: number;
        errorScale?: number;
        eyeDomeLighting?: boolean;
        fixedPx?: number;
        flyTo?: boolean | { duration?: number; pitch?: number; zoom?: number };
        geoidN?: number;
        geometricErrorScale?: number;
        grid?: number;
        ground?: boolean;
        hiddenClasses?: readonly number[];
        id: string;
        intensityBias?: number;
        intensityScale?: number;
        lodFalloffPow?: number;
        maximumAttenuation?: number;
        maxPx?: number;
        maxScreenSpaceError?: number;
        minPx?: number;
        onClassifications?: (classes: ClassificationInfo[]) => void;
        onError?: (error: unknown) => void;
        onLoaded?: () => void;
        onProgress?: (fraction: number) => void;
        opacity?: number;
        pointRadiusM?: number;
        reproject?: Reproject;
        requestInit?: RequestInit;
        roundPoints?: boolean;
        shadows?: boolean;
        url: string;
        visible?: boolean;
        workers?: boolean;
    }
    Index

    Properties

    anchor?: { altitude?: number }

    Absolute altitude override (m, WGS84). Defaults to auto-grounding.

    attenuation?: boolean

    Geometric-error point attenuation (Cesium PointCloudShading): size points by their node's geometric error so coarse/far points draw bigger and the cloud stays dense at distance instead of going sparse. Default false. Toggle live with I3sPointCloudLayer.setAttenuation.

    attribution?: string
    auth?: RequestAuthorizer

    Request authorizer for all fetches (layer doc, node pages, geometry, attributes, statistics). For a secured ArcGIS I3S service, pass an ESRI authorizer (e.g. getEsriAuthorizer()), or configure one globally with configureEsriAuth() and omit this. Public services need neither.

    budget?: { maxBytes?: number; maxPoints?: number }

    Resident-memory budget (maxPoints / maxBytes).

    classColors?: Readonly<Record<number, Rgb>>

    Per-code LAS colour overrides applied over the ASPRS palette. Change live with setClassColor; restore one code by passing undefined. Default: the stock palette.

    clippingPlanes?: ClippingPlanesOptions

    Clipping planes (geographic; see ClippingPlanesOptions) applied to this layer's points (whole-point cull in the color, pick, and shadow-cast passes). Change at runtime via I3sPointCloudLayer.setClippingPlanes. Default none.

    colorMode?: PointColorMode

    Initial color mode. Default: 'rgb' when the service publishes an RGB attribute, else 'intensity'. RGB requires an RGB attribute.

    colorRamp?: ColorRamp

    Colour ramp for intensity and height modes. Change live with setColorRamp. Default: the built-in Turbo ramp.

    Vertical datum for auto-placement (I3S heights are orthometric, vcsWkid 5773): 'basemap' drops the ground on the map; 'ellipsoid'/'orthometric' place it at its absolute height. Default: inherited from the service's declared vertical CRS (vcsWkid) when a geoid is available, else 'basemap'. Switch live with I3sPointCloudLayer.setDatum.

    debugBounds?: boolean
    decoder?: I3sPointCloudDecoder | "lepcc" | "bvc"

    Decoder: 'lepcc' (default, native Esri) | 'bvc' (pending) | a custom impl.

    To benchmark against Esri's reference implementation, construct it yourself and pass the instance. The SDK used to expose a 'lepcc-legacy' string for this, backed by an unpublished package — which meant the published bundle carried an import no consumer could resolve.

    edlRadius?: number
    edlStrength?: number

    EDL darkening strength (default 80) + neighbour ring radius in px (default 1.4).

    errorScale?: number

    Density→geometricError scale (refine aggressiveness). Default 1.

    eyeDomeLighting?: boolean

    Eye-dome lighting: a screen-space pass that shades depth gaps so a sparse cloud reads as a solid surface (Cesium/Potree EDL). Default false. Toggle live with I3sPointCloudLayer.setEyeDomeLighting.

    fixedPx?: number
    flyTo?: boolean | { duration?: number; pitch?: number; zoom?: number }
    geoidN?: number

    Optional — you should not normally need this.* The geoid undulation N (m) at the dataset, used to place absolutely-georeferenced data on mean-sea-level terrain. The SDK resolves it automatically (it fetches the EGM96 grid on demand and samples it at the dataset), so pass this only to override that — e.g. for a dataset referenced to a local vertical datum EGM96 does not model.

    An override shifts placement by the DIFFERENCE between your value and the EGM96 undulation at the dataset — so passing the conventional EGM96 value for your area is a no-op rather than a ~30 m jump.

    geometricErrorScale?: number

    Scale on the geometric error before projection (Cesium geometricErrorScale). Default 1.

    grid?: number

    Requantization grid (m) for the i32 position buffer. Default 0.001 (1 mm).

    ground?: boolean

    Measure + ground the dataset (default true).

    hiddenClasses?: readonly number[]

    LAS class ids to hide initially. Toggle live with I3sPointCloudLayer.setHiddenClasses / I3sPointCloudLayer.setClassVisible; discover which codes a scene contains with I3sPointCloudLayer.getClassifications.

    id: string
    intensityBias?: number
    intensityScale?: number
    lodFalloffPow?: number

    LOD distance-falloff exponent for the refine cusp. <1 keeps higher LOD further out (more far detail, more data); 1 = standard SSE — the cusp matches Cesium/Esri at the same maxScreenSpaceError (leanest far field). Default: the engine value (0.6). Pairs with attenuation to load lean yet stay dense. Tune live with I3sPointCloudLayer.setLodFalloffPow.

    maximumAttenuation?: number

    Attenuation point-size ceiling, CSS px (Cesium maximumAttenuation). Default 16.

    maxPx?: number
    maxScreenSpaceError?: number

    Target on-screen point spacing (px). Lower = denser/more tiles. Default 1.5.

    minPx?: number
    onClassifications?: (classes: ClassificationInfo[]) => void

    Fired (with the current code/label/count list) when the set of LAS classification codes present in the streamed scene changes — wire it to (re)populate a class show/hide checklist without polling I3sPointCloudLayer.getClassifications.

    onError?: (error: unknown) => void
    onLoaded?: () => void
    onProgress?: (fraction: number) => void
    opacity?: number
    pointRadiusM?: number
    reproject?: Reproject

    Projected-CRS reprojection hook: (x,y,z) in the layer CRS → [lng°,lat°,h_m]. REQUIRED for non-geographic services; ignored for wkid 4326/4979.

    requestInit?: RequestInit

    Static auth/headers for all fetches — the escape hatch; superseded by auth.

    roundPoints?: boolean
    shadows?: boolean

    Cast + receive cascaded sun shadows (default false). When on, the cloud casts depth footprints into the shared ShadowCoordinator atlas (so it shadows meshes/terrain) and self-shadows by sampling it. Requires an active geo-sun (sun above the horizon). Toggle live with I3sPointCloudLayer.setShadows.

    url: string

    URL of the I3S SceneServer or its …/layers/{id}.

    visible?: boolean
    workers?: boolean

    Decode off the main thread in a Web Worker pool (default true).