gebruikersoperaties onderscheiden we zogenaamde ,,update"-operaties op de constraintsgraaf; deze worden automatisch uitgevoerd, nadat steeds een deel van de (plan)topografie is gemuteerd. Met deze operaties wordt de verzameling constraints consistent gehouden. Uitgegaan wordt van mutaties in de vorm van atomaire acties, zoals beschreven in [1] en [6]. Bij elk van deze atomaire acties hoort een automatische update-operatie op de constraintsgraaf. Beschadigingen van constraints als gevolg van een atomaire actie moeten worden her steld door een constraint-herstelmechanisme. Als bij voorbeeld met een atomaire actie een knoop wordt toe gevoegd op een segment (s1), wordt dit segment gesplitst in twee deelsegmenten (s2 en s3). In de constraintsgraaf moet elke evenwijdigheidsconstraint tussen s1 en een ander segment (s4) worden vervangen door twee even- wijdigheidsconstraints, tussen s2 en s4 en tussen s3 en s4. Op soortgelijke wijze moeten de constraints van elk van de overige typen op (deel)element s1 worden vervangen of verwijderd. De update-operaties worden gespecificeerd op drie ni veaus: laag-3-operaties; dit betreft de aanpassing van de constraintsgraaf na een atomaire actie; laag-2-operaties; het laten vervallen van elke constraint van een be paald type op een bepaald (deel)element (fig. 5a); het vervangen van elke constraint van een bepaald type op een bepaald (deel)element door één constraint van hetzelfde type op één nieuw (deel)- element (fig. 5b); het vervangen van elke constraint van een bepaald type op een bepaald (deel)element door twee con straints van hetzelfde type op twee nieuwe (deel)- elementen (fig. 5c); het bepalen van impliciete constraints in de con straintsgraaf; laag-1-operaties; dit betreft het toevoegen of verwijde ren van één edge in de constraintsgraaf. Operaties in een bepaalde laag zijn opgebouwd uit uit sluitend operaties van de direct daaronder liggende laag. Bij nadere beschouwing van de eerste laag-2-operatie kan worden opgemerkt, dat de impliciete constraints die afleidbaar waren uit een vervallen constraint en een andere constraint over dat (deel)element, expliciet moe ten worden gemaakt (activering). Deze activering be tekent dat expliciete constraints zijn toegevoegd in de graaf, en dus moeten de impliciete constraints worden bepaald. Bij de tweede laag-2-operatie kunnen geen impliciete constraints ontstaan. Bij de derde laag-2-operatie kunnen alleen impliciete constraints ontstaan tussen de twee (nieuwe) (deel)elementen. In fig. 6 is (plan)topografie weergegeven, waarop de volgende constraints zijn gedefinieerd: segment 1 is evenwijdig met segment 2; segment 1 staat haaks op segment 5; segment 1 heeft een bepaalde hoek met segment 3 (een cirkelsegment); knoop 4 heeft een bepaalde afstand tot segment 1. De bijbehorende constraintsgraaf (fig. 4) moet automa tisch worden bijgewerkt, nadat in de (plan)topografie knoop 16 is toegevoegd op het segment met identificatie 12 Fig. 6. (Plan)topografie. 1 met eindknopen 10 en 11. Hierdoor wordt segment 1 gesplitst in twee nieuwe segmenten met identificaties 7 en 8. Achtereenvolgens worden de constraints op (deel)- element 1 van de typen KS, WH, EV en HA vervangen (deze volgorde is willekeurig). De afzonderlijke stappen zijn in fig. 7a, 7b, 7c en 7d weergegeven. Merk op dat in fig. 7b geen WH-constraint tussen de (deel)elementen 7 en 3 is toegevoegd, omdat segment 7 niet aansluit aan het cirkelsegment 3. Merk verder op dat in fig. 7d constraint EV(7,8) het resultaat is van de conjunctie van de edge EV(7,8) uit fig. 7c met de edge EV(7,8) uit fig. 7d. Edge EV(7,8) is afleid baar uit de edges EV(2,7) en EV(2,8) van fig. 7c. Edge EV(7,8) in fig. 7d is afleidbaar uit de in de laatste stap toe gevoegde edges HA(5,7) en HA(5,8). Constraint-herstelmechanisme Het onderzochte mechanisme om beschadigde, geo metrische constraints te herstellen, is gebaseerd op een iteratief algoritme. In elke iteratieslag worden alle con straints hersteld in een willekeurige volgorde. Omdat het herstellen van een bepaalde constraint tot gevolg kan hebben dat een, in deze iteratieslag eerder herstelde constraint, weer wordt beschadigd, zal in het algemeen na afloop van een iteratieslag niet aan alle constraints zijn voldaan. In dat geval moet nog een iteratieslag worden uitgevoerd. De iteratie eindigt als aan alle constraints is voldaan, of na een vooraf bepaald maximum aantal slagen. Het bereiken van het maximum aantal slagen betekent, dat er nog beschadigde constraints kunnen zijn. Het mechanisme ondersteunt het herstel van KK-, WH- en KS-constraints. Geometrische constraints van de andere typen kunnen worden vertaald naar constraints van één van deze drie typen. Het herstellen van een constraint gebeurt door translatie van de betreffende knopen, zodanig dat deze constraint in één keer wordt gerepareerd. Om een indruk te krijgen van de perfor mance van het mechanisme, is gewerkt met een regel- 370 NGT GEODESIA 91 - 9

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1991 | | pagina 18