---
title: polyline.rdp() function
description: polyline.rdp() applies the Ramer Douglas Peucker (RDP) algorithm to input data to downsample curves composed of line segments into visually indistinguishable curves with fewer points.
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/polyline/rdp/
estimated_tokens: 3506
product: Flux
version: v0
---

# polyline.rdp() function

-   Flux 0.181.0+
-   View InfluxDB support

`polyline.rdp()` is experimental and [subject to change at any time](/flux/v0/stdlib/experimental/#experimental-packages-are-subject-to-change).

`polyline.rdp()` applies the Ramer Douglas Peucker (RDP) algorithm to input data to downsample curves composed of line segments into visually indistinguishable curves with fewer points.

##### Function type signature

```js
(
    <-tables: stream[A],
    ?epsilon: float,
    ?retention: float,
    ?timeColumn: string,
    ?valColumn: string,
) => stream[B] where A: Record, B: Record
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### valColumn

Column with Y axis values of the given curve. Default is `_value`.

### timeColumn

Column with X axis values of the given curve. Default is `_time`.

### epsilon

Maximum tolerance value that determines the amount of compression.

Epsilon should be greater than `0.0`.

### retention

Percentage of points to retain after downsampling.

Retention rate should be between `0.0` and `100.0`.

### tables

Input data. Default is piped-forward data (`<-`).

## Examples

-   [Downsample data using the RDP algorithm](#downsample-data-using-the-rdp-algorithm)
-   [Downsample data using the RDP algorithm with an epsilon of 1.5](#downsample-data-using-the-rdp-algorithm-with-an-epsilon-of-15)
-   [Downsample data using the RDP algorithm with a retention rate of 90%](#downsample-data-using-the-rdp-algorithm-with-a-retention-rate-of-90)

### Downsample data using the RDP algorithm

When using `polyline.rdp()`, leave both `epsilon` and `retention` unspecified to automatically calculate the maximum tolerance for producing a visually indistinguishable curve.

```js
import "experimental/polyline"

data
    |> polyline.rdp()
```

[](#view-example-input-and-output)

View example input and output

#### Input data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:30Z | 10.56555566168836 |
| 2023-04-06T14:59:40Z | -29.76098586714259 |
| 2023-04-06T14:59:50Z | -67.50435038579738 |
| 2023-04-06T15:00:00Z | -16.758669047964453 |
| 2023-04-06T15:00:10Z | -47.25865245658065 |
| 2023-04-06T15:00:20Z | 66.16082461651365 |
| 2023-04-06T15:00:30Z | -0.9179216017921821 |
| 2023-04-06T15:00:40Z | -56.89169240573004 |
| 2023-04-06T15:00:50Z | 11.358605472976624 |
| 2023-04-06T15:01:00Z | 28.71147881415803 |
| 2023-04-06T15:01:10Z | -30.928830759588756 |
| 2023-04-06T15:01:20Z | -22.411848631056067 |
| 2023-04-06T15:01:30Z | 17.05503606764129 |
| 2023-04-06T15:01:40Z | 9.834382683760559 |
| 2023-04-06T15:01:50Z | -12.62058579127679 |
| 2023-04-06T15:02:00Z | -44.44668391211515 |

#### Output data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:30Z | 10.56555566168836 |
| 2023-04-06T14:59:40Z | -29.76098586714259 |
| 2023-04-06T14:59:50Z | -67.50435038579738 |
| 2023-04-06T15:00:00Z | -16.758669047964453 |
| 2023-04-06T15:00:10Z | -47.25865245658065 |
| 2023-04-06T15:00:20Z | 66.16082461651365 |
| 2023-04-06T15:00:30Z | -0.9179216017921821 |
| 2023-04-06T15:00:40Z | -56.89169240573004 |
| 2023-04-06T15:00:50Z | 11.358605472976624 |
| 2023-04-06T15:01:00Z | 28.71147881415803 |
| 2023-04-06T15:01:10Z | -30.928830759588756 |
| 2023-04-06T15:01:20Z | -22.411848631056067 |
| 2023-04-06T15:01:30Z | 17.05503606764129 |
| 2023-04-06T15:01:40Z | 9.834382683760559 |
| 2023-04-06T15:01:50Z | -12.62058579127679 |
| 2023-04-06T15:02:00Z | -44.44668391211515 |

### Downsample data using the RDP algorithm with an epsilon of 1.5

```js
import "experimental/polyline"

data
    |> polyline.rdp(epsilon: 1.5)
```

[](#view-example-input-and-output)

View example input and output

#### Input data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:40Z | 10.56555566168836 |
| 2023-04-06T14:59:50Z | -29.76098586714259 |
| 2023-04-06T15:00:00Z | -67.50435038579738 |
| 2023-04-06T15:00:10Z | -16.758669047964453 |
| 2023-04-06T15:00:20Z | -47.25865245658065 |
| 2023-04-06T15:00:30Z | 66.16082461651365 |
| 2023-04-06T15:00:40Z | -0.9179216017921821 |
| 2023-04-06T15:00:50Z | -56.89169240573004 |
| 2023-04-06T15:01:00Z | 11.358605472976624 |
| 2023-04-06T15:01:10Z | 28.71147881415803 |
| 2023-04-06T15:01:20Z | -30.928830759588756 |
| 2023-04-06T15:01:30Z | -22.411848631056067 |
| 2023-04-06T15:01:40Z | 17.05503606764129 |
| 2023-04-06T15:01:50Z | 9.834382683760559 |
| 2023-04-06T15:02:00Z | -12.62058579127679 |
| 2023-04-06T15:02:10Z | -44.44668391211515 |

#### Output data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:40Z | 10.56555566168836 |
| 2023-04-06T15:00:00Z | -67.50435038579738 |
| 2023-04-06T15:00:10Z | -16.758669047964453 |
| 2023-04-06T15:00:20Z | -47.25865245658065 |
| 2023-04-06T15:00:30Z | 66.16082461651365 |
| 2023-04-06T15:00:40Z | -0.9179216017921821 |
| 2023-04-06T15:00:50Z | -56.89169240573004 |
| 2023-04-06T15:01:00Z | 11.358605472976624 |
| 2023-04-06T15:01:10Z | 28.71147881415803 |
| 2023-04-06T15:01:20Z | -30.928830759588756 |
| 2023-04-06T15:01:30Z | -22.411848631056067 |
| 2023-04-06T15:01:40Z | 17.05503606764129 |
| 2023-04-06T15:01:50Z | 9.834382683760559 |
| 2023-04-06T15:02:00Z | -12.62058579127679 |
| 2023-04-06T15:02:10Z | -44.44668391211515 |

### Downsample data using the RDP algorithm with a retention rate of 90%

```js
import "experimental/polyline"

data
    |> polyline.rdp(retention: 90.0)
```

[](#view-example-input-and-output)

View example input and output

#### Input data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:40Z | 10.56555566168836 |
| 2023-04-06T14:59:50Z | -29.76098586714259 |
| 2023-04-06T15:00:00Z | -67.50435038579738 |
| 2023-04-06T15:00:10Z | -16.758669047964453 |
| 2023-04-06T15:00:20Z | -47.25865245658065 |
| 2023-04-06T15:00:30Z | 66.16082461651365 |
| 2023-04-06T15:00:40Z | -0.9179216017921821 |
| 2023-04-06T15:00:50Z | -56.89169240573004 |
| 2023-04-06T15:01:00Z | 11.358605472976624 |
| 2023-04-06T15:01:10Z | 28.71147881415803 |
| 2023-04-06T15:01:20Z | -30.928830759588756 |
| 2023-04-06T15:01:30Z | -22.411848631056067 |
| 2023-04-06T15:01:40Z | 17.05503606764129 |
| 2023-04-06T15:01:50Z | 9.834382683760559 |
| 2023-04-06T15:02:00Z | -12.62058579127679 |
| 2023-04-06T15:02:10Z | -44.44668391211515 |

#### Output data

| _time | _value |
| --- | --- |
| 2023-04-06T14:59:40Z | 10.56555566168836 |
| 2023-04-06T15:00:00Z | -67.50435038579738 |
| 2023-04-06T15:00:10Z | -16.758669047964453 |
| 2023-04-06T15:00:20Z | -47.25865245658065 |
| 2023-04-06T15:00:30Z | 66.16082461651365 |
| 2023-04-06T15:00:40Z | -0.9179216017921821 |
| 2023-04-06T15:00:50Z | -56.89169240573004 |
| 2023-04-06T15:01:00Z | 11.358605472976624 |
| 2023-04-06T15:01:10Z | 28.71147881415803 |
| 2023-04-06T15:01:20Z | -30.928830759588756 |
| 2023-04-06T15:01:30Z | -22.411848631056067 |
| 2023-04-06T15:01:40Z | 17.05503606764129 |
| 2023-04-06T15:01:50Z | 9.834382683760559 |
| 2023-04-06T15:02:10Z | -44.44668391211515 |

[transformations](/flux/v0/tags/transformations/)
