﻿---
title: ES|QL ST_SIMPLIFYPRESERVETOPOLOGY function
description: 
url: https://www.elastic.co/elastic/docs-builder/docs/3028/reference/query-languages/esql/functions-operators/spatial-functions/st_simplifypreservetopology
products:
  - Elasticsearch
---

# ES|QL ST_SIMPLIFYPRESERVETOPOLOGY function
<applies-to>
  - Elastic Cloud Serverless: Preview
  - Elastic Stack: Planned
</applies-to>


## Syntax

![Embedded](https://www.elastic.co/elastic/docs-builder/docs/3028/reference/query-languages/esql/images/functions/st_simplifypreservetopology.svg)


## Parameters

<definitions>
  <definition term="geometry">
    Expression of type `geo_point`, `geo_shape`, `cartesian_point` or `cartesian_shape`. If `null`, the function returns `null`.
  </definition>
  <definition term="tolerance">
    Tolerance for the geometry simplification, in the units of the input SRS
  </definition>
</definitions>


## Description

Simplifies the input geometry by applying a topology-preserving variant of the Douglas-Peucker algorithm with a specified tolerance. Vertices that fall within the tolerance distance from the simplified shape are removed. Unlike `ST_SIMPLIFY`, the resulting geometry is guaranteed to be topologically valid.

## Supported types


| geometry        | tolerance | result          |
|-----------------|-----------|-----------------|
| cartesian_point | double    | cartesian_point |
| cartesian_point | float     | cartesian_point |
| cartesian_point | integer   | cartesian_point |
| cartesian_point | long      | cartesian_point |
| cartesian_shape | double    | cartesian_shape |
| cartesian_shape | float     | cartesian_shape |
| cartesian_shape | integer   | cartesian_shape |
| cartesian_shape | long      | cartesian_shape |
| geo_point       | double    | geo_point       |
| geo_point       | float     | geo_point       |
| geo_point       | integer   | geo_point       |
| geo_point       | long      | geo_point       |
| geo_shape       | double    | geo_shape       |
| geo_shape       | float     | geo_shape       |
| geo_shape       | integer   | geo_shape       |
| geo_shape       | long      | geo_shape       |


## Example

```esql
ROW wkt = "POLYGON ((7.998 53.827, 9.470 53.068, 15.754 53.801, 16.523 57.160, 11.162 57.868, 8.064 57.445, 6.219 55.317, 7.998 53.827))"
| EVAL simplified = ST_SIMPLIFYPRESERVETOPOLOGY(TO_GEOSHAPE(wkt), 0.7)
```


| wkt:keyword                                                                                                                   | simplified:geo_shape                                                                           |
|-------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|
| POLYGON ((7.998 53.827, 9.470 53.068, 15.754 53.801, 16.523 57.160, 11.162 57.868, 8.064 57.445, 6.219 55.317, 7.998 53.827)) | POLYGON ((6.219 55.317, 9.47 53.068, 15.754 53.801, 16.523 57.16, 8.064 57.445, 6.219 55.317)) |