最近在使用ArcGIS 10.1的數據庫,在使用的過程當中發現了跟以往不太同樣的地方,在這裏將本身的心得和想法跟你們分享一下(使用Postgresql),根據使用過程,我將內容分爲兩個部分(這兩個部分,是我在使用完分出來的,並從新整理,其中穿插我本身的想法,歡迎你們跟咱們一塊兒交流。),10.1已經不須要安裝arcgis sde了,能夠經過工具直接在Oracle上創建空間數據庫,而且直接連接。html
1, ArcGIS 10.1 統一了數據庫鏈接,也就是不區分是空間數據庫鏈接仍是經過OLEDB方式的關係型數據庫鏈接web
左圖爲10.1下的截圖,右圖爲10.0下的截圖sql
2, 在Catalog中只能採用直連方式;數據庫
3, ArcGIS 10.1版本中,Esri提供的安裝介質不在包含Postgresql(之前的是包含的);網絡
4, 安裝Postgresql,官方給的軟件要求是64位數,並且全部的企業級數據庫都是64位(這應該和Server有關係吧,由於Server 10.1是純64位,在桌面軟件的DatabaseSupport目錄中給出的幾個dll都是64位,這幾個dll 後面會用到,官方給的軟件需求以下:tcp
Database工具 |
Supported Operating Systemspost |
Minimum OS Version測試 |
Maximum OS Versionspa |
PostgreSQL 9.0.5 (64-bit) |
Red Hat Enterprise Linux Server 5 (64-bit) |
Update 7 |
|
Red Hat Enterprise Linux Server 6 (64-bit) |
|||
SUSE Linux Enterprise Server 11 (64-bit) |
SP1 |
||
Windows Server 2003 Standard, Enterprise, and Datacenter (64-bit [EM64T]) |
SP2 |
SP2 |
|
Windows Server 2008 R2 Standard, Enterprise, and Datacenter (64-bit [EM64T]) |
SP1 |
5, 配置PostgreSQL的客戶端。由於直連方式要求ArcSDE的客戶端必須安裝數據庫的客戶端類庫,因此首先須要獲取PostgreSQL的客戶端。ArcGIS Desktop是32位軟件,須要的是32位的PostgreSQL類庫。找到PostgreSQL的客戶端,或者在別的機器上將32位的 libeay32.dll, libiconv-2.dll, libintl-8.dll, libpq.dll, and ssleay32.dll文件拷貝到Desktop 安裝目錄的bin目錄下;
6, 拷貝 st_geometry.dll,將Desktop 安裝目錄下的DatabaseSupport/PostgreSQL/Windows64(看到64了吧)目錄下,拷貝st_geometry.dll文件到PostgreSQL的lib目錄。在PostgreSQL中建立Geodatabase時必須用到此類庫;
7, 配置pg_hba.conf,修改PostgreSQ 的pg_hba.conf文件,添加「host all all 0.0.0.0/0 md5」(關於該文件的配置,能夠參閱相關資料);
8, 在安裝完SDE後,發現沒有以往的post界面,在10.1中,對於建立企業級Geodatabase都採用工具箱中提供的工具,換句話說,之前的post被Toolbox中的一堆工具替代;
9, 建立地理數據庫
10.1在建立地理數據庫的時候,提供了三個,Oracle,SQL Server和Postgresql,咱們用這個工具建立地理數據庫,這個過程至關於早起的POST過程,建立數據庫並寫入一堆系統表等,建立界面以下圖:
建立成功後就能夠在pgAdmin中看到sde這個數據庫,而且看到不少系統表,以下圖:
10, 鏈接地理數據(直連);
在上面說了ArcGIS 10.1對數據庫鏈接作了統一,那如何判斷是關係型數據庫仍是空間數據庫呢?其實這點並不難,由於在建立空間數據庫的時候,咱們同時建立了用戶名和密碼,那麼用這個用戶名鏈接,並選擇建立的這個數據庫,那麼這個數據庫就是空間數據庫,鏈接界面以下圖:
鏈接成功後,我在數據庫裏建立了要素數據集添加了幾個數據,作了一個拓撲分析(作這個的目的不是爲了作拓撲,而是爲了驗證可否作拓撲分析,因此拓撲分析的結果咱們不作討論),結果以下:
同理,作了一個幾何網絡,效果以下:
如今咱們想一個問題,上面咱們使用的是直連的方式訪問數據庫,你們以爲是否缺乏什麼呢?咱們會想之前如何使用數據庫的,首先裝了關係型數據庫(Postgresql),這一步咱們有了,而後就是安裝ArcGIS SDE for postgresql,這一步咱們沒有,而後就是建立數據庫,鏈接數據庫。從整個過程來看,咱們沒有安裝SDE,那爲何也能夠建立空間數據庫呢?
這也是我本身發現的一個,在開始的時候,個人確是安裝了SDE,可是我發現這個安裝不想ArcGIS 10 或者以前的彈出一個post的界面,裝了以後什麼反應都沒有,我去安裝目錄下看了看,發現這個安裝其實就是解壓了一些東西,而個人空間數據庫尚未創建呢?再後來發現鏈接數據庫的時候,沒有服務這個選項,當初我就以爲這個安裝跟我鏈接數據庫沒有關係,因而卸載了,根據:http://resources.arcgis.com/en/help/main/10.1/index.html#/Setting_up_a_geodatabase_in_PostgreSQL/002p00000001000000/仔細看了一遍,發現這個過程的確不安裝SDE是能夠的,跟售後的同事確認了下,得出的結論:若是是使用直連方式,ArcGIS 10.1 是不用安裝SDE的任何組件。新的問題來了,咱們知道在之前的版本中SDE還有一種方式就是服務鏈接,那如何使用服務鏈接呢?
若是細心的話,咱們能夠發如今安裝SDE的時候,有兩個組件讓咱們安裝:
根據組件右邊的描述,咱們知道這個安裝就是針對服務鏈接的,也就是說若是要使用服務方式鏈接,就須要安裝SDE,如何建立服務,如何使用服務鏈接(咱們明顯看到鏈接中根本就沒有服務這個選項)就是咱們下來要討論的問題。
服務鏈接的額外步驟
經過這個工具,若是咱們的數據庫是ArcGIS 10 或者以前的,而且採用服務的方式,那麼在使用10.1的時候,應該用這個工具吧(沒有測試,根據向下兼容,我本身猜測)