# SampledProperty

#### new Cesium.SampledProperty(type, derivativeTypes)
engine/Source/DataSources/SampledProperty.js 159

A `Property` whose value is interpolated for a given time from the provided set of samples and specified interpolation algorithm and degree.

Name | Type | Description
--- | --- | ---
`type` | number | Packable | The type of property.
`derivativeTypes` | Array.<Packable> | optional When supplied, indicates that samples will contain derivative information of the specified types.

##### Examples:

    //Create a linearly interpolated Cartesian2
    const property = new Cesium.SampledProperty(Cesium.Cartesian2);

    //Populate it with data
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:00:00.00Z'), new Cesium.Cartesian2(0, 0));
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-02T00:00:00.00Z'), new Cesium.Cartesian2(4, 7));

    //Retrieve an interpolated value
    const result = property.getValue(Cesium.JulianDate.fromIso8601('2012-08-01T12:00:00.00Z'));

    //Create a simple numeric SampledProperty that uses third degree Hermite Polynomial Approximation
    const property = new Cesium.SampledProperty(Number);
    property.setInterpolationOptions({
        interpolationDegree : 3,
        interpolationAlgorithm : Cesium.HermitePolynomialApproximation
    });

    //Populate it with data
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:00:00.00Z'), 1.0);
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:01:00.00Z'), 6.0);
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:02:00.00Z'), 12.0);
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:03:30.00Z'), 5.0);
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:06:30.00Z'), 2.0);

    //Samples can be added in any order.
    property.addSample(Cesium.JulianDate.fromIso8601('2012-08-01T00:00:30.00Z'), 6.2);

    //Retrieve an interpolated value
    const result = property.getValue(Cesium.JulianDate.fromIso8601('2012-08-01T00:02:34.00Z'));

##### See:

- SampledPositionProperty

### Members

#### backwardExtrapolationDuration : number
engine/Source/DataSources/SampledProperty.js 349

Gets or sets the amount of time to extrapolate backward before the property becomes undefined. A value of 0 will extrapolate forever.

Default Value: `0`

#### backwardExtrapolationType : ExtrapolationType
engine/Source/DataSources/SampledProperty.js 331

Gets or sets the type of extrapolation to perform when a value is requested at a time before any available samples.

Default Value: `ExtrapolationType.NONE`

#### readonly definitionChanged : Event
engine/Source/DataSources/SampledProperty.js 241

Gets the event that is raised whenever the definition of this property changes. The definition is considered to have changed if a call to getValue would return a different result for the same time.

#### derivativeTypes : Array.<Packable>
engine/Source/DataSources/SampledProperty.js 261

Gets the derivative types used by this property.

#### forwardExtrapolationDuration : number
engine/Source/DataSources/SampledProperty.js 313

Gets or sets the amount of time to extrapolate forward before the property becomes undefined. A value of 0 will extrapolate forever.

Default Value: `0`

#### forwardExtrapolationType : ExtrapolationType
engine/Source/DataSources/SampledProperty.js 295

Gets or sets the type of extrapolation to perform when a value is requested at a time after any available samples.

Default Value: `ExtrapolationType.NONE`

#### interpolationAlgorithm : InterpolationAlgorithm
engine/Source/DataSources/SampledProperty.js 283

Gets the interpolation algorithm to use when retrieving a value.

Default Value: `LinearApproximation`

#### interpolationDegree : number
engine/Source/DataSources/SampledProperty.js 272

Gets the degree of interpolation to perform when retrieving a value.

Default Value: `1`

#### readonly isConstant : boolean
engine/Source/DataSources/SampledProperty.js 227

Gets a value indicating if this property is constant. A property is considered constant if getValue always returns the same result for the current definition.

#### type : *
engine/Source/DataSources/SampledProperty.js 251

Gets the type of property.

### Methods

#### addSample(time, value, derivatives)
engine/Source/DataSources/SampledProperty.js 581

Adds a new sample.

Name | Type | Description
--- | --- | ---
`time` | JulianDate | The sample time.
`value` | Packable | The value at the provided time.
`derivatives` | Array.<Packable> | optional The array of derivatives at the provided time.

#### addSamples(times, values, derivativeValues)
engine/Source/DataSources/SampledProperty.js 625

Adds an array of samples.

Name | Type | Description
--- | --- | ---
`times` | Array.<JulianDate> | An array of JulianDate instances where each index is a sample time.
`values` | Array.<Packable> | The array of values, where each value corresponds to the provided times index.
`derivativeValues` | Array.<Array> | optional An array where each item is the array of derivatives at the equivalent time index.

##### Throws:

- DeveloperError : times and values must be the same length.
- DeveloperError : times and derivativeValues must be the same length.

#### addSamplesPackedArray(packedSamples, epoch)
engine/Source/DataSources/SampledProperty.js 682

Adds samples as a single packed array where each new sample is represented as a date, followed by the packed representation of the corresponding value and derivatives.

Name | Type | Description
--- | --- | ---
`packedSamples` | Array.<number> | The array of packed samples.
`epoch` | JulianDate | optional If any of the dates in packedSamples are numbers, they are considered an offset from this epoch, in seconds.

#### equals(other) → boolean
engine/Source/DataSources/SampledProperty.js 765

Compares this property to the provided property and returns `true` if they are equal, `false` otherwise.

Name | Type | Description
--- | --- | ---
`other` | Property | optional The other property.

##### Returns:

`true` if left and right are equal, `false` otherwise.

#### getValue(time, result) → object
engine/Source/DataSources/SampledProperty.js 369

Gets the value of the property at the provided time.

Name | Type | Description
--- | --- | ---
`time` | JulianDate | The time for which to retrieve the value.
`result` | object | optional The object to store the value into, if omitted, a new instance is created and returned.

##### Returns:

The modified result parameter or a new instance if the result parameter was not supplied.

#### removeSample(time) → boolean
engine/Source/DataSources/SampledProperty.js 707

Removes a sample at the given time, if present.

Name | Type | Description
--- | --- | ---
`time` | JulianDate | The sample time.

##### Returns:

`true` if a sample at time was removed, `false` otherwise.

#### removeSamples(time)
engine/Source/DataSources/SampledProperty.js 736

Removes all samples for the given time interval.

Name | Type | Description
--- | --- | ---
`time` | TimeInterval | The time interval for which to remove all samples.

#### setInterpolationOptions(options)
engine/Source/DataSources/SampledProperty.js 542

Sets the algorithm and degree to use when interpolating a value.

Name | Type | Description
--- | --- | ---
`options` | object | optional Object with the following properties:
Name | Type | Description
--- | --- | ---
`interpolationAlgorithm` | InterpolationAlgorithm | optional The new interpolation algorithm. If undefined, the existing property will be unchanged.
`interpolationDegree` | number | optional The new interpolation degree. If undefined, the existing property will be unchanged.

Need help? The fastest way to get answers is from the community and team on the Cesium Forum.