Append-rules „Append-rules" kunnen worden gebruikt in soortgelijke toepassingen als de „replace-rules". Het volgende voor beeld laat zien hoe een topologische regel (twee lijnen mogen elkaar niet kruisen zonder knooppunt) in meer dere acties kan resulteren: on append to line from old in line where Cross2Pln(new.shape, old.shape) do instead delete line where line.id old.id append line(shape split1old(new.shape, old.shape)) append line(shape split2old(new.shape, old.shape)) append line(shape split"! new(new.shape, old.shape)) append line(shape split2new(new.shape, old.shape)) Ingeval de nieuwe lijn de oude lijn kruist, wordt de oude lijn uit de gegevensbank gehaald en vervolgens worden van zowel de oude als de nieuwe lijn de vier gesplitste stukken in de gegevensbank gestopt. Triggers Voor de realisatie van „triggers" biedt Postgres het ,,listen/notify"-mechanisme, wat in combinatie met „ru les" zeer eenvoudig is te gebruiken. Het volgende voor beeld zal laten zien hoe een dynamische toepassing (het volgen van auto's op één of meer controleschermen) kan worden geïmplementeerd. De gegevensbank bevat hier voor een regel met een notify-opdracht: on replace to vehicle.position do notify vehicle Enige objectgeoriënteerde terminologie: een relatie is een object-klasse, een tupel is een object-instantie en een attribuut is een instantie-variabele. Deze regel geeft aan dat als de positie van de auto verandert (in de gegevensbank) alle applicaties die in „vehicle" zijn geïnteresseerd een bericht krijgen. Een applicatie (front-end) kan zichzelf als belangstellende registreren door middel van het listen-commando: listen vehicle De „front-ends" kunnen nu via asynchrone communica tie (door de waarde te inspecteren van de pqlib-variabele PQAsyncNotifyWaiting) op de hoogte worden gebracht van voertuig-posities. Een lijst van waarschuwingen (notifications) kan worden verkregen met de pqlib-functie PQNotifiesQ. Hierna kan de front-end de schermpresen- tatie naar behoren aanpassen. Mogelijkheden van GEO GEO is een GIS front-end voor Postgres, bedoeld voor algemeen gebruik. Het systeem bezit een directe- manipulatie gebruikersinterface, er kunnen „real-world" GIS-functies in worden geïmplementeerd en er kan wor den geëxperimenteerd met de gebruikersinterface en de diverse gegevensstructuren en opslagtechnieken. Enkele van de verwachte toepassingen zijn: elektronische zee kaarten en diverse systemen voor commandovoering (C2; Command Control). Het huidige prototype systeem is geschreven in de objectgerichte programmeertaal C en gebruikt de ET„class library" [14]. De archi tectuur wordt voorgesteld door fig. 5. De meeste compo nenten hiervan zullen worden beschreven in het volgen de. De schermafdruk van fig. 6 laat een gedeelte zien van de gebruikersinterface van GEO Het GEO systeem bezit de volgende basismogelijkheden: tonen van Postgres-relaties*); toevoegen of muteren van Postgres-tupels in getoon de relaties; grafisch samenstellen van de „where clause"-beper- king voor de getoonde relatie in een boom-represen tatie die de structuur van die expressie weergeeft. De grafische „editor" inspecteert de Postgres Meta Rela ties (systeem catalogi) die informatie bevatten over de bestaande operatoren. Op deze wijze hebben de ge- l70000| lEnichec |l <150001 [Nljmegt 11500001 Iseooool |l 950001 Fig. 6. Gebruikersinterface van GEO++ 278 NGT GEODESIA 93 - 6

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1993 | | pagina 22