zichzelf of met andere ringen), zo lang maar elk punt in het binnengebied of op de rand van de polygoon maar elk ander punt (in het binnengebied of op de rand van de polygoon) kan bereiken via een pad geheel door het binnengebied van de polygoonoftewel, hij definieert een verbonden gebied. Hierbij vereisen sommige van de genoemde uitspra ken (zoals 'ring raakt andere ring') een tolerantiewaarde in de evaluatie en daarom is deze tolerantie ook ex pliciet onderdeel van deze definitie. Het is mogelijk te overwegen om de tolerantiewaarde niet te gebruiken en alleen te kijken naar de digitale repre- sentatiewaarde van de coördinaten en de rechte lijnsegmenten die hierdoor zijn gedefinieerd. Stel een situatie voor dat een punt van een binnenring heel dicht bij een buitenring komt (middendeel van lijnsegment). De situ atie in de werkelijkheid is zo dat dit punt eigenlijk exact op de buitenring zou moeten liggen. Echter door de ein dige hoeveelheid beschikbare getallen in een computer, is het niet altijd mo gelijk om de exacte locatie te represen teren [4][5], maar zal een nabijgelegen locatie gekozen worden (op basis van 'integer' of 'floating point' in plaats van reële getallen). In dergelijke geval len is het willekeurig of het punt op het lijnsegment, dan wel links of rechts hiervan zal liggen. Indien er dus geen tolerantie wordt meegenomen, zou het kunnen zijn dat deze situatie wordt geclassificeerd als kruisende ringen (niet toegestaan) of twee di sjuncte ringen (niet het geval want rin gen zouden elkaar eigenlijk moeten raken). In ieder geval wordt de poly goon-situatieanalyse (ringen en geldig heid) niet goed uitgevoerd. Dit is één van de redenen waarom vele systemen met één of andere tolerantiewaarde werken. Het probleem is nu echter hoe te specificeren wat er precies met de tolerantie moet gebeuren bij het vali deren van polygonen (dit deel ont breekt nog in onze definitie). Een an der voorbeeld dat dit probleem il lustreert, is testpolygoon 30: een optie om aan de tolerantie-eis te voldoen is het verwijderen van de 'naar binnen stekende uitsteeksels' en het resultaat zou nu een geldige polygoon zijn. Ech ter, een andere aanpak zou kunnen zijn het vergroten van de opening tus sen de twee eindpunten; het resultaat is nu een niet-geldige polygoon omdat het 'naar binnen stekende uitsteeksel' nu kruist met één van de andere zijden. Dit voorbeeld toont aan dat het moeilijk is om een niet-ambigue wijze van het werken met een epsilontolerantie voor te schrijven gedu rende het validatieproces van een polygoon. Een onverwacht aspect van onze definitie van geldige poly gonen is dat een 'uitsteeksel naar buiten' (testpolygoon 11) resulteert in een ongeldige polygoon, omdat het niet moge lijk is om van het midden van het uitsteeksel naar elke an der punt van de polygoon te gaan via het binnenste van de polygoon. Terwijl aan de andere kant een polygoon met 'uitsteeksel naar binnen' (testpolygoon 12) wel een geldige polygoon is omdat het nu mogelijk om vanuit elk punt (ook het midden van het uitsteeksel) elk ander punt van de poly goon te bereiken via het binnenste. Iets soortgelijk als met 'uitsteeksels' doet zich ook voor met 'bruggetjes': terwijl bruggen naar binnen resulteren in geldige polygonen (test polygonen 7 en 8), resulteren bruggen naar buiten (testpo lygonen 15 en 16) in ongeldige polygonen. Zowel in het ge val van 'uitsteeksels' als 'bruggetjes' is er een verschil tus sen de binnen- en de buitenkant (wat men wellicht asym metrisch zou kunnen vinden). Geldige en schone polygoon Het validatieproces (volgens onze definitie van geldige poly gonen) zou een stuk eenvoudiger worden als kon worden aangenomen dat geen enkel punt binnen de epsilon-tolerantie van een ander punt of zijde ligt (die het zelf niet mede defini eert); dit zal een (geldige schone polygoon worden genoemd. In testpolygoon 4 (en oolc in testpolygonen 31 en 32) houdt dit in dat het segment waarop het punt van de andere ring geacht wordt te liggen, in tweeën wordt gesplitst. Door deze manier van modelleren kan de polygoonvalidatie worden uitgevoerd zonder toleranties. Een ander voordeel van scho ne polygonen is dat deze ook geen 'uitsteeksel' (naar binnen of naar buiten) meer hebben, omdat de twee eind punten te dicht bij elkaar liggen (of zelfs gelijk zijn). Op vergelijkbare wijze worden zowel interne als externe 'brug getjes' verwijderd. Ook worden herhalende punten verwij derd. Alvorens polygonen te versturen, moet het verzenden de systeem eerst de epsilon-tolerantie-verwerking uitvoe ren. Daarna kan de verzender er zeker van zijn dat het ont vangende systeem ook geldige polygonen zal ontvangen (er van uitgaande dat de coördinaten niet meer dan epsilon worden veranderd tijdens de overdracht). De grootste afstand waarover een coördinaat kan worden verplaatst terwijl de polygoon nog steeds geldig blijft wordt de robuustheid van een polygoonrepresentatie genoemd door Thompson [6]. In testpolygoon 4 (zonder extra punt in bui tenring), is de robuustheid nul, want een oneindig kleine verplaatsing (naar buiten) van het punt op de binnenring zorgt ervoor dat de polygoon ongeldig wordt. Echter het toe voegen van een expliciet (gedeeld) punt in de buiten- en binnenring zorgt ervoor dat de robuustheid van de repre sentatie (van dezelfde polygoon) toeneemt tot ten minste de waarde epsilon. De robuustheid is zelfs nog groter, want het is mogelijk om de (gedeelde) punten meer dan epsilon te ver plaatsen (de omvang van epsilon is zichtbaar de vorm van de open cirkel in de figuren van testpolygonen 31 en 31). De ro buustheid van een polygoon kan worden berekend door de GEO-INFO 2004-3

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

Geo-Info | 2004 | | pagina 31