# SampledProperty

#### new Cesium.SampledProperty(type, derivativeTypes)
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
    var 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
    var result = property.getValue(Cesium.JulianDate.fromIso8601('2012-08-01T12:00:00.00Z'));

    //Create a simple numeric SampledProperty that uses third degree Hermite Polynomial Approximation
    var 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
    var result = property.getValue(Cesium.JulianDate.fromIso8601('2012-08-01T00:02:34.00Z'));

##### See:

- SampledPositionProperty

### Members

#### backwardExtrapolationDuration : Number
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
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
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>
DataSources/SampledProperty.js 261

Gets the derivative types used by this property.

#### forwardExtrapolationDuration : Number
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
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
DataSources/SampledProperty.js 283

Gets the interpolation algorithm to use when retrieving a value.

Default Value: `LinearApproximation`

#### interpolationDegree : Number
DataSources/SampledProperty.js 272

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

Default Value: `1`

#### readonly isConstant : Boolean
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 : *
DataSources/SampledProperty.js 251

Gets the type of property.

### Methods

#### addSample(time, value, derivatives)
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)
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)
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
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
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
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)
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)
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.