天天看點

向 Oracle 資料庫添加 ST_Geometry 類型

可以使用建立空間類型地理處理工具或 Python 腳本将 Esri ST_Geometry 類型、子類型和函數添加到 Oracle 資料庫。

執行此操作時,會将名為 sde 的使用者添加到資料庫。sde 使用者擁有 ST_Geometry 類型、子類型、函數和表。

以下步驟對如何運作建立空間類型地理處理工具在 Oracle 資料庫中安裝 ST_Geometry 類型進行了說明:

  1. 從 ArcGIS 用戶端安裝位置的 DatabaseSupport 目錄複制 libst_shapelib(對于 Windows 則為 st_shapelib)庫并将其移動到 Oracle 伺服器的某一位置上。

    確定使用适合 Oracle 伺服器作業系統的庫。

    運作建立空間類型工具或腳本的用戶端計算機必須能夠通路伺服器上放置庫的目錄。如果将庫放置到 UNIX 或 Linux 計算機上,請確定資料庫管理者對該檔案夾具有讀通路權限,并對庫檔案具有執行權限。

  2. 啟動 ArcCatalog 或 ArcMap,然後打開目錄視窗。
  3. 建立連接配接以通路 Oracle 資料庫。以 Oracle 系統資料庫管理者身份登入。
  4. 打開建立空間類型工具。

    可以使用搜尋視窗搜尋工具或者從資料管理工具箱的“工作空間”工具集中打開工具。

  5. 将在第 3 步中建立的資料庫連接配接添加到輸入資料庫文本框中。
  6. 在 SDE 使用者密碼文本框中輸入 sde 資料庫使用者要使用的密碼。
  7. 如果要建立一個表空間來用作 sde 使用者的預設表空間,則在表空間名稱文本框中輸入其名稱。

    将在 Oracle 的預設存儲位置中建立大小為 400 MB 的表空間。如果想要控制表空間的放置位置或表空間的大小,請先在 Oracle 中建立表空間,然後在表空間名稱文本框中指定現有表空間。該工具會将預先存在的表空間設定為 sde 使用者的預設表空間。

  8. 對于 ST_Geometry 形狀庫路徑文本框,浏覽至您放置 libst_shapelib 或 st_shapelib 檔案的 Oracle 伺服器目錄,或輸入一個路徑,路徑包含檔案名。

    例如,如果您将 libst_shapelib.so 檔案放置在 UNIX 伺服器 boxy 上的目錄 libraries 中,則輸入 /boxy/libraries/libst_shapelib.so。

  9. 單擊确定以運作工具。

将在 sde 使用者方案中建立 ST_Geometry 類型、子類型和函數,并在 Oracle 中建立一個形狀庫條目。

如果打算使用 ST_Transform 函數通過 SQL 執行地理變換,則必須從 ArcGIS for Desktop 安裝目錄複制 pedata 檔案夾,将其放置到 Oracle 伺服器上,并在伺服器上設定指向該位置的 PEDATAHOME 環境變量。

注:

當ArcMap用戶端通路非本地Oracle伺服器時,就将st_shapelib.dll檔案複制到Oracle伺服器上,并将目錄共享到網絡中,確定ArcMap用戶端能通過檔案系統通路到st_shapelib.dll檔案。示例如下:

向 Oracle 資料庫添加 ST_Geometry 類型
向 Oracle 資料庫添加 ST_Geometry 類型

完成上述後,使用SQL語句進行測試:

 --是否相交

 select sde.st_intersects(sde.st_point(11.1,16.01,4326)

        ,sde.st_polygon ('polygon ((10.01 20.01, 20.01 20.01, 20.01 15.04,10.01 15.04,10.01 20.01))', 4326)) as test

       from dual;

如果報找不到dll檔案錯,使用下面語句檢查修改st_shapelib.dll檔案的路徑:

--檢查st_shapelib路徑

select * from dba_libraries where library_name='ST_SHAPELIB' ;

--修改st_shapelib路徑

create or replace library st_shapelib as  'c:\arcmaplib\st_shapelib.dll';

繼續閱讀