rĪgastehniskĀuniversitĀte datorzinātnes un · pdf filerĪgastehniskĀuniversitĀte...
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
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
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
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
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
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
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