其實這篇文件就是說明一下在ArcGIS中使用OracleSpatial在ArcGIS與使用ST_Geometry的特徵不同,從不同的特徵也可以證明Oracle Spatial存儲與ST_Geometry存儲的結構對比。
問題1:怎麼判斷我的數據是否爲Oracle Spatial存儲
- <span style="font-family:'Microsoft YaHei';font-size:16px;">SQL> desc polygon_st
- 名稱 是否爲空? 類型
- ------------------------------------------------- ----------------------------
- OBJECTID NOT NULLNUMBER(38)
- NAME NVARCHAR2(30)
- CNTY_CODE NVARCHAR2(6)
- PROV NVARCHAR2(20)
- CITY NVARCHAR2(20)
- SHAPE SDE.ST_GEOMETRY
- SQL> desc polygon_sdo
- 名稱 是否爲空? 類型
- ------------------------------------------------- ----------------------------
- OBJECTID NOT NULLNUMBER(38)
- NAME NVARCHAR2(30)
-
- CNTY_CODE NVARCHAR2(6)
- PROV NVARCHAR2(20)
- CITY NVARCHAR2(20)
- SHAPE MDSYS.SDO_GEOMETRY
- SE_ANNO_CAD_DATA BLOB</span>
我們使用Sqlplus進行連接,直接Desc相關的表,查看關於空間列的描述可以看出,很明顯的ST_Geometry 和MDSYS.SDO_GEOMETRY對比。
問題2:怎麼使用ArcGIS將數據導入到ArcSDE中以Oracle Spatial存儲
可以使用ArcGIS的Import工具等將數據導入到ArcSDE中,在導入前選擇Configuration Keyword:選擇SDE_GEOMETRY。
該關鍵字主要是在SDEHOME/etc/dbtune.sde裏面控制(其他後綴文件也可以,也可以使用sdedbtune命令進行修改)
- <span style="font-family:'Microsoft YaHei';font-size:16px;">##DEFAULTS
- GEOMETRY_STORAGE "ST_GEOMETRY"
- ST_GEOM_LOB_STORAGE " STOREAS (
- # TABLESPACE<lob segment tablespace_name>
- ENABLE STORAGE IN ROW CHUNK 8K RETENTIONCACHE) "
- ATTRIBUTE_BINARY "BLOB"
- RASTER_STORAGE "BLOB"
- ......
- END
- -------------------------------------------分割線----------------
- ##SDO_GEOMETRY
- GEOMETRY_STORAGE "SDO_GEOMETRY"
-
- ATTRIBUTE_BINARY "BLOB"
- RASTER_STORAGE "SDO_GEORASTER"
- SDO_COMMIT_INTERVAL 1000
- RDT_STORAGE "PCTFREE 0INITRANS 4"
- # TABLESPACE<RDT Table tablespace name>
- RDT_INDEX_COMPOSITE "PCTFREE 0 INITRANS 4
- # TABLESPACE<RDT Composite index tablespace name>
- NOLOGGING"
- UI_TEXT "UserInterface text description for SDO_GEOMETRY"
- COMMENT "Anygeneral comment for SDO_GEOMETRY keyword"
- END</span>
通過這個文件說明,我們很容易看到系統數據按照什麼樣的存儲來選擇的。
問題3:使用Oracle Spatial存儲的數據與ST_Geometry存儲在ArcGIS桌面表現有哪些不一樣
表現1:使用“信息”工具,查看要素屬性時
因爲數據結構不一樣,ST_Geometry存儲包括了數據的長度和麪積,但是對SDO_Geometry沒有,所以,使用SDO_geometry存儲的數據,兩者都爲0,這種情況是正常的。
從上圖可以看到,由於兩者使用的索引方式不同,ST_Geometry使用Grid格網索引,而Oracle Spatial使用R Tree索引,所以用戶當看到這樣的區別也是正常的。
問題4:我是否可以在不使用ArcSDE的情況下,使用ArcGIS桌面來連接Oracle Spatial數據
回答:只有在ArcGIS10當中是可以的,因爲ArcGIS10提供了QueryLayer,QueryLayer就可以在不使用ArcSDE的情況下,來訪問非ArcGIS(ST_Geometry)的數據。
關於QueryLayer使用:http://wenku.baidu.com/view/3bb5268271fe910ef12df8db.html