




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《空間數據庫》課程實驗指導書TOC\h\z\c"圖表"班級學號姓名編制人:郭明單位:北京建筑大學測繪與城市空間信息學院2015年9月評分表實驗一實驗二實驗三實驗四總評目錄實驗指導書 1空間數據庫實驗預備知識—OracleSpatial簡介 2一、元數據表說明 2二、空間字段解析 3三、空間索引技術 6實驗一認識OracleSpatial的主要數據庫對象 7一、實驗目的 7二、實驗環境 7三、實驗步驟及分析(2課時) 9實驗二空間查詢 14一、 實驗目的 14二、實驗環境 14三、實驗步驟及內容(2課時) 14Step1.創建一張表,其中shape用來存放空間數據 14Step2.在user_sdo_geom_metadata表中插入新記錄,用于描述空間字段 14Step3.創建空間索引 14Step4.插入空間數據 15Step5.查詢 16實驗三簡單的空間數據庫示例 20一、實驗目的 20二、實驗環境 20三、實驗內容和要求(2課時) 20實驗四空間數據庫設計與開發示例 22一、實驗目的 22二、實驗環境 22三、實驗內容和要求(4課時) 22空間數據庫實驗預備知識—OracleSpatial簡介OracleSpatial主要通過元數據表、空間數據字段(即sdo_Geometry字段)和空間索引來管理空間數據,并在此基礎上提供一系列空間查詢和空間分析的程序包,讓用戶進行更深層次的GIS應用開發。OracleSpatial使用空間字段sdo_Geometry存儲空間數據,用元數據表來管理具有sdo_Geometry字段的空間數據表,并采用R樹索引和四叉樹索引技術來提高空間查詢和空間分析的速度。一、元數據表說明OracleSpatial的元數據表存儲了有空間數據的數據表名稱、空間字段名稱、空間數據的坐標范圍、坐標系以及坐標維數說明等信息。用戶必須通過元數據表才能知道Oracle數據庫中是否有OracleSpatial的空間數據信息。通過元數據視圖(USER_SDO_GEOM_METADATA)訪問元數據表。元數據視圖的基本定義為:
其中,TABLE_NAME為含有空間數據字段的表名,COLUMN_NAME為空間數據表中的空間字段名稱,DIMINFO是一個按照空間維順序排列的SDO_DIM_ARRAY對象的動態數組,SRID則用于標識與幾何對象相關的空間坐標參考系。SDO_DIM_ELEMENT對象的定義如下所示:CreateTypeSDO_DIM_ARRAYasOBJECT(SDO_DIMNAMEVARCHAR2(64),SDO_LBNUMBER,SDO_UBNUMBER,SDO_TOLERANCENUMBER);其中,SDO_DIMNAME是空間維名稱,SDO_LB為該空間維的左下角坐標,SDO_UB為該空間維的右上角坐標,SDO_TOLERANCE為幾何對象的表示精度。二、空間字段解析OracleSpatial的空間數據都存儲在空間字段sdo_Geometry中,理解sdo_Geometry是編寫OracleSpatial程序的關鍵。sdo_Geometry是按照OpenGIS規范定義的一個對象,其原始的創建方式如下所示。①sdo_Gtype
是一個NUMBER型的數值,用來定義存儲幾何對象的類型。sdo_Gtype是一個4個數字的整數,其格式為dltt,其中d表示幾何對象的維數;l表示三維線性參考系統中的線性參考值,當d為3維或者4維時需要設置該值,一般情況下為空;tt為幾何對象的類型,OracleSpatial定義了7種類型的幾何類型,目前,tt使用了00到07,其中08到99是OracleSpatial保留的數字,以備將來幾何對象擴展所用。②sdo_Srid
sdo_Srid也是一個NUMBER型的數值,它用于標識與幾何對象相關的空間坐標系。如果sdo_Srid為空(null),則表示沒有坐標系與該幾何對象相關;如果該值不為空,則該值必須為MDSYS.CS_SRS表中SRID字段的一個值,在創建含有幾何對象的表時,這個值必須加入到描述空間數據表元數據的USER_SDO_GEOM_METADATA視圖的SRID字段中。對于我們通常使用國際標準的Longitude/Latitude(8307),OracleSpatial規定,一個幾何字段中的所有幾何對象都必須為相同的sdo_Srid值。③sdo_Pointsdo_Point是一個包含三維坐標X,Y,Z數值信息的對象,用于表示幾何類型為點的幾何對象。如果sdo_Elem_Info和SDO_ORDINATES數組都為空,則sdo_Point中的X,Y,Z為點對象的坐標值,否則,sdo_Point的值將被忽略(用NULL表示)。OracleSpatial強烈要求用sdo_Point存儲空間實體為點類型空間數據,這樣可以極大的優化OracleSpatial的存儲性能和查詢效率。④sdo_Elem_Infosdo_Elem_Info是一個可變長度的數組,每3個數作為一個元素單位,用于表示坐標是如何存儲在SDO_ORDINATES數組中的。本文把組成一個元素的3個數稱為3元組。一個3元組包含以下3部分的內容:SDO_STARTING_OFFSETSDO_STARTING_OFFSET表明每個幾何元素的第一個坐標在SDO_ORDINATES數組中的存儲位置。它的值從1開始,逐漸增加。
SDO_ETYPE
SDO_ETYPE用于表示幾何對象中每個組成元素的幾何類型。當它的值為1,2,1003和2003時,表明這個幾何元素為簡單元素。如果SDO_ETYPE為1003,表明該多邊形為外環(第一個數為1表示外環),坐標值以逆時針存儲;如果SDO_ETYPE為2003,表明該多邊形為內環(第一個數為2表示內環),坐標值以順時針存儲。當SDO_ETYPE為4,1005和2005時,表明這個幾何元素為復雜元素。它至少包含一個3元組用以說明該復雜元素具有多少個幾何簡單元素。同樣,1005表示多邊形為外環,坐標值以逆時針存儲;2005表示多邊形為內環,坐標值以順時針存儲。SDO_INTERPRETATIONSDO_INTERPRETATION具有兩層含義,具體的作用由SDO_ETYPE是否為復雜元素決定。如果SDO_ETYPE是復雜元素(4,1005和2005),則SDO_INTERPRETATION表示它后面有幾個子3元組屬于這個復雜元素。如果SDO_ETYPE是簡單元素(1,2,1003和2003),則SDO_INTERPRETATION表示該元素的坐標值在SDO_ORDINATES中是如何排列的。需要注意的是,對于復雜元素來說,組成它的子元素是連續的,一個子元素的最后一個點是下一個子元素的起點。最后一個子元素的最后一個坐標要么與下一個元素的SDO_STARTING_OFFSET值減1所對應的坐標相同,要么是整個SDO_ORDINATES數組的最后一個坐標。⑤sdo_OrdinatesSDO_ORDINATES是一個可變長度的數組,用于存儲幾何對象的實際坐標,是一個最大長度為1048576,類型為Number的數組。SDO_ORDINATES必須與sdo_Elem_Info數組配合使用,才具有實際意義。SDO_ORDINATES的坐標存儲方式由幾何對象的維數決定,如果幾何對象為二維,則SDO_ORDINATES的坐標以{x1,y1,x2,y2,…}順序排列,如果幾何對象為三維,則SDO_ORDINATES的坐標以{x1,y1,z1,x2,y2,z2,…}的順序排列。三、空間索引技術OracleSpatial提供R樹索引和四叉樹索引兩種索引機制來提高空間查詢和空間分析的速度。用戶需要根據不同空間數據類型創建不同的索引,當空間數據類型比較復雜時,如果選擇索引類型不當,將使OracleSpatial創建索引的過程變得非常慢。實驗一認識OracleSpatial的主要數據庫對象一、實驗目的了解Oracle10g數據庫中MDSYS方案的空間元數據表的結構及用途;了解對象類型MDSYS.SDO_DIM_ARRAY以及和空間元數據表的關系;掌握通過元數據視圖USER_SDO_GEOM_METADATA查看空間元數據表的內容;了解對象類型MDSYS.SDO_GEOMETRY的結構及用途;了解數組類型MDSYS.SDO_DIM_ELEMENT結構及用途;了解數組類型MDSYS.SDO_ORDINATE_ARRAY結構及用途;二、實驗環境在Oracle的EnterpriseManager中進行實驗,打開EnterpriseManager的方法:登陸頁面,出現如下登錄界面:填入正確的用戶名:system和口令:SYS123abc,如下圖:點擊下方“我同意”之后,連接主界面為下圖所示:三、實驗步驟及分析(2課時)1.了解Oracle數據庫中MDSYS方案的空間元數據。(1)打開MDSYS.SDO_GEOM_METADATA_TABLE空間元數據表,并記錄表結構下來,同時給出每個屬性代表的實際意義:(2)MDSYS.SDO_GEOM_METADATA_TABLE空間元數據表中的SDO_DIMINFO屬性的類型是SDO_DIM_ARRAY,在用戶類型.數組類型中查看SDO_DIM_ARRAY的一般信息,SDO_DIM_ARRAY這個數組的元素是什么類型?(3)查看用戶類型SDO_DIM_ELEMENT的結構并記錄下來并說明每個屬性代表的實際意義。它和元數據表中的SDO_DIMINFO屬性有何關系?(4)打開SQL-Plus(以后步驟中的SQL都在此程序中執行),步驟為:打開開始->程序等路徑,如下圖:注意改寫*.ora文件中的內容,復制一段代碼后將主機名改寫為wJ-T登陸,填入正確的用戶名:system和口令:SYS123abc,主機字符串:orcl,如下圖:并運行如下SQL語句,建立一個包含MDSYS.SDO_GEOMETRY屬性的表:CREATETABLESPATIALTEST_自己名字縮寫(ID VARCHAR2(20)PRIMARYKEY,NAME VARCHAR2(100),ADDRESS VARCHAR2(200),TELEPHONE VARCHAR2(50),LOC MDSYS.SDO_GEOMETRY);在對應方案中找到數據表SPATIALTEST,雙擊查看表結構,可以看到LOCATION的數據類型是MDSYS.SDO_GEOMETRY,所以,LOCATION需要在元數據表中填寫一條相關記錄。(5)根據用戶表填寫空間元數據,并說明其實際意義。INSERTINTOUSER_SDO_GEOM_METADATAVALUES(‘SPATIALTEST_自己名字縮寫’,‘LOC’,MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT(’Longitude’,-180,180,10),MDSYS.SDO_DIM_ELEMENT(’Latitude’,-90,90,10)),8307);(6)利用USER_SDO_GEOM_METADATA視圖查看元數據表并記錄內容:SELECT*FROMUSER_SDO_GEOM_METADATA(7)查看對象類型MDSYS.SDO_GEOMETRY的結構并記錄下來,說明每個屬性代表的實際意義。(8)查看數組類型MDSYS.SDO_ELEM_INFO_ARRAY的結構并記錄下來。它和MDSYS.SDO_GEOMETRY對象類型有何關系?(9)查看數組類型MDSYS.SDO_ORDINATE_ARRAY的結構并記錄下來。它和MDSYS.SDO_ELEM_INFO_ARRAY數組類型有何關系?(10)【加分】查看數據庫實例orcl管理器中其他管理選項、數據庫對象(表的建立)、程序包、用戶和權限等項目的學習心得:完成時間實驗過程、結果及分析得分教師簽名2080實驗二空間查詢實驗目的1.掌握空間數據表的建立的過程;2.掌握空間數據的輸入方法;3.掌握空間索引的建立方法;3.掌握filter和related兩個查詢過程。二、實驗環境實驗中的SQL語句均在SQL-PLUS中執行。三、實驗步驟及內容(2課時)Step1.創建一張表,其中shape用來存放空間數據CREATETABLEmylake(feature_idNUMBERPRIMARYKEY,
nameVARCHAR2(32),
shapeMDSYS.SDO_GEOMETRY);Step2.在user_sdo_geom_metadata表中插入新記錄,用于描述空間字段INSERTINTOuser_sdo_geom_metadataVALUES('mylake',//表名'shape',//字段名
MDSYS.SDO_DIM_ARRAY(
MDSYS.SDO_DIM_ELEMENT('X',0,100,0.05),
//X維最小,最大值和容忍度。
MDSYS.SDO_DIM_ELEMENT('Y',0,100,0.05)
//Y維最小,最大值和容忍度
),
NULL
//坐標系,缺省為笛卡爾坐標系);Step3.創建空間索引CREATEINDEXmylake_idxONmylake(shape)INDEXTYPEISMDSYS.SPATIAL_INDEX打開創建的空間索引mylake_idx,記錄索引的一般信息。Step4.插入空間數據OracleSpatial用MDSYS.SDO_GEOMETRY來存儲空間數據,//插入包含一個島嶼的湖泊
INSERTINTOmylakeVALUES(10,
'Lake
MDSYS.SDO_GEOMETRY(
2003,
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,19,2003,1),
MDSYS.SDO_ORDINATE_ARRAY(0,0,10,0,10,10,0,10,0,0,4,4,6,4,6,6,4,6,4,4)
));//插入兩艘小船INSERTINTOmylakeVALUES(11,
'TheWindswept',
MDSYS.SDO_GEOMETRY(
2003,
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(2,2,3,2,3,2,2,3,2,2)
));INSERTINTOmylakeVALUES(
12,
'BlueCrest',
MDSYS.SDO_GEOMETRY(
2003,
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),
MDSYS.SDO_ORDINATE_ARRAY(7,7,8,7,8,7,7,8,7,7)
));運行SELECT*FROMMYLAKE,并記錄運行結果,并說明每條記錄代表什么。Step5.查詢OracleSpatial查詢數據包括二個處理過程:只通過索引查詢候選項。通過函數SDO_FILTER實現:SDO_FILTER(geometry1MDSYS.SDO_GEOMETRY,
geometry2MDSYS.SDO_GEOMETRY,paramsVARCHAR2)geometry1:必須是被索引的幾何數據geometry2:不一定是表中的空間字段,也不要求被索引params:Filter類型
querytype=WINDOW:geometry2不要求來自表
querytype=JOIN:geometry2必須來自表運行下列SQL語句,并記錄結果,并說明這個結果這代表什么意義?SELECTnameboat_nameFROMmylaketWHEREfeature_id=11ANDSDO_FILTER(t.shape,mdsys.sdo_geometry(2003,NULL,NULL,mdsys.sdo_elem_info_array(1,1003,1),
mdsys.sdo_ordinate_array(2,2,5,2,5,5,2,5,2,2)),
'querytype=WINDOW')='TRUE';再檢查每個候選項是否和條件精確匹配。通過函數SDO_RELATE實現:SDO_RELATE(geometry1MDSYS.SDO_GEOMETRY,geometry2MDSYS.SDO_GEOMETRY,paramsVARCHAR2)params:masktype類型DISJOINT—theboundariesandinteriorsdonotintersectTOUCH—theboundariesintersectbuttheinteriorsdonotintersectOVERLAPBDYDISJOINT—theinteriorofoneobjectintersectstheboundaryandinterioroftheotherobject,butthetwoboundariesdonotintersect.Thisrelationshipoccurs,forexample,whenalineoriginatesoutsideapolygonandendsinsidethatpolygon.OVERLAPBDYINTERSECT—theboundariesandinteriorsofthetwoobjectsintersectEQUAL—thetwoobjectshavethesameboundaryandinteriorCONTAINS—theinteriorandboundaryofoneobjectiscompletelycontainedintheinterioroftheotherobjectCOVERS—theinteriorofoneobjectiscompletelycontainedintheinterioroftheotherobjectandtheirboundariesintersectINSIDE—theoppositeofCONTAINS.AINSIDEBimpliesBCONTAINSA.COVEREDBY—theoppositeofCOVERS.ACOVEREDBYBimpliesBCOVERSA.ON—theinteriorandboundaryofoneobjectisontheboundaryoftheotherobject(andthesecondobjectcoversthefirstobject).Thisrelationshipoccurs,forexample,whenalineisontheboundaryofapolygon.ANYINTERACT—theobjectsarenon-disjoint.運行下列SQL語句,并記錄結果,并說明這個結果這代表什么意義?//選擇在定義矩形內的所有小船SELECTnameboat_nameFROMmylaketWHEREfeature_id=12ANDSDO_FILTER(t.shape,mdsys.sdo_geometry(2003,NULL,NULL,mdsys.sdo_elem_info_array(1,1003,1),
mdsys.sdo_ordinate_array(2,2,5,2,5,5,2,5,2,2)),
'querytype=WINDOW')='TRUE'ANDSDO_RELATE(t.shape,mdsys.sdo_geometry(2003,NULL,NULL,
mdsys.sdo_elem_info_array(1,1003,1),
mdsys.sdo_ordinate_array(2,2,5,2,5,5,2,5,2,2)),
'mask=INSIDEquerytype=WINDOW')='TRUE'運行結果和分析://masktype可聯合使用SELECTnameboat_nameFROMmylaketWHEREfeature_id=11A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教育決策:大數據驅動下的學校治理與績效評價報告
- 房地產企業2025年財務風險控制與穩健性發展策略報告
- 2025年元宇宙社交平臺用戶行為分析與互動模式研究報告
- 虛擬現實教育產品在職業院校計算機專業教學中的應用效果報告
- 2025年元宇宙社交平臺社交圈層構建與社區生態研究報告
- 2025年元宇宙基礎設施建設關鍵環節:區塊鏈技術應用現狀與展望報告
- 2025年江蘇省常州市八年級英語第二學期期末預測試題含答案
- 深度剖析2025年教育行業招生策略與行業競爭態勢分析報告001
- 保育員考試題目及答案2019
- 保安師傅考試試題及答案
- 小學數學“組題”設計分析 論文
- 附件16:地下室燈帶臨時照明系統方案
- 中央空調維護保養服務投標方案(技術標)
- 服務認證培訓課件
- 風電場反事故措施
- 細胞生物學與疾病預防與治療
- 《銀行業風險管理》課件
- 工程倫理 課件全套 李正風 第1-9章 工程與倫理、如何理解倫理- 全球化視野下的工程倫理
- 餐飲服務質量保證措施
- 美國FDA-21CFR820法規培訓
- 報名統計表格
評論
0/150
提交評論