Name

CG_GreeneApproxConvexPartition — Calcul de la partition convexe approximative de la géométrie du polygone

Synopsis

geometry CG_GreeneApproxConvexPartition(geometry geom);

Description

Calcule une partition convexe approximative monotone de la géométrie du polygone.

[Note]

Une partition d'un polygone P est un ensemble de polygones tels que les intérieurs des polygones ne se coupent pas et que l'union des polygones est égale à l'intérieur du polygone original P. Les fonctions CG_ApproxConvexPartition et CG_GreeneApproxConvexPartition produisent des partitions convexes approximativement optimales. Ces deux fonctions produisent des décompositions convexes en décomposant d'abord le polygone en polygones plus simples ; CG_ApproxConvexPartition utilise une triangulation et CG_GreeneApproxConvexPartition une partition monotone. Ces deux fonctions garantissent toutes deux qu'elles ne produiront pas plus de quatre fois le nombre optimal de pièces convexes, mais elles diffèrent par leur complexité d'exécution. Bien que l'algorithme d'approximation basé sur la triangulation produise souvent moins de pièces convexes, ce n'est pas toujours le cas.

Disponibilité : 3.5.0 - nécessite SFCGAL >= 1.5.0.

Nécessite SFCGAL >= 1.5.0

Cette méthode nécessite le backend SFCGAL.

Exemples

Partition convexe approximative de Greene (même exemple que CG_YMonotonePartition, CG_ApproxConvexPartition et CG_OptimalConvexPartition)

SELECT ST_AsText(CG_GreeneApproxConvexPartition('POLYGON((156 150,83 181,89 131,148 120,107 61,32 159,0 45,41 86,45 1,177 2,67 24,109 31,170 60,180 110,156 150))'::geometry));

GEOMETRYCOLLECTION(POLYGON((32 159,0 45,41 86,32 159)),POLYGON((45 1,177 2,67 24,45 1)),POLYGON((67 24,109 31,170 60,107 61,67 24)),POLYGON((41 86,45 1,67 24,41 86)),POLYGON((107 61,32 159,41 86,67 24,107 61)),POLYGON((148 120,107 61,170 60,148 120)),POLYGON((148 120,170 60,180 110,156 150,148 120)),POLYGON((156 150,83 181,89 131,148 120,156 150)))