ST_Simplify() în MySQL

Operații spațiale MySQL 5.7+

Simplifică o geometrie (algoritmul Douglas-Peucker): elimină punctele care abat linia cu mai puțin de o distanță dată.

Sintaxă
ST_Simplify(geometrie, distanta_maxima)

Ce face ST_Simplify()

Traseele GPS au adesea mii de puncte, prea multe pentru afișarea pe o hartă mică. ST_Simplify() păstrează forma generală și elimină vârfurile aflate la mai puțin de distanta_maxima de linia simplificată. Cu cât distanța este mai mare, cu atât rezultatul are mai puține puncte.

Rezultatul poate deveni invalid (de exemplu cu autointersecții); verifică-l cu ST_IsValid(). Distanța trebuie să fie pozitivă. Funcția nu acceptă SRID geografic.

Parametri

Parametru Descriere
geometrie Geometria de simplificat.
distanta_maxima Toleranța, în unitățile coordonatelor.

Ce returnează

O geometrie de același tip, cu mai puține puncte.

Exemple

Exemplul 1: Același traseu, cu toleranțe diferite

SET @traseu = ST_GeomFromText('LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)');

SELECT ST_NumPoints(@traseu) AS initial,
       ST_AsText(ST_Simplify(@traseu, 0.5)) AS toleranta_0_5,
       ST_AsText(ST_Simplify(@traseu, 1.0)) AS toleranta_1;

Rezultat

+---------+---------------------------------+---------------------+
| initial | toleranta_0_5                   | toleranta_1         |
+---------+---------------------------------+---------------------+
|       7 | LINESTRING(0 0,0 1,1 1,2 3,3 3) | LINESTRING(0 0,3 3) |
+---------+---------------------------------+---------------------+

Greșeli frecvente

  • Simplifici datele salvate și pierzi originalul. Simplificarea nu se poate anula; păstrează geometria completă și simplifică doar la afișare.

Comenzi înrudite