rĪgas tehniskĀ universitĀte · web viewdaudzstūri sauc par vienkāršu, ja tā robeža ir...

120
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un Informācijas Tehnoloģijas fakultāte Lietišķo datorsistēmu institūts Rolands MEKŠS Lietišķo datorsistēmu bakalaura programmas students (stud. apl. nr. 001RDB138) TELPISKO DATU GLABĀŠANA UN INDEKSĒŠANA Bakalaura darbs Zinātniskais vadītājs Dr.sc.ing., prof. J.EIDUKS

Upload: others

Post on 25-Dec-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

RĪGAS TEHNISKĀ UNIVERSITĀTEDatorzinātnes un Informācijas Tehnoloģijas fakultāte

Lietišķo datorsistēmu institūts

Rolands MEKŠS

Lietišķo datorsistēmu bakalaura programmas students

(stud. apl. nr. 001RDB138)

TELPISKO DATU GLABĀŠANA UN INDEKSĒŠANA

Bakalaura darbs

Zinātniskais vadītājs

Dr.sc.ing., prof.

J.EIDUKS

Rīga 2003

Page 2: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Bakalaura darbs izstrādāts Sistēmu teorijas profesora grupā

Darba autors: stud. R. Mekšs……………………………………………(paraksts, datums)

Zinātniskais vadītājs: Dr.sc.ing., doc. J.Eiduks……………………………………………… (paraksts, datums)

Bakalaura darbs ieteikts aizstāvēšanai:

Institūta direktors:

Dr.habil.sc.ing., prof. J.Grundspeņķis ..........………………………………...

(paraksts, datums)

Bakalaura darbs aizstāvēts…………………………………………………..komisijas(komisijas nosaukums ģenitīvā)

……………. gadā……………sēdē un novērtēts ar atzīmi………………………..(…) (gads) (datums, mēnesis) (atzīme vārdos un tai atbilstošais cipars)

……………………………………………………………………………….komisijas

(komisijas nosaukums ģenitīvā)

sekretārs: ……………………………………………….(paraksts)

2

Page 3: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

ANOTĀCIJA

Darbā „Telpisko datu glabāšana un indeksēšana” sniegts ieskats telpisko datu un

Ģeogrāfisko Informācijas Sistēmu (GIS) pamatprincipos, kā arī izklāstītas galvenās un plašāk

lietotās telpisko datu fiziskās glabāšanas un pieejas metodes. Apskatītas, ar piemēriem

skaidrotas un salīdzinātas telpisko datu indeksēšanas struktūras, tādas kā režģa fails, lineārais

četrkoks, z-kārtošanas koks, R-koks un tā paveidi, u.c. Darbā izklāstītais teorētiskais

materiāls balstīts uz specializētās lieteratūras par telpisko datu bāzu pielietojumu GIS sfērā

analīzi. Praktiskie piemēri izstrādāti apskatīto metožu īpašību un efektivitātes salīdzināšanai.

Tāpat darbā ietverts ieskats visplašāk izmantoto DBVS telpisko paplašinājumu (Oracle

Spatial, PostgreSQL) darbībā. Darbs sastāv no 82 lappusēm, satur 63 attēlus un 2 tabulas.

3

Page 4: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

ABSTRACT

This thesis - „Spatial Storage and Indexing” gives insight into basics of spatial data

and Geographic Information Systems (GIS) and states main and common used physical

storage and spatial access methods. Also examined and with examples compared are such

spatial indexing structures as grid file, linear quadtree, z-ordering tree, R-tree and its variants.

Theoretical material, stated in thesis, is based on analysis of dedicated literature on spatial

databases with application to GIS. Practical examples are developed to compare properties

and efficiency of listed methods. The thesis gives insight into functionality of most popular

DBMS spatial extensions such as Oracle Spatial and PostgreSQL. It consists of 82 pages, 63

figures and 2 tables.

4

Page 5: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

АННОТАЦИЯ

В работе даётся обзор основных принципов пространственных данных и

Географических Информационных Систем (GIS), так же изложены главные и чаще

изпользуемые методы доступа физического хранения пространственных данных. На

конкретных примерах дано обяснение и сравнение структур индексирования

пространственных данных, таких как файл решётки, линеарное квадродерево, дерево

Z-сортировки, R-дерево и его разновидности. В работе изложенный теоретический

материал основан на анализе специализированной литературы о применении

пространственных баз данных в сфере GIS. Практические примеры разработаны для

сравнения свойств и еффективности рассмотренных методов. В работе так же даётся

обзор действия чаще изпользуемых пространственных расщирений СУБД (Oracle

Spatial, PostgreSQL). Работа состоит из 82 страниц, 63 рисунков и 2 таблиц.

5

Page 6: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

SATURS

1.IEVADS TELPISKAJOS DATOS UN GIS.....................................................................................................8

1.1. ĢEORGĀFISKĀS TELPAS MODELĒŠANA.........................................................................................................9

1.2. TELPISKĀS OPERĀCIJAS..............................................................................................................................11

1.3 TELPISKO OBJEKTU UZDOŠANAS VEIDI.......................................................................................................13

1.3.1. Mozaīkas (rastra) princips.................................................................................................................13

1.3.2. Vektoru princips.................................................................................................................................14

1.4. ABSTRAKTO DATU TIPU OPERĀCIJAS..........................................................................................................15

1.5. TELPISKIE VAICĀJUMI.................................................................................................................................16

2.TELPISKO DATU GLABĀŠANA: DISKI UN FAILI.................................................................................20

2.1. DISKA ĢEOMETRIJA UN PRINCIPI.........................................................................................................20

2.2. LAUKS, IERAKSTS, FAILS.....................................................................................................................21

2.3. FAILU STRUKTŪRAS............................................................................................................................22

3.TELPISKĀ INDEKSĒŠANA UN PIEKĻUVES METODES......................................................................24

4.UZ TELPU ORIENTĒTAS STRUKTŪRAS.................................................................................................27

4.1. REŽĢA FAILS..............................................................................................................................................27

4.1.1. Fiksētais režģis...................................................................................................................................27

4.1.2. Punktu indeksēšana ar režģa failu.....................................................................................................28

4.1.3. Taisnstūru indeksēšana izmantojot režģi...........................................................................................30

4.1.4. Punktu un logu vaicājumi...................................................................................................................32

4.2. LINEĀRAIS ČETRKOKS................................................................................................................................33

4.2.1. Četrkoks..............................................................................................................................................33

4.2.2. Telpu pildošās līknes..........................................................................................................................35

4.2.3. Iezīmju piešķiršana četrkoka virsotnēm.............................................................................................36

4.2.4. Lineārais četrkoks..............................................................................................................................37

4.2.5. Punkta vaicājuma izpilde lineārajā četrkokā.....................................................................................37

4.2.6. Loga vaicājuma izpilde lineārajā četrkokā........................................................................................38

4.2.7. Taisnstūru ievietošana.......................................................................................................................39

4.3. Z-KĀRTOŠANAS KOKS.................................................................................................................................39

4.3.1. Z-kārtošanas rastra variants ar dublēšanos......................................................................................42

4.3.2. Z-kārtošana bez dublēšanās...............................................................................................................43

4.4. UZ TELPU BALSTĪTO STRUKTŪRU SALĪDZINĀJUMS.....................................................................................44

5. UZ DATIEM ORIENTĒTAS STRUKTŪRAS.............................................................................................50

5.1. R-KOKS.......................................................................................................................................................50

5.1.1. Meklēšana R-kokos.............................................................................................................................52

6

Page 7: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

5.1.2. Objektu ievietošana un dzēšana R-kokā.............................................................................................54

5.2. R*KOKS......................................................................................................................................................60

5.3. R-KOKA BLĪVĒŠANA...................................................................................................................................64

5.4. R+KOKS......................................................................................................................................................65

5.5. IZMAKSU MODEĻI.......................................................................................................................................67

5.6. UZ DATIEM BALSTĪTO STRUKTŪRU SALĪDZINĀJUMS..................................................................................68

6.POPULĀRĀKO DBVS PAPLAŠINĀJUMU DARBAM AR TELPISKAJIEM DATIEM APSKATS...72

6.1. ORACLE SPATIAL........................................................................................................................................72

6.1.1. Telpiskais datu modelis......................................................................................................................72

6.1.2.Telpiskās operācijas............................................................................................................................73

6.1.3. Telpiskā indeksēšana..........................................................................................................................74

6.2. POSTGRESQL.............................................................................................................................................75

6.2.1. Ģeometriskie tipi un operatori...........................................................................................................75

6.2.2. Datu bāzes veidošana.........................................................................................................................76

6.2.3. Vaicājumu izpilde...............................................................................................................................77

SECINĀJUMI......................................................................................................................................................78

VĀRDNĪCA..........................................................................................................................................................80

BIBLIOGRĀFISKAIS SARAKSTS..................................................................................................................82

7

Page 8: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

1.IEVADS TELPISKAJOS DATOS UN GIS

Jau kopš tā laika, kad mūsu senči uz alu sienām zīmēja apvidus kartes un dzīvnieku

migrācijas ceļus, cilvēks ir interesējies par grafiku, kas saistīta ar ģeogrāfisko informāciju.

Šāda – telpiskā informācija cilvēcei ir bijusi svarīga visos laikos, tāpēc nepārtraukti

novērojama tendence meklēt pēc iespējas ērtākus un efektīvākus veidus, kā to glabāt,

izmantot un atspoguļot. Mūsdienās šiem mērķiem kalpo datorizētas ģeogrāfiskās

informācijas sistēmas (GIS), kas ir būvētas uz telpisko datu bāzu pamata. Šīs sistēmas mums

piedāvā apbrīnojami plašas un ērtas iespējas strādāt ar telpiskajiem datiem. Tipisks telpisko

datu piemērs ir pilsētas karte, kas savā būtībā ir divdimensiju objekts, kas satur punktus,

līnijas, daudzstūrus, kuri apzīmē kaut kādus reālās pasaules objektus (ielas, mājas, trolejbusa

līnijas, mežus, ezerus utt.). Telpiskās datu bāzes mums ļauj glabāt šādus reālās pasaules

vienkāršotus modeļus elektroniskā veidā, piekārtojot tiem atribūtus (nosaukumi, platības,

garumi, koordinātes). Tāpat līdzīgi pierastajām relāciju datu bāzēm, arī telpiskās datu bāzes

ļauj izpildīt telpiskus vaicājumus, bez kuriem datu bāzei nebūtu jēgas eksistēt. Veiksmīgs

GIS risinājums var sniegt lielu devumu daudzās nozarēs, kas saistītas ar telpisko datu

izmantošanu. Tā, piemēram, apdrošināšanas birojs var iegūt atbildi uz jautājumu – “Kurš

reģions Daugavas malā visticamāk tiks appludināts ledus iešanas laikā?”, armijas

komandieris – “Vai ir novērota ienaidnieku grupas kustība kopš pagājušās nakts?”,

tirgotājam – “Kur visizdevīgāk būtu izvietot noliktavas un tirdzniecības vietas?”, šoferis –

“Pa kuru ceļu es visātrāk nokļūšu līdz Balviem?” utt. Šādu uzskaitījumu varētu turpināt

bezgalīgi ilgi, taču tas liecina tikai par to, ka šai tehnoloģijai ir vieta cilvēku dzīvēs un ka

tāda ir vajadzīga. Kaut arī, piemēram, naftas atradņu aprakstīšanas un ugunsdzēsēju mašīnas

maršrutēšanas uzdevumi principiāli atšķiras, attiecīgai GIS jebkurā gadījumā jānodrošina

šādas funkcijas:

Datu ievade un pārbaude;

Datu glabāšana un vadība;

Datu izvade un noformēšana;

Datu pārveidošana;

Sadarbība ar gala lietotāju;

Izmantojot tradicionālās – relāciju datu bāzu vadības sistēmas, nevar panākt pietiekamu

efektivitāti darbā ar telpiskajiem datiem. Telpisko uzdevumu risināšanā relāciju modelis ir

pārāk sarežģīts un nepiemērots, turklāt vairākus specifiskus uzdevumus šādā veidā vispār nav

iespējams veikt. Tāpēc, kā tika minēts, jebkuras GIS kodols ir telpisko datubāzu vadības 8

Page 9: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

sistēma (TDBVS), kas nodrošina telpisko datu glabāšanu, uzturēšanu, vadību, kā arī saikni ar

lietotāju. Šai datu bāzu vadības sistēmai ir jānodrošina ģeometriskās informācijas attēlošana

un manipulēšana kopā ar tradicionālajiem datiem loģiskajā līmenī un jānodrošina efektīva

glabāšana un piekļuve fiziskajā līmenī. Šo uzdevumu īstenošanai nepieciešamas sekojošas

prasības pret TDBVS:

Loģiskajam datu attēlojumam jābūt papildinātam ar ģeometrisko komponenti,

un, saglabājot datu neatkarības principu, jānodrošina maksimālu vienkāršību

un tuvumu realitātei;

Vaicājumu valodā jābūt integrētām jaunām funkcijām, kas spētu operācijas ar

ģeometriskiem objektiem;

Jābūt efektīvai fiziskajai telpisko datu glabāšanai;

Jānodrošina efektīva piekļuve telpiskajiem datiem. Nepieciešamas jaunas datu

struktūras telpisko datubāzu indeksēšanai;

Jānodrošina jauni vaicājumu izpildes algoritmi;

1 .1 . ĢEOR GĀ FI S KĀ S TELPA S M OD ELĒŠA N A

Telpisko informāciju GIS modelē kā slāņu, karšu un ģeogrāfisko objektu savstarpēju

attiecību. GIS ģeotelpiskā informācija tiek kārtota pa slāņiem. Vienā slānī atrodas telpiskā

informācija par vienu tematiku. Piemēram, vienu

slāni var veidot upes, citu – pilsētas, vēl citu būves

utt. Kad slānis tiek attēlots uz papīra vai ekrāna, tas,

ko lietotājs redz, ir karte (att.1), kas parasti tiek

papildināta ar krāsām, mērogu, objektu aprakstu utt.

Vienā kartē var tikt attēloti vairāki slāņi, jo var rasties

vajadzība redzēt dažādu informāciju vienkopus,

piemēram, valstu kontūras, pilsētu kontūras un

autoceļu izkārtojumu.

Slānis, savukārt, sastāv no ģeogrāfiskiem

objektiem. Katrs ģeogrāfiskais objekts atspoguļo kādu

reālās pasaules objektu un tam ir divas komponentes:

Apraksts – objekts tiek aprakstīts ar aprakstošo atribūtu kopu. Piemēram,

pilsētu apraksta tās nosaukums, iedzīvotāju skaits, utt.

Telpiskā komponente – ietver sevī gan ģeometriju (atrašanās vietu

ģeogrāfiskajā telpā, formu, u.t.t.), gan topoloģiju (telpiskās saites, kas eksistē 9

Attēls 1 – Tipiska karte

Page 10: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

starp objektiem, piemēram – robežošanās). Ģeogrāfiskajam objektam – pilsēta

telpiskā komponente var būt daudzstūris 2D telpā, kas apzīmētu tās kontūras.

Norobežotu ģeogrāfiskā objekta telpisko komponenti sauc par telpisko

objektu, kuru var apskatīt arī atsevišķi.

Izšķir atomārus ģeogrāfiskos objektus un saliktus ģeogrāfiskos objektus. Atomāri

ģeogrāfiskie objekti ir nedalāmi, savukārt salikti ģeogrāfiskie objekti sastāv no citiem

ģeogrāfiskiem objektiem, kas var būt gan atomāri, gan salikti. Piemēram, slānī “Eiropa”,

salikts ģeogrāfisks objekts ir “Latvija”, kas sastāv no atomāriem ģeogrāfiskiem objektiem

“Rajoni”.

Katram ģeogrāfiskajam objektam ir arī telpiskie atribūti, kas gan neatbilst nevienam

no standarta datu tipiem (string, integer). Ģeometriju un topoloģiju attēlojumiem

nepieciešama jaudīga modelēšana slāņu no objektu līmenī. To nodrošina telpiskie datu

modeļi. Tajos lieto sekojošus pamata datu tipus, jeb Abstraktos Datu Tipus:

punkts – bezdimensionāls objekts, kuru izmanto realitāšu attēlošanai, kuru forma nav

svarīga vai platība ir salīdzinoši maza salīdzinājumā ar citiem objektiem. Pilsētas, baznīcas,

autobusa pieturas ir piemēri, kuru ģeometrija var tikt reducēta līdz punktam lielmēroga

kartēs.

līnija - viendimensionāls, jeb lineārs objekts. Tiek izmantots tīklu (ceļi, hidrogrāfija,

telekomunikācijas) attēlošanai. Parasti izmanto šo objektu kombināciju– lauztu līniju, kura

sastāv no līniju segmentiem, tā, ka katrs segmenta galapunkts, jeb virsotne, savieno tieši

divus segmentus. Izņēmums ir abi lauztās līnijas galapunkti (ekstrēmi), kas pieder tikai

vienam segmentam. Lauzta līnija ir slēgta, ja abi ekstrēmi ir identiski. Vienkārša lauzta līnija

ir tāda, kurai nav segmentu, kas krustotos savā starpā.

Attēls 2 – Līniju veidi

daudzstūris – 2-dimensiju jeb virsmas objekts, kas parasti tiek izmantots realitāšu ar

lielu laukumu attēlošanai, piemēram - zemes gabali, administratīvais iedalījums, valstu

10

līnija

vienkārša

lauzta līnija

vienkārša slēgta lauzta līnija

ne-vienkārša lauzta līnija

Page 11: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

kontūras, mazāku mērogu kartēs – būves, laukumus. Daudzstūris ir plaknes apgabals, kas

ierobežots ar slēgtu lauztu līniju, kas šinī gadījumā tiek saukta par robežu.

Daudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija.

Daudzstūris P ir konvekss, ja jebkuru divu punktu A un B, kuri atrodas daudzstūrī P,

veidotais līnijas segments AB pilnībā pieder daudzstūrim P. Apgabals ir daudzstūru kopa,

kuru var izmantot, piemēram, valstu kontūru modelēšanā, jo valstij var būt salas un reģioni,

kas ir nošķirti no kopējās teritorijas.

Attēls 3 – Daudzstūru veidi

1 .2 . TELPI S KĀ S O PER ĀC I JAS

Telpiskās datubāzes ļauj veikt dažādas operācijas ar

slāņiem, kas satur telpisko informāciju. Pieņemsim, ka eksistē

divi slāņi 1) “Valstis” ar aprakstošajiem atribūtiem nosaukums,

iedzīvotāju skaits un telpisko atribūtu ģeometrija, un 2) Valodas

ar aprakstošo atribūtu valoda un telpisko atribūtu ģeometrija.

Kopumā iegūstam sekojošu shēmu:

Valstis (nosaukums, populācija, ģeometrija:

apgabals)

Valodas (valoda, ģeometrija: apgabals)

Ar šiem slāņiem iespējams veikt operācijas, kas

pazīstamas no relāciju algebras: projekcija, selekcija,

savienošana un apvienošana.

11

daudzstūris ar caurumu

vienkāršs daudzstūris

konvekss daudzstūrisne-vienkāršs daudzstūris

apgabals

Attēls 4 - Projekcija

Page 12: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Slāņu projekcija strādā pēc shēmas slānis * {A1,...An} slānis, kur {A1,...An} ir slāņa

aprakstošo atribūtu apakškopa. Projekcija atgriež slāni, kura apraksts sastāv no aprakstošo

atribūtu apakškopas un nemainītas telpiskās komponentes.

Ņemot par piemēru jau minēto shēmu ar valstīm un valodām, katra valsts ir

ģeogrāfisks objekts ar saviem aprakstošajiem atribūtiem. Pielietojot slāņa projekciju uz

populāciju, tiek izslēgti valstu nosaukumi. Līdz ar to rezultējošajam slānim ir shēma

(populācija, ģeometrija) (att.4).

Slāņu selekcija (slānis * pAi slānis), kur pAi ir predikāts aprakstošajiem atribūtiem,

atgriež slāni, kura telpiskie objekti atbilst nosacījumam. Uzdodot vaicājumu - atgriezt valstis,

kurās iedzīvotāju skaits ir lielāks par 50 milj., pēc selekcijas tiek iegūts rezultāts, redzams

attēlā nr. 5.

Slāņu apvienošana (slānis * slānis slānis) apvieno ģeogrāfisku objektu kopas,

kurām ir vienādas shēmas.

Slāņu pārklāšana ir izplatīta operācija telpiskajās datu bāzēs. Šī operācija ģenerē

jaunu slāni no pārklājošajiem slāņiem, kā rezultātā tiek iegūti jauni ģeogrāfiski objekti. Šo

objektu ģeometrija tiek veidota savienojot abu shēmu

ģeogrāfisko objektu ģeometrijas. Arī apraksts tiek kombinēts

no operācijā iesaistīto slāņu ģeogrāfisko objektu aprakstiem.

Eksistē dažādas karšu pārklāšanas operācijas. Tikko minēto

operāciju sauc par telpisko savienošanu (spatial join).

Telpiskās datu bāzes nodrošina arī operācijas, kas ir unikālas

tikai telpiskajiem datiem. To skaitā ir:

Logošana (windowing), kuru izmanto speciālos

logošanas vaicājumos. Tā atgriež slāni, kurš satur tikai tos

ģeogrāfiskos objektus no ieejošā slāņa, kurus nosedz dotais

logs, kas parasti ir taisnstūrveida (skat. att. nr.6)

Punkta vaicājuma operācija, kuru izmanto punkta

vaicājumos (point query). Šī operācija atgriež tos

ģeogrāfiskos objektus, kuru ģeometrijas satur norādīto

punktu.

Tāpat tiek nodrošinātas vēl daudzas citas operācijas – topoloģiskās, virziena, metriskās,

eiklīdiskās, dinamiskās.

12

Attēls 5 - Selekcija

Page 13: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Telpisko objektu uzdošana ar punktiem, līnijām un daudzstūriem notiek tīri abstraktā

līmenī. Ir nepieciešami veidi, kā bezgalīgu punktu kopas

eiklīdiskājā telpā aprakstīt mašīnvalodā un kā šo ģeometrisko

informāciju īstenot praktiski. Eksistē dažādi veidi, kā risināt doto

problēmu – aproksimējot nepārtraukto telpu uz diskrētu ar t.s.

mozaīkas principu (tesselation mode) vai konstruējot attiecīgas,

piemērotas datu struktūras ar vektoru (vector mode) vai

pusplakņu attēlojumu (halfplane mode).

1 .3 TELPI S KO O BJEKTU UZD OŠ A NA S VEI D I

1.3.1. Mozaīkas (rastra) princips

Objekta ģeometrijas attēlošanai tiek izmantota plaknes dekompozīcija šūnās, tādā

veidā iegūstot objekta diskrēto modeli. Šo pieeju var izmantot divos veidos – 1) dalot plakni

fiksēta lieluma regulārās šūnās (att.

nr.7), 2) dalot mainīga lieluma

neregulārās šūnās. Fiksētā lieluma

šūnu modelis izmanto regulāru

daudzstūru (pikseļu) režģi jeb rastru.

Katram pikselim plaknē ir adrese, kas

parasti ir tā koordināte (x,y)

attiecīgajā atskaites sistēmā, tādā

veidā līnijas un daudzstūri tiek aprakstīti ar galīga skaita koordināšu pāriem. Attēlā nr. 8

parādīts princips, kādā veidā ar fiksēta lieluma šūnu mozaīkas principu tiek aprakstīts

daudzstūris. Attēlā, vienkāršības pēc, koordinātes tiek aprakstītas ar veseliem skaitļiem, un

šinī gadījumā daudzstūri P apraksta šāda pikseļu kopa:

<5, 12, 13, 14, 17, 18, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38>;

13

Attēls 7 – Plaknes dalīšana šūnās (mozaīkas princips). a) kvadrātveida šūnas, b) sešstūrveidīgas šūnas

Attēls 6 - Logošana

Page 14: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Šūnu dalīšanu neregulāros daudzstūros izmanto retāk, galvenokārt kaut kādu apgabalu

zonēšanai (tipiska GIS funkcija) pēc sociālajiem, demogrāfiskajiem vai ekonomiskajiem

datiem.

Mozaīkas principa stiprā puse ir spēja telpiskos objektus aprakstīt ar galīgu šūnu skaitu. Jo

lielāka ir šūnu izšķirtspēja (sīkāki pikseļi), jo precīzāk varam

aprakstīt konkrēto telpisko objektu. Tomēr, jo precīzāk

vēlamies uzdot objektu ģeometrijas pēc šī principa, jo lielāks

atmiņas daudzums ir nepieciešams šādas informācijas

glabāšanai. Tāpēc vairumā gadījumu izmanto tā saucamo

vektoru principu.

1.3.2. Vektoru princips

Vektoru attēlojumā objekti tiek konstruēti no punktiem un malām. Punkts tiek uzdots

ar koordinātu pāri un daudzstūris tiek uzdots ar galīgu tā virsotņu skaitu. Atšķirībā no rastra

attēlojuma, vektoru attēlojumam nepieciešams daudz mazāk atmiņas.

Eksistē daudz variantu, kā uzdot līnijas, daudzstūrus un apgabalus.

Vienkāršākais no tiem ir:

lauztu līniju uzdod kā punktu sarakstu <p1, .....pn>,

kur katrs pi ir virsotne. Savukārt katrs pāris (pi, pi+1),

kur i<n uzdod vienu no lauztas līnijas segmentiem,

jeb malām.

daudzstūris tāpat kā lauzta līnija tiek uzdots ar punktu sarakstu, tikai šinī

gadījumā šis punktu saraksts uzdod slēgtu lauztu līniju, kur pāris <pn, pi> arī

ir lauztas līnijas segments, jeb daudzstūra mala.

apgabals ir vienkārši daudzstūru kopa.

Šādā veidā mēs var uzdot to pašu daudzstūri (att. nr.9), kas tika apskatīts pie mozaīkas

principa, ar šādu, daudz kompaktāku sarakstu:

<[4,4], [6,1], [3,0], [0,2], 2, 2]>

Protams, kā jebkurai pieejai, arī šai ir trūkumi. Pirmkārt, daudzstūrim ar n virsotnēm var būt

2n dažādi attēlojumi. Ir n veidi, no kurienes sākt robežas aprakstu. Kad ir izvēlēta sākuma

virsotne ir divi veidi kā lasīt virsotnes (pulksteņrādītāja virzienā un pretēji). Otrkārt, nav

noteikts, kā atšķirt lauztas līnijas struktūru no daudzstūra struktūras. Šo uzdevumu 14

Attēls 8 – Daudzstūra diskrētais attēlojums

Attēls 9 – Daudzstūra vektoriālais attēlojums

Page 15: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

interpretācija paliek uz šo datu apstrādājošās programmatūras “pleciem”. Tas viss padara šo

metodi sarežģītāku, tomēr tās stiprākais trumpis joprojām paliek objektu kompaktie izmēri.

1 .4 . ABS TR A KTO D A TU TI PU OP ERĀ C IJA S

Lai būtu iespējams veikt kaut kādas darbības ar šiem telpiskajiem datiem, datu bāzu

vadības sistēmai “jāsaprot” šie te abstraktie datu tipi (punkts, līnija, daudzstūris). Jābūt

definētai ne tikai to struktūrai, bet arī operācijām, kuras varētu pielietot pret šiem datu tipiem.

Piemēram, tipam daudzstūris varētu būt definēta operācija DaudzstūraLaukums, kas varētu

izrēķināt dotā daudzstūra laukumu. Telpiskās datu bāzu vadības sistēmas atbalsta lielu skaitu

šo operāciju.

Piemēram, apgabala (region) abstraktajam datu tipam ir definētas šādas operācijas:

PointInRegion: apgabals * punkts loģ. datu tips (Pārbauda, vai punkts pieder

apgabalam);

Overlaps: apgabals * apgabals loģ. datu tips (Pārbauda, vai apgabals nosedz citu

apgabalu);

OverlapsRect: apgabals * taisnstūris loģ. datu tips (Pārbauda, vai apgabals nosedz

taisnstūri);

Intersection: apgabals * apgabals apgabals (Atgriež divu apgabalu pārklājumu –

apgabalu, kas iespējams ir arī tukšs);

Meets: apgabals * apgabals loģ. datu tips (Pārbauda, vai divi apgabali robežojas);

Area: region real (Atgriež apgabala laukumu);

RegionUnit:{apgabals} apgabals (Atgriež apgabalu, kas ir ieejošo kopas apgabalu

apvienojums)

Līnijas abstraktajam datu tipam paredzētas šādas operācijas.

PointInLine: līnija * punkts loģ. datu tips (Pārbauda punkta un līnijas

pārklāšanos);

Length: līnija real (Aprēķina līnijas garumu);

OverlapsLR: līnija * apgabals loģ. datu tips ( Pārbauda līnijas un apgabala

pārklāšanos);

Savukārt punktam definēta šāda operācija:

15

Page 16: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Distance: apgabals * punkts real (Aprēķina attālumu no punkta līdz apgabala

robežai);

Kaut arī šis operāciju saraksts nav pilns, jo eksistē vēl arī citas operācijas, ar to pietiek,

lai varētu gūt atbildes uz lielu daļu telpisko datu vaicājumiem.

1 .5 . TELPI S KI E VA I CĀ JU MI

Var izdalīt vairāku veidu vaicājumus, kurus var veikt ar telpiskajiem datiem:

vaicājumi ar ciparu/simbolu kritēriju, vaicājumi, kuros iekļauts telpiskais kritērijs un

interaktīvie vaicājumi.

Lai demonstrētu dažus no iespējamajiem telpiskajiem vaicājumiem, par piemēru tiks

izmantota šāda shēma:

Attēls 10 – Izmantojamo tabulu shēma

Vaicājumiem ar ciparu/simbolu kritēriju raksturīgi atgriezt telpisko datu apraksta

datus. Vaicājumos nav iekļautas objektu ģeometrijas, un tie ir identiski parastajiem relāciju

vaicājumiem.

Piemēri: Select Populācija

From Apgabals

Where Apgabala_nosaukums = ‘San Francisko’

Select sum(a.Populācija)

From Valsts v, Pavalsts p, Apgabals a

Where v.valsts_kods = ‘ASV’

and p.pavalsts_kods = a.pavalsts_kods

and v.valsts_kods = p.valsts_kods

Šajos piemēros redzams, ka ar tradicionālajiem SQL valodas līdzekļiem no dotās

shēmas tiek iegūta aprakstošā informācija. Pirmajā gadījumā tas ir apgabala San Francisko

16

Valsts

Valsts_kods

Valsts_nosaukums

Ģeometrija

Pavalsts

Pavalsts_kods

Pavalsts_nosaukums

Ģeometrija

Apgabals

Apgabala_kods

Apgabala_nosaukums

Populācija

Ģeometrija

Page 17: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

iedzīvotāju skaits, otrā – visas ASV iedzīvotāju skaitu, kur tiek summēta visu ASV apgabalu

populācija.

Vaicājumi ar telpisko kritēriju strādā ar telpiskajiem abstraktajiem datu tipiem.

Līdzīgi kā relāciju vaicājumos var izmantot agregātfunkcijas, telpiskajos vaicājumos, kuros

iekļauta telpiskā komponente, iespējams izmantot speciālas telpiskās funkcijas ( apvienošana,

laukums utt.).

Tā kā minētā piemēra administratīvās hierarhijas shēmā ģeometrijas atribūts tiek

uzdots katrā līmenī, nav grūti iegūt, piemēram, Kalifornijas pavalsts kontūras, tieši iegūstot

atbilstošo ģeometriju:

Select ģeometrija

From Pavalsts

Where Pavalsts_nosaukums = ‘Kalifornija’

Tomēr, ja ģeometrijas tiktu glabātas tikai hierarhijas apakšējā līmenī – Apgabals, lai

iegūtu šo pašu rezultātu –Kalifornijas kontūru, būtu jāveic visu Kalifornijas apgabalu telpiskā

apvienošana:

Select RegionUnion(a.ģeometrija)

From Apgabals a, Pavalsts p

Where p.pavalsts_kods = a.pavalsts_kods

and p.pavalsts_nosaukums = ‘Kalifornija’

To, ka telpisko vaicājumu būtība ir līdzīga parastajiem – relāciju vaicājumiem,

apliecina arī fakts, ka iespējams veikt arī saliktos vaicājumus. Piemēram, ja nepieciešams

atrast apgabalus, kas ir lielāki par Kalifornijas lielāko apgabalu, tiek veidots sekojošs

vaicājums:

Select apgabala_nosaukums

From Apgabals

Where Area (apgabals.ģeometrija) > Select max(Area(c.geometry))

From Apgabals a, Pavalsts p

Where p.pavalsts_kods = a.pavalsts_kods

and p.pavalsts_nosaukums = ‘Kalifornija’)

17

Page 18: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Iespējams izpildīt arī vaicājumus, kas nosaka ģeometriju robežōšanos. Piemēram, lai

atrastu apgabalus, kas robežojas ar San Francisko apgabalu, jāizpilda šāds vaicājums:

Select a1.apgabala _nosaukums

from Apgabals a1, Apgabals a2

where a2 apgabala_nosaukums = ‘San Francisko’

and a1.pavalsts_kods = a2.pavalsts kods

and Meets (a1.ģeometrija, a2.ģeometrija)

Redzams, ka pie vaicājuma nosacījumiem ir pievienota jau minētā telpiskā operācija Meets,

kas nosaka telpisko robežošanos starp ģeogrāfiskajiem objektiem.

Interaktīvajos vaicājumos nepieciešama gala lietotāja līdzdalība, piemēram, ar peli

ekrānā norādot vēlamo apgabalu.

Select apgabala_nosaukums

from Apgabals

where OverlapsRect(ģeometrija, @rectangle)

Šinī piemērā tiek atgriezti to apgabalu nosaukumi, kurus nosedz lielotāja uzzīmētais

taisnstūris uz ekrāna. Uzzīmētais taisnstūris tiek glabāts tiek saglabāts @rectangle un tiek

izmantots operācijā OverlapsRect.

Pēc šo telpisko vaicājumu apskates var secināt, ka iespējas datu izgūšanā, to apstrādē

un kombinēšanā ir milzīgas, kas neapšaubāmi ļauj veidot efektīvas sistēmas, kas spēj

apstrādāt telpisku informāciju. Taču, lai varētu veiksmīgi strādāt ar visām šīm apskatītajām

struktūrām, ļoti būtiska ir arī šo datu fiziskā glabāšana un pieejas metodes. Ātrai pieejai

datiem bieži vien izmanto indeksus, kuru darbības pamatprincips, līdzīgi kā grāmatas satura

rādītājam, ir norādīt uz attiecīgajiem objektiem. Tie ļauj ātri izpildīt vaicājumus bez visas

datu bāzes pārmeklēšanas. Kā pamata datu struktūra lielākajai daļai indeksu ir dažādu

variantu koki. Koks tiek definēts kā hierarhiski saistītu elementu, sauktu par virsotnēm, kopa,

kur katra no virsotnēm ir vai nu iekšējā virsotne vai lapas virsotne. Katrai iekšējai virsotnei ir

viena vai vairākas pēcteču virsotnes, kurām savukārt šī virsotne ir priekštecis. Kokā ir viena

saknes virsotne, kam nav priekšteču, savukārt lapu virsotnēm nav pēcteču. Pretēji

dabiskajiem kokiem, sakne atrodas koka augšdaļā, bet lapas – apakšdaļā. Ja n1, n2,..., nk ir

18

Page 19: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

virsotņu secība kokā tā, ka ni ir ni+1 priekštecis, šī secība tiek saukta par ceļu no virsotnes ni

uz nk. Koks tiek saukts par pilnu, ja visas tā lapas atrodas vienā līmenī. Koka struktūras

piemērs ilustrēts attēlā nr. 11, kur lapu virsotnes ir iekrāsotas melnā krāsā, bet pārējās ir

iekšējās virsotnes. Virsotne, kas ir baltā krāsā ir saknes virsotne.

Attēls 11 – Koks

Lai sasniegtu labus datu bāzes ātrdarbības rezultātus, jābūt labi organizētai arī tās

fiziskajai struktūrai. Nepārdomātas datu fiziskās organizācijas dēļ, pat visvienkāršākie SQL

vaicājumi var tikt izpildīti neapmierinošā ātrumā.

DBVS sistēmas ir paredzētas darbam ar lieliem datu kopumiem, tāpēc neiztikt bez

sekundārajām datu glabāšanas ierīcēm (cietie diski, CD-ROM, magnētiskās lentas u.c.). Tā

kā to ātrdarbība ir vairākas reizes lēnāka par operatīvo atmiņu, darbs ar šīm iekārtām ir visas

sistēmas “šaurā vieta”. Tas ir nopietns iemesls sīkākai pieejas un glabāšanas metožu

pētīšanai.

19

Page 20: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

2.TELPISKO DATU GLABĀŠANA: DISKI UN FAILI

Ja salīdzina tradicionālo datu bāzu transakciju un C programmu, tad prasības pret

sistēmu ir dažādas. C programma, kas aprēķina inverso matricu būtībā izvirza prasības

vienīgi pret procesoru, jo parasti šāda matrica būs pietiekami maza, lai ietilptu sistēmas

operatīvajā atmiņā. Un tā kā procesora sadarbība ar primāro atmiņu ir pietiekami ātra,

rezultāti ir tieši atkarīgi no procesora ātruma.

Tradicionāls datu bāzu lietojums strādā ar lieliem datu apjomiem, kuri, neskatoties uz

nepārtraukto atmiņas cenu kritumu, tomēr nevar ietilpt operatīvajā atmiņā. DBVS veido datu

porcijas apmaiņai starp pamatatmiņu un sekundāro (parasti - diskatmiņu). Datu pārraides

ātrumi starp pamatatmiņu un sekundāro atmiņu salīdzinājumā ar pamatatmiņu un procesoru

ir lēni (mērāmi milisekundēs), tāpēc ātrdarbība galvenokārt atkarīga no ievades/izvades

sistēmas organizētības.

Telpiskajās datu bāzēs situācija ir sarežģītāka. Aprēķinu intensivitāte ir salīdzināma ar

jau minētām programmēšanas valodā veidotām matemātisko aprēķinu programmām,

savukārt datu glabāšanas prasības ir daudz augstākas par tām, kuras izvirza tradicionālās

DBVS. Zemas izšķirtspējas ASV satelītuzņēmums vien aizņem 30MB atmiņas. Telpiskās

datu bāzes parasti ir pārāk lielas, lai ietilptu pat uz vidēja izmēra sekundārā datu nesēja.

2 .1 . DI S KA ĢEO METRI JA UN PR I NC I PI

Datora cietais disks sastāv no vairākām magnētiskām platēm, kas novietotas viena

virs otras. Katrai platei ir magnētiskie celiņi, kur tiek glabāti dati. Celiņus var iztēloties kā

koncentriskus apļus, kas sākas no plates centra un vijas līdz plates malai. Tā kā diskam ir

vairākas plates, ir arī paralēli celiņi. Celiņi ar vienādu diametru veidu cilindru.

Katrs celiņš ir sadalīts sektoros, kuru izmēru nosaka ražotājs. Katrs sektors satur diska

blokus, kuru skaitu iespējams noteikt inicializējot jeb formatējot disku. Diska bloku sauc arī

par lappusi, un tā ir mazākā iespējamā datu pārraides vienība starp disku un pamatatmiņu. Ja

ņem vērā to, ka diska bloki ir izkārtoti secībā uz celiņiem, nav grūti saprast, ka disks ir

loģiska viendimensionāla iekārta. Dati tiek nolasīti ar galviņu palīdzību, kur katrai platei ir

sava galviņa. Kad DBVS ”vēlas” piekļūt kādam datu blokam, galviņas mehāniski tiek

novietotas pret attiecīgo celiņu, attiecīgajā sektorā un nolasa attiecīgo bloku. Visu šo procesu

var iedalīt trijās daļās. Pirmkārt, meklēšanas laiks ts ir laiks, kurā diska galviņas nonāk līdz

vajadzīgajam celiņam. Otrkārt, latentums tl ir laiks, kurā plate griežas līdz vajadzīgais bloks

20

Page 21: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

ir tieši zem galviņas. Visbeidzot pārraides laiks tt ir laiks, kurā attiecīgais datu bloks tiek

nolasīts vai rakstīts. Līdz ar to kopējais pieejas laiks ta tiek aprēķināts pēc formulas:

ta=ts + tl + tt

un parasti patiesa ir nevienādība ts > tl > tt

2 .2 . LAU KS , I ER AK STS , FA I LS

Ar lappušu principu var labi parādīt datu apmaiņas specifiku starp disku un

pamatatmiņu. Tomēr augstākā abstrakcijas līmenī ērtāk izmantot faila, ieraksta un lauka

hierarhiju. Fails ir ierakstu kopa, kas var aizņemt vairākas lappuses. Lappuse ir slotu kopa,

kur katrs slots satur ierakstu, kas savukārt ir vienādu vai dažādu datu tipu lauku kopa.

Pieņemot, ka eksistē tabula VALSTS ar sekojošiem laukiem: nosaukums(30),

kontinents(30), populācija, IKP, vid_vecums, forma, tad ieraksta izmēru baitos aprēķina

summējot katra lauka izmēru. Tātad izmērs varētu būtu 30+30+4+4+4+8 = 80 baiti, ja

integer tipa lauks aizņem 4 baitus un rādītājs uz telpiskās komponentes glabāšanas vietu – 8

baiti. Vienkāršības labad, tiek pieņemts, ka valsts nosaukums un kontinents vienmēr aizņems

katrs 30 baitus (patiesībā tas var būt arī mazāks). Ja diska sektora apjoms ir 512 baiti un

tabulā ir 6 ieraksti, nepieciešamais atmiņas apjoms ir 480 baiti, līdz ar to šie ieraksti var

ietilpt vienā sektorā. Savukārt tabulā PILSETA tiek ievietoti 9 ieraksti, katrs - 72 baitus liels.

Rezultātā šie ieraksti aizņem 657 baitus, tāpēc šo ierakstu kopa tiek izvietota pa diviem

sektoriem. Katrs sektors satur dažādu informāciju par brīvo vietu, katra ieraksta sākuma

pozīciju, nākamā sektora adresi, utt. Var tikt arī izmantoti īpaši sektori, kas norāda uz citiem

sektoriem, kur atrodas tabulas.

Attēls 12 - Ierakstu kārtošana pa diska lapām

21

Tabulu norāžu bloks

Valsts 6 1

Pilseta - 2

6 ieraksti, katrs 80B

Kanāda

Meksika

Kuba

Brazīlija

ASV

Argentīna7 ieraksti, katrs 73B

Havanna

Mehiko

Otava

Brazilja

Detroita

Čikāga

Toronto

2 ieraksti, katrs 73B

L.A.

Mičigana

Page 22: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

2 .3 . FA ILU S TR UK TŪR A S

Failu struktūru nosaka ierakstu sakārtotība failā. Vienkāršākā organizētības forma ir

nesakārtots fails, saukta arī par kaudzi, kur ieraksti nav sakārtoti nekādā secībā. Attēlā nr. 12

fails, kas glabā tabulu VALSTS ir nesakārtots fails. Ja jāveic ieraksta meklēšana šādā failā

pēc kāda kritērija (piemēram - nosaukuma), nepieciešama tabulas pārmeklēšana. Sliktākajā

gadījumā jāpārmeklē visas lappuses, kas satur šī faila informāciju. Vidēji nākas pārmeklēt

pusi no ierakstiem, līdz tiek atrasts rezultāts. Šādas struktūras galvenā priekšrocība slēpjas

INSERT operācijā, kad jauns ieraksts vienkārši tiek pievienots faila beigās.

Sarežģītākas failu struktūras izmato ierakstu hešēšanu un kārtošanu. Hešētā failu

struktūra paredz ierakstu dalīšanu vairākās daļās – bloku saimēs (buckets), izmantojot

hešēšanas funkciju. Katrs ieraksts, pēc izvēlēta atslēgas lauka (piemēram - nosaukuma), tiek

ievietots kādā no bloku saimēm. Attēlā nr.13 parādīta hešēta faila struktūra ar četrām bloku

saimēm, kur katra no šīm saimēm tiek glabātas atsevišķā lappusē. Hešēšanas funkcija atgriež

1 vārdiem, kuriem burtu skaits ir mazāks vai vienāds ar 6, 2 – vārdiem ar burtu skaitu 7 vai 8,

3 – vārdiem ar burtu skaitu 9 vai 10 un 4- vārdiem, kuru garums pārsniedz 11 simbolus.

Attēls nr.13 Hešēta faila struktūra tabulai PILSETA

Ideālā gadījumā hešēšanas rezultātā katrā no bloku saimēm vēlams būt līdzīgam

ierakstu daudzumam. Hešēta faila organizācija ir ļoti efektīva punkta meklēšanā, ievietošanas

un dzēšanas operācijās, kuras iespējams veikt konstantā laikā (piemēram - ar divām diska

pieejām diskam). Tomēr šādā veidā strukturizētu failu izmantošana nav piemērota diapazonu

22

4 saimes, 9 ieraksti

Atslēga <=6 1

Atslēga 7-8 2

Atslēga 9-10 3

Atslēga >=11 4

3 ieraksti

Mičigana

Havanna

Brazilja

4 ieraksti

L.A.

Mehiko

Čikāga

Otava

2 ieraksti

Montereja

Vašingtona

1 ieraksts

Buonosairesa

Page 23: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

meklēšanā, piemēram – atgriezt pilsētu aprakstus, kuru nosaukums sākas ar burtu “B”, jo

konkrētie ieraksti var būt dažādās saimēs.

Kārtotajos failos ieraksti ir sakārtoti pēc noteikta atslēgas lauka. Attēlā nr.14 parādīta

kārtota faila piemērs ar jau minēto pilsētu tabulu. Par kārtošanas lauku tiek izmantots pilsētas

nosaukuma lauks, pēc kura alfabēta secībā tiek kārtoti visi ieraksti.

Attēls nr. 14 – Kārtota faila struktūra tabulai PILSETA

Šādi kārtotos failos efektīvi ir binārās meklēšanas algoritmi ar uzdotu atslēgas

vērtību. Binārās meklēšanas izmaksas (procesora noslodze, ievades/izvades laiks) būtiski

pieaug, ja ierakstu skaits ir liels. Failā ar 1 miljonu ierakstu pilsētas meklēšana pēc

nosaukuma prasa aptuveni log2(106) = 20 pieejas diskam. Šīs izmaksas var tikt samazinātas,

ja lappuses satur vairākus ierakstus.

23

7 ieraksti, katrs 73B

Brazilja

Buonosairesa

Čikāga

Havanna

L.A.

Mehiko

Mičigana

3 ieraksti, katrs 73B

Montereja

Otava

Vašingtona

Page 24: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

3.TELPISKĀ INDEKSĒŠANA UN PIEKĻUVES METODES

Telpisko vaicājumu apstrāde balstās uz sarežģītiem un prasīgiem pēc liela daudzuma

resursu ģeometriskiem aprēķiniem. Pat parasta telpiska operācija kā punkta vaicājums, kas

secīgi pārbauda, vai kopas objekti satur doto punktu, noved pie liela skaita diska piekļuvēm.

Lai varētu veiksmīgi strādāt ar telpiskajiem vaicājumiem, ir nepieciešamas īpašas datu

piekļuves metodes, kas tiek balstītas uz datu struktūru – indekss. Šīs metodes paātrina

piekļuvi datiem, samazinot objektu kopu, kurā jāmeklē nepieciešamie dati. Izpildot klasiskos

vaicājumus, kuri balstīti uz aprakstošiem datiem, bieži tiek izmantots klasiskais indekss - B-

koks, taču telpiskajos vaicājumos, kur objekti tiek meklēti atkarībā no to atrašanās vietas

telpā, jāizmanto citas, speciālas metodes. Parasti šīs metodes balstās uz struktūru, sauktu par

telpisko indeksu. Savukārt objektu kopu, kurai šis indekss ir izveidots, uzskata par indeksētu.

Indeksi ir speciāli faili, kas parasti sastāv no atslēgas lauka un datu faila lapas adreses lauka.

Ieraksti indeksos bieži ir sakārtoti un var tikt organizēti ar speciālām meklēšanas datu

struktūrām, piemēram, B+koks, R-koks, režģa fails utt.

Telpisko datu īpatnība ir tāda, ka jāindeksē līnijas un daudzstūri (2D telpā) parasto

datu tipu vietā. Tā kā objektu ģeometrijas var būt diezgan sarežģītas, parasti to indeksēšanai

izmanto to aproksimizācijas jeb tuvinājumus - mazāko robežtaisnstūri mbb (minimal

bounding box). Tādā veidā sarežģītā ģeometrija tiek reducēta uz taisnstūri, stipri ietaupot

resursus datu meklēšanā. Līdz ar to telpiskais indekss sastāv no ierakstiem [mbb, oid], kur

oid identificē objektu, kura mazākais robežtaisnstūris ir mbb, nosakot tā fizisko atrašanās

vietu datu failā. Reāla telpiskā vaicājuma operācijas izpilde tiek sadalīta 2 soļos. Pirmajā solī

(filtra solī) tiek atgriezti objekti, kuru mazākie robežtaisnstūri apmierina telpisko predikātu,

iekļautu vaicājumā. Ir situācijas, kad mbb apmierina telpisko predikātu, taču reālā ģeometrija

neapmierina, tāpēc objekti, kas „tiek cauri” šim filtram veido tikai atrisinājuma virskopu.

Savukārt otrajā solī, sauktā arī par attīrīšanas soli, tiek veikts telpiskais tests uz šiem atrasto

objektu patiesajām ģeometrijām, kā rezultātā tiek atgriezta rezultējošā objektu identifikatoru

(oid) kopa. Šī ģeometriskā operācija, kas tiek veikta otrajā solī ir dārga, taču tiek veikta ar

ierobežotu skaitu objektu.

Kopumā no labas telpiskās pieejas metodes tiek gaidīts meklēšanas laiks, kas ir

mazāks par lineāru un meklēšanas struktūras izmērs ir salīdzināms ar pašu indeksējamo

struktūru. Tāpat būtisks aspekts ir dinamika. Pieejas metodēm jāpieļauj jaunu objektu

24

Page 25: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

ievietošanu, esošo objektu dzēšanu un jāspēj adaptēties jebkurām objektu kopas lieluma

izmaiņām, nezaudējot efektivitāti.

Klasisks piemērs ir B+ koks, kurš atbilst šīm prasībām. B+ koka, attēlota attēlā nr.

14., indekss ir veidots no atslēgu kopas {2,3,7,9,10,13,15}. Tas ir balansēts koks, kurā katra

virsotne ir diska lapa un glabā ierakstus [atslēga, rādītājs], kur rādītājs norāda vai nu uz

objektu, kura atslēgas atribūts ir šī norādītā atslēga (lapu virsotnēs), vai arī uz pēcteča

virsotni (iekšējās virsotnes). Šeit pieņemts, ka katra datu lapa glabā lielākais – 4 ierakstus.

Visi ieraksti virsotnē ir sakārtoti tā, ka katrs ieraksts e, norāda uz apakškokiem pa kreisi, kur

atrodas objekti o, kur o.atslēga<=e.atslēga, un apakškokiem pa labi, kur o.atslēga >

e.atslēgu.

Attēls 14 – B-koki: B+ koks pirms un pēc objekta [23, oid] ievietošanas

Meklējot objektu, pie ievadītas atslēgas vērtības, koks tiek pārmeklēts no augšas uz

leju, katrā virsotnē izvēloties apakškoku pa kreisi no mazākās e vērtības tā, lai

vērtība<=e.atslēga. Ja vērtība ir lielāka par lielāko ierakstu virsotnē, jāizvēlas apakškoks,

kas ir labajā pusē. Šādā kokā visas koka lapas ir vienā dziļumā (koks ir balansēts). Tādā

veidā nolasāmo datu lapu skaits ir vienāds ar koka dziļumu, kas ir logaritmisks indeksētajai

datu kopai.

Ievietojot jaunu vērtību, koks tiek pārveidots, vajadzības gadījumā dalot

nepieciešamās virsotnes divās daļās. Pēc tā var secināt, ka B+ koks lieliski parāda īpašības,

kuras tiek prasītas no pieejas metodēm: ievad/izvades operāciju skaits ir logaritmisks pret

kopas izmēru, un vismaz puse no indeksam atvēlētās vietas ir izmantota, kas nosaka, ka

indeksa izmērs ir salīdzināms ar indeksētās kopas izmēru (parasti tas ir mazāks, jo atslēga,

kura tiek izmantota konstruējot koku ir daudz mazāka par visu ierakstu datu kopā).

Visbeidzot struktūra saglabā savas īpašības veicot gan ierakstu ievietošanu, gan dzēšanu.

Visas B-koka īpašības, kas ļauj veikt efektīvu indeksēšanu, balstās uz atslēgu vērtību

kārtošanu. Tomēr ar telpiskajiem datiem šādu struktūru izmantot nevar - nepieciešami citi

principi, kuri būtu piemēroti šiem datiem. Eksistē daudzas telpisko datu pieejas metodes, taču

tās visas tiek balstītas uz vienu no diviem sekojošiem principiem:

25

Page 26: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Uz telpu orientētas struktūras: Tās dala 2D telpu taisnstūrveida šūnās,

neatkarīgi no objektu (punktu vai mbb) izvietojuma divdimensionālajā plaknē.

Objekti tiek kartēti (mapped) šūnās atkarībā no kāda ģeogrāfiska kritērija.

Uz datiem orientētas struktūras: Tās dala objektu kopu, pielāgojoties to

izvietojumam telpā.

Šinī darbā apskatīto struktūru klasifikāciju ilustrē attēls nr.15.

Attēls 15 – Telpisko datu indeksēšanas struktūru klasifikācija

26

Page 27: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

4.UZ TELPU ORIENTĒTAS STRUKTŪRAS

4 .1 . REŽĢ A F AI LS

4.1.1. Fiksētais režģis

Fiksētais režģis ir režģa faila struktūras vienkāršots variants. Pielietojot fiksēto režģi,

telpa ir sadalīta taisnstūrveida šūnās. Iegūtais režģis ir nx*ny vienāda izmēra šūnu masīvs.

Katra šūna ir saistīta ar diska lapu. Punkts P pieder šūnai c, ja taisnstūris c.taisnstūris, kas

saistīts ar šūnu c satur punktu P. Objekti, kas kartēti šūnā c, tiek secīgi glabāti diska lapā,

kura saistīta ar šo šūnu.

Attēlā nr.16 redzama 18 punktu indeksēšana, izmantojot fiksēto režģi. Telpā par

atskaites punktu tiek izvēlēts punkts ar koordinātēm (x0, y0). Indeksam nepieciešams 2D

masīvs DIR[1..nx, 1..ny] - direktorijs. Katrs direktorija elements DIR[i, j] satur tās diska lapas

adresi PageID, kura glabā punktus, kas pieder šūnai ci, j. Ja [Sx, Sy] ir 2D telpas izmērs, tad

katras šūnas taisnstūra izmērs ir [Sx/nx, Sy/ny].

Attēls 16 – Fiksētais režģis

Izpildāmo vaicājumu būtība fiksētajā režģī ir sekojoša:

Punkta P(a,b) ievietošana: i = (a-x0)/(Sx/nx) +1 un j=(b-y0)/Sy/ny) + 1. Tiek nolasīta

diska lapas adrese no DIR[i,j].PageID un tiek ievietots P.

Punkta vaicājums: Dots punkta arguments P(a,b). Diska lapa tiek nolasīta līdzīgi kā

pie ievietošanas, tiek pārmeklēti ieraksti, pārbaudot, vai kāds no tiem nav P.

Loga vaicājums: tiek izskaitļota šūnu c kopa S tā, ka vaicājuma loga arguments W

nosedz c.taisnstūris. Katrai šūnai ci,j no kopas S tiek nolasīta DIR[i,j].PageID diska

lapas adrese un atgriezti punkti no lapas, kurus nosedz logs W.

27

Page 28: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Šinī gadījumā efektīvs ir punkta vaicājums, jo, pieņemot, ka direktorijs atrodas operatīvajā

atmiņā, izpildei nepieciešama viena ievad/izvades operācija. Operāciju skaits loga vaicājumā

ir atkarīgs no tā, cik šūnas logs nosedz, t.i. tas ir proporcionāls loga laukumam.

Režģa izšķirtspēja ir atkarīga no indeksējamo punktu skaita N. Ja diska lapas ietilpība,

piemēram, ir M punkti, jāveido režģis ar izmēru vismaz N/M šūnas. Vidēji rēķinot, katra

šūna satur mazāk nekā M objektus un, ja kādai šūnai pieder vairāk kā M punkti, notiek šūnas

pārpilde (overflow). Šiem gadījumiem ir paredzētas pārpildes lapas, kas tiek piesaistītas

tiešajai šūnas lapai. Piemēram, pieņemot to, ka katra lapa varēs glabāt ne vairāk kā 4

punktus, 5 punktu, esošu vienā šūnā, indeksēšana notiks tā, kā parādīts attēlā nr.17. Punkti k,

l, m, n tiks glabāti lapā p, savukārt punkts o tiks saglabāts pārpildes lapā, kas piesaistīta lapai

p. Šādos gadījumos punkta vaicājums prasīs q I/O operācijas, ja punkts ir saglabāts q-tajā

lapā pārpildes ķēdītē.

Attēls 17 – Lapas pārpilde fiksētajā režģī

Tomēr, ja punkti telpā ir izvietoti vienmērīgi, iepriekš aprakstītā parādība notiek reti

un pārpildes ķēdītes nav garas. Sliktākais gadījums varētu būt tad, ja visi punkti izrādās vienā

šūnā un struktūra ir lineārs, saistīts lapu saraksts. Punkta meklēšana prasa lineāru laiku un

struktūra neapmierina galveno prasību pret laiku – lai tas būtu mazāks par lineāru. Pārpildes

notiek arī kad ievērojami mainās datu kopas izmērs. Pat, ja punktu izvietojums ir vienmērīgs,

atkārtotas jaunu punktu ievades var izraisīt lielu pārpildes lapu daudzuma parādīšanos. Tāpat

arī dzēšana var novest pie gandrīz tukšām lapām. Kopumā var secināt, ka pie dažāda punktu

izvietojuma, fiksētais režģis nevar apmierināt prasības, kuras ir uzstādītas pret indeksu

sekundārajā atmiņā.

4.1.2. Punktu indeksēšana ar režģa failu

Līdzīgi kā fiksētajā režģī, arī režģa failā šūna ir saistīta ar kādu no diska lapām.

Tomēr, kad notiek šūnas pārpilde režģa failā, tā tiek sadalīta divās šūnās un punkti attiecīgi

28

Page 29: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

tiek sadalīti pa abām jaunajām šūnām. Līdz ar to šūnas ir dažāda izmēra un to sadalījums

piemērojas punktu izvietojumam. Lai realizētu šo struktūru nepieciešamas trīs datu

struktūras:

Direktorijs DIR ir 2D masīvs, kas saista šūnas ar diska lapām. Šī struktūra ir līdzīga

iepriekš apskatītajai pie fiksētā režģa, tomēr galvenā atšķirība ir tāda, ka divas blakus

esošās šūnas var attiekties uz vienu un to pašu datu lapu.

Divas skalas (scales) Sx un Sy – lineāri masīvi, kas apraksta koordinātu asu dalījumu

intervālos. Katra vērtība kādā no skalām attēlo robežu telpas dalījumā izvēlētajā

dimensijā (x vai y).

Vislabāk struktūru apraksta piemērs. Attēlā nr. 18 parādīti režģa faila veidošanas punktu

glabāšanai 4 soļi. Tāpat kā iepriekšējos piemēros, tiek pieņemts, ka diska lapas ietilpība M ir

4 punkti.

Attēls 18 – Objektu ievietošana režģa failā.

Solī A, struktūra satur 4 objektus. Direktorijs ir viena šūna, kas saistīta ar diska lapu

p1. Solī B telpā tiek ievietoti 3 jauni punkti – a, b, c. Brīdī, kad tiek ievietots punkts a, notiek

p1 pārpilde. Tā rezultātā tiek veikts vertikālais dalījums, piesaistīta jauna diska lapa p2 un

pieci punkti tiek sadalīti starp p1 un p2. Vertikālais dalījums tiek atspoguļots skalā Sx kā

vērtība x1. Punkti a un b tiek ievietoti lapā p1, savukārt punkts c – lapā p2.

29

Page 30: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Solī C tiek ievietots punkts d, kuru vajadzētu ievietot lapā p1, taču šī lapa jau ir pilna.

Tāpēc tiek veikts horizontālais dalījums, atspoguļots skalā Sy kā vērtība y1 un atkal punkti

tiek sadalīti pa lapām p1 un p3.

Jāpiezīmē, ka dalījums tiek veikts visām šūnām Sy intervālā, un sadalītas tiek arī tās

šūnas, kurām nav konstatēta pārpilde, tomēr šīs šūnas turpina attiekties uz vienu un to pašu

diska lapu. Mainās vienīgi tas, ka šūna c2 tiek aizstāta ar divām jaunām šūnām c2,1 un c2,2,

kuras abas norāda uz p2.

Visbeidzot solī D tiek ievietoti punkti e un f. Notiek pārpilde lapā p2, līdz ar to

jāpiesaista jauna lapa p4. Šinī gadījumā nav nepieciešams intervāla dalījums. Punkti no šūnas

c2,1 tiek saglabāti lapā p2, savukārt punkti no c2,2 tiek glabāti jaunajā lapā p4. Kopumā,

ievietojot telpā punktu P jāizšķir 3 gadījumi:

Šūnas netiek dalītas;

Šūna tiek dalīta, taču netiek dalīts direktorijs;

Tiek dalīta gan šūna, gan direktorijs;

Režģa fails pārvar lielākās problēmas, kuras nespēja risināt fiksētais režģis. Punkta

vaicājums vienmēr var tikt izpildīts ar divām pieejām diskam. Turklāt struktūra ir dinamiska

un parāda labus rezultātus, neatkarīgi no telpas izmantošanas blīvuma. Tomēr, kā visām

metodēm, arī režģa failam ir vājās vietas. Pie lielām datu kopām, šūnu daudzums direktorijā

var būt tik liels, ka tas var neietilpt pamatatmiņā.

4.1.3. Taisnstūru indeksēšana izmantojot režģi

Taisnstūru indeksēšana, protams, ir sarežģītāka par punkta indeksēšanu un ir ļoti

nozīmīga telpisko datu indeksēšanā, jo kā tika minēts iepriekšējās nodaļās, indeksējot

telpiskos objektus, visas sarežģītās ģeometrijas tiek reducētas uz mazāko robežtaisnstūri mbb.

Līdz ar to taisnstūru indeksēšana ir fundamentāla lieta telpisko datu indeksēšanā.

Vienkāršākais veids, kā var kartēt taisnstūrus, ir tos piesaistīt šūnām, kuras nosedz šos

taisnstūrus. Iespējami trīs gadījumi: taisnstūris satur šūnu, šķērso to vai arī šūna to pilnībā

ietver. Pirmajos divos gadījumos taisnstūris ir piesaistīts vairākām kaimiņu šūnām, līdz ar to

pieaug indeksa izmērs un zūd efektivitāte.

Piemēram izmantošu 15 taisnstūru kopu. Attēlā nr. 19 parādīta fiksētā režģa

izmantošana, savukārt attēlā nr. 20 – režģa faila izmantošana. Abos gadījumos lapas ietilpība

ir 4 objekti.

30

Page 31: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 19 – Fiksētā režģa izmantošana taisnstūru indeksēšanai

Attēls 20 – Režģa faila izmantošana taisnstūru indeksēšanai

Objektu ievietošana un dzēšana ir līdzīga analoģiskām operācijām ar punktiem. Tā kā

bieži novērojama objekta dubultošanās kaimiņu šūnās, šūnu dalīšana notiek biežāk. Attēlā nr.

21 parādīts gadījums, kad dalītas tiek gan šūnas, gan direktorijs. Sākuma stāvoklis šai

darbībai ir redzams attēlā nr. 20, kad telpā ir 13 objekti. Telpā tiek ievietots 14. objekts. Tā

kā tas ir jāievieto lapā, uz kuru norāda DIR[1, 3], notiek lapas p5 pārpilde. Tā rezultātā tiek

veikts vertikālais dalījums punktā x3. x3 tiek ievietots skalā Sx un direktorijs tagad sastāv no

3*(2+1) = 9 šūnām. Šūnas DIR[2,1] un DIR[2,2] attiecas uz jau eksistējošām lapām (p1 un

p3), kuras katra satur divu šūnu objektus. Lapas p5 objekti tagad ir izvietoti pa lapām p5 un

p6, uz kurām attiecīgi norāda DIR[1,3] un DIR[2,3]. Turklāt var novērot, ka objekti 5 un 6

dublējas abās lapās.

31

Page 32: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 21 – Objekta nr.14 ievietošana telpā

Šūnu dalījums bez direktorija dalījuma parādīts attēlā nr. 22. Kad tiek ievietots

objekts 15, diska lapā p4 notiek pārpilde. Tiek iedalīta jauna lapa p7, un direktorijā tiek

atjauninātas šūnas DIR[3,2] un DIR[3,3].

Attēls 22 – 15. objekta ievietošana telpā

4.1.4. Punktu un logu vaicājumi

Punktu vaicājumi tiek pildīti sekojoši. Tiek nodotas punkta koordinātes P(a ,b), un

tiek meklēta šūna, kas satur punktu ar šādām koordinātēm. Fiksētā režģa gadījumā uzdevums

prasa konstantu centrālā procesora darba laiku, savukārt režģa faila gadījumā logaritmisku

laiku. Vienu pieeju diskam prasa lapas nolasīšana, uz kuru norāda direktorija šūna, un vienu

– ierakstu kopas E iegūšana. Atliek katram ierakstam e veikt pārbaudi, vai e.mbb satur

punktu P. Attīrīšanas stadijā atbilstošajiem objektiem ar identifikatoru e.oid tiek pārbaudīts,

vai to patiesā ģeometrija satur doto punktu.

Loga vaicājumā vispirms tiek noskaidrots, kuras šūnas nosedz uzdotais logs

(taisnstūris). Katrs no tiem tiek pārbaudīts līdzīgi punktu vaicājumam. Tā kā rezultāti var

dubultoties vairākās šūnās, jāparūpējas par to, lai tiktu atgriezts tikai viens objekta

eksemplārs

32

Page 33: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Režģa struktūra taisnstūru indeksēšanā atbilst uzstādītajām laika un izmēra prasībām,

taču ir novērojamas vairākas nopietnas problēmas, kuru dēļ bieži nākas atteikties no šī

indeksēšanas veida. Vispirms objektu dubultošanās kaimiņu šūnās palielina ierakstu skaitu

indeksā, līdz ar to palielinot tā izmēru. Šis efekts kļūst arvien vairāk pamanāms, kad datu

kopa palielinās un šūnas izmērs samazinās līdz mbb izmēriem. Dublikātu likvidēšana no

vaicājumu rezultātiem ir dārga, ja rezultāti ir lieli. Šīs datu piekļuves metodes efektivitāte

balstās uz direktorija atrašanos pamatatmiņā. Pētījumi un eksperimenti rāda, ka lielām datu

kopām šāds darba veids ir neiespējams. Savukārt, ja daļu direktorija glabā uz sekundārās

atmiņas, struktūras vadība kļūst sarežģīta un meklēšanai nepieciešamais laiks vēl tiek patērēts

uz direktorija vadību diskā un atmiņā. Ir bijuši vairāki priekšlikumi, kā uzlabot šo situāciju,

taču tie padara struktūru pārāk sarežģītu, tādā veidā zaudējot vienu no galvenajām tās

īpašībām – vienkāršību.

4 .2 . LIN EĀ RA I S ČETR KO KS

Piekļuves metodes, kas aprakstītas šinī un nākamajā apakšnodaļā ļauj paplašināt datu

bāzu vadības sistēmas izmantojot B-koku kā indeksu. Taisnstūri, kuri jāindeksē, tiek kartēti

šūnās, kuras tiek iegūtas rekursīvi dekomponējot telpu kvadrantos (četrkoka dekompozīcija –

quadtree decomposition). Metode, kas tiks aprakstīta šinī apakšnodaļā tiek saukta par lineāro

četrkoku (linear quadtree) un strādā ar telpisko objektu mbb. Savukārt struktūra – Z-

kārtošanas koks (z-ordering tree), kas aprakstīta nākamajā apakšnodaļā aproksimē objektu

ģeometrijas nevis ar mbb, bet gan ar tā četrkoka dekompozīcijas šūnām.

4.2.1. Četrkoks

Telpa tiek rekursīvi dekomponēta kvadrantos, kamēr katrs kvadrants pārsedz mazāku

skaitu taisnstūru par M – diska lapas ietilpība. Kvadranti tiek saukti pēc debespusēm –

Ziemeļrietumu (ZR), Ziemeļaustrumu (ZA), Dienvidrietumu (DR), Dienvidaustrumu (DA).

Indekss tiek attēlots kā četrdaļīgs koks (katrai iekšējai virsotnei ir četri pēcteči – katrs –

vienam kvadrantam). Savukārt katra koka lapas ir saistītas ar kādu diska lapu, kas glabā

indeksa ierakstus. Līdzīgi kā režģa failā, taisnstūris tiek fiksēts tajos kvadrantos, kuri to

nosedz. Attēlā nr. 23 parādīts jau iepriekš izmantotās telpas dalījums kvadrantos un

atbilstošais četrkoks. Koka lapas satur atbilstošo taisnstūru ierakstus. Tāpat kā iepriekš,

33

Page 34: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

pieņemu, ka diska lapas ietilpība ir četri objekti, tāpēc arī koka lapa nevar saturēt vairāk par

četriem objektiem.

Attēls 23 – Četrkoks

Punkta vaicājumu izpilde četrkokā ir vienkārša. Objekta atrašanās vieta tiek atrasta,

pārmeklējot koku no sākuma virsotnes līdz lapām, katrā līmenī izvēloties zaru, kas apzīmē

kvadrantu, kurā atrodas punkta arguments. Koka lapa tiek lasīta un pārbaudīta līdzīgi tam, kā

tas tika darīts režģa faila gadījumā, lasot diska lapu. Attēlā nr. 24 parādīts, punkta vaicājuma

izpildes ceļš, kā rezultātā tiek atgriezts objekts, kura mbb numurs ir 5. Loga vaicājuma

gadījumā jāatrod visi kvadranti, kurus pārsedz uzdotais logs.

Attēls 24 – Punkta vaicājuma izpilde četrkokam

Arī šī struktūra ir dinamiska, tātad spēj adaptēties jauniem apstākļiem (objektu

ievietošana un dzēšana).

Ievietojot jaunu taisnstūri, kokā tiek iziets pa ceļiem, kas ved uz lapām, kas atbilst

kvadrantiem, kuri pārsedz taisnstūri. Katra diska lapa p, kas saistīta ar koka lapu tiek nolasīta,

un ir iespējami divi gadījumi: vai nu p nav pilna un jaunais ieraksts tiek ievietots lapā, vai arī

p ir pilna. Otrajā gadījumā kvadrants tiek dalīts četros sīkākos kvadrantos, un tiek iedalītas

trīs jaunas diska lapas. Vecās lapas ieraksti kopā ar jauno ierakstu tiek sadalītas pa četrām

lapām. Ieraksts e tiek pievienots tām lapām, kuru atbilstošie kvadranti pārsedz e.mbb. Attēlā

nr. 25 parādīts, kā tiek veidots indekss pēc jauna taisnstūru 15 un 16 ievietošanas. 15.

taisnstūra ievietošana prasa b kvadranta dalīšanu kvadrantos m, n, p un q. Lapām n un q tiek

34

Page 35: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

pievienots objekts 15. Savukārt, ievietojot objektu 16, nav vajadzīga dalīšana, jo lapas nav

pilnas. 16 tiek pievienots lapām c un t.

Attēls 25 – Objektu ievietošana četrkokā

Šis četrkoka variants neatbilst dažām telpiskās pieejas metožu prasībām. Galvenais

iemesls metodes nepilnībai ir mazais virsotņu pēcteču skaits (mazs zarošanās koeficients),

kas ir ierobežots līdz 4, kas realitātē aizņem tikai mazu diska lapas daļu. Koku struktūras ar

relatīvi lielu virsotņu zarošanās koeficientu (B-koks vai R-koks) ļauj efektīvāk saistīt koka

virsotnes ar diska lapām un ir daudz piemērotākas kā pieejas metodes sekundārajai atmiņai.

Savukārt četrkoka vaicājumu izpildes laiks ir atkarīgs no koka dziļuma, kas varbūt

liels. Sliktākajā gadījumā katra iekšējā virsotne ir atsevišķā diska lapā un I/O operāciju skaits

ir vienāds ar koka līmeņu skaitu. Turklāt, līdzīgi kā ar režģa failu, arī četrkokā problēma ar

objektu dublēšanos vairākās lapās paliek aktuāla. Kad indeksējamo objektu kopums ir tik

liels, ka kvadranta izmērs līdzinās mbb izmēriem, dublikātu skaits eksponenciāli palielinās,

un metode vairs nav efektīva.

4.2.2. Telpu pildošās līknes

Telpu pildošās līknes nosaka 2D režģa šūnu secību. Šī secības noteikšana ļauj daļēji

saglabāt objektu patieso tuvumu telpā, t.i. pastāv liela iespēja, ka divas šūnas, kas ir tuvu

viena otrai telpā atradīsies tuvu arī šūnu secīgajā rindā. Līknēm jānodrošina šī īpašība

neatkarīgi no režģa izšķirtspējas.

Populārākās telpu pildošās līknes ir Z-kārtošana (saukta arī par Peano līnijām) un

Džilberta līkne. Kā pamata režģi tās izmanto N *N šūnu masīvu, kur N = 2d. Šo režģi var

attēlot kā pilnu četrkoku ar dziļumu d.

Z-kārtošanas līkne tiek ģenerēta sekojoši: pilnā četrkoka katrai virsotnei tiek piešķirta

iezīme. Turpmākajos piemēros iezīmes tiks veidotas, izmantojot zīmes no alfabēta (0,1,2,3).

Saknes virsotnei tiek piešķirta tukša iezīme. Iekšējās virsotnes ar iezīmi k Z-Rietumu

pēctecim tiek piešķirta iezīme k.0 (attiecīgi ZA – k.1, DR – k.2, DA – k.3), kur „.” nozīmē

35

Page 36: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

virkņu savienojumu. Izmantojot šo iezīmju piešķiršanas sistēmu, katras iezīmes garums būs

d. Leksikogrāfiski šķirojot šūnas pēc to nosaukumiem, tiek arī iegūta šī te Z-veida secība

(attēls 26.a).

Attēls 26 – Telpu pildošās līknes: z-kārtošana (a) un Džilberta līkne (b).

Džilberta līkne, tāpat kā Z-kārtošana, ir viendimensionāla līkne, kas apmeklē katru

šūnu 2D režģī. Ja Z-kārtošana paredz Z-veida līkni, tad Džilberta līknes forma ir . Atšķirībā

no z-kārtošanas, visi Džilberta līknes segmenti ir vienāda garuma, t.i. šinī gadījumā nav

“jālec” pāri lielākiem attālumiem starp šūnām (attēls 26.b). Tomēr acīmredzams ir fakts, ka

abos gadījumos eksistē situācijas, kad objekti, kuri ir tuvu viens otram telpā, ir tālu viens no

otra telpu pildošajā līknē.

4.2.3. Iezīmju piešķiršana četrkoka virsotnēm.

Kā jau tika minēts, četrkoks ar dziļumu d var tikt attēlots arī kā režģis ar N = 2d. Ja

katram režģa kvadrantam tiek piešķirta iezīme, kā tas tika darīts iepriekš ar z-kārtošanu, tiek

iegūts četrkoks, kāds redzams attēlā 27. Jāpiezīmē, ka koka virsotņu kārtība organizēta

lasīšanas virzienā – no kreisās puses uz labo, kā arī tas, ka visas iezīmes nav viena garuma.

Tāpat virsotnes iezīme norāda ceļu no sākuma virsotnes līdz dotajai.

Attēls 27 – Četrkoka iezīmju piešķiršana, izmantojot z-kārtošanu.

36

Page 37: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Ja lapa L satur režģa šūnu C, tad virsotnes L iezīme l ir šūnas C iezīmes c prefikss,

līdz ar to l<c. Turklāt noteiktā kārtība „<” nozīmē šo iezīmju leksikogrāfisku kārtību augošā

secībā. Piemēram, 3<31<312.

4.2.4. Lineārais četrkoks

Pieņemot, ka ieraksti [mbb, oid] ir piesaistīti četrkoka lapai ar iezīmi l un glabāti

diska lapā ar adresi p, ar B+koka palīdzību tiek indeksēta pāru (l, p) kopa (attēls 28).

Attēls 28 – Četrkoka lapu indeksēšana

Šāda struktūra nodrošina labu četrkoka iezīmju blīvēšanu (packing) B+koka

virsotnēs. Blīvēšana ir dinamiska, t.i., tā ļauj veikt jaunu objektu ievietošanu un vairs

nevajadzīgu objektu dzēšanu, saglabājot struktūru. Piemēram, ieraksti, kas atbilst četrkoka

lapām ar iezīmēm 13, 2, 300 un 301 ir vienā diska lapā. Tomēr šādam risinājumam

saglabājas tā pati dublikātu problēma, kāda tika novērota iepriekšējā četrkoka variantā: mbb,

kurus nosedz vairākas četrkoka lapas, tiek dublēti diska lapās, kas ir saistītas ar šīm koka

lapām. Tā, piemēram, objekts e tiek glabāts četrās diska lapās.

4.2.5. Punkta vaicājuma izpilde lineārajā četrkokā

Objekta, kura mbb satur punktu P, identifikatora oid iegūšana prasa 3 soļus:

Punkta iezīmes aprēķins – Tiek aprēķināta režģa šūnas, kura satur punktu P, iezīme l

(rakstzīmju virkne ar garumu d);

Četrkoka lapas atrašana B+kokā – Ja četrkoka virsotnes, kas satur P, iezīme ir L, tad

vai nu L=l un četrkoka virsotne ir dziļumā d, vai L ir punkta iezīmes l prefikss, līdz ar

to šīs virsotnes iezīmes garums ir mazāks par d un virsotnes kvadrants satur režģa

sūnu, kurā atrodas punkts P. Citiem vārdiem sakot, šis kvadrants attiecas uz ierakstu

B+kokā, kura atslēga L ir lielākais skaitlis, kas ir mazāks par l, vai ar to ir vienāds.

Šāda ieraksta meklēšana nav standarta procedūra darbā ar B+kokiem, tāpēc tāda ir

jāimplementē pašiem.

37

Page 38: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

piekļuve lapai un objekta atrašana – Kad B+koka ieraksts [L, p] ir atrasts, jāpiekļūst

diska lapai ar adresi p, jāpārbauda visi tajā glabātie [mbb, oid] pāri un jānoskaidro,

kuri mbb satur punktu P. Procedūras rezultāts ir objektu identifikatoru saraksts.

Šī algoritma darbības praktisko risinājumu var redzēt attēlā nr. 27 un 28. Pēc punkta P

koordinātēm tiek noskaidrots, ka tas atrodas šūnā, kuras iezīme ir 320 (pirmais solis). Tad

B+kokā tiek atrasta lielākā iezīme, kas ir mazāka vai vienāda ar 320. Šinī gadījumā tā ir

virsotne ar iezīmi 32 (otrais solis). Visbeidzot trešajā solī tiek realizēta piekļuve pie diska

lapas un ierakstu caurskatīšana, meklējot tos, kuru mbb satur P. Tā rezultātā tiek atrasts

objekts c.

Punkta vaicājumam nepieciešamo ievad/izvades operāciju skaitu veido divas

komponentes: 1) I/O operāciju skaits piekļuvei pie vajadzīgās B+koka virsotnes; 2) I/O

operāciju skaits piekļuvei pie kvadranta diska lapas. Tādā veidā šis nepieciešamais I/O skaits

tiek izteikts kā d+1, kur d ir B+koka dziļums. Šī izteiksme ir patiesa neatkarīgi no objektu

izvietojuma telpā, jo B+koka struktūras ātrdarbība ir tieši atkarīga no tās izmēra.

4.2.6. Loga vaicājuma izpilde lineārajā četrkokā

Vaicājuma mērķis ir atrast kvadrantu, kurus pārsedz logs W, iezīmju intervālu I un

realizēt diapazona vaicājumu B+kokā. Tas tiek veikts trijos soļos.

Vispirms tiek aprēķināts vaicājuma loga ZR virsotnes iezīme, līdzīgi tam, kā tas tika

darīts punkta vaicājuma izpildes pirmajā solī. Tad līdzīgi punkta vaicājuma izpildes

otrajam solim tiek atrasta atbilstošā kvadranta iezīme, kā rezultātā tiek iegūts [L, p],

kur iezīme L ir intervāla apakšējā robeža. Tad analoģiskā veidā tiek atrasts [L’, p’]

loga DA virsotnei, kur iegūtais L’ ir intervāla augšējā robeža.

Tiek pielietots diapazona vaicājums intervālā [L, L’] B+kokā, kas atgriež visus

ierakstus [l, p], kuru iezīmes l atrodas dotajā intervālā.

Katram B+koka ierakstam e = [l, p] tiek aprēķināts kvadrants e.l. Ja logs nosedz šo

kvadrantu, tiek realizēta piekļuve pie diska lapas e.p un tiek pārbaudīts katram no

ierakstiem, vai W nenosedz [mbb, oid].

Atgriežoties pie iepriekš apskatītā piemēra, kas redzams 27. un 28. attēlā, var novērot, ka

loga W ZR virsotnes iezīme ir 012, savukārt DA virsotnei – 121. Pārmeklējot B+koku, kas

aplūkojams attēlā nr. 28, tiek noskaidroti atbilstošie kvadranti – attiecīgi 01 un 12.

Pielietojot diapazona vaicājumu B+kokā intervālā [01, 12], katram atrastajam ierakstam e

tiek pārbaudīta attiecīgā diska lapa, ja logs W nosedz šo kvadrantu. Tādā veidā ieraksti ar

iezīmēm no 020 līdz 023 un 11 nemaz netiek pārbaudīti.38

Page 39: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Negatīvā puse 2D kvadrantu pārveidošanai viendimensionālā sakārtotu šūnu sarakstā ir

koka zaru izvēles nepilnība. Intervālā [L, L’] var būt daudz kvadrantu, kurus logs W nemaz

nenosedz, tāpēc diapazona vaicājums varētu prasīt vairāk ievades/izvades operāciju nekā

nepieciešams. Tomēr lapas, kuras saistītas ar kvadrantiem, kurus W nenosedz, pielietojot šo

metodi, netiek pārbaudītas.

Nepieciešamo I/O operāciju skaitu aprēķināt ir grūtāk nekā punkta vaicājumam.

Vaicājuma izpildes pirmajā solī nepieciešamas 2d piekļuves B+kokam, jo tiek meklētas 2

punktu iezīmes. Otrajā solī, lai sasniegtu intervāla apakšējās robežas virsotni, nepieciešamas

d piekļuves diskam, plus vēl tik daudz I/O operāciju, cik ir B-koka virsotnes ir jāpārmeklē. Šī

otrā soļa I/O operāciju skaits ir atkarīgs no intervāla lieluma - tātad no loga lieluma. Eksistē

arī citi efektīvāki algoritmi, kuri nepārmeklē kvadrantus, kurus nenosedz dotais logs, taču tie

ir daudz sarežģītāki pēc darbības principiem.

4.2.7. Taisnstūru ievietošana

Ievietojot telpā jaunus taisnstūrus, iespējams saskarties ar divām situācijām: 1)

ievietojot taisnstūri nav nepieciešama četrkoka dalīšana, un tiek nodrošināta pieeja

kvadrantam atbilstošajās lapas atjaunināšanai; 2) nepieciešama četrkoka virsotnes dalīšana.

Otrajā gadījumā B+koka atbilstošais ieraksts jādzēš, un jāveido četri jauni ieraksti (katram

jaunajam kvadrantam).

4 .3 . Z -KĀ RTO Š AN A S K OKS

Atšķirībā no visām citām telpisko datu pieejas metodēm, kas tika aprakstītas iepriekš,

struktūra - Z-kārtošanas koks par objektu aproksimizāciju neizmanto to mazākos

robežtaisnstūrus mbb. Tā vietā katrs objekts tiek dekomponēts līdz četrkokam ar dziļumu d,

un tiek indeksēta četrkoka virsotņu kopa, kas aproksimē šī objekta ģeometriju. Virsotņu

iezīmes, kuru izmērs ir mazāks vai vienāds ar d, tiek ievietotas B+kokā.

Algoritma pamatā ir sekojošas darbības: pie dotas objekta ģeometrijas o un kvadranta

q tiek pārbaudīts, vai o pārklāj visas pilna četrkoka ar sakni q lapas. Ja tas tā ir, q tiek

atgriezts kā rezultējošā kopa. Pretējā gadījumā o tiek dekomponēts tik daudzos gabalos (≤4),

cik apakškvadranti pārklāj o, un šis pats process rekursīvi tiek pielietots katram gabalam.

Rekursija tiek apturēta, kad ir sasniegts maksimālais dziļums d. Šinī situācijā tiek uzskatīts,

ka kvadrants ir minimāls.

Attēls nr. 29 parāda objekta dekompozīciju un aproksimizāciju. Objekts ir kvadrantu

{023, 03, 103, 12, 201, 210, 211, 300, 301, 302} kopa.

39

Page 40: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 29 – Objekta dekompozīcija

Visi kvadranti, izņemot kvadrantus 03 un 12, ir minimāli ar dziļumu d=3. Kvadranti 03 un 12

ir ar dziļumu d=2.

Savukārt attēlā nr. 30 parādīta 8 objektu kopas dekompozīcija. Četrkoka maksimālais

dziļums noteikts d=3. Tiek iegūta ierakstu [l, oid] kopa, kur l ir šūnas (kvadranta) iezīme un

oid ir objekta identifikators, kura aproksimizācija vai nu ietver, vai pārklāj šūnu ar iezīmi l.

Attēls 30 – Objektu kopa, dekomponēta ar z-kārtošanas algoritmu

Tādā veidā objekts a tiek uzdots ar sekojošiem ierakstiem: {[201, a], [203, a], [21, a], [230,

a], [231, a]}

Acīmredzami arī šinī struktūrā, līdzīgi kā iepriekš aplūkotajā lineārajā četrkokā tiek

ģenerēti dublikāti. Objektu oid ir atspoguļoti tik daudzos ierakstos, cik šūnu satur tā

aproksimizācija. Tāpat var būt arī situācijas, kad vienu šūnu pārklāj vairāki objekti. Tādā

gadījumā ir vairāki ieraksti ar vienādiem l, bet dažādiem oid. Piemēram kalpo objekti e un h

40

Page 41: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

30. attēlā, kuri aizņem vienu un to pašu šūnu – 303. Tāpat jāpiemin, ka daži objekti var

pārklāt vienu un to pašu šūnu, taču dažādos dekompozīcijas līmeņos (objekti a un g).

Ieraksti tiek ievietoti B+kokā, par atslēgu izmantojot savu l. Attēlā nr. 31 parādīs

B+koks, kas iegūts no attēlā nr.30 redzamās datu kopas. Objektu oid ir tiek glabāti B+koka

lapu līmenī.

Attēls 31 – z-kārtošanas koks

Punkta un loga algoritmi ir ļoti līdzīgi tiem, kas tika izmantoti lineārajā četrkokā.

Pēdējā solī nepieciešams vienīgi saglabāt to ierakstu oid, kurus pārklāj loga arguments. Ja

apskata loga W, attēlota attēlā nr. 30, vaicājuma izpildi, tad minimālie kvadranti, kas satur

W.zr un W.da punktus, ir attiecīgi 012 un 121. Līdz ar to tiek iegūti ieraksti [01, c] un [121,

f]. Diapazona vaicājums B+kokā pārskata pirmās trīs koka lapas, tomēr tiek lasīti arī ieraksti,

kas nemaz neatbilst vaicājumam, taču atrodas norādītajā diapazonā, piemēram, [02, d].

Ievades/izvades operāciju skaits ir atkarīgs no loga lieluma. Pirmajā solī pie B+koka

nepieciešams griezties divas reizes (2d I/O operācijas, kur d – B+koka dziļums). Solī 2, lai

piekļūtu vaicājuma intervāla apakšējās robežas koka lapai, nepieciešamas 2d griešanās pie

diska plus vēl tik daudz I/O operāciju, cik B+koka lapu jāpārskata.

Salīdzinot lineāro četrkoku ar z-kārtošanas koku, pēdējā B-koka dziļums, un līdz ar to

arī nepieciešamo I/O operāciju skaits, ir lielāks, jo ierakstu ir tik daudz, cik ir šūnu visu

objektu dekompozīcijā. Jo smalkāks ir režģis, jo precīzāka ir objektu aproksimizācija, taču

līdz ar to B+kokā ir jāindeksē vairāk ierakstu. Lineārajā četrkokā, savukārt, B+koka ierakstu

skaits ir daudz mazāks, jo ir vienāds ar četrkoka kvadrantu skaitu, tomēr nepieciešamas

papildus griešanās pie diska loga vaicājumu izpildē.

41

Page 42: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

4.3.1. Z-kārtošanas rastra variants ar dublēšanos

Z-kārtošanas rastra, jeb mozaīkas variants paredz objekta dekomponēšanu

elementāršūnās. Objekta aproksimizācija ir minimālu šūnu, kas pārklāj vai satur objektu,

kopa. Citiem vārdiem sakot, šo šūnu kopa ir objekta rastra attēlojums, kā parādīts attēlā nr.

32.

Attēls 32 – Objektu kopa ar rastra dekompozīciju

Objekts d šeit tiek aprakstīts ar 4 šūnām, kamēr klasiskajā z-kārtošanā (att.nr.30) to var

izdarīt ar vienu. Visu šūnu iezīmes ir viena izmēra, vienādas ar d (šinī gadījumā d = 3). Šinī

gadījumā dublēšanās ir vēl lielāka, un ierakstu skaits B+kokā ir vēl lielāks nekā klasiskajā

Attēls 33 – Z-rastra koks

z-kārtošanas kokā, tomēr punktu un logu vaicājumu algoritmu izpilde ir daudz vienkāršāka.

Tā kā visas šūnas ir minimālas, nav nepieciešams manuāli veidot funkciju, kas nosaka šūnas

iezīmi. Šim nolūkam var pielietot jau eksistējošo B+koka kodu, kas ir ietverts katrā DBVS.

Z-kārtošanas rastra varianta B+koks redzams attēlā nr. 33.

42

Page 43: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

4.3.2. Z-kārtošana bez dublēšanās

Šis ir vēl viens z-kārtošanas variants, taču šeit netiek pieļauta objektu dublēšanās

vairākos ierakstos. Objekts netiek piesaistīts visiem kvadrantiem, kuri to pārklāj, bet gan

mazākajam kvadrantam, kas to ietver.

Attēlā nr.34 objekts b tiek piesaistīts visai telpai ar iezīmi (_), jo nav cita tāda

kvadranta, kas pilnībā ietvertu šo objektu. Objekti c, d un g ir attiecīgi piesaistīti kvadrantiem

0, 02 un 211. Pati struktūra ir vienkāršs z-kārtošanas koka variants. Ar katru četrkoka

virsotni, neatkarīgi no tā, vai tā ir iekšēja, vai lapu līmeņa, tiek saistīts objektu, kurus ietver

dotais kvadrants, saraksts. Līdzīgi kā iepriekš z-kārtošanas kokā, katru indeksēto objektu

apraksta ieraksts [l, oid], kur l – kvadranta, kas ietver objektu, iezīme, bet oid – objekta

unikāls identifikācijas numurs. Tāpat šie ieraksti tiek glabāti B+kokā, izmantojot kvadrantu

iezīmes par atslēgu (skat. attēlu nr.34).

Attēls 34 – Z-kārtošana bez atkārtojumiem

Pretēji tradicionālajam z-kārtošanas kokam, šeit katru objektu apraksta tikai viens ieraksts,

līdz ar to rezultējošais B+koks veidojas ievērojami seklāks un mazāks.

Loga vaicājuma izpildē tiek pārmeklēti visi kvadranti, kuru prefikss ir tā kvadranta

iezīme, kurš ietver loga argumentu. Atsaucoties uz 34. attēlu, tanī redzamais logs W tiek

piesaistīts kvadrantam 0. Vispirms tiek apmeklēta B+koka virsotne, kura satur ierakstu [_, b].

Tā kā kvadrants ‘_’ (visa telpa) satur objektu b, tas tiek pievienots rezultējošajai kopai. Tāpat

tiek atrasts ieraksts [0, c]. Meklēšana B+kokā tiek veikta tik ilgi, kamēr tiek atrasts ieraksts,

kura iezīmes prefikss vairs nav 0. Tādā veidā meklēšana tiek pārtraukta pie iezīmes 1. Līdz

šim tika atrasts arī d objekta ieraksts, kas arī tiek pievienots rezultējošajai kopai, kas

meklēšanas beigās ir sekojoša: {b, c, d}. Tālāk šī kopa attīrīšanas solī tiek apstrādāta,

43

Page 44: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

pārbaudot patieso ģeometriju atbilstību loga argumentam. Jāpiemin, ka šinī solī tiks

pārbaudīta arī objekta b ģeometrija, kaut arī tas ir pilnīgi lieki.

Šīs metodes neapšaubāma priekšrocība ir tā, ka netiek ģenerēti objektu dublikāti, kas

ļauj būtiski samazināt ierakstu skaitu un līdz ar to arī indeksa izmēru, taču tās trūkums ir

objekta un tam piesaistītā kvadranta izmēra attiecība, kas var būt maza. Kā tika rādīts

gadījumā ar objektu b, kura kvadrants ir tuvu koka saknei, tas tiek atgriezts kā lieks rezultāts

visos vaicājumos, neatkarīgi no punkta vai loga argumentiem. Šī iemesla dēļ attīrīšanas solī

nepieciešams lieki tērēt resursus šādu objektu atfiltrēšanai.

B+koka izmantošana divdimensionālas telpas pārveidošanā par viendimensionālu ļauj

efektīvi izmantot atmiņu pat sliktākajos objektu izvietojuma apstākļos. Šo struktūru izmanto

jebkura daudzmaz nopietna DBVS, un šādā situācijā nav pārāk grūti šādu sistēmu pārveidot

tā, lai tā var strādāt ar telpiskajiem datiem.

4 .4 . UZ TELP U BA LS TĪ TO S TRU KTŪ R U S A LĪD ZI NĀ JU MS

Lai salīdzinātu šo visu pieminēto telpisko datu pieejas metožu, uzbūvi, darbību un

rezultātus, tika izstrādāta speciāla 2D objektu telpa, kurā tiks pielietotas apskatītās metodes.

Telpa satur 11 objektus ar dažādām ģeometrijām un izvietojumu telpā (attēls nr. 35).

Piemēros tiks uzskatīts, ka viena diska lapa spēj saturēt 4 ierakstus.

Attēls 35 – 2D telpa ar 11 objektiem

Lielākā daļa telpisko datu pieejas metožu paredzētas darbam ar objektu aproksimizācijām –

mazākajiem robežtaisnstūriem mbb, tāpēc arī šai objektu kopai tika atrasti mbb (att. 36).

44

Page 45: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 36 – Objektu aproksimizācija uz mbb

Indeksējot iegūtos taisnstūrus ar fiksētā režģa palīdzību, telpa tiek sadalīta 4×4

vienāda izmēra šūnās. Režģa direktorija šūnas satur rādītājus uz attiecīgajām diska lapām,

kur glabājas šūnā esošo objektu ieraksti. Struktūra ar telpas dalījumu, direktoriju un

atbilstošajām diska lapām simboliski parādīta attēlā nr.37, kur attēla labajā pusē un apakšdaļā

attēlota direktorija un izmantoto diska lapu struktūra.

p1 p2 p3 p4p5 p6 p7 p8p9 p10 p11 p12p13 p14 p15 p16

p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p161   5,6 6 1,2 3 4,5,8 7,8 3,9 3,9,10 4,5,8 8 9 9,10 11 8

Attēls 37 – Objektu indeksēšana ar fiksēto režģi

Šinī gadījumā nevienā no diska lapām nenotiek pārpilde, jo maksimālā lapas ietilpība M=4

nav pārsniegta, taču pat šādā vienkāršā piemērā skaidri saskatāms šīs struktūras viens no

galvenajiem trūkumiem – objektu ierakstu dublēšanās vairākās diska lapās. Tāpat

novērojams, ka, piemēram, diska lapa p2 ir piesaistīta šūnai, kura nemaz nesatur objektus, un

vairākas diska lapas satur tikai pa vienam ierakstam, līdz ar to no resursu saimniecības

viedokļa šī struktūra ir neracionāla.

45

Page 46: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Kā jau tika minēts režģa fails labo dažus no šiem trūkumiem. Attēlā nr. 38 redzamā

režģa faila struktūra acīmredzami ir taupīgāka ar resursiem, jo izmanto tikai 5 diska lapas, 16

vietā, kas jau ir labs rādītājs. Tas tiek panākts uz telpas dalījuma stratēģijas rēķina, kas paredz

sīkāku dalīšanu tajos apgabalos, kur objektu ir vairāk, līdz ar to ietaupot resursus uz

apgabaliem, kur objektu blīvums ir zemāks. Taču arī šīs struktūras pielietojums nerisina

dublikātu problēmu, kuru daudzums, palielinoties objektu skaitam, var tikai pieaugt.

p1

p4

p1

p2p5 p3

p1 p2 p3 p4 p51,2,3 4,5,7,8 4,8,11 5,6 3,9,10

Direktorijs un diska lapas

Attēls nr. 38 – Režģa fails

Vēl viena apskatīta struktūra ir lineārais četrkoks, kas paredz ierakstu [mbb, oid]

sasaistīšanu ar četrkoka lapu l un glabāšanu diska lapā p. Kā indekss tiek izmantots B+koks,

kas glabā ierakstu pārus (l, p), par atslēgu izmantojot l. Attēlā nr. 39 parādīts telpas dalījums

kvadrantos un atbilstošais četrkoks ar iezīmētām virsotnēm (pēc z-kārtošanas principa).

Tāpat attēla apakšējā daļā redzams atbilstošais B+koks, kas sasaista četrkoka lapas ar diska

lapām. Ar raustītu līniju attēlotas diska lapas, kurās glabājas attiecīgo objektu ieraksti. Arī

šinī struktūrā novērojama tā pati sliktā īpašība, ka notiek objektu dublēšanās vairākās diska

lapās, kas būtībā ir resursu izšķērdība. Lineārais četrkoks savā ziņā ir līdzīgs režģa failam, jo

arī šeit telpa tiek dalīta sīkākos kvadrantos tikai tajos apgabalos, kur objektu sablīvējums ir

lielāks nekā to pieļauj diska lapas ietilpība. Tāpēc, piemēram, kvadrants 1 ir dalīts sīkākos

kvadrantos, jo konkrētajā gadījumā diska lapa nevar glabāt 5 ierakstus. Kā redzams pēc

attēla, šāds risinājums dotās objektu kopas glabāšanai izmanto 7 diska lapas. Taču struktūras 46

Page 47: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

stiprā puse ir indeksēšana un vaicājumu izpilde. Indeksēšanā izmantota B+koka struktūra,

kas nodrošina to, ka meklēšanas laiks kokā būs logaritmisks un atkarīgs vienīgi no objektu

kopas lieluma.

Lineārais četrkoks

Attēls 39 – Lineārais četrkoks un tā lapu indeksēšana ar B+koka palīdzību.

Cits paņēmiens objektu kopas glabāšanā un indeksēšanā ir z-kārtošanas koks, kura īpatnība ir tā, ka

objekti netiek aproksimēti līdz to mbb, bet gan dekomponēti šūnu kopā. Līdz ar to darbs notiek ar pašām

objektu ģeometrijām, un minētā piemēra objektu dekompozīcija apskatāma attēlā nr. 40.

1 = {000, 002, 020, 022}2 = {02}3 = {023, 032, 201, 210}4 = {122, 123, 300, 301}5 = {103, 12, 300, 301}6 = {10, 11}7 = {13}8 = {123, 132, 301, 303, 310, 312, 321, 330}9 = {202, 22, 230, 232, 233}10 = { 212, 213, 23}11 = {32}

Attēls 40 – Objektu z-kārtošanas dekompozīcija un koks

47

Page 48: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Līdz ar to tiek veidota ierakstu [l, oid] kopa, kur l ir šūnas iezīme, kuru pārklāj

objekts ar identifikatoru oid. Tādā veidā, piemēram, objekts 1 tiek aprakstīts šādi:

{[000,1], [002,1], [020,1], [022,1]}.

Acīmredzami arī šeit novērojama dublēšanās, jo objekta oid parādās tik daudzos ierakstos,

cik šūnu ir tā aproksimizācijā.

Aprakstot objektus ar parasto z-kārtošanas koku, tika izmantoti dažādu lielumu

kvadranti (skaidrojums nodaļā „Z-kārtošanas koks”). Piemēram, kā redzams attēlā nr. 40,

vienu objektu 5 apraksta gan tādi kvadranti kā 103, 300, 301, kas ir trešā līmeņa kvadranti,

gan kvadrants 12, kurš ir otrā līmeņa kvadrants. Z-kārtošanas koka rastra variantā ar

dublēšanos objekts tiek dekomponēts līdz sīkākajām šūnām, kuras nosaka telpas dalījums

kvadrantos. Tātad, ja atbilstošajam četrkokam dziļums d=3, tad telpa tiks sadalīta 23×23

kvadrantos un katrs šis kvadrants būs sīkākā šūna. Dekomponējot tos pašus objektus ar z-

kārtošanas rastra variantu, dublēšanās ir vēl lielāka nekā parastajā z-kārtošanas kokā, taču

tiek iegūta vienkāršība (nav jārūpējas par blakus kvadrantos esošu šūnu grupēšanu lielākos

kvadrantos, u.t.t.), kuras dēļ nelielos projektos var tikt izmantots tieši šis objektu glabāšanas

un indeksēšanas paņēmiens. Attēlā nr. 41 attēlota objektu kopas rastra dekompozīcija, kur

katru objektu acīmredzami apraksta vairāk šūnu nekā parastajā z-kārtošanas kokā. Ja visu

doto objektu kopu ar z-kārtošanas koka palīdzību apraksta 37 ieraksti, tad rastra

dekompozīcijā tiek veidoti 61 ieraksti, kas ir par 65% vairāk. Šis skaitlis ir liels pat šādai

nelielai objektu telpai. Ja jāapraksta liela objektu kopa, kur objektu ģeometrijas ir pietiekami

sarežģītas, šīs metodes izmantošana novedīs pie milzīga datu dublēšanās koeficienta, kas

neapšaubāmi prasīs lieku resursu izmantošanu un sistēma būs neefektīva.

Arī pats z-kārtošanas rastra koks, neapšaubāmi ir lielāks un datu glabāšanai

nepieciešamas vismaz 16 diska lapas, kamēr parastajam z-kārtošanas kokam tikai 10.

Jāpiezīmē, ka konkrētajos piemēros disku lapas tiek piepildītas pilnas. Reālajās situācijās

nepieciešamo diska lapu daudzums būtu lielāks, jo objektu ievietošanas procesā tās ne

vienmēr tiek piepildītas pilnas.

Kā jau tika minēts, vēl viens z-kārtošanas koka variants – „Z-kārtošanas koks bez

dublēšanās” risina šo problēmu, kas raksturīga lineārajām struktūrām – objektu dublēšanos

vairākos ierakstos. Objekts tiek piesaistīts mazākajam kvadrantam, kas to pilnībā ietver.

Tātad – katram objektam atbilst viens kvadrants, un līdz ar to arī tas tiek aprakstīts ar vienu

ierakstu. Attēls nr. 42 uzskatāmi parāda, ka gan ierakstu kopa ir stipri mazāka salīdzinājumā

ar iepriekš apskatītajām z-kārtošanas struktūrām, gan pats indeksa koks. 48

Page 49: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

1 = {000, 002, 020, 022}2 = {020, 021, 023, 024}3 = {023, 032, 201, 210}4 = {122, 123, 300, 301}5 = {103, 120, 121, 122, 123, 300, 301}6 = {100, 101, 102, 103, 110, 111, 112, 113}7 = {130, 131, 132, 133}8 = {123, 132, 301, 303, 310, 312, 321, 330}9 = {202, 220, 221, 222, 223, 230, 232, 233}10 = {212, 213, 230, 231, 232, 233}11 = {320, 321, 322, 323}

Attēls 42 – Objektu rastra dekompozīcija

Z-kārtošana bez dublēšanās ļauj samazināt izmantojamo diska lapu skaitu līdz pat 3,

kas salīdzinājumā ar iepriekšējām struktūrām nenoliedzami ir ļoti labs rādītājs. Taču maksa

par metodes dotajām priekšrocībām ir skaidri redzama piemērā (att. nr. 42). Dotajā objektu

kopā veseliem četriem objektiem, kas ir gandrīz trešā daļa no kopējā objektu skaita, kā

kvadrants tiek piesaistīta visa telpa, jo nav neviena mazāka kvadranta, kas pilnīgi ietvertu

dotos objektus. Pēc maniem novērojumiem un loģiski spriežot, šādi objektu apraksti rodas, ja

tie atrodas uz telpas galvenās horizontālās vai vertikālās līnijas. Līdz ar to tos nevar ietvert

neviens cits kvadrants kā tikai augstākā līmeņa kvadrants – pati telpa.

1 = {0}2 = {02}3 = {_}4 = {_}5 = {_}6 = {1}

7 = {13}8 = {_}9 = {2}10 = {2}11 = {32}

Attēls 42 – Z-kārtošanas koks bez dublēšanās

49

Page 50: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Šādu objektu klātbūtne iespaido vaicājumu izpildi. Jebkurā vaicājumā šie objekti, kuri

piesaistīti visai telpai arī tiks atgriezti kā rezultātu kopa, un attīrīšanas solī būs jāpatērē lieki

resursi, lai atdalītu šādus objektus no patiešām rezultējošajiem.

50

Page 51: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

5. UZ DATIEM ORIENTĒTAS STRUKTŪRAS

Telpisko datu pieejas metodes no R-koku grupas pieder pie metodēm, kas orientētas

uz datiem. To struktūra pati piemērojas taisnstūru izvietojumam plaknē. Līdzīgi B-kokam, arī

R-koku metodes balstās uz hierarhisku, balansētu struktūru, kurā katra koka virsotne tiek

saistīta ar diska lapu. Tomēr, ja B-koki tiek veidoti no tā saucamajām atslēgām, kas ir

sakārtotas noteiktā kārtībā, tad R-koki organizē taisnstūrus pēc ietvēruma, kur viens

taisnstūris var ietvert citus. Katra virsotne tiek saistīta ar taisnstūri, sauktu par direktorija

taisnstūri (dr), kas pats ir mazākais robežtaisnstūris pēcteču virsotņu taisnstūriem.

Lai piekļūtu pie taisnstūra indeksētā objektu kopā, tiek meklēts ceļš no R-koka saknes

līdz atbilstošai lapu līmeņa virsotnei, pārbaudot katru direktorija taisnstūri, vai tas nesatur vai

nepārklāj šo doto taisnstūri. Tāpat kā B-kokam, arī R-kokam dziļums d un nepieciešamo I/O

operāciju skaits meklēšanā ir logaritmisks pret indeksēto objektu skaitu. Tāpat R-koka

struktūra atbilst abām prasībām pret telpisko datu pieejas metodēm. Oriģinālais R-koks

parāda pamata īpašības, kas piemīt šai struktūrai. Taču ir izstrādāti arī citi R-koku varianti –

tādi kā R*koks un R+koks, kas labo parastā R-koka nepilnības.

5 .1 . R-K OKS

R-koks ir dziļumā balansēts koks, kurā katra virsotne atbilst diska lapai. Pēdējā

līmeņa virsotnes satur ierakstu (mbb, oid) masīvu. mbb tiek dots formā (x1, y1,... xd, yd), kur d

ir telpas dimensiju skaits, tātad šī struktūra spēj strādāt arī ar vairāk par 2 dimensijām. Tomēr

šī darba ietvaros tiek aplūkots R-koka pielietojums 2D plaknei. Koka virsotnes, kuras

neatrodas pēdējā, jeb lapu līmenī, satur virsotņu ierakstu masīvu. R-koka struktūrai ir

sekojošas īpašības:

Visām virsotnēm kokā (izņemot sākuma virsotni), ierakstu skaits ir robežās starp

m un M, kur m pieder intervālam [0, M/2];

Katram ierakstam (dr, nodeid) kādā no virsotnēm N, kas nav lapu līmenī, dr ir

direktorija taisnstūris pēcteča virsotnei N, kuras diska lapas adrese ir nodeid;

Katram lapu līmeņa virsotnes ierakstam (mbb, oid), mbb ir objekta, kas tiek

glabāts adresē oid, telpiskās komponentes mazākais robežtaisnstūris;

Ja koka saknes virsotne nav vienlaicīgi arī lapa, tanī ir vismaz divi ieraksti;

51

Page 52: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Visas lapu virsotnes atrodas vienā līmenī.

Attēlā nr. 43 parādīts R-koks ar m=2 un M=4. Indeksētā objektu kopa C satur 14

objektus. Direktoriju taisnstūri attēlā apzīmēti ar punktotu līniju.

Attēls 43 – R-koks

Īpašības, kas tika minētas, paliek spēkā arī pie dinamiskas objektu ievietošanas un

dzēšanas. Tāpat jāpiezīmē, ka struktūra arī pie nevienmērīga objektu izvietojuma saglabā

koka balansu. Blīvs objektu izvietojums kādā telpas reģionā noved pie liela skaita

blakusesošu koka lapu izveidošanas, jo šī struktūra būtiski atšķiras no četrkoka, kur objektu

sablīvējuma gadījumā telpa tiek dalīta sīkākos kvadrantos. Četrkokā pie blīva objektu

izvietojuma noteiktā telpas apgabalā var izveidoties vairāki ļoti gari zari, tai pašā laikā citi

var būt pavisam īsi. Tādā veidā četrkoka dziļumu nosaka blīvākais telpas apgabals.

Attēlā 44.b attēloti R-koka direktoriju taisnstūri reālai ģeogrāfiskai kartei, kas attēlo

Konektikutas štata kartes hidrogrāfijas slāni.

Attēls 44 – Konektikutas hidrogrāfijas indeksēšana : TIGER dati (a) un R-koks (lapu līmenī) (b)

M – maksimālais ierakstu skaits virsotnē ir atkarīgs no ieraksta izmēra Izmers(E) un

diska lapas ietilpības Izmers(P). Tādā veidā M = (Izmers(P)/Izmers(E)). Turklāt M var

atšķirties lapu līmeņa un ne-lapu līmeņa virsotnēm, jo ieraksta izmērs atkarīgs no nodeid (ne-

lapu virsotnēm) oid (lapu virsotnēm) izmēriem. oid – objekta adrese diska lapā parasti ir

52

Page 53: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

garāka par nodeid – diska lapas adresi. Minimālā ierakstu skaita m virsotnē noteikšana starp

0 un M/2 ir atkarīga no izvēlētās virsotņu dalīšanas stratēģijas.

Pie dota M un m, R-koks ar dziļumu d spēj indeksēt vismaz md+1 objektus un ne

vairāk par Md+1 objektiem. Tieši pretēji – R-koka dziļums, kas indeksē N objektu kopu ir ne

lielāks par logm (N) -1 un vismaz logm(N) -1. Precīza vērtība atkarīga no diska lapu

izlietojuma.

Lai parādītu R-koka laikietilpību, tiek pieņemts, ka diska lapas izmērs ir 4KB,

ieraksta izmērs r 20 baiti (16 baiti priekš mbb, 4 baiti priekš oid) un m ir uzstādīts 40% no

diska lapas ietilpības. Tādējādi M =204 un m=81. R-koks ar dziļumu 1 spēj indeksēt vismaz

6561 objektus, savukārt ar dziļumu 2 – objektu skaitu intervālā [531 441, 8 489 664]. Tādā

veidā miljons objektu kolekcijā nepieciešamas 3 griešanās pie diska, lai pārmeklētu koku un

atrastu nepieciešamo objektu. Šis piemērs parāda, ka ar šo struktūru pat ļoti lielās objektu

kopās nepieciešamas tikai dažas griešanās pie diska objekta atrašanai.

Pretēji telpas dalīšanas metodēm, kuras tika apskatītas iepriekš, objekts tiek

atspoguļots tikai vienā no koka lapām – tātad nav liekas objektu ierakstu dublēšanas.

Taisnstūri R-kokā neapraksta visu telpu, jo tos apgabalus, kur objekti nav izvietoti, nav

vajadzības aprakstīt. R-koka aprakstītie taisnstūri var arī pārklāties. Tā piemēram attēlā nr.

43, taisnstūri b, c, un d daļēji pārklājas.

5.1.1. Meklēšana R-kokos

Tāpat kā visām citām telpisko datu piekļuves metodēm arī R-kokam nav jēgas bez

praktiska tā pielietojuma. Līdzīgi kā iepriekš, arī šinī nodaļā tiks apskatīti vaicājumi, kā arī

svarīgākie algoritmi darbā ar R-kokiem.

Punkta vaicājuma R-kokā izpildi var sadalīt divos soļos. Pirmajā solī tiek apmeklētas

visas koka saknes pēcteču virsotnes, kuru direktorija taisnstūri satur punktu P, kas ir

vaicājuma arguments. Tā kā direktoriju taisnstūri var daļēji nosegt viens otru, var gadīties, ka

punkta arguments atrodas vairāku taisnstūru pārklāšanās apgabalā. Tādēļ jāapmeklē visi

apakškoki, kuri sākas šo taisnstūru virsotnēs. Process tiek atkārtots katrā līmenī, kamēr tiek

sasniegts koka lapu līmenis. Apmeklējot katru virsotni N, iespējamas divas situācijas:

Dotajā virsotnē neviens taisnstūris nesatur punktu P kā rezultātā pārmeklēšana

šinī zarā tiek pārtraukta. Šāda situācijā var nokļūt arī tad, ja P atrodas

attiecīgās virsotnes direktorija taisnstūrī.

53

Page 54: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Punktu P satur viens vai vairāki taisnstūri. Jāapmeklē visi attiecīgie

apakškoki.

Tādējādi, atšķirībā no telpas orientētām pieejas metodēm (režģa fails, lineārās

struktūras), R-kokā var tikt pārmeklēti vairāki zari. Vaicājuma izpildes otrajā solī tiek veikta

pārbaude pirmajā solī iegūtajai koka lapu kopai. Kā vaicājuma rezultāti tiek atgriezti tie

ieraksti, kuru mbb satur punktu P. Vaicājuma izpildes algoritmā tiek realizēta rekursīva koka

pārmeklēšana dziļumā. Aprakstītais algoritms ir vienkāršots no atmiņas vadības viedokļa.

Nav racionāli glabāt atmiņā visu lapu kopu. Reālās situācijās tā var izveidoties ļoti liela, tādā

veidā nevajadzīgi aizpildot atmiņu. Algoritma variantā, kas tiek izmantots praktiski, tiek

izmantota vienas diska lapas apskates stratēģija (one-page-at-a-time).

Attēls 45 – Punkta vaicājuma izpilde R-kokā

Attēlā nr. 45 parādīts vaicājuma izpildes piemērs, ņemot par argumentu punktu P,

kurš pieder objektiem 8 un 12. Vaicājuma izpildes laikā tiek apmeklētas 3 koka virsotnes –

R, c un d. Sākotnēji tiek noskaidrots, ka punkts atrodas direktoriju taisnstūros c un d, kas

atrodas lapu līmenī. Tātad tiek iegūta lapu kopa {c, d}, kur katras lapas ierakstiem tiek veikta

mbb pārbaude. Rezultātā tiek noskaidrots, ka punktu P satur objektu 8 un 12 minimālie

robežtaisnstūri.

Ja šajā piemērā būtu situācija, ka arguments P sakristu ar objekta 8 mbb dienvid-

austrumu stūri, būtu jāpārmeklē arī zars b, kas šinī gadījumā ir tikai viena virsotne.

Ja punkts P atrodas tikai vienā taisnstūrī katrā līmenī, punkta vaicājums prasa d

griešanās pie diska, kur d ir koka dziļums, logaritmisks pret indeksēto taisnstūru skaitu. Pat ja

tā notiek, no racionalitātes viedokļa būtu jāpārmeklē pēc iespējas mazāks skaits koka zaru,

saglabājot I/O operāciju skaitu logaritmisku. Diemžēl ir situācijas, kad šis skaits vairs nav

logaritmisks. Sliktākajā gadījumā, telpas taisnstūri var būt izvietoti tā, ka katrs no tiem satur

54

Page 55: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

punktu P un ir jāpārmeklē viss koks. Tomēr neskatoties uz šādām situācijām, R-koks praksē

lielākoties ir efektīvs.

Fakts, ka apmeklējamo virsotņu skaits ir cieši saistīts ar direktoriju taisnstūru

pārklāšanos, sekmēja daudzu citu R-koka variantu izstrādi, kas cenšas tikt galā ar šo

problēmu.

5.1.2. Objektu ievietošana un dzēšana R-kokā

Ievietojot objektu R-kokā, vispirms tas tiek pārmeklēts no augšas uz leju, sākot no

saknes virsotnes. Katrā līmenī vai nu tiek atrasta virsotne, kuras direktorija taisnstūris ietver

ievietojamā objekta mbb, un tiek turpināta pārmeklēšana pa šo zaru, vai arī tādas virsotnes,

kas pilnībā ietvertu mbb nav. Šādā gadījumā tiek izvēlēta virsotne, kuras nepieciešamais dr

palielinājums būtu vismazākais (funkcija ChooseSubtree). Šis process tiek atkārtots, kamēr

netiek sasniegts lapu līmenis.

Ja lapas virsotne nav pilna, diska lapā, kas ir saistīta ar šo koka lapu, tiek ievietots

jauns ieraksts [mbb, oid]. Ja lapas direktorija taisnstūri nepieciešams palielināt, arī atbilstošās

priekšteča virsotnes dr ir jāatjaunina (funkcija AdjustEntry). No tā var secināt, ka viena dr

palielināšana var ietekmēt arī citus dr, un sliktākajā gadījumā jāpārveido visi dr attiecīgajā

ceļā līdz pat saknei (funkcija AdjustPath).

Ja lapa l, kurā jāievieto objekts, ir pilna, notiek dalīšana (split). Tiek izveidota jauna

lapa l’ un M+1 ieraksti tiek izkārtoti pa koka lapām l un l’. Dalīšanas algoritms tiks apskatīts

vēlāk.

Kad dalīšana ir pabeigta, atliek atjaunināt vecās lapas l ierakstu priekšteča virsotnē f

un ievietot tajā jaunu ierakstu, kas atbilst lapai l’. Ja jaunā ieraksta ievietošanas rezultātā pats

f ir pilns, tiek pielietots tas pats dalīšanas mehānisms. Sliktākajā gadījumā dalīšanas process

turpinās, kamēr netiek sasniegta koka sakne (funkcija SplitAndAdjust). Gadījumā, ja tiek

dalīta sakne, koka dziļums palielinās par 1.

Šis process tiek attēlots, ievietojot divus jaunus objektus 43. attēlā redzamajā kokā.

Piemērā pieņemts, ka M=4. Objekts 15 (attēlā nr. 46) tiek ievietots koka lapā d. Virsotnes d

direktorija taisnstūris ir jāpalielina, lai ietvertu šo jauno objektu, tāpat jālabo arī d ieraksts

saknes virsotnē. Objekts 16 (attēls nr. 47) jāievieto koka lapā b, bet tā kā b jau satur četrus

ierakstus {3, 4, 7,10} (M=4), notiek virsotnes pārpilde, un b tiek dalīts. Tiek izveidota jauna

lapa e, un tagad jau pieci ieraksti tiek izkārtoti pa lapām b un e. Ieraksts 10 tiek pārvietots uz

e, kur jau ir ievietots jaunais ieraksts 16. Ieraksti 3,4 un 7 paliek koka lapā b.

55

Page 56: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Tagad jauns ieraksts jāievieto arī b priekšteča virsotnē R. Tā kā arī R virsotnei jau ir 4

pēcteči, tā ir jādala. Šis process ir līdzīgs aprakstītajam par b virsotnes dalīšanu.

Attēls 46 – Objekta 15 ievietošana R-kokā

Tā rezultātā tiek izveidota virsotne f. Virsotnes a un b paliek par R pēctečiem, savukārt e, c,

un d tiek pievienotas virsotnei f. Visbeidzot tiek izveidota jauna koka sakne R’, kurai ir divi

pēcteči R un f.

Attēls 47 – Objekta 16 ievietošana R-kokā

Objektu ievietošanas R-kokā algoritms izklāstīts pseidokodā.

A L G O R I T M SInsert(e:LapasIeraksts) begin

// inicializē meklēšanu ar koka sakni virsotne = sakne; //ceļa izvēle while (virsotne nav lapa) do virsotne=ChooseSubtree(virsotne, e) end while //Ievieto lapā ierakstu InsertInLeaf(virsotne, e); if (virsotne pārpildīta) then SplitAndAdjust(virsotne) else AdjustPath(virsotne); end if

end

56

Page 57: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Procedūra ChooseSubtree(virsotne, e), kas tiek izsaukta augstāk redzamajā algoritmā,

no virsotnes izvēlas ierakstu ce tā, ka ce.dr vai nu satur e.mbb, vai minimāli jāpalielina tā, lai

to ietvertu. Ja šādi ieraksti ir vairāki, tiek izvēlēts tas, kuram ir mazākais laukums.

Procedūra AdjustPath(virsotne:Virsotne) maina ierakstu vērtības visās tajās virsotnēs

ceļā no virsotnes līdz koka saknei, kur jaunā objekta ievietošanas dēļ ir jāmaina dr lielums.

Arī šī procedūra ir rekursīva, un savu darbību tā pārtrauc vai nu kad dr lielums patreizējai

virsotnei nav jāmaina, vai arī kad ir sasniegta koka sakne.

A L G O R I T M SAdjustPath(virsotne:Virsotne) begin if (virsotne ir sakne) then end process else //tiek noteikta priekšteča virsotne priekštecis = GetPriekštecis(virsotne); //Labo priekšteča virsotnes ierakstu if (AdjustEntry(priekštecis, [virsotne.mbb, virsotne.id])) then //Ieraksts ticis mainīts: jālabo ceļš uz priekšteci

AdjustPath(priekštecis); end if end if end.

AdjustEntry(virsotne, pēcteča-ieraksts) ir Būla tipa funkcija, kas sameklē ierakstu e

atbilstošu pēcteča-ierakstam.id virsotnē un salīdzina e.mbb ar pēcteča-ieraksts.mbb. Ja

pēcteča dr izmaiņu dēļ jāatjaunina e.mbb, tas tiek darīts un funkcija atgriež patiesu vērtību,

pretējā gadījumā – aplamu.

Procedūra SplitAndAdjust(virsotne:Virsotne) tiek iedarbināta, ja notiek virsotnes

pārpilde. Tā dala virsotni un labo visus nepieciešamos ierakstus ceļā līdz pat saknei, ja ir tāda

nepieciešamība. Tā izmanto funkcijas AdjustPath un AdjustEntry, un var tikt rekursīvi

izsaukta gadījumos, kad vienas pārpildes izsauktās virsotņu dalīšanas rezultātā notiek jauna

pārpilde virsotņu priekštečos.

A L G O R I T M S

SplitAndAdjust(virsotne:Virsotne) begin

//veido jaunu virsotni un izkārto ierakstusjaun_virsotne = Split(virsotne);if (virsotne ir sakne) then CreateNewRoot(virsotne, jaun_virsotne)else //Iegūst priekšteča virsotni

57

Page 58: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

priekštecis = GetParent(virsotne) //Labo virsotnes ierakstu priekštecī AdjustEntry(priekštecis, [virsotne.id, virsotne.mbb]) //ievieto jaunu ierakstu priekštecī InsertInNode(priekštecis, [jaun_virsotne.mbb, jaun_virsotne.id]) if (pārpilde(priekštecis)) then SplitAndAdjust(priekštecis) else AdjustPath(priekštecis) end ifend if

end.

Algoritmā iesaistītā CreateNewRoot (virsotne, jaun_virsotne) procedūra piesaista

jaunu diska lapu p un ievieto tajā divus ierakstus: vienu, kas norāda uz virsotne, otru – uz

jaun_virsotne. Jāpiezīmē, ka sakne ir vienīgā virsotne R-kokā, kura var neievērot mazāko

atļauto ierakstu skaitu m.

Kad ieraksti ir izkārtoti starp abām virsotnēm, jāveic nepieciešamās izmaiņas

virsotnes priekšteča ierakstā (AdjustEntry izsaukšana). Tagad priekšteča virsotnē jāievieto

jaunās virsotnes jaun_virsotne ieraksts. Izpildot šo darbību ir iespējami divi gadījumi: vai nu

priekšteča virsotnē notiek pārpilde, un šinī gadījumā tā ir jādala ar šīs pašas procedūras

SplitAndAdjust rekursīvu izsaukumu, vai arī vienkārši jāveic izmaiņas ierakstos tā, lai

jaun_virsotne tagad būtu šīs priekšteča virsotnes pēctecis.

Svarīga algoritma daļa ir virsotnes dalīšana. Pie jau iepriekš noteiktiem

ierobežojumiem m - mazākais ierakstu skaits un M – lielākais iespējamais skaits virsotnē,

jebkurš risinājums, kurš atbilst sekojošiem nosacījumiem, ir pieļaujams: vienai virsotnei m+i

ieraksti un otrai M+1-m-i, kur 0 i M-2m+1.

Eksistē daudzas virsotnes dalīšanas metodes. Laba dalīšanas stratēģija atbilst šādām

prasībām:

Tiek minimizēts abu virsotņu laukums; Tiek minimizēta abu virsotņu pārklāšanās;

Diemžēl ne vienmēr ir iespējama abu prasību vienlaicīga apmierināšana (Att. nr. 48),

tāpēc turpmāk darbā virsotņu dalīšana tiks balstīta uz pirmā kritērija izpildi. Kā spēka metode

labākā virsotņu dalījuma meklēšanai ir abu virsotņu taisnstūru visu iespējamo izvietojuma

kombināciju pārbaude, un tās kombinācijas izvēle, kur laukums ir minimāls. Tomēr, ja

parasti viena diska lapa var glabāt ap 100 objektiem (M=100), šī metode prasa daudz resursu,

un tās izmantošanas izmaksas kļūst eksponenciālas pret M. Tāpēc ir jārod vidusceļš starp

aprēķinu laiku un rezultātu kvalitāti.

58

Page 59: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 48 – Virsotņu dalīšana: dalīšana ar minimālu laukumu (a) un dalīšana ar minimālu pārklāšanos (b)

Viens no dalīšanas algoritmiem, kas tiek izmantots R-kokā, ir kvadrāta dalījums

(quadratic split). Algoritms balstās uz sekojošu heiristiku: Tiek izveidotas divas ierakstu

grupas, kurās tiek ievietoti ieraksti e un e’, kuri atrodas vistālāk viens no otra. Citiem

vārdiem sakot, jāizvēlas tādi dievi ieraksti, kuru veidotais mbb satur vislielāko tukšo vietu

laukumu. Tukšās vietas tiek definētas kā ierakstu e un e’ minimālā robežtaisnstūra laukums

mīnus ierakstu e un e’ laukumi.

Pēc tam atlikušie M – 2 ieraksti katrs tiek ievietoti kādā no grupām pēc sekojošiem

noteikumiem. Ja grupas paplašinājums (group expansion) ierakstam ir tukšo telpas vietu

laukums, kas rodas pēc konkrētā ieraksta ievietošanas grupā, tad katrā solī tiek meklēts

ieraksts e, kurš veido vismazāko grupu paplašinājumu. Šis e tiek ievietots tuvākajā grupā

(tanī, kurai šis paplašinājums ir mazākais). Gadījumā, ja ieraksts veido vienādu

paplašinājumu abām grupām, tiek izmantoti citi kritēriji: (1) – tiek izvēlēta grupa, kurai ir

mazākais laukums, un (2) – tiek izvēlēta grupa, kurā ir mazāk elementu. Algoritma

nosaukumu skaidro fakts, ka abas algoritma daļas – grupu inicializācija un ierakstu

ievietošana, laika ziņā ir kvadrātiskas pret M (t=M2).

Algoritma izpildes otrajā daļā var būt situācijas, kad objektu ievietošanai viena grupa

pārsvarā tiek atzīta labāka par otru. Šādā gadījumā atlikušie ieraksti neatkarīgi no to atrašanās

vietas jāievieto otrajā grupā, kas neapšaubāmi var novest pie neracionāla objektu

izvietojuma. Šis faktors ir stipri atkarīgs no noteiktā m, tāpēc tiek uzskatīts, ka racionāla m

vērtība šim algoritmam ir 40%.

Ieraksta e dzēšana no R-koka tiek realizēta 3 soļos:

1. Tiek atrasta koka lapa L, kas satur ierakstu e;2. e tiek dzēsts no L;3. Ja nepieciešams, koks tiek pārstrukturizēts;

59

Page 60: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Pēdējais algoritma solis ir sarežģītākais. Koka reorganizācija nepieciešama gadījumā, kad

pēc ieraksta dzēšanas no virsotnē N paliek mazāk par m ierakstiem. Vienkāršākā pieeja šīs

problēmas risināšanā ir dzēst šo virsotni un ievietot kokā atlikušos m-1 ierakstus kā jaunus.

A L G O R I T M S

Delete(e:LapasIeraksts)begin //Tiek atrasta koka lapa, kas satur e L = FindLeaf(e); //Ieraksti tiek dzēsti un koks tiek pārstrukturizēts, sākot no

L.e //Rezultāts ir virsotņu Q kopa Q = Reorganize(L, e); //Ievieto ierakstus Q virsotnēs Reinsert(Q);end;

Funkcija Reorganize(N:Virsotne, e:Ieraksts) dzēš virsotnes, kas satur mazāk par m

ierakstiem. Sliktākajā gadījumā šī procedūra var ietekmēt visus koka līmeņus, ja vienas

virsotnes dzēšana noved pie nepieļaujama ierakstu skaita samazināšanās, arī priekšteča

virsotnē, kas šādā gadījumā arī jādzēš. Procedūra atgriež dzēsto virsotņu, kuru ieraksti par

jaunu jāievieto kokā, kopu.

A L G O R I T M S

Reorganize(N:Virsotne, e:Ieraksts):virsotņu ierakstu kopabegin Q:virsotņu kopa, sākotnēji tukša //Dzēš e no N N = N – {e}; if (N nav sakne) then

if (|N| < m) then Q = Q {N} //Tiek noteikts un pārstrukturizēts priekštecis

F = GetParent(N); Q = Q Reorganize(F, N ieraksts iekš F)else AdjustPath(N) // N tika mainīts: tiek mainīts arī ceļš //uz N.end if

end if return(Q);end.

Kad visas virsotnes, kuras jāpārstrukturizē ir apkopotas kopā Q, rekursīvi izsaucot funkciju

Reorganize, Q elementi no jauna tiek ievietoti kokā ar procedūras Reinsert palīdzību.

60

Page 61: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Ievietotie elementi var būt gan koka pēdējā – lapu līmeņa ieraksti, gan iekšējo virsotņu

ieraksti, kuri jāievieto attiecīgā koka līmenī.

Atkārtota objektu ievietošana kokā dzēšanas procesa laikā bieži ļauj iegūt labāku

taisnstūru izvietojumu pa virsotnēm – līdz ar to arī labāku R-koka telpisko organizāciju,

tomēr kopējo efektivitāti stipri iespaido objektu ievietošanas secība. Sākotnēji veidojot koku

taisnstūriem ar dažādu izvietojumu telpā, bieži tiek iegūts koks, kurā novērojama stipra

virsotņu pārklāšanas (vairāku virsotņu dr pārklāj vienu un to pašu objektu). Ja ieraksts

vienreiz ir piesaistīts virsotnei, tas tur arī paliek, kaut arī kaut kad vēlāk tas varētu tikt

izvietots labāk.

Šo problēmu atspoguļo arī piemērs, redzams attēlā nr. 49. Solī a tiek ievietoti 4

objekti, kas kompakti izvietojas virsotnē u. Kad tiek ievietots objekts 5, notiek virsotnes

dalīšana, un dotajā situācijā nav labu objektu izvietošanas variantu starp veco virsotni u un

jauno – v. Jebkurā gadījumā objektu izvietojums virsotnē v ir ļoti neracionāls, jo direktorija

taisnstūrī tukšās telpas laukums ir daudz lielāks par pašu objektu laukumu, taču šinī gadījumā

tas ir vienīgais veids, kā indeksēt objektus ar R-koku, tāpēc ar virsotni v tiek saistīti objekti 4

un 5 (b solis). Pēc objektu 6 un 7 ievietošanas telpā (c solis) situācija nemainās, kaut arī būtu

iespējams labāks objektu iedalījums pa virsotnēm (piemēram u={1,2,3,4} un v{5,6,7}).

Attēls 49 – Neveiksmīga objektu ievietošanas kārtība

Eksistē konstrukcijas, kas pārvar šo R-koku nespēju labi organizēt objektu telpisko

izvietojumu struktūrā, ievietojot objektus jauktā, gadījuma secībā. R*koki balstās uz ierakstu

pārievietošanu (reinsertion), savukārt blīvētie R-koki pārstrādā doto taisnstūru kopu, lai

varētu noteikt labāko objektu ievietošanas secību.

5 .2 . R*K OKS

R*koks ir R-koka variants, kurā realizēti vairāki uzlabojumi klasiskā R-koka objektu

ievietošanas algoritmā. Būtībā šie uzlabojumi ir balstīti uz sekojošu parametru optimizēšanu:

virsotņu pārklāšanās

virsotnes aizņemtais laukums

61

Page 62: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

virsotnes direktorija taisnstūra perimetrs

Viens no variantiem, kā panākt ievērojamus uzlabojumus oriģinālajā R-kokā, ir

virsotņu dalīšanas algoritma uzlabošana. Kā tika minēts iepriekš – kad virsotnē ar ietilpību M

notiek pārpilde, ir jāpiesaista jauna diska lapa un M+1 ieraksti ir jāizkārto jau pa divām

virsotnēm. Iespējamo ierakstu izvietojuma kombināciju skaits ir eksponenciāls salīdzinājumā

ar M, tāpēc vienkārša visu kombināciju pārskatīšana labākā stāvokļa meklējumos ir

neracionāla un prasītu daudz resursu.

R-koka dalīšanas algoritms vispirms izveido divas grupas, kurās tiek ievietoti divi

objekti, kas ir vistālāk viens no otra. Pēc tam katrs objekts tiek piesaistīts kādai no grupām.

Savukārt R*kokā dalījums tiek veikts pēc kādas no asīm (piemēram, horizontālās) un tiek

pētītas visas iespējamās objektu izvietojuma kombinācijas virs vai zem noteiktās dalījuma

līnijas.

Šīs metodes priekšrocības demonstrētas attēlā nr. 50., pieņemot, ka M=4 un m=2. R-

koka dalīšanas algoritms izvēlas objektus A un B, kuri sākotnēji tiek ievietoti grupās G1 un

G2. Tā kā A ir daudz lielāks par B, pie nākamo objektu ievietošanas priekšroka tiks dota

objekta A grupai G1. Pēc triju taisnstūru piesaistīšanas grupai G1 atlikušie ieraksti tiek

pievienoti grupai G2, neatkarīgi no to izvietojuma telpā. Šāds dalījums acīmredzami ir

neracionāls.

Attēls 50 – Dalīšanas stratēģijas: (a) virsotnes pārpilde, (b) R-koka dalījums, (c) R*koka dalījums

R*koks šinī situācijā izvēlas x asi un atrod divu virsotņu dalījumu bez direktoriju

pārklāšanās. Lai atrastu labāko asi, var pētīt telpu, dalot to pēc katra objekta augšējās vai

apakšējās malas vērtības. Galu galā tiek izvēlēta tā ass, pēc kuras dalot telpu, tiek iegūts

mazākais S - objektu mbb perimetru summa. Kad ir izvēlēta labākā ass, tiek izvēlēts objektu

dalījums ar mazāko objektu pārklāšanos. Ja eksistē vairāki dalījumi ar vienādu pārklāšanos,

tiek izvēlēts tas, kuram ir mazākais laukums (šos rādītājus var aprēķināt kopā ar S). Labākās

ass izvēles algoritms aprakstīts funkcijā R*treeChooseAxis.

62

Page 63: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

A L G O R I T M SR*treeChooseAxis (E: ierakstu kopa)

beginmin-perimetrs = (maksimālā iespējamā vērtība)for each ass a do

šķirot E pēc aS = 0;//Tiek izskatīti visi iespējamie dalījumifor k = 1 to (M-2m+2) do

//Pirmie m+k+1 ieraksti tiek glabāti G1, pārējie – G2

G1 = E[1, m+k-1];G2 = E[m+k, M+1];Mg = perimetrs(mbb(G1)) + perimetrs (mbb(G2))S = S + Mg; //Perimetru summa dotajai asij

end for//Ja S līdz šim ir minimāls, tad a kļūst par labāko asi

if (S < min-perimetrs) thenlabaka_ass = amin-perimetrs = S

end ifend for

return labaka_assend.

Otrs būtisks svarīgs R-koka uzlabojums, ko paredz R*koks, ir objektu uzlabots ievietošanas

algoritms, kurā īstenota uzspiestās pārievietošanas stratēģija. Kā tika parādīts iepriekš,

objektu ievietošanas kārtība var būtiski iespaidot R-koka organizētību. R*koks mēģina

izvairīties no neracionālām objektu izvietojuma situācijām, līdzīgām attēlā nr. 49 redzamajai,

pārievietojot dažus ierakstus, kad notiek virsotnes pārpilde.

Attēlā nr. 51.a. parādīta taisnstūra 8 ievietošana kokā, kas jau apskatīts 49.c attēlā.

Attēls 51 – R*koka pārievietošanas princips: (a) – 8. taisnstūra ievietošana (v tiek pārpildīta), (b) – R-koka dalījums, (c) – R*koka uzspiestā pārievietošana

Virsotne v tiek pārpildīta, un oriģinālā R-koka dalīšanas algoritms izpildīs tikai lokālu

reorganizāciju ar diezgan lielu virsotņu pārklāšanos (att. 51.b). R*koks mēģina izvairīties no

virsotņu dalīšanas, pārievietojot taisnstūrus v virsotnē, kuru dēļ tukšo telpas vietu laukums

virsotnē ir vislielākais. Šinī gadījumā tiek pārievietots taisnstūris 4, un pats pārievietošanas

algoritms ir sekojošs:

63

Page 64: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Dzēst taisnstūri 4 no v;

Izskaitļot jauno v mazāko robežtaisnstūri;

Pārievieto 4, sākot no saknes: ChooseSubtree algoritms saista taisnstūri 4 to

virsotnei u;

Tagad ieraksts 8 var tikt ievietots virsotnē v, un nav nepieciešama virsotņu

dalīšana.

Tā kā virsotnes pārpilde var notikt jebkurā koka līmenī, dzēstais ieraksts jāpārievieto

tanī pašā līmenī, kurā tas sākotnēji tika ievietots. Šī prasība tika uzstādīta jau parastajā R-

koka dzēšanas procedūrā Delete. Pielietojot augstāk aprakstīto algoritmu, jāizvairās no

bezgalīgu ciklu rašanās, pārievietojot ierakstus to sākotnējā virsotnē. Tādējādi, ja tiek fiksēta

otrreizēja virsotnes pārpilde, ievietojot doto taisnstūri, jāveic virsotnes dalīšana.

Pārievietojamie ieraksti tiek izvēlēti sekojoši: tiek izskaitļots attālums d starp šo

ierakstu taisnstūru centriem un virsotnes mbb centru. Ieraksti tiek sakārtoti pēc d lieluma, kur

pirmais ir ar vislielāko d, un no saraksta tiek izvēlēti pirmie p ieraksti. Tiek uzskatīts, ka

labākie rezultāti tiek sasniegti, kad tiek pārievietoti p = 30% pārpildītās virsotnes ierakstu.

Attēlā nr.52 parādīti gan R-koka, gan R*koka lapu virsotņu dr tai vienai un tai pašai

taisnstūru kopai. Kā redzams, uzlabotais virsotņu dalīšanas algoritms un pārievietošanas

stratēģija ļauj iegūt daudz labāku datu organizētību R*kokā salīdzinājumā ar R-koku.

Attēls 52 – R-koka (a) un R*koka (b) salīdzinājums (Konektikutas štata (ASV) hidrogrāfija)

Jāpiemin, ka gan R-koka, gan R*koka pamatā ir viena un tā pati datu struktūra,

tādējādi arī datu izguves operācijas, kas definētas oriģinālajam R-kokam ir derīgas arī

R*kokam. Tomēr uzlaboto algoritmu dēļ R*kokā šo operāciju izpilde notiek efektīvāk.

64

Page 65: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

5 .3 . R-K OKA BLĪ VĒŠ A N A

Apskatītie algoritmi, kas paredz objektu ievietošanu R-kokā (vai R*kokā), ir

dinamiski, jo tie ļauj objektu ievietošanu un dzēšanu jau eksistējošā kokā. Tomēr, attīstoties

struktūrai laikā, nav iespējams optimizēt telpas izlietojumu, tāpēc ar laiku iespējama

veiktspējas samazināšanās.

Statiskā gadījumā, kad taisnstūru kopa ir nemainīga laikā, iespējams apstrādāt datus

pirms to ievietošanas R-kokā. R-kokam ir izstrādāti vairāki šādi – blīvēšanas algoritmi.

Blīvēšanas princips vislabāk parādāms ar B-koka palīdzību. Ja indeksējamā datu kopa ir

zināma, datu šķirošanu un indeksa būvēšanu var veikt apgrieztā kārtībā. Vispirms secīgi tiek

aizpildītas koka lapu virsotnes. Pirmie M ieraksti tiek ievietoti pirmajā lapā, nākošie M –

otrajā, u.t.t. Kad lapu līmenis ir izveidots, darbība tiek rekursīvi pildīta nākamajam līmenim

uz augšu. Šādā veidā tiek iegūts B-koks ar aptuveni 100% telpas izlietojumu.

R-koka gadījumā datu apstrādes fāzē taisnstūri jāšķiro pēc to atrašanās vietas telpā.

Šo darbību veic tā saucamais STR (Sort-Tile-Recursive) algoritms. Ja datu kopas izmērs ir N,

minimālais neieciešamais koka lapu skaits ir P = (N / M), kur M – virsotnes ietilpība.

Algoritma mērķis ir kārtot koka lapas pēc dambretes galdiņa principa ar horizontālām un

vertikālām slejām, turklāt gan horizontālo, gan vertikālo sleju daudzumam jābūt vienādam ar

.

Vispirms tiek šķiroti taisnstūri pēc to centru x koordinātes un šis iegūtais kārtotais

saraksts tiek dalīts grupās, kas definē vertikālās slejas. Pēc tam katras slejas taisnstūri

tiek kārtoti pēc to centru y koordinātes un dalīti grupās par M ierakstiem, tādā veidā nosakot

ierakstu piederību koka lapām blīvētajā R-kokā. Visbeidzot tiek ņemta dr kopa un rekursīvi

būvēts koks līmeni pa līmenim. Blīvētā R-koka organizācija slejās salīdzinājumā ar parasto

R-koku parādīta attēlā nr. 53., kas attēlo Konenktikutas štata hidrogrāfijas datu kopu.

Attēls 53 – R-koks (a) un STR blīvētais R-koks (b)

65

Page 66: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Visas lapas, izņemot pēdējo vertikālajā slejā, ir pilnīgi aizpildītas, tā maksimizējot telpas

lietderīgu izmantošanu. Protams, ja nepieciešama secīga, dinamiska objektu ievietošana šādā

struktūrā, būs nepieciešama virsotņu dalīšana, kas notiks līdz pat augšējam koka līmenim,

tāpēc ieteicamais telpas izlietojums ir mazāks par 100%.

Neskatoties uz optimizētu konstrukciju, virsotņu pārklāšanās problēma nav novērsta

pilnībā. Attēlā nr.53 skaidri saskatāms situācijas uzlabojums, taču arī pēc koka blīvēšanas ir

taisnstūri, kas pārklājas. Taisnstūru pārklāšanos R-kokā pilnīgi likvidē tā vēl viens variants –

R+koks.

5 .4 . R+ KO KS

R+kokā direktoriju taisnstūri vienā virsotņu līmenī nepārklājas. Šādas struktūras

organizācijas gadījumā krietni tiek paaugstināta vaicājumu izpildes efektivitāte. Ja līdz šim

noskaidrot ievades/izvades operāciju skaitu punkta vaicājumam bija diezgan sarežģīti, tad

R+kokā tas ir atkarīgs tikai no koka dziļuma.

R+koks tiek definēts sekojoši:

Ja koka sakne vienlaicīgi nav arī lapa, tanī ir vismaz 2 ieraksti;

Viena līmeņa virsotņu direktoriju taisnstūri nevar pārklāties;

Ja virsotne N nav lapa, tās dr ietver visus apakškoka, kura sakne ir N, taisnstūrus;

Indeksējamais taisnstūris tiek piekārtots visām koka lapu virsotnēm, kuru direktoriju

taisnstūri to pārklāj. Taisnstūri, kas ir piekārtots koka lapas virsotnei N, tās direktorija

taisnstūris vai nu pārklāj, vai ietver. Šāda objektu dublēšanās blakus virsotnēs ir

līdzīga tai, kas raksturīga uz telpu orientētām struktūrām.

Attēlā nr. 54 parādīta R+koka struktūra. Objekti 8 un 12 tiek fiksēti divās virsotnēs, jo

objektu 8 pārklāj koka lapas p un r, savukārt objektu 12 – p un q. Taču jāpiezīmē, ka gan

lapu līmeņa, gan iekšējo virsotņu direktorija taisnstūri nepārklājas.

66

Page 67: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 54 – R+koks

R+koka virsotnes struktūra ir tāda pati kā R-kokam, tomēr pats R+koks var būt stipri

lielāks par R-koku tai pašai datu kopai, jo nav iespējams garantēt, ka tiks apmierināts m –

mazākā ierakstu skaita virsotnē nosacījums. Tāpat koka izmēru palielina dublējošos

taisnstūru esamība.

Koka konstruēšanas un uzturēšanas process R+kokam ir sarežģītāks nekā citiem R-

koka variantiem. Īsumā R+koka dinamiska objektu ievietošana ir sekojoša: Katrā koka līmenī

taisnstūris tiek ievietots visās virsotnēs, kuru dr to pārklāj. Lai viena līmeņa direktoriju

taisnstūri nepārklātos, R+kokā izmanto griešanu (clipping). Kad telpā ievietojamo taisnstūri

pārklāj vairāki dr {r1, r2,...rn}, R tiek dalīts tik sīkākos taisnstūros, cik dr to pārklāj. Tad šos

iegūtos taisnstūrus rekursīvi ievieto kokā attiecīgajos ri, kas viennozīmīgi noved pie viena un

tā paša objekta glabāšanas vairākās koka lapās. Piemēram, attēlā nr. 55.a R jāievieto

apakškokos, kuru saknes ir r1 un r2.

Ja neviens ri kopas taisnstūris pilnībā neietver ievietojamo R, kāds no direktoriju

taisnstūriem jāpalielina. Līdzīga darbība tika veikta R-koka ievietošanas algoritmā

(AdjustPath procedūra), ar atšķirību, ka šeit jāparūpējas par to, lai nevienas virsotnes dr

nepārklātos. Diemžēl ne vienmēr var panākt vēlamo rezultātu. Piemēram, attēlā 55.b nevienu

no direktoriju taisnstūriem r1, r2, r3 un r4 nav iespējams palielināt, neizraisot pārklāšanos,

tāpēc šādā situācijā jāveic pārievietošanas procedūra.

Attēls 55 – R+koka operācijas: griešana (a), strupceļš (b), lejupejošā dalīšana (c).

67

Page 68: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Kad R+koka virsotnē notiek pārpilde, tā ir jādala. Arī šī procedūra ir līdzīga

tradicionālajai R-koka virsotnes dalīšanai, taču šeit, izvairoties no dr pārklāšanās, jāpilda

lejupejošā dalīšana. Attēlā 55.c aprakstītajā piemērā jādala virsotne A, taču dalījuma rezultātā

jādala arī A pēcteči B un C. Lai arī tiek iegūts R+koks, kurā viena līmeņa direktoriju

taisnstūri nepārklājas, šāds dalījums sarežģī algoritmus un pasliktina telpas izlietojumu.

Kā jau tika minēts, izmantojot šo struktūru, uzlabojas punkta vaicājumu izpilde uz

nepārklājošos virsotņu rēķina. Šāda vaicājuma rezultāts tiek atrasts noejot no saknes līdz

attiecīgajai lapas virsotnei pa vienu ceļu, tādā veidā pārmeklējot mazāk virsotņu nekā R-

kokā. Savukārt loga vaicājumu efektivitātes uzlabošanās nav tik acīmredzama.

5 .5 . IZM AK SU MO DEĻI

R-koki pieder populārākajām un biežāk izmantotajām indeksēšanas struktūrām

telpiskajās datu bāzēs. Tā kā eksistē vairāki tā veidi, daži no tiem apskatīti iepriekšējās

nodaļās, aktuāls ir jautājums: kuru no tiem izmantot, lai iegūtu augstākos efektivitātes

rādītājus? Šo R-koka variantu salīdzināšanai izmanto izmaksu modeļus (cost models).

Izmaksu modeļi ļauj paredzēt operācijas izpildes efektivitāti. Operācija tiek uzdota kā

funkcija ar telpisko datu bāzu fiziskajiem parametriem (indeksu izmērs, ieraksta izmērs

u.t.t.).

Vienkārša izmaksu modeļa - R-koka operāciju efektivitātes noteikšanas

demonstrācijai tiek pieņemts, ka R-kokam R ir virsotne Ni ar direktorija taisnstūri Ni.dr ar

izmēru (si,x, si,y). Izpildot punkta vaicājumus R-kokā R, varbūtība, ka meklējamais punkts

atradīsies virsotnē Ni ir

PQ(Ni) = si,x * si,y

Citiem vārdiem – šī varbūtība ir Ni.dr laukuma un telpas laukuma (šinī gadījumā

pieņemta par 1) attiecība. Iespējams arī aprēķināt apmeklēto R-koka virsotņu skaitu, pildot

punkta vaicājumu. Tā kā apmeklētas tiek virsotnes, kuru dr satur punkta argumentu,

apmeklēto virsotņu skaits var tikt izteikts sekojoši:

,

kur n apzīmē virsotņu skaitu kokā R. 68

Page 69: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

5 .6 . UZ D A TIEM BALS TĪ TO S TR UK TŪR U SA LĪ DZI N ĀJU MS

Uz datiem balstītās struktūras tiks salīdzinātas līdzīgi kā tas tika darīts ar telpas

balstītajām struktūrām nodaļā 3.4. Tiks izmantota tā pati objektu kopa (att. nr. 35), jeb

konkrētāk šo objektu mbb aproksimizācijas (att. nr. 36). Tā kā 4. nodaļā tika apskatītas

struktūras, kas ir R-koka dažādi varianti, šajos piemēros tiek noteikts mazākais iespējamais

ierakstu daudzums virsotnē m=2. Maksimālā virsotnes ietilpība M = 4, tātad ievietojot

virsotnē piekto objektu, notiek pārpilde un jāveic virsotnes dalīšana.

Pēc uzdevuma nosacījumiem, ievietojot telpā pirmos četrus objektus un indeksējot ar

oriģinālo R-koku, tie visi tiek ievietoti vienā diska lapā, un R-kokam ir tikai viena virsotne,

kas vienlaicīgi ir gan sakne, gan koka lapa (att.nr. 57).

Attēls 57 – Objektu 1- 4 ievietošana telpā un atbilstošais R-koks

Ievietojot telpā objektu 5, notiek virsotnes dalīšana. Dotajā piemērā tiek izmantota jau

minētā virsotnes dalīšanas spēka metode, kura izskata visus iespējamos objektu izvietojumus

pa divām virsotnēm un izvēlas to, kurš veido vismazākos dr laukumus. Šo metodi šajā

piemērā izmantoju tāpēc, ka nav tik daudz objektu kombināciju, lai būtu vajadzība pēc kādas

nopietnākas metodes (kvadrātiskā dalījuma, lineārā dalījuma, u.c.) izmantošanas. Tātad

ievietojot objektu 5, ievietošanas algoritms paredz jaunas virsotnes izveidi, un tagad visi 4+1

objekti tiek izkārtoti pa abām virsotnēm tā, lai virsotņu dr būtu minimāli. Rezultātā virsotnē a

paliek objekti 1,2,3, bet virsotnē b – 4 un 5 (att. nr. 58). Atbilstošais R-koks redzams attēla

labajā pusē.

Objekti 6 un 7 tiek ievietoti virsotnē b, jo tādā veidā tiek iegūts vismazākais dr

palielinājums. Kad jāievieto objekts nr. 8, algoritms nosaka, ka tas ir jāievieto virsotnē b,

taču tā jau ir pilna un nepieciešams virsotnes dalījums. Pēc dalīšanas virsotnē b paliek objekti

4, 5, 6, savukārt jaunajā virsotnē c – objekti 7 un 8 (attēls nr. 59). Kā to paredz ievietošanas

algoritms, pēc virsotņu dalīšanas jāatjaunina informācija par dr maiņu visās virsotnēs, kas ir

ceļā no dotās 69

Page 70: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 58 – Objekta nr.5 ievietošana telpā un atbilstošais R-koks

virsotnes līdz saknei. Šinī gadījumā saknes virsotnē R tiek ievietots jauns ieraksts c, kas

sasaista abas virsotnes.

Attēls 59 – Objektu 6 – 8 ievietošana

Visbeidzot pēc visu 11 objektu ievietošanas telpā, R-koka lapu līmenī ir četras virsotnes

(attēls nr. 60). Visi objekti ir indeksēti un diska lapas ir diezgan racionāli izmantotas

(aptuveni 75% telpas izlietojums). Kā redzams šinī indeksēšanas risinājumā ir pilnīgi izslēgta

objektu ierakstu dublēšanās, jo katrs objekts tiek piesaistīts tikai vienai virsotnei, neatkarīgi

no tā, cik dr to pārklāj. Toties uzreiz pamanāms, ka virsotnēm b un c ir ievērojama dr

pārklāšanās. Šī viena no R-koka negatīvajām īpašībām, kad virsotņu pārklāšanos rada nevis

objektu neizdevīgais stāvoklis telpā, bet gan to ievietošanas secība.

Attēls 60 – Dotās objektu kopas indeksēšana ar R-koku

70

Page 71: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Šinī gadījumā netiek veikta objektu pārievietošana, taču attēlā nr. 61 parādīta šī pati objektu

kopa ar citādā secībā ievietotiem objektiem. Savu atrašanās vietu R-kokā ir mainījuši tikai

objekti 4 un 11, taču, izrēķinot dr starpību abiem objektu izkārtojuma variantiem, pēdējā ir

iegūta 7% vietas ekonomija, kas nozīmē, ka virsotņu dr aprakstīs mazāk tukšo telpas vietu.

Līdz ar to tiek paaugstināta vaicājumu izpildes efektivitāte, attīrīšanas procesā apstrādājot

mazāk „atbirumu”, kas neapšaubāmi darīs sistēmu ātrāku.

Attēls 61– Objektu indeksēšnas ar R-koku pārstrukturizācija

Ja uz telpu balstītajās sistēmās viena no galvenajām problēmām, pret kuras

samazināšanu nemitīgi tiek meklētas jaunas metodes, ir objektu ierakstu dublēšanās, tad uz

datiem balstītajās sistēmās tā ir direktoriju taisnstūru pārklāšanās. Jo lielāka ir dr pārklāšanās

dotajā telpā, jo vairāk resursu jāpatērē, lai darbotos ar indeksētajiem datiem. Eksistē dažādi

dr blīvēšanas algoritmi un metodes, kas indeksējot objektu kopu mēģina panākt pēc iespējas

mazāku pārklāšanos, taču jau aprakstītais R+koks, kas ir oriģinālā R-koka paveids, pilnībā

izslēdz viena līmeņa virsotņu dr pārklāšanos. Tas tiek panākts ar īpašu objektu ievietošanas

algoritmu, kas pie virsotnes dalīšanas nepieciešamības gadījumā simboliski dala arī objektu,

kas atrodas uz dalījuma līnijas. Pēc tam šis objekts tiek aprakstīts abās virsotnēs. Šāds

paņēmiens, protams rada pretēju efektu – objektu ierakstu dublēšanos, taču efektīvāk tiek

veikta pati objektu indeksēšana.

Attēlā nr. 62 parādīta dotās objektu kopas R+koka indeksēšana. Ievietojot telpā 8.

objektu notiek virsotnes b pārpilde un tiek izveidota jauna virsotne c. Lai izvairītos no

pārklāšanās objekts 6 tiek dalīts un tā ieraksti tiek ievietoti gan virsotnē b, gan c, un šī

iemesla pēc objektu 11 var piesaistīt virsotnei d. Atbilstošajā R+kokā tik tiešām ir par vienu

ierakstu vairāk nekā R-kokā, jo objekts nr.6 ir aprakstīts divas reizes.

71

Page 72: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Attēls 62 – Objektu kopas indeksēšana ar R+koku

Kā redzams arī R-koku struktūrām ir savas stiprās un vājās puses, kuras apspriežot

var izsecināt kura struktūra kurā gadījumā būtu visnoderīgākā.

72

Page 73: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

6.POPULĀRĀKO DBVS PAPLAŠINĀJUMU DARBAM AR

TELPISKAJIEM DATIEM APSKATS

6 .1 . OR AC LE S PA TI AL

Neskatoties uz to, ka lielākajai daļai datu bāzu vadības sistēmu primārais darba lauks

joprojām ir biznesa dati, to izstrādātāji, izmantojot jau esošās un izstrādājot jaunas iespējas,

cenšas panākt to, lai dotā DBVS varētu strādāt arī ar telpiskajiem datiem. Arī DBVS Oracle,

kas sākumā bija veidota kā relāciju datu bāzu vadības sistēma, ir papildināta ar

paplašinājumu Oracle Spatial, kas spēj darboties ar telpiskajiem datiem, izmantojot jaudīgo

pamatsistēmu Oracle. Lai gan šāda veida DBVS paplašinājumi nevar pilnībā apmierināt visas

tās prasības, kuras izvirza GIS (piemēram mozaīkas/vektoru attēlojumu konvertēšana,

telpiskās analīzes līdzekļi, grafiskā interfeisa izstrāde u.c.), tos ir ērti izmantot vienkāršu

sistēmu izstrādei, darbam ar 2D datiem. Oracle Spatial priekšrocības – paplašinātas datu

bāzes izmēra robežas, augstas kvalitātes vadības funkcijas lielajām datu bāzēm, u.t.t. tiek

mantotas no pašas Oracle sistēmas.

Oracle Spatial piedāvā telpisko datu tipu SDO_GEOMETRY. Oracle standarta SQL

vaicājumu valoda ir paplašināta ar funkcijām un operatoriem darbam ar SDO_GEOMETRY,

kas ļauj izpildīt vaicājumus, kuros iekļauti gan relāciju (aprakstošie), gan telpiskie

(ģeometriju) atribūti. Tāpat Oracle sistēma ir papildināta ar īpašām indeksu struktūrām, kas

paredzētas telpiskajiem datiem.

6.1.1. Telpiskais datu modelis

Tipiskā Oracle Spatial telpisko datu tabulā ir vairāki relāciju atribūti objekta

aprakstošajiem datiem un viens telpiskais atribūts ar tipu MDSYS.SDO_GEOMETRY, kas

apraksta objekta ģeometriju. Šāda tabula apraksta vienu slāni, t.i., viena tipa ģeogrāfisku

objektu kopu. Par piemēru var minēt tabulas Upes izveidi:

Create Table Upes

(upes_kods varchar(10),

upes_nosaukums varchar(64),

upes_garums number(4),

geometrija MDSYS.SDO_GEOMETRY)73

Page 74: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

Ģeometrija sastāv vai nu no viena elementa vai arī vairāku elementu sakārtota

saraksta. Elements ir atomāra ģeometrijas sastāvdaļa – punkts, līniju virkne vai daudzstūris.

Sarežģītākas ģeometrijas iespējams veidot kombinējot dotos elementus, piemēram, vairākas

salas var aprakstīt ar sakārtotu daudzstūru sarakstu, u.t.t. Elementu saraksts var nebūt

monotons - tas var saturēt arī dažādu tipu elementus.

Līniju virkni apraksta secīgs virsotņu saraksts. Divas blakusesošas virsotnes var tikt

savienotas vai nu ar taisnu līniju, vai ar loku. Līniju virknes, kuru virsotnes ir savienotas ar

taisnu līniju, sauc par lauztu līniju (skat. pirmo nodaļu). Savukārt tādas līniju virknes, kurās

virsotnes tiek savienotas gan ar taisnām, gan lokveida līnijām sauc par jauktām līniju

virknēm.

Objektu ievietošana izveidotajā tabulā Upes notiek ar SQL INSERT vaicājuma

palīdzību, līdzīgi kā tas tiek darīts tradicionālajās objektu-relāciju datu bāzēs:

Insert into Upes

values (‘UDJS743848’, ‘Gauja’, 315, MDSYS.SDO_GEOMETRY(2, null, null,

MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),

MDSYS.SDO_ORDINATE_ARRAY(2,2,2,3,4,4,5,6)));

MDSYS.SDO_GEOMETRY argumenti apraksta ievietojamo ģeometriju. Pirmais

arguments – 2 norāda elementa tipa identifikatoru, kas nosaka, ka tiks izmantota līniju

virkne. Otrais un trešais arguments ir rezervēti īpašām vajadzībām, savukārt ceturtais

arguments – MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1) ir elementa deskriptora masīvs, kas

nosaka, ka virsotņu koordinātas atrodamas SDO_ORDINATES masīvā, elementa tips ir līniju

virkne (kods 2) un, ka virsotnes tiek savienotas ar taisnām līnijām (kods 1). Pēdējais

arguments MDSYS.SDO_GEOMETRY ir koordinātu vērtību kārtots saraksts, kas apzīmē

virsotnes (2, 2), (2, 3), (4, 4), (5, 6).

6.1.2.Telpiskās operācijas

MDSYS.SDO_GEOMETRY datu tipa uzturētās operācijas var tikt klasificētas divās

grupās:

indeks-jūtīgie operatori (index-aware operators) – Būla funkcijas, kuras

saturošais vaicājums tiek pildīts, balstoties uz telpisko indeksu. Vaicājumu

74

Page 75: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

optimizētājs ir informēts par šo operatoru izmantošanas prasībām pret resursiem

un selektivitāti.

citi telpiskie operatori – Vaicājums, kas satur operatoru no šīs grupas, tiek pildīts

rindu pa rindai, tādā veidā pārbaudot katra objekta ģeometriju dotajā tabulā.

Pie indeks-jūtīgo operatoru grupas pieder trīs operatori: SDO_RELATE, SDO_FILTER, un

SDO_WITHIN_DISTANCE, SDO_RELATE, kas pārbauda telpisko objektu topoloģiskās

attiecības. Tā, piemēram, jebkura no attiecībām contains, coveredby, covers, disjoint, equal,

inside, overlap un touch var tikt pārbaudītas, uzdodot to kā SDO_RELATE argumenta maskas

vērtību. Citas, sarežģītākas attiecības var tikt pārbaudītas kombinējot šīs minētās. Pieņemot,

ka eksistē tabula Valstis, var tikt izveidots vaicājums, kas atrod Latvijas robežvalstis:

select v1.nosaukums

from Valstis v1, Valstis v2

where v2.nosaukums = ‘Latvija’

and MDSYS.SDO_RELATE(c1.geometry, c2.geometry, ‘mask = TOUCH’) = ‘TRUE’;

Otrajā telpisko operatoru grupā ietilpst tādi operatori kā

SDO_GEOM.SDO_BUFFER, kas nodrošina kopu operācijas UNION, DIFFERENCE un

INTERSECTION. Tāpat šajā grupā ietilpst SDO_GEOM.AREA, kas aprēķina 2D ģeometrijas

laukumu, SDO_GEOM.LENGTH, kas aprēķina 1D ģeometrijas garumu, u.c.

6.1.3. Telpiskā indeksēšana

Oracle Spatial izmanto telpisko indeksēšanas struktūru – z-kārtošanas koks un divu

soļu vaicājumu izpildes mehānismu (filtrēšanas un attīrīšanas soļi). Oracle Spatial

indeksēšanas mehānismam ir šādas īpašības:

taisnstūrveida telpa tiek dekomponēta 4n fiksēta izmēra šūnās, kas tiek kārtotas

izmantojot, z-kārtošanas variantu –HHkodu, kas atbilst pilnam četrkokam, kam visas

lapu virsotnes ir vienā līmenī.

Oracle Spatial aproksimē telpisko objektu ar mazāko šūnu kopu, kas to pārklāj, kas

būtībā ir rastra dekompozīcija.

Tabulas A indekss ir tabula ar nosaukumu A_SDOINDEX, kurai ir divas kolonnas:

SDO_CODE (šūnas iezīme) un SDO_GID (geometry identifier). Piemēram, attēlā nr. 63

attēlota 3 objektu indeksēšana. Šūnu dalījuma līmenis n = 2.

75

Page 76: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

SDO_CODE SDO_GIDc3 814c4 814c5 235c5 355c6 355c7 814c8 814c9 355c10 355

Attēls 63 – Telpiskā indeksēšana ar Oracle Spatial

Oracle Spatial uztur telpas dalīšanu fiksēta lieluma šūnās, kas atbilst tikko apskatītajai

rastra dekompozīcijai, un hibrīdo telpas dalīšanu šūnās, kas izmanto fiksēta un mainīga

lieluma šūnu kombinācijas. Mainīga lieluma šūnas ļauj precīzāk aproksimizēt objektu

ģeometrijas, kas uzlabo selektivitāti. Hibrīdajā dalīšanā šūna jeb dakstiņš tiek sadalīts, ja tas

mijiedarbojas ar objekta ģeometriju. Šūna var tikt dalīta līdz noteiktam izmēram, kuru nosaka

ar SDO_MAXLEVEL.

6 .2 . POS TG RES QL

PostgreSQL sistēma bija viena no pirmajām un ievērojamākajām objekt-relāciju

DBVS, kas nodrošināja telpisko datu apstrādi. Sistēma satur telpisko SQL paplašinājumu,

kas ļauj darboties ar telpiskajiem datiem. Šī sistēma ir plaši izmantota un atzīta par vislabāko

bezmaksas DBVS atvērtā koda programmatūras izstrādātāju lokā.

Sistēma uztur:

visus izplatītākos ģeometriskos tipus;

operācijas šiem tipiem;

paplašinātu SQL sintaksi, kurā integrētas iepriekš minētās operācijas;

Tāpat sistēma telpiskajā indeksēšanā izmanto R-koku, balstītu uz kvadrātiskās

virsotņu dalīšanas algoritmu.

6.2.1. Ģeometriskie tipi un operatori

PostgreSQL uztur šādus ģeometriskos tipus:

Ģeometriskais tips Objekta uzdošana Aprakstspoint (x, y) Punkts plaknēline ((x1, y1), (x2, y2)) Taisna līnija (uzdoti galapunkti)lseg ((x1, y1), (x2, y2)) Līnijas segments (uzdoti galapunkti)box ((x1, y1), (x2, y2)) Taisnstūris

76

Page 77: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

path ((x1, y1), ...) Slēgta lauzta līnija path [(x1, y1), ...] Lauzta līnijapolygon ((x1, y1), ...) Daudzstūriscircle <(x, y), r> Aplis (uzdotas centra koordinātes un rādiuss)

Tabula 1 – PostgreSQL ģeometriskie tipi

PostgreSQL izmanto visus pamata ģeometriskos tipus, kādi tiek izmantoti arī citās sistēmās

(tabula nr.1). PostgreSQL izšķir slēgtas un atvērtas lauztas līnijas. Slēgto līniju virsotņu

koordinātes tiek uzdotas apaļajās iekavas, savukārt atvērtās – kvadrātiekavās. Slēgtā līnijā

pēdējais punkts tiek savienots ar pirmo. Objektu veidošana tiek realizēta pēc shēmas ‘(Datu

uzdošana)’::tips. Piemēram ievadot ‘((0,0), (1,1))’::box tiek veidots taisnstūris ar

attiecīgajām koordinātēm.

Tabulā nr.2 minēti daži no PostgreSQL telpiskajiem operatoriem. Daži no

operatoriem ir polimorfiski, t.i. tos var pielietot dažādiem datu tipiem. Piemēram operatora

contain pirmais arguments ir punkts, bet otrs – jebkurš ģeometriskais tips (daudzstūris, aplis,

līnija, u.c.). Šādā gadījumā ģeometriskā tipa apzīmēšanai tiek lietots vārds geom.

Operators Apraksts Pielietojums# Aprēķina divu segmentu krustpunktu lseg * lseg point # Daudzstūra virsotņu skaits polygon integer&& Pārbauda, vai daudzstūri pārklājas polygon * polygon bool<< Vai pa kreisi? Pārbauda vai pirmā argumenta tālākais

labais punkts ir pa kreisi no otrā argumenta galējā kreisā punkta

geom<<geom

>> Vai pa labi? geom>>geom<^ Vai zem? geom<^geom>^ Vai virs geom>^geom

Tabula 2 – PostgreSQL telpiskie operatori

Tāpat eksistē funkcijas, kas veic dažādus aprēķinu telpiskajiem objektiem. To skaitā ir area,

length un citas.

6.2.2. Datu bāzes veidošana

Datu bāzes veidošana notiek līdzīgi kā tas tika darīts Oracle Spatial vidē – ar SQL kodu. Jau

apskatītā piemēra par upēm tabulas veidošana ir sekojoša:

Create Table Upes (

upes_kods varchar(10),

upes_nosaukums varchar(64),77

Page 78: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

upes_garums integer,

geometry path,

PRIMARY KEY (upes_kods));

Lai efektīvi varētu pildīt telpiskos vaicājumus, jāveido uz R-koku balstīts indekss:

Create Index RtrUpes On Upes using RTREE (geometry);

6.2.3. Vaicājumu izpilde

Datu ievietošana tabulās arī notiek ar SQL insert vaicājuma palīdzību. Sekojošais

piemērs parāda, kā tiek ievietoti upes „Gauja” dati PostgreSQL datu bāzē.

Insert Into Upes (upes_kods, upes_nosaukums, upes_garums, geometrija)

Values (‘4736235121’, ‘Gauja’, ‘((2, 2), (2, 3), (4, 5), (5, 5))’);

Šādi vaicājumi tiek ievietoti interaktīvajā PostreSQL SQL monitora logā. Tāpat tie var tikt

iekļauti kādā no programmēšanas valodām. SQL monitorā sistēmas gatavību pieņemt datus

apliecina ar vārdu TelpiskaDB -> katras rindas sākumā (vaicājuma sākumā TelpiskaDB =>),

kur TelpiskaDB ir datu bāzes vārds.

Vaicājumu sintakse ir līdzīga tradicionālajai SQL sintaksei, kurā tika demonstrēti

piemēri šinī darbā gan pirmajā nodaļā, aprakstot telpisko datu pamatus, gan nodaļā 6.1.2., kas

demonstrē Oracle vaicājumu izpildi. Tā piemēram, vaicājuma „Kādas ir Latvijas

robežvalstis?” var pierakstīt sekojoši: TelpiskaDB=> select v1.nosaukums

TelpiskaDB-> from Valstis v1, Valstis v2

TelpiskaDB-> where v2.nosaukums = ‘Latvija’

TelpiskaDB-> and area(v1.geometrija) < area(v2.geometrija);

Tomēr ir vaicājumu tipi, kurus ar PostgreSQL nevar izpildīt. Tā piemēram sistēmā

nav iekļauti topoloģiskie operatori (tādi kā robežošanās, u.c.). Protams, iespējams manuāli

izveidot atbilstošas funkcijas, taču tas padara telpisko datu apstrādi sarežģītu.

78

Page 79: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

SECINĀJUMI

Darba tematika par GIS un telpiskajiem datiem manu uzmanību piesaistīja jau tūlīt

pēc bakalaura darbu tēmu publicēšanas. Šī no nozare man bija pilnīgi sveša, bet tanī pašā

laikā ļoti saistoša. Tā bija iespēja dziļāk iepazīties ar datorzinātnes (manas patreizējās

specialitātes) un ģeogrāfijas (viena no mīļākajiem priekšmetiem skolas gados) apvienošanos

mūsdienās. Izrādās, ka šīs abas zinātnes atradušas „kopīgu valodu”, un jau šobrīd savā sfērā

tās ir nedalāmas.

Iepazīšanās ar literatūru sākumā, interesanti bija pētīt GIS pielietojuma iespējas,

veidu, kā reālās pasaules objekti, kuriem bez aprakstošajiem atribūtiem ir arī telpiskā

komponente, tiek aprakstīti datoram saprotamā veidā. Pārsteidza fakts, ka mūsdienīgās

DBVS spēj darboties ar šādiem – telpiskiem datiem gandrīz tik pat vienkārši, un uz tādu pašu

loģiku balstītiem principiem, kā jau ierastajās relāciju un relāciju-objektu datu bāzēs.

Vaicājumu izpilde notiek ar gandrīz identisku SQL sintaksi, papildinātu ar telpiskajām

operācijām.

Sīkāku tematikas izvēli – telpisko datu glabāšanu un to pieejas metožu pētīšanu

ieteica bakalaura darba vadītājs, un es to pilnīgi atbalstīju. Daļējs iemesls šai izvēlei bija

sākotnējā neizpratne par šo problēmu, jo telpiskajos datos nebija iespējams pielietot tās

metodes, kas plaši tiek izmantotas relāciju datos. Šo uzdevumu veikšanai nepieciešamas citas

- jaunas un papildinātas metodes, kuras arī nolēmu pētīt sīkāk. Iepazinos gan ar lineārajām

struktūrām, kad telpiskie divdimensiju dati tiek pārvērsti lineārā – viendimensionālā formā,

gan ar dažādu koku struktūrām. Neapšaubāmi, šis darbs nostiprināja arī zināšanas tādās

disciplīnās kā „Datu struktūras” un „Diskrētās struktūras datorzinātnē”, jo liela uzmanība tika

pievērsta jau minētajai koka struktūrai un tās variantiem.

Daraba izstrādes laikā secināju, ka, izmantojot uz telpu balstītās struktūras telpisko

datu indeksēšanā, vairākumā gadījumu nākas sastapties ar lieku objektu ierakstu dublēšanos

struktūrā, kas neapšaubāmi samazina vaicājumu izpildes efektivitāti. Fiksētajā režģī tiek

piesaistītas tik diska lapas, cik ir šūnu. Šāds risinājums ir neefektīvs, jo nelietderīgi tiek

izmantota diska atmiņa apgabalos, kur objektu nav. Turpretim apgabalos, kur objektu

sablīvējums ir liels veidojas pārplūdes lapu ķēdītes, kas arī samazina sistēmas efektivitāti.

Režģa faila struktūra ir „taupīgāka” ar resusiem, jo izmanto īpašu diska lapu piešķiršanas

mehānismu, taču objektu dublēšanās netiek novērsta. Lineārajā četrkokā ar īpašu metožu

palīdzību (z-kārtošanas, Džilberta līknes) 2-dimensionālā telpa tiek pārveidota lineārā 79

Page 80: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

(viendimensionālā) tā, ka telpā tuvu esoši objekti visticamāk atradīsies tuvu arī lineārajā

struktūrā. Četrkoks apraksta telpas dalījumu kvadrantos, un par indeksēšanas struktūru tiek

izmantots B+koks. Z-kārtošanas koks ir vienīgā struktūra no apskatītajām, kas indeksē pašas

objektu ģeometrijas nevis to aproksimizācijas. Viens no Z-kārtošanas koka variantiem paredz

arī indeksēšanas risinājumu bez objektu ierakastu dublēšanās, taču nereti kā blakusefekts

vaicājumu izpildē ir lieku objektu atgriešana, kas jāapstrādā attīrīšanas solī.

Darbā apskatītās uz datiem orientētās struktūras (R-koks un tā paveidi) ļauj izvairīties

no objektu ierakstu dublēšanās, jo tiek izmantoti direktoriju taisnstūri, kas ir mbb virsotnes

pēcteču taisnstūriem. Oriģinālā R-koka efektivitāti samazina šo direktorija taisnstūru

pārklāšanās un jaunu objektu ievietošanas nevēlama secība. R*koks ar īpašu virsotņu

dalīšanas un objektu pārievietošanas algoritmu palīdzību šos trūkumus minimizē. Vēl viens

R-koka variants ir R+koks, kas izmantojot apgriešanu (clipping) pilnīgi izslēdz direktorija

taisnstūru pārklāšanos, taču tādā veidā atkal aktivizē objektu ierakstu dublēšanās problēmu.

Darba izstrādes nobeigumā tika veikts neliels ieskats populārākajās TDBVS, kas deva

arī praktisku priekšstatu par to, kā darbā apskatītie principi tiek pielietoti reālajā dzīvē.

Uzskatu, ka šis darbs man ir devis daudz jaunu zināšanu sfērā, kuru iepriekš

nepārzināju. Ceru, ka jauniegūtās zināšanas varēšu pielietot jau nākamajā gadā, studējot

maģistrantūrā. Kopumā esmu apmierināts ar paveikto, jo, neskatoties uz lielo ieguldīto darbu,

tas nepaspēja apnikt, un bija interesants.

80

Page 81: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

VĀRDNĪCA

cell šūna - telpas dalījuma mazākā vienība

clipping apgriešana – metode, kuru izmanto R+kokā, lai izvairītos no

dr pārklāšanās

cost models izmaksu modeļi

dead space tukšās vietas telpā, kur neatrodas objekti

directory direktorijs – masīvs, kas satur norādes uz atbilstošajām diska

lapām

directory rectangle direktorija taisnstūris

disk access fiziska griešanās pie diska

disk page overflow diska lapas pārpilde –situācija, kad ievietojot objektu diska

lapā, tā jau satur maksimālo skaitu objektu

disk pages diska lapas – noteikta lieluma apgabali uz diska, kuros tiek

glabāti objekti

downward split lejupejošā dalīšana – virsotņu dalīšanas metode R+kokā

group expansion grupas paplašinājums

I/O operations I/O operācijas, ievades/izvades operācijas

minimal bounding box mazākais robežtaisnstūris (mbb) – mazākais taisnstūris, kas

pilnībā ietver doto ģeometrisko objektu

one-page-at-a-time strategy vienas diska lapas apskates stratēģija

overlap nosedz, pārklāj

packing algorithms blīvēšanas algoritmi, kas minimizē koka lapu pārklāšanos

point query punkta vaicājums, kas atgriež objektu kopu, kuras objekti

satur uzdotās punktakoordinātes

quadrant label kvadranta iezīme – unikāla iezīme četrkoka kvadrantu

identificēšanai

quadtree četrkoks

range query diapazona vaicājums

reinsertion pārievietošana – objektu efektīvākas indeksēšanas stratēģija,

kas paredz objektu atkārtotu ievietošanu telpā

root of a tree koka sakne – koka virsotne, kurai nav priekšteču

SAM (spatial access methods) telpisko datu piekļuves metodes

space utilization telpas izlietojums81

Page 82: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

to map kartēt, jeb piesaistīt objektus telpas dalījuma struktūrai

tree leaf level koka lapu līmenis

tree leaf koka lapa – virsotne, kurai nav pēcteču

tree node koka virsotne

update atjaunināšana

window query loga vaicājums, kas atgriež objektu kopu, kuras objektus

pārklāj uzdotais loga arguments

refinement step attīrīšanas solis – telpiskā vaicājuma izpildes solis, kurā no

kandidātu kopas tiek atlasīti patiesie rezultāti

grid file režģa fails – uz telpu balstīta indeksēšanas metode

fixed grid fiskētais režģis – uz telpu balstīta indeksēšanas metode

theme slānis – viena veida ģeogrāfisku objektu kopums

82

Page 83: RĪGAS TEHNISKĀ UNIVERSITĀTE · Web viewDaudzstūri sauc par vienkāršu, ja tā robeža ir vienkārša slēgta lauzta līnija. Daudzstūris P ir konvekss, ja jebkuru divu punktu

BIBLIOGRĀFISKAIS SARAKSTS

1. Rigaux P., Scholl M., Voisard A. Spatial Databases with application to GIS - Morgan

Kaufmann Publishers. 2002. – 408 p.

2. Shekhar S., Chawla S. Spatial Databases- A Tour – Prentice Hall. 2003. – 288p

3. Demers M.N. Fundamentals of Geographic Information Systems 2nd edition. – New York:

John Wiley & Sons, Inc., 1999. – 498 p.

4. Longley P.A., Goodchild M.F., Maguire D.J., Rhind D.W. Geographic Information

Systems and Science – John Wiley & Sons. 2002. – 472 p.

5. Oracle 9i Database Online Documentation Release 9.0.1.

6. Database Laboratory: Spatial Access Methods - http://lbdwww.epfl.ch/~saglio/EPFL0525/

7. University of Colorado - Department of Computer Science: Spatial Databases and Data

Models - http://www.cs.colorado.edu/~getrich/Classes/csci5817/Term_Papers/kahnh/

8. University of Maryland - Department of Computer Science: R-tree Demo -

http://www.cs.umd.edu/users/brabec/quadtree/rectangles/rtrees.html

9. GIS.com – www.gis.com

10. NonLinear Data Structure – Trees -

http://www.bits-pilani.ac.in/dlp-home/online/studymat/2002_2003/iszc361/resource/

nlineartree.htm

11. National Institute of Standarts and Technology -

http://www.nist.gov/dads/HTML/tree.html

83