binnen de tolerantiewaarde ligt, dan zou het systeem moeten beslissen de polygoon aan te passen binnen de ge geven tolerantie (en feitelijk een nieu we representatie generen). Deze nieu we representatie kan dan geldig of on geldig zijn afhankelijk van de specifie ke configuratie. Merk op dat buitenrin gen van een polygoon tegen de klok in zijn gespecificeerd en dat de binnen ringen met de klok mee gegeven zijn in de testpolygonen. Er zouden meer testvarianten gemaakt kunnen wor den door de oriëntatie om te draaien (dit is nu alleen gedaan bij testpoly goon 1, waarbij beide varianten zijn meegenomen). Verder kunnen ringen die zichzelf raken gemodelleerd wor den als één ring of als verschillende ringen. In de testpolygonen is steeds de verschillende ringenvariant geko zen, behalve bij testpolygoon 4 waar beide mogelijkheden worden getest: 4a, de verschillende ringenvariant (zonder een expliciet punt waar de rin gen elkaar wel exact raken) en 4b, de 'enkele zelfralcende ring'-optie. Er is zelfs een derde variant denkbaar (nog niet getest): twee verschillende ringen maar dan wel in beide ringen het raak punt (identiek) opnemen. Behalve deze varianten (op oriëntatie en hoe om te gaan met rakende ringen), is er nog een aantal andere testpolygonen te verzinnen. Het is belangrijk om al deze typen polygonen te verzamelen om zo de compleetheid (correctheid) van de relevante standaarden te evalueren. We hebben de testpolygonen in ver schillende geo-DBMS'en getest: Oracle, Informix, PostGIS (PostgreSQL) en ArcSDE binary. Van deze implementa ties voldoen Informix en PostGIS aan de OpenGIS-specificaties voor een poly goon (SFS, level 2). Het OpenGIS Well Known Text (WKT, 'bekende tekst') for maat is gebruikt bij het invoegen van de records in de verschillende syste men. Hieronder een voorbeeld van een 'insert' SQL statement zoals is gebruikt om een correct polygoon (testpolygoon 2) toe te voegen (met uitzondering van ArcSDE, waar het laadproces anders verloopt): insert into test_polygon values ('2', ST_Po- lyFromText('polygon( (33300 19200, 19200 30000, 8300 15000, 200004200, 3330019200), (25000 13300, 17500 13300, 17500 19200, 25000 19200, 25000 13300))', 128992)); Oracle heeft als enige een aparte validatiefunctie waarin een tolerantiewaarde kan worden opgegeven (in het voor beeld is de tolerantie waarde 4000): select id, sdo_geom.validate_geometry_with_context(geom,4000) as valid from test_polygon where sdo_geom.validate_geometry_with_context(geom,4000) 'TRUE'; Tabel 1 geeft een overzicht van de reactie van de verschil lende systemen. Deze tabel bevat ook het verwachte resul taat volgens de ISO- en OpenGIS-definities en volgens onze eigen definitie. De waarnemingen en interpretaties leiden tot de volgende algemene conclusies. Oracle Spatial (ver sion 9.2.0.3.0) heeft een tolerantieparameter, die kan wor den gebruikt bij vele operaties. In deze testen is de toleran tiewaarde steeds 4000. Experimenten met andere toleran tiewaarden geven (soortgelijke) resultaten. Indien Informix (Spatial DataBlade Release 8.11.UC1, Build 225) een poly goon met verkeerde oriëntatie vindt, dan wordt deze intern omgedraaid zonder waarschuwing. PostGIS 0.6.2 (on Post greSQL 7.1.3) ondersteunt alleen de GeomFromText-functie (en niet de PolyFromText functie) en de geometrie wordt niet gevalideerd. Zoals ook tijdens onze testen en benchmarking van ver schillende geo-ICT-producten al was gebleken, is er nog geen consistent gebruik van een polygoondefinitie. Dit is zowel het geval voor de standaarden (specificaties) zelf als voor de implementatie hiervan in producten. Zowel op ba sis van de ISO19107-standaard alsook op basis van de Open GIS (SFS for SQL)-implementatiespecificatie, is het soms erg moeilijk of zelfs onmogelijk om te bepalen of een polygoon geldig is of niet. Volgens onze evaluatie met de verzameling testgevallen, zijn de resultaten van (on)geldige polygonen niet altijd hetzelfde volgens de geharmoniseerde ISO- en OpenGIS-standaarden. Bovendien, zowel ISO als OpenGIS- definities zeggen niets over het belangrijke aspect van de tolerantiewaarde. Dit is een belangrijke reden waarom wij onze eigen definitie van een polygoon (met gaten) hebben gegeven. Deze is vervolgens verfijnd tot het begrip geldige schone polygonen, die geschikt zijn voor het uitwisselen tussen verschillende systemen. Niet alleen in theorie (ISO en OpenGIS), maar ook in de praktijk (naast de genoemde Geo-DBMSsen is ook een 'middleware' product getest, LaserScan Radius Topology, wat hier niet verder is beschreven) bleken er belangrijke verschillen te bestaan bij de validatie van polygonen. Het behoeft geen verdere uitleg dat dit vervelende problemen zal geven bij het uitwisselen van gegevens, en in het ern stigste geval zelfs verlies van gegevens. Wij roepen daarom de standaardisatie-organisaties en de Geo-ICT-leveranciers op dit probleem aan te pakken en onze polygoondefinitie te overwegen. In dit artikel werden alleen simpele polygonen op een plat vlak besproken. Echter, er kunnen in de wereld van Geo-ICT- producten (en -standaarden) toch nog een aantal complexe re situaties zich voordoen: GEO-INFO 2004-3 Systeemtesten Conclusie

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

Geo-Info | 2004 | | pagina 33