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
ST_IsValid(): Verifică dacă o geometrie este validă după regulile OGC (de exemplu un poligon care nu se autointersectează).ST_FrechetDistance() și ST_HausdorffDistance(): Măsoară cât de asemănătoare sunt două linii (de exemplu două trasee GPS); 0 înseamnă trasee identice.