rĪgastehniskĀuniversitĀte datorzinātnes un · pdf filerĪgastehniskĀuniversitĀte...

45
RĪGAS TEHNISKĀ UNIVERSITĀTE Datorzinātnes un informācijas tehnoloģijas fakultāte Lietišķo datorzinātņu institūts Grafiskās datubāzes 1. praktiskais darbs Aldis Ameriks 101REB294 RDGB01 Rīga 2014

Upload: phungkhuong

Post on 11-Feb-2018

226 views

Category:

Documents


5 download

TRANSCRIPT

RĪGAS TEHNISKĀ UNIVERSITĀTE

Datorzinātnes un informācijas tehnoloģijas fakultāte

Lietišķo datorzinātņu institūts

Grafiskās datubāzes

1. praktiskais darbs

Aldis Ameriks101REB294

RDGB01

Rīga 2014

SATURS

1 Slāņu definēšana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Slāņu meta datu izveide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Grafisko datu ievade, izmantojot INSERT . . . . . . . . . . . . . . . . . . . . . . 123.1 Ēku dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Ielu dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Sētu dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.4 Ūdenstilpņu dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.5 Tiltu dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.6 Koku dati . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4 Datu ielāde, izmantojot SQL*Loader . . . . . . . . . . . . . . . . . . . . . . . . . 194.1 Ēku atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2 Ielu atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3 Koku atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.4 Sētu atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.5 Tiltu atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.6 Ūdenstilpņu atribūtu datu ievade . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5 Dažādu tipu indeksu izveidošana . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.1 R-koka indekss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2 Fiksētais telpiskais indekss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.3 Hibrīdais indekss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6 Indeksu ātrdarbības salīdzinājums . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

7 Primārā filtra vaicājumi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

8 Topoloģiju analīzes vaicājumi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

9 Ģeometriju skaitlisko raksturojumu iegūšanas vaicājumi . . . . . . . . . . . . 32

10 Atributīvo datu izgūšanas vaicājumi . . . . . . . . . . . . . . . . . . . . . . . . . 34

11Ģeometriju ģeometrisko datu iegūšanas vaicājumi . . . . . . . . . . . . . . . . . 36

12Ģeometriskās datu bāzes datu vizualizācija . . . . . . . . . . . . . . . . . . . . . 39

13 Vaicājumu vizualizācija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

14Ģeometrisko datu vizualizācija, izmantojot Java . . . . . . . . . . . . . . . . . . 42

2

15 Secinājumi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3

Grafiskās datubāzes

1. Slāņu definēšana

Dotajam attēlam tika izdalīti astoņi slāņi: Ēkas (gaiši pelēkais), Koki (zaļais), Ceļi (tumšipelēkais), Ūdenstilpnes (zilais), Sētas (dzeltenais), Tilti (brūnais), Citi objekti. Katram slānimtika izveidota sava tabula ar lauku - “ģeometrija” ar tipu SDO_GEOMETRY. Lai vieglāk būtuizdalīt šī praktiskā darba ietvaros izveidotās tabulas, visiem tabulu nosaukumiem tika dotsprefikss - “gd_” (grafiskie dati).

1. att. Izvēlētā karte ar dažādiem ģeometriskiem objektiem.

4

Grafiskās datubāzes

Ēkas

CREATE TABLE gd_ekas(ekas_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_ekas PRIMARY KEY (ekas_id));

CREATE TABLE gd_ekas_info(ekas_info_id number,e_stavi number,e_tips varchar2(30),e_gads number,iela number,e_numurs number,eka number,constraint pk_ekas_info PRIMARY KEY (ekas_info_id),constraint saite_ee FOREIGN KEY (eka) references gd_ekas(ekas_id),constraint saite_ei FOREIGN KEY (iela) references gd_ielas(ielas_id));

CREATE SEQUENCE gd_ekas_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

Koki

CREATE TABLE gd_koki(koka_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_koki PRIMARY KEY (koka_id));

CREATE TABLE gd_koka_info(koka_info_id number,k_tips varchar2(30),k_gads number,k_stavoklis varchar2(30),koks number,constraint pk_koka_info PRIMARY KEY (koka_info_id),constraint saite_kk FOREIGN KEY (koks) references gd_koki(koka_id));

CREATE SEQUENCE gd_koka_id_seqINCREMENT BY 1

5

Grafiskās datubāzes

START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

Ielas

CREATE TABLE gd_ielas(ielas_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_ielas PRIMARY KEY (ielas_id));

CREATE SEQUENCE gd_ielas_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

CREATE TABLE gd_ielas_info(ielas_info_id number,i_joslas number,i_tips varchar2(30),i_stavoklis varchar2(30),iela number,constraint pk_ielas_info PRIMARY KEY (ielas_info_id),constraint saite_ii FOREIGN KEY (iela) references gd_ielas(ielas_id));

Ūdenstilpnes

CREATE TABLE gd_udenstilpnes(udenstilpnes_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_udenstilpnes PRIMARY KEY (udenstilpnes_id));

CREATE SEQUENCE gd_udenstilpnes_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999

6

Grafiskās datubāzes

NOCYCLENOORDERCACHE 30

CREATE TABLE gd_udenstilpnes_info(udenstilpnes_info_id number,u_veids varchar2(30),u_dzilums number,u_stavoklis varchar2(30),u_zivju_sk number,udenstilpne number,constraint pk_udenstilpnes_info PRIMARY KEY (udenstilpnes_info_id),constraint saite_uu FOREIGN KEY (udenstilpne) references gd_udenstilpnes(udenstilpnes_id));

Sētas

CREATE TABLE gd_setas(setas_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_setas PRIMARY KEY (setas_id));

CREATE TABLE gd_setas_info(setas_info_id number,s_tips varchar2(30),s_stavoklis varchar2(30),s_augstums number,seta number,constraint pk_setas_info PRIMARY KEY (setas_info_id),constraint saite_ss FOREIGN KEY (seta) references gd_setas(setas_id));

CREATE SEQUENCE gd_setas_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

Tilti

CREATE TABLE gd_tilti(tilta_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_tilti PRIMARY KEY (tilta_id));

7

Grafiskās datubāzes

CREATE TABLE gd_tilta_info(tilta_info_id number,t_tips varchar2(30),t_stavoklis varchar2(30),t_augstums number,t_garums number,tilts number,constraint pk_tilta_info PRIMARY KEY (tilta_info_id),constraint saite_tt FOREIGN KEY (tilts) references gd_tilti(tilta_id));

CREATE SEQUENCE gd_tilta_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

Citi objekti

CREATE TABLE gd_citi_obj(cita_obj_id NUMBER,geometrija SDO_GEOMETRY,apraksts varchar2(1000),CONSTRAINT pk_citi_obj PRIMARY KEY (cita_obj_id));

CREATE SEQUENCE gd_cita_obj_id_seqINCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 9999999NOCYCLENOORDERCACHE 30

8

Grafiskās datubāzes

2. Slāņu meta datu izveide

Kad ir izveidotas visas nepieciešamās tabulas, tiek norādīti katras ģeometrijas metadati.Metadatu informācija tiek ievadīta tabulā USER_SDO_GEOM_METADATA, norādot tabulu,ģeometrijas kolonu, koordināšu minimālo vērtību, koordināšu maksimālo vērtību un precizitāti.Šī laboratorijas darba ietvaros izvēlētais kartes fragments ir 200x200 pikseļus liels un laiiegūtu līdzenas ģeometriskas figūras (vairāk attiecas uz ģeometriskām figūrām ar izliekumiem),precizitāte tika izvēlēta samērā liela - 0.01.

DELETE FROM user_sdo_geom_metadata WHERE TABLE_NAME LIKE 'GD%';

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_EKAS','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_KOKI','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_IELAS','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_UDENSTILPNES','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),

9

Grafiskās datubāzes

sdo_dim_element('Y', 0, 200, 0.01)),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_TILTI','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_SETAS','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_DZELZSCELI','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

INSERT INTO user_sdo_geom_metadata(table_name, column_name, diminfo, srid)VALUES('GD_CITI_OBJ','GEOMETRIJA',sdo_dim_array(sdo_dim_element('X', 0, 200, 0.01),sdo_dim_element('Y', 0, 200, 0.01)

),NULL

);

SELECT * FROM user_sdo_geom_metadata WHERE TABLE_NAME LIKE 'GD%';

10

Grafiskās datubāzes

Rezultāts:

2. att. Visu ģeometrisko objektu metadati.

11

Grafiskās datubāzes

3. Grafisko datu ievade, izmantojot INSERT

Kad ir izveidotas ģeometrijas datu tabulas, atribūtu tabulas, kā arī norādīti ģeometriskodatu metadati, var ievadīt ģeometriskos datus. Datu ievadi var veikt dažādos veidos, piemēram,ar komandu INSERT vai izmantojot SQL*Loader.

Šajā nodaļā ģeometrijas datu ievadei tiks izmantota komanda INSERT.

3.1. Ēku dati

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(20,20, 12,35, 32,45, 40,30, 20,20)

),'Gulbalku eka');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(50,50, 53,55, 58,54, 57,47, 50,50)

),'skunis');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(20,80, 30,110, 50,100, 43,83, 50,80, 45,68, 20,80)

),'Dzivojama maja');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,

12

Grafiskās datubāzes

SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(60,58, 63,65, 72,62, 70,55, 60,58)

),'skunis');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(40,130, 50,140, 60,130, 50,120, 40,130)

),'pirts');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(90,10, 90,30, 110,30, 110, 10, 90,10)

),'garaza');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(120,5, 120,40, 140,40, 140,50, 150,50,150,55, 160,55, 160,50, 170,50, 170,40, 190,40, 190,10,140,10, 140,5, 120,5)

),'dzivojama maja, mura');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(168,74, 173,83, 190,74, 185,65)

),'skunis');

INSERT INTO gd_ekasVALUES(gd_ekas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(145,188, 160,188, 160,166, 145,166, 145,188)

),'dzivojama maja');

13

Grafiskās datubāzes

3.2. Ielu dati

INSERT INTO gd_ielasVALUES(gd_ielas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,2,1, 11,2,1),SDO_ORDINATE_ARRAY(120,160, 110,165, 120,200, 132,200, 120,160,

60,0, 104,144, 114,139, 70,0, 60,0)),'asfaltets cels');

INSERT INTO gd_ielasVALUES(gd_ielas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(0,180, 0,190, 200,90, 200,80, 0,180)

),'zemes cels');

3.3. Sētu dati

INSERT INTO gd_setas(setas_id, geometrija)VALUES(gd_setas_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,1),SDO_ORDINATE_ARRAY(0,10, 10,70, 73,50, 61,10, 0,10)

));

INSERT INTO gd_setas(setas_id,geometrija)VALUES(gd_setas_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,1),SDO_ORDINATE_ARRAY(73,3, 110,123, 198,78, 198,3, 73,3)

));

14

Grafiskās datubāzes

INSERT INTO gd_setas(setas_id,geometrija)VALUES(gd_setas_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,1),SDO_ORDINATE_ARRAY(74,52, 10,72, 42,156, 97,128, 74,52)

));

3.4. Ūdenstilpņu dati

INSERT INTO gd_udenstilpnesVALUES(gd_udenstilpnes_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,2),SDO_ORDINATE_ARRAY(70,100, 65,103, 60,110,

60,120, 70,130,80,125,70,100)), '');

INSERT INTO gd_udenstilpnesVALUES(gd_udenstilpnes_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY(110,50, 110,80, 130,80, 130,50, 110,50)

),'');

INSERT INTO gd_udenstilpnesVALUES(gd_udenstilpnes_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1005,4, 1,2,1, 3,2,2, 7,2,1, 9,2,2),SDO_ORDINATE_ARRAY(200,150, 200,130, 120,138, 50,200, 70,200, 120,158, 200, 150

)), '');

15

Grafiskās datubāzes

3.5. Tiltu dati

INSERT INTO gd_tiltiVALUES(gd_tilta_id_seq.NEXTVAL,SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,2,1),SDO_ORDINATE_ARRAY(114,139, 104,144, 110,165, 120,160, 114,139)

),'');

3.6. Koku dati

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(8.683,159.573, 11.097,157.158, 13.512,159.573)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(19.849,157.435, 20.995,156.289, 22.141,157.435)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(9.535,143.683, 10.49,142.728, 11.445,143.683)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(15.074,149.604, 16.793,147.885, 18.512,149.604)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(2.468,151.705, 4.378,149.795, 6.288,151.705)),'');

16

Grafiskās datubāzes

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(7.076,120.787, 9.463,118.399, 11.851,120.787)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(36.592,116.161, 38.382,114.37, 40.173,116.161)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(69.719,75.573, 71.211,74.081, 72.703,75.573)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(70.614,89.003, 74.195,85.421, 77.777,89.003)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(16.298,56.174, 19.282,53.19, 22.267,56.174)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(46.739,17.974, 48.231,16.481, 49.723,17.974)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(95.683,45.43, 98.369,42.744, 101.055,45.43)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(115.679,97.359, 118.365,94.673, 121.051,97.359)),'');

INSERT INTO gd_koki

17

Grafiskās datubāzes

VALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(158.356,84.228, 160.146,82.437, 161.937,84.228)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(176.262,110.49, 180.739,106.014, 185.216,110.49)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(150.298,157.346, 152.685,154.958, 155.073,157.346)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(44.87,176.126, 47.821,173.175, 50.772,176.126)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(27.165,184.65, 28.804,183.011, 30.443,184.65)),'');

INSERT INTO gd_kokiVALUES(gd_koka_id_seq.NEXTVAL,MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,4),MDSYS.SDO_ORDINATE_ARRAY(176.677,177.437, 178.644,175.47, 180.611,177.437)),'');

18

Grafiskās datubāzes

4. Datu ielāde, izmantojot SQL*Loader

Tā kā visi ģeometriskie dati tika ievadīti ar komandu INSERT, ģeometrisko objektuatributīvo datu ievadei tiks izmantota programma SQL*Loader.

Kad ir izveidots kontroles fails, kas parūpējas par datu ielādēšanu, šī programma ievērojamiatvieglo liela apjoma datu ievadi, jo datus var norādīt vienkāršā teksta veidā.

3. att. SQL*Loader izmantošana.

4.1. Ēku atribūtu datu ievade

ekas_loader.ctl

load datainfile 'ekas.dat'into table gd_ekas_infofields terminated by ','(EKAS_INFO_ID, E_STAVI, E_TIPS, E_GADS, IELA, E_NUMURS, EKA)

ekas.dat

1, 2, Koka, 1993, Vītolu, 3, 332, 1, Koka, 2001, Vītolu, 3, 13, 1, Koka, 1989, Vītolu, 5, 34, 2, Koka, 1987, Vītolu, 5, 25, 1, Koka, 1986, Vītolu, 5, 46, 2, Koka, 1979, Vītolu, 4, 31

19

Grafiskās datubāzes

7, 4, Ķieģeļu, 1983, Mazā, 32, 68, 1, Koka, 1983, Mazā, 32, 89, 1, Koka, 1983, Mazā, 32, 5

4.2. Ielu atribūtu datu ievade

ielas_loader.ctl

load datainfile 'ielas.dat'into table gd_ielas_infofields terminated by ','(IELAS_INFO_ID, I_JOSLAS, I_TIPS, I_STAVOKLIS, IELA)

ielas.dat

1, 2, asfalts, labs, 53,2, 1, zemes, viduvejs, 52

4.3. Koku atribūtu datu ievade

koki_loader.ctl

load datainfile 'koki.dat'into table gd_koka_infofields terminated by ','(KOKA_INFO_ID, K_TIPS, K_GADS, K_STAVOKLIS, KOKS)

koki.dat

1, vitols, 1993, labs, 12, vitols, 1992, labs, 23, vitols, 1991, labs, 34, vitols, 1989, labs, 45, vitols, 1988, labs, 56, ozols, 1973, labs, 6

20

Grafiskās datubāzes

7, ozols, 1975, labs, 78, ozols, 1976, labs, 89, ozols, 1971, labs, 910, klava, 1983, labs, 1011, klava, 1984, labs, 1112, klava, 1985, labs, 1213, klava, 1986, labs, 1314, klava, 1987, labs, 1415, priede, 1976, labs, 1516, priede, 1977, labs, 1617, priede, 1978, labs, 1718, priede, 1979, labs, 1819, priede, 1973, labs, 19

4.4. Sētu atribūtu datu ievade

setas_loader.ctl

load datainfile 'setas.dat'into table gd_setas_infofields terminated by ','(SETAS_INFO_ID, S_TIPS, S_STAVOKLIS, S_AUGSTUMS, SETA)

setas.dat

1, koka, labs, 2, 22, metala, videjs, 1.5, 33, koka, labs, 2.5, 4

4.5. Tiltu atribūtu datu ievade

tilti_loader.ctl

load datainfile 'tilti.dat'

21

Grafiskās datubāzes

into table gd_tilta_infofields terminated by ','(TILTA_INFO_ID, T_TIPS, T_STAVOKLIS, T_AUGSTUMS, T_GARUMS, TILTS)

tilti.dat

1, koka, labs, 2, 4.3, 8

4.6. Ūdenstilpņu atribūtu datu ievade

ud_loader.ctl

load datainfile 'ud.dat'into table gd_udenstilpnes_infofields terminated by ','(UDENSTILPNES_INFO_ID, U_VEIDS, U_DZILUMS, U_STAVOKLIS, U_ZIVJU_SK, UDENSTILPNE)

ud.dat

1, dikis, 2, nav zinams, 200, 12, baseins, 3, labs, 0, 23, upe, 9, labs, 10000, 238

22

Grafiskās datubāzes

5. Dažādu tipu indeksu izveidošana

Telpiskais indekss ir nepieciešams, lai strādātu ar ģeometriskajiem objektiem. Neizveidojotšo indeksu, nav arī iespējams vizualizēt ģeometriskos datus.

Šī darba ietvaros tiks izmantoti 3 veidu indeksi:

• R-koka indeksi

• Fiksētie indeksi

• Hibrīdie indeksi

5.1. R-koka indekss

CREATE INDEX IND_RT_IELA ON "SYSTEM"."GD_IELAS"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

CREATE INDEX IND_RT_SETA ON "SYSTEM"."GD_SETAS"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

CREATE INDEX IND_RT_TILTS ON "SYSTEM"."GD_TILTI"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

CREATE INDEX IND_RT_CITS_OBJ ON "SYSTEM"."GD_CITI_OBJ"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

CREATE INDEX IND_RT_KOKS ON "SYSTEM"."GD_KOKI"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

5.2. Fiksētais telpiskais indekss

CREATE INDEX ind_fiks_eka ON "SYSTEM"."GD_EKAS"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEXPARAMETERS('SDO_LEVEL=4')

5.3. Hibrīdais indekss

CREATE INDEX IND_HIB_UDENSTILPNES ON "SYSTEM"."GD_UDENSTILPNES"("GEOMETRIJA")INDEXTYPE IS MDSYS.SPATIAL_INDEX

23

Grafiskās datubāzes

PARAMETERS('SDO_LEVEL=4, SDO_NUMTILES=4');

24

Grafiskās datubāzes

6. Indeksu ātrdarbības salīdzinājums

Lai varētu objektīvi salīdzināt indeksu ātrdarbības, tika izveidotas atsevišķas tabulas šimnolūkam, papildus tika izveidoti 20000 ģeometriski punkti, kuri tiks ievadīti katrā no trīsizveidotajām tabulām. Beigās tika novērtēts nepieciešamais laiks ģeometrisko datu ievadei.Nepieciešamais laiks tika noteikts, no SQL*Loader atskaites faila ar pagarinājumu “.log”.

1. tab. Dažādu indeksu ātrdarbības salīdzinājums

R-koka, Hibrīdā, Fiksētā indeksu ātrdarbības salīdzinājums

Indeksa tips Laiks, [s] Laika starpība, [reizes]

R-koka 8.98 -

Fiksētais 18.86 2.1

Hibrīdais 19.55 2.17

1. tab. var redzēt, ka ģeometrisko datu ievade tabulā ar R-koka indeksu ir visātrākā, datuievade tabulā ar fiksēto indeksu ir 2.1 reizes lēnāka, kā tabulā ar R-koka indeksu un tabulā arhibrīdo indeksu ir vislēnākā - 2.17 reizes lēnāka, kā tabulai ar R-koka indeksu.

25

Grafiskās datubāzes

7. Primārā filtra vaicājumi

Primārais filtrs ir visvienkāršākais filtra veids, ar kuru bieži var iegūt kļūdainus rezultātus.Pirmajā izmantotajā filtrā tiek atrasti visi koki, kas atrodas noteiktā teritorijas apgabalā.

4. att. Izvēlētais teritorijas apgabals.

SELECT * FROM GD_KOKI KWHERE SDO_FILTER(K.GEOMETRIJA, SDO_GEOMETRY(3,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,3),SDO_ORDINATE_ARRAY(10,10, 97,190)),'querytype=window') = 'TRUE';

26

Grafiskās datubāzes

Rezultāts:

5. att. Pirmā filtra iegūtie rezultāti.

Otrs primārā filtra vaicājums ir vairāku primāro filtru apvienojums, kur tiek izgūti visi koki,ēkas, sētas un ūdenstilpnes, kas atrodas iepriekš izvēlētajā teritorijas apgabalā.

SELECT K.KOKA_ID Objekta_ID, 'Koks' Nosaukums FROM GD_KOKI KWHERE SDO_FILTER(K.GEOMETRIJA, SDO_GEOMETRY(3,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,3),SDO_ORDINATE_ARRAY(10,10, 97,190)),'querytype=window') = 'TRUE'unionSELECT E.EKAS_ID, 'Eka' Nosaukums FROM GD_EKAS EWHERE SDO_FILTER(E.GEOMETRIJA, SDO_GEOMETRY(3,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,3),SDO_ORDINATE_ARRAY(10,10, 97,190)),'querytype=window') = 'TRUE'unionSELECT S.SETAS_ID, 'Seta' Nosaukums FROM GD_SETAS SWHERE SDO_FILTER(S.GEOMETRIJA, SDO_GEOMETRY(3,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,3),SDO_ORDINATE_ARRAY(10,10, 97,190)),'querytype=window') = 'TRUE'unionSELECT U.UDENSTILPNES_ID, 'Udenstilpne' Nosaukums FROM GD_UDENSTILPNES UWHERE SDO_FILTER(U.GEOMETRIJA, SDO_GEOMETRY(3,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,3,3),SDO_ORDINATE_ARRAY(10,10, 97,190)),'querytype=window') = 'TRUE'

27

Grafiskās datubāzes

Rezultāts:

6. att. Otrā filtra iegūtie rezultāti.

28

Grafiskās datubāzes

8. Topoloģiju analīzes vaicājumi

Topoloģijas analīzes vaicājumi iekļauj dažādus vaicājumus, kas norāda dažādas saistībasstarp ģeometriskajiem objektiem, kā piemēram, vai ģeometriskie objekti saskaras, iekļauj viensotru, kā arī attālumus starp objektiem vai visus objektus noteiktā attālumā.

Atrast visas ielas, kuras krustojas ar Pumpuru ielu (id=52).

7. att. Ielu krustojums.

SELECT b.ielas_id Ielas_idFROM GD_IELAS A, GD_IELAS BWHERE a.ielas_id = 52 AND SDO_RELATE(A.GEOMETRIJA, B.GEOMETRIJA,'mask=ANYINTERACT querytype=WINDOW') = 'TRUE'AND B.IELAS_ID != 52;

Rezultāts:

8. att. Pirmā topoloģijas analīzes vaicājuma rezultāti.

29

Grafiskās datubāzes

Visas ēkas, kas atrodas noteiktā attālumā no dzīvojamās ēkas ar id = 2.

9. att. Visas ēkas ap ēku ar id = 2.

SELECT b.ekas_id ekas_idFROM GD_ekas A, GD_ekas BWHERE a.ekas_id = 2 AND SDO_WITHIN_DISTANCE(A.GEOMETRIJA, B.GEOMETRIJA,'distance=50') = 'TRUE'AND B.ekas_id != 2;

Rezultāts:

10. att. Otrā topoloģijas analīzes vaicājuma rezultāti.

Visas unikālas māju kombinācijas, kas ir tuvāk par noteiktu attālumu savā starpā.

SELECT A.*FROM ( SELECT a.ekas_id EKA_1, b.ekas_id EKA_2FROM GD_ekas A, GD_ekas BWHERE (SDO_WITHIN_DISTANCE(A.GEOMETRIJA, B.GEOMETRIJA,'distance=30') = 'TRUE'AND B.ekas_id != A.ekas_id)) ALEFT OUTER JOIN ( SELECT a.ekas_id EKA_1, b.ekas_id EKA_2FROM GD_ekas A, GD_ekas BWHERE (SDO_WITHIN_DISTANCE(A.GEOMETRIJA, B.GEOMETRIJA,'distance=30') = 'TRUE'AND B.ekas_id != A.ekas_id)) BON (A.EKA_1 = B.EKA_2 AND A.EKA_2 = B.EKA_1)

WHERE A.EKA_1 < A.EKA_2OR B.EKA_1 IS NULL;

30

Grafiskās datubāzes

Rezultāts:

11. att. Trešā topoloģijas analīzes vaicājuma rezultāti.

Visas ēkas, kas ir noteiktā attālumā no upes.

SELECT b.ekas_id ekas_idFROM GD_UDENSTILPNES A, GD_ekas BWHERE a.udenstilpnes_id = 238 AND SDO_WITHIN_DISTANCE(A.GEOMETRIJA, B.GEOMETRIJA,'distance=50') = 'TRUE'

Rezultāts:

12. att. Ceturtā topoloģijas analīzes vaicājuma rezultāti.

Visi koki, kas ir tuvu ēkām.

SELECT b.koka_id, a.ekas_idFROM GD_ekas A, GD_koki BWHERE (SDO_WITHIN_DISTANCE(A.GEOMETRIJA, B.GEOMETRIJA,'distance=10')) = 'TRUE'

Rezultāts:

13. att. Piektā topoloģijas analīzes vaicājuma rezultāti.

31

Grafiskās datubāzes

9. Ģeometriju skaitlisko raksturojumu iegūšanas vaicājumi

No datubāzes ir iespējams arī iegūt ģeometrisku informāciju par objektiem, kā piemēram,perimetru, laukumu un garumu.

Visu ēku laukumi

SELECT DISTINCT a.ekas_id, sdo_geom.sdo_area (a.geometrija, b.diminfo) laukumsFROM gd_ekas A, user_sdo_geom_metadata BORDER BY a.ekas_id

14. att. Pirmā ģeometriju skaitlisko raksturojumu vaicājuma rezultāti.

Teritorijas procentuāla apdzīvojuma iegūšana

SELECT SUM(c.laukums) Laukums, 200*200 Viss_apgabals,Round((SUM(c.laukums)/(200*200))*100,2) ProcentualiFROM (SELECT DISTINCT a.ekas_id, sdo_geom.sdo_area (a.geometrija, b.diminfo) laukumsFROM gd_ekas A, user_sdo_geom_metadata BORDER BY a.ekas_id) c;

15. att. Otrā ģeometriju skaitlisko raksturojumu vaicājuma rezultāti.

Visu sētu laukumi

SELECT DISTINCT a.setas_id, sdo_geom.sdo_area (a.geometrija, b.diminfo) laukumsFROM gd_setas A, user_sdo_geom_metadata BORDER BY a.setas_id

32

Grafiskās datubāzes

16. att. Trešā ģeometriju skaitlisko raksturojumu vaicājuma rezultāti.

Dīķa perimetrs (ja kāds izdomā skriet apkārt dīķim)

SELECT DISTINCT ROUND(sdo_geom.sdo_length(a.geometrija, b.diminfo), 2) ud_perimetrsFROM gd_udenstilpnes a, user_sdo_geom_metadata bwhere a.udenstilpnes_id = 1

17. att. Ceturtā ģeometriju skaitlisko raksturojumu vaicājuma rezultāti.

33

Grafiskās datubāzes

10. Atributīvo datu izgūšanas vaicājumi

Katrai ģeometrisko datu tabulai ir piesaistīta arī atribūtu tabula, kas satur papildusinformāciju par ģeometrisko objektu, kā piemēram, zivju skaits ūdenstilpnē vai koka tips.

Zivju skaits upē, dīķi un baseinā

SELECT a.u_veids, a.u_zivju_sk FROM gd_udenstilpnes_info Aorder by a.u_zivju_sk DESC

18. att. Pirmā atributīvo datu izgūšanas vaicājuma rezultāti.

Visu ēku atributīvie dati

SELECT b.apraksts ielas_nosaukums, a.e_numurs majas_nr, a.e_tips tips,a.e_stavi stavu_sk, a.e_gads gads, a.eka ekas_id

FROM gd_ekas_info a, gd_ielas bWHERE b.ielas_id = a.iela

19. att. Otrā atributīvo datu izgūšanas vaicājuma rezultāti.

Koku skaits katrā sētā

SELECT b.setas_id, count(a.koka_id) koku_skFROM gd_koki a, gd_setas bWHERE SDO_RELATE(b.geometrija, a.geometrija, 'mask=CONTAINS querytype=WINDOW')= 'TRUE'GROUP BY b.setas_id

34

Grafiskās datubāzes

20. att. Trešā atributīvo datu izgūšanas vaicājuma rezultāti.

35

Grafiskās datubāzes

11. Ģeometriju ģeometrisko datu iegūšanas vaicājumi

Bez atributīvajiem datiem, ir iespējams arī iegūt datus par pašu ģeometrisko objektu, kāpiemēram, ģeometrijas tipu vai koordinātes.

Visu ēku ģeometriju tipi

SELECT a.ekas_id, a.geometrija.GET_GTYPE()FROM gd_ekas a

21. att. Pirmā ģeometrisko datu izgūšanas vaicājuma rezultāti.

Visu ēku dimensiju skaits (visas ģeometrijas ir divdimensionālas)

SELECT a.ekas_id, a.geometrija.GET_DIMS() dimensiju_skFROM gd_ekas a

22. att. Otrā ģeometrisko datu izgūšanas vaicājuma rezultāti.

Koku ģeometrijas interpretācija

SELECT a.koka_id, a.geometrija.SDO_ELEM_INFOFROM gd_koki a

36

Grafiskās datubāzes

23. att. Trešā ģeometrisko datu izgūšanas vaicājuma rezultāti.

37

Grafiskās datubāzes

Visu koku koordinātes

SELECT a.koka_id, b.k_tips, a.geometrija.SDO_ORDINATESFROM gd_koki a, gd_koka_info bWHERE a.koka_id = b.koks

24. att. Ceturtā ģeometrisko datu izgūšanas vaicājuma rezultāti.

38

Grafiskās datubāzes

12. Ģeometriskās datu bāzes datu vizualizācija

Ģeometrisko datubāzi ir iespējams vizualizēt ar vairākiem rīkiem. Šajā laboratorijas darbaietvarā tika izmantoti divi rīki - Map Viewer un Georaptor.

Datu vizualizācija ar Map Viewer

25. att. Map Viewer slāņi.

26. att. Iegūtā karte ar Map Viewer.

39

Grafiskās datubāzes

Datu vizualizācija ar GeoRaptor

27. att. GeoRaptor slāņi.

28. att. Iegūtā karte ar GeoRaptor.

40

Grafiskās datubāzes

13. Vaicājumu vizualizācija

Vaicājumu vizualizācijai tikai izmantots Map Viewer.

Visu koku, kuri atrodas sētā, vizualizācija

SELECT a.geometrijaFROM gd_koki a, gd_setas bWHERE SDO_RELATE(a.geometrija, b.geometrija,'mask=ANYINTERACT querytype=WINDOW') = 'TRUE'

29. att. Vizualizēti visi koki, kuri atrodas sētā.

41

Grafiskās datubāzes

14. Ģeometrisko datu vizualizācija, izmantojot Java

Lai izveidotu Java aplikāciju ģeometrisko datu attēlošanai tika izmantotas papildusbibliotēkas, lai izveidotu savienojumu ar datubāzi, kā arī lai zīmētus ģeometrijas.

dbc.java

package testdb;

import java.sql.*;import java.util.ArrayList;import java.util.List;

import oracle.core.lmx.CoreException;import oracle.spatial.geometry.JGeometry;import oracle.sql.STRUCT;

public class dbc {

public dbc() {

}

public void connect() {String URL = "jdbc:oracle:thin:@localhost:1521:orcl";String USER = "system";String PASS = "123123";try {conn = DriverManager.getConnection(URL, USER, PASS);

} catch (SQLException e) {e.printStackTrace();

}}

@SuppressWarnings("deprecation")public void getData() {for (int i = 0; i < tblArray.length; i++) {try {Statement stmt = conn.createStatement();String sql = "SELECT a.geometrija geom FROM "+ tblArray[i] + " a";ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {oracle.sql.STRUCT st = (STRUCT) rs.getObject("geom");JGeometry geom = JGeometry.load(st);result.add(geom);

}} catch (SQLException e) {e.printStackTrace();

}}

}

public List<JGeometry> getJList(){return result;

}

private Connection conn;private List<JGeometry> result = new ArrayList<JGeometry>(0);private String[] tblArray = {"gd_setas", "gd_tilti", "gd_ekas", "gd_ielas", "gd_udenstilpnes", "gd_koki", "gd_citi_obj"};}

GraphWindow.java

42

Grafiskās datubāzes

package testdb;

import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Shape;import java.util.List;

import javax.swing.JPanel;

import oracle.spatial.geometry.JGeometry;

import java.awt.geom.AffineTransform;

public class GraphWindow extends JPanel {

public GraphWindow(dbc dbcon) {this.dbcon = dbcon;

}

public void paintComponent(Graphics g) {Graphics2D g2 = (Graphics2D) g;

AffineTransform tform = AffineTransform.getTranslateInstance( 0, 500);tform.scale(3, -3);List<JGeometry> lst = dbcon.getJList();for(int i=0; i<=lst.size()-1; i++){if(lst.get(i) != null){Shape a = lst.get(i).createShape(tform);g2.draw(a);

}}

}private dbc dbcon;private static final long serialVersionUID = 1L;

}

main.java

import java.util.List;

import javax.swing.JFrame;import javax.swing.JPanel;

import oracle.spatial.geometry.JGeometry;

public class main {

public final static void main(String[] args) {

dbc dbcon = new dbc();dbcon.connect();dbcon.getData();List<JGeometry> lst = dbcon.getJList();

JPanel panel = new GraphWindow(dbcon);JFrame frame = new JFrame("JavaGeometry");frame.setContentPane(panel);frame.setSize(600, 600);frame.setVisible(true);

}

}

43

Grafiskās datubāzes

30. att. Ģeometrisko datu vizualizācija ar Java.

44

Grafiskās datubāzes

15. Secinājumi

Praktiskā darba izpildei tika izmantota Oracle 12c datubāze ar paplašinājumu Oracle Spatial,kas ļauj darboties ar ģeometriskiem objektiem.

Darbam ar datubāzi tika izmantots SQLDeveloper, kuram ģeometrisko datu attēlošanai bijauzinstalēts GeoRaptor paplašinājums.

Izstrādājot šo praktisko darbu, radās virkne dažādu problēmu, kā piemēram, ievadotnepareizus metadatus, tika izmesta vesela virkne kļūdu paziņojumu pēc kuriem, mēģinot vēlreizievadīt tos pašus metadatus, atkal tika izmesta virkne kļūdu. Bija reizes, kad nācās metadatusdzēst un veidot pa jaunu.

Papildus jāsaka, ka SQL Developer bieži uzkārās un aplikācijas papildinājums GeoRaptormēdza nestrādāt vai arī vienkārši uzkārās.

Tika arī izmēģināts izveidot grafiskos indeksus bez metadatiem, rezultātā tika izmestaskļūdas, ka nevar izveidot grafiskos indeksus bez metadatiem. Tad radās problēmas ar atkārtotuindeksu izveidošanu, kad tika izmestas kļūdas, ka šāds grafiskais indekss jau eksistē, bet realitātētas netika izveidots. Nācās izmantot komandu DROP INDEX, lai tiktu vaļā no pusizveidotiemgrafiskajiem indeksiem, lai varētu atkārtot indeksu izveidi.

Java aplikāciju izveidot bija ļoti vienkārši, nav ko piebilst.Runājot par darbu kopumā, visvairāk laika prasīja ģeometrisko objektu datu ievade, kā arī

dažādu nelineāru figūru datu pareiza ievade. Pat ja liekas, ka koordinātes ir pareizi ievadītas,oracle datubāzes koordināšu interpretācija var būtiski atšķirties, rezultātā tiek ievadīta nevis,piemēram, upe, bet gan pilnīgi kaut kas cits.

45