bruikers toegang tot alle gedefinieerde operatoren en typen, met inbegrip van typen die ze zelf hebben ge definieerd; de „Query Composer" onderzoekt de argumenttypen naar operatoren en sluit de „clauses" uit, die tot syntactische fouten leiden. Eenmaal samengestelde vraagbomen kunnen worden bewaard en zo opnieuw worden geladen voor andere relaties; GEO heeft zijn eigen meta-relaties, zoals een relatie die een reguliere expressie beschrijft, waaraan elke ingevoerde „Postquel constante" (van een ge geven type) moet voldoen. Dit wordt gebruikt door GEO om de constructie van correcte „where clauses" zeker te stellen; laten zien van het resultaat van vragen op een geo grafische kaart, point-attributen worden weergegeven als gekleurde ikonen. Deze ikonen en hun kleuren zijn ook gespecificeerd in GEO meta-relaties of zijn overgenomen van de getoonde relatie. Polylijnen en polygonen (van het Postgres-type path) kunnen ook worden getoond. De breedte (polylijnen) en kleuren zijn op dezelfde wijze gespecificeerd als bij de point- attributen; identificeren (labelen) van geografische entiteiten op een kaart. De identificatoren (labels) worden gevormd door de attribuutnaam (optioneel) en de waarde van dat moment; de gebruikers kunnen de tekenvolgorde van de ge toonde vragen verwisselen of ze tijdelijk onzichtbaar maken. Tevens kunnen de parameters van de „where clauses" gemakkelijk worden gemodificeerd; selecteren van de op het beeldscherm getoonde ob jecten. Dit toont de corresponderende Postgres-tupel; muteren en creëren van point- en path-attributen op de getoonde kaart; vergroten en panoramisch presenteren van de ge toonde kaart en een tweede kaart die de context van de hoofdkaart laat zien. Dit wordt ondersteund door een ruimtelijke toegangsmethode: de „R-tree"; annoteren van een kaart met tekst, lijnen, polylijnen, symbolen, enz., zoals in een gebruikelijk tekenpro gramma. Meerdere annotaties (van verschillende ge bruikers) kunnen tegelijkertijd worden getoond, het geen de communicatie tussen twee of meer gebrui kers op afstand mogelijk maakt; automatisch hertekenen van gewijzigde relaties door middel van Postgres asynchrone regels (triggers). Hierdoor wordt het mogelijk dynamische kaarten met bewegende objecten weer te geven. Uitbreiden van GEO Zoals Postgres uit te breiden is door het definiëren van nieuwe, abstracte gegevenstypen en het coderen van hun implementatie in de programmeertaal C, zo is GEO uit te breiden door het definiëren van nieuwe QueryShapes en het coderen ervan in C++. Het voor deel van C is, dat men het grootste deel van de functionaliteit van de ouder QueryShape kan overerven. De nieuwe QueryShape dient een draw-methode en een distance-methode te implementeren, die respectievelijk worden gebruikt voor het tekenen van QueryShapes op de kaart en bij de pick-operatie (aantikken van een positie op het scherm). De QueryShape komt gewoonlijk over een met een door de gebruiker gedefinieerd geometrisch type in Postgres. De geometrische operaties zijn in Post gres geïmplementeerd en de visualisatie ervan wordt geïmplementeerd door nieuwe (door gebruiker) gedefi nieerde GEO QueryShapes. Door het uitbreiden van het GEO systeem beschikt men over welhaast ongelimiteerde flexibiliteit met be trekking tot de wijze waarop gegevens worden opgesla gen in Postgres en worden getoond in GEO Hier onder wordt aangegeven hoe QueryShapes die gege vens uit onze eigen set van geometrische typen tonen, in een GEO meta-relatie worden ingebracht. Dit is nodig, omdat GEO oorspronkelijk was gebaseerd op de standaard geometrische typen van Postgres. Bijvoorbeeld: een Pln2Shape, een Pgn2Shape en een Pnt2Shape zijn geïmplementeerd, die de corresponde rende, nieuwe Postgres geometrische typen visualiseren. GEO raadpleegt de meta-relatie geodyninfo als relaties moeten worden getoond (bevat informatie over welke objectklassen een tekenfunctie hebben). Een re latie bordersmap, die instanties van het Pln2Shape- voorbeeld bevat, kan worden ingevoerd met het volgende Postquel-commando append geodyninfo relname „bordersmap", dynfunc „makePln2shape", dynfile „MapShape.o", relattr „plndata,color, width", bboxattr „bbox") Dit specificeert het volgende: de tupels in de relatie bordersmap worden getoond door de C functie makePln2shape aan te roepen, zoals gedefinieerd in MapShape.o. GEO zal het tijdens „runtime" het .o-bestand aan zijn eigen executable toevoegen. Dit wordt geïmplementeerd door middel van het „GNU dynamic linker" pakket did. Details aangaande de daadwerkelijke C im plementatie van QueryShapes vallen buiten het be stek van dit artikel; de functie wordt aangeroepen met de attributen pln data, color en width als argumenten; de objecten in bordersmap bezitten een omhullende rechthoek, die ligt opgeslagen in het attribuut bbox. Rastermogelijkheden Het huidige GEO systeem (van oorsprong een vector GIS) is uitgebreid met de mogelijkheid om rastergege- vens te tonen. Dit bewijst duidelijk het open karakter van GEO Een QueryShape is geïmplementeerd, waar door gegevens van het rastertype kunnen worden weer geven; daarmee is een hybride systeem gecreëerd. Rastergegevens worden in clusters met een variabele grootte opgeslagen (bijvoorbeeld 32 x 32 of 64 x 64 pixels), waarin rechthoekige delen van de rastertype ge gevens liggen opgeslagen. Deze methode maakt volledig gebruik van de R-tree toegangsmethode. De waarden aan de randen van een cluster zouden kunnen worden gedupliceerd van het nevencluster van elke rand. Dit biedt de mogelijkheid tot het efficiënt implementeren van operaties die toegang nodig hebben tot de buren van elke rastercel. Een apart programma converteert een bron- (source) bestand met rastergegevens (bijvoorbeeld satellietbeel- den of een gescande papieren kaart) naar tupels ten be hoeve van een Postgres-relatie. Deze relatie moet ten minste de volgende attributen bezitten NGT GEODESIA 93 - 6 279

Digitale Tijdschriftenarchief Stichting De Hollandse Cirkel en Geo Informatie Nederland

(NGT) Geodesia | 1993 | | pagina 23