Une première question pour être bien sur de comprendre ce à quoi tu veux arriver.
Tu travailles à la base sur des volumes (de l'espace aérien) puis tu en fais différentes coupes à altitude constante ce qui fournit les différents polygones, chaque polygone étant donc attaché à une altitude (tu l'indiques quelque part).
Quel est le but de la démarche qui consiste à faire, ensuite, l'union des polygones, toutes altitudes de coupe confondues ? Est-ce pour déterminer l'emprise au sol de l'espace aérien, de la zone de terrain survolée/survolable ?
Si c'est cela, tu as tout intêret à :
- d'abord travailler à altitude constante en faisant l'union des polygones attachés à cette altitude, uniquement ceux-là,
- faire, à la fin, l'union de ces unions intermédiaires
Je pense que ça peut t'éviter des cas de figures "dangereux", numériquement parlant (volumes avec des faces quasiment verticales, tranchées selon des z très proches)
En plus, c'est à altitude constante qu'il faut rechercher les éventuels trous mais, surtout, les éventuels recouvrements : selon les volumes, ca peut se recouvrir dans tous les sens sans qu'il y ait d'intersection entre tes volumes, tout simplement parce que tu traites tous les polygones en même temps.
Par exemple, un seul volume formé par un 'L' en 3D : si tu le découpes tout en haut et tout en bas, tu as 2 polygones qui s'intersectent (l'un est même contenu dans l'autre) sans qu'il y ait de problème.
Enfin, pour être "couvrant" (dans ta recherche de trous et de recouvrements, j'ai l'impression qu'il faut "trancher" tes volumes à toutes les altitudes (différentes) des points définissant les volumes. S'il n'y en a pas trop (j'ai l'impression que c'est le cas)j'ai parlé trop vite
Ensuite, concernant les précisions de calcul et ton souhait de travailler à une tolérance près.
Le seul endroit où Shapely prend en compte une tolérance est la méthode almost_equals qui indique si deux géométries sont égales à N décimales près. On ne peut pas en faire grand-chose ici, il me semble.
Mais même si tu travailles en secondes d'arc entières (je comprends que tu définis les différents points/sommets de tes volumes avec des (x,y) entiers, des réels, certes, mais valeurs entieres), je ne vois pas trop où on pourrait prendre en compte une quelconque tolérance.
Même des petits trous (ou des petits recouvrements, voir un de mes premiers messages) peuvent être révélateur d'un problème bien réel. Donc éliminer des trous, des recouvrements ou retoucher des coordonnées sur de tels critères (précision, arrondis à la seconde d'arc entière la plus proche, ...) ne me semble pas une bonne idée et plutôt contraire à la vérification des contraintes dont tu parlais au post#17)
Tout dernier point : tu parles enveloppe, trous, recouvrements mais je ne vois pas trop la logique des choses ni l'ordre dans lequel tu fais tout ça. Tu pourrais préciser ?
Aurais-tu également l'altitude des différents polygones dont tu as fournis la représentation wkt plus haut ?