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