Puntenwolken opslaan
in een Oracle DBMS
Met laserscanning (inclusief laseraltimetrie en multi-beam echosounding) worden grote hoeveelheden
datapunten gemeten. Deze datapunten worden puntenwolken genoemd. De interesse in en het gebruik
van puntenwolken groeit.
Analyse
Afstudeeronderzoek
TU Delft
Ir. Martine Wijga-Hoefsloot, werkzaam bij Fugro GeoServices B.V., m.hoefsloot@fugro.nl
Afhankelijk van de laserscanner en de
meetopzet kan de ingewonnen dataset
variëren van enkele honderden tot miljar
den punten. Eén project kan zondermeer,
meer dan een GB of zelfs TB aan data
bevatten. Het lijkt een probleem om deze
grote datasets te verwerken. Eén manier is
om de dataset op te splitsen in blokken en
deze in een tekst- of binair formaat op te
slaan. Een andere manier is om de punten
op te slaan in een database, leder punt in
een record, gebaseerd op standaard data
types. Punten opgeslagen in een database
zijn eenvoudig te analyseren en te bevragen
en alleen de geselecteerde punten worden
naar de gebruiker gestuurd. Als de punten
met een ruimtelijk datatype zijn opgesla
gen, hebben ze een locatie. Ruimtelijk opge
slagen punten kunnen worden geclusterd
en geïndexeerd met een ruimtelijke index
om het ruimtelijk zoeken te versnellen.
Het opslaan en bevragen van grote
hoeveelheden datapunten (met één
punt per record) resulteert in het opslaan
en ontvangen van grote hoeveelheden
records. En ook al is de data geïndexeerd,
het ontvangen van een antwoord kost tijd,
enerzijds omdat per record ook veel over
head wordt opgeslagen, anderzijds omdat
er heel veel records worden geselecteerd.
Omdat Oracle marktleider is, is dit onderzoek
alleen gericht op Oracle. Gedurende het
onderzoek is geprobeerd een antwoord te
geven op de volgende onderzoeksvraag:
Wat is het beste ontwerp van een datamodel
om grote hoeveelheden puntenwolkdata in
een Oracle database op te
slaan, waarbij het mogelijk
moet zijn dat de opgesla
gen datapunten eenduidig
gelezen kunnen worden door bestaande
softwarepakketten, dat alle attributen
beschikbaar blijven en dat de performance
optimaal is?
Het onderzoek is uitgevoerd met een test
dataset van AHN2 (Middelburg, 17.478.245
punten, x,y,z,i,r,g,b). Zie bijgaande figuur 1
met drie afbeeldingen: Luchtfoto Middel
burg (links) - Hoogte Model Middelburg
(midden) - Geclusterde data (gemiddeld
1000 punten per cluster, rechts).
Binnen Oracle kunnen punten op 3 ver
schillende manieren worden opgeslagen:
1. met één punt per record, met data type
SDO_GEOMETRY (GTYPE 3001, SDO_POINT).
2. met meerdere punten per record, met
data type SDO_GEOMETRY (GTYPE 3005,
POINTCLUSTER).
3. met meerdere punten per record, met data
type SDO_PC.
Voor dit onderzoek is voor het groeperen
van punten in clusters met de 2e oplossing,
de Region Quadtree toegepast. Met deze
methode wordt de ruimte
steeds in vier kwadranten
(clusters) opgedeeld
totdat ieder cluster
minder dan het gewenste aantal punten
bevat. Deze werkwijze heeft tot doel dat de
minimum boundingboxen van de clusters zo
klein en optimaal mogelijk worden gehouden.
Om te bewerkstelligen dat de clusters die
dicht bij elkaar liggen ook dicht bij elkaar in
de database liggen, is een space-filling curve
geïntroduceerd om de clusters te ordenen.
Morton en Hilbert hebben space-filling curves
ontwikkeld die een 2D (maar ook 3D) ruimte
kunnen vullen met een lijn (zie figuur 2:
Morton (boven) en Hilbert (onder) space-fil-
ling curves [based on Wang and Shan, 2005]).
In dit onderzoek is de Morton space-filling
curve toegepast, hoewel de Hilbert space-fil
ling curve nog betere resultaten zal opleveren.
Omdat punten zijn gegroepeerd in clusters,
dienen ook de bijbehorende attributen op
een andere wijze te worden opgeslagen, dit
is opgelost door attributen op te slaan in
arrays (VARRAY).
Figuur 7 - Middelburg: luchtfoto, hoogtemodel en geclusterde data.
Figuur 2 - Morton en Flilbert space-filling curves.
20 Geo-lnfo 2013-2
Geo Info 02-13.indd 20
18-02-13 09:34