說句題外話,前段時(shí)期生了大病,險(xiǎn)些就與世長辭,修養(yǎng)了3個(gè)多月終于基本恢復(fù)。這里希望各位程序猿工作之余還是要保存身體,活著才能繼續(xù)革命不是。
??言歸正傳,近來有幾個(gè)項(xiàng)目是要做專題圖相關(guān)的項(xiàng)目。為提高效率,公司考慮使用 OneMap 作為基礎(chǔ)框架進(jìn)行快速開發(fā)。OneMap 是捷泰天域(Esri 在天朝的戰(zhàn)略合作伙伴)的產(chǎn)品之一,是基于服務(wù)器 GIS 的軟件產(chǎn)品,面向各行業(yè)提供多源異構(gòu)空間信息服務(wù)資源整合、管理、安全監(jiān)控與運(yùn)維保障一體化的專業(yè)解決方案。OneMap產(chǎn)品包含平臺(tái) 管理系統(tǒng)、資源服務(wù)中心、地圖應(yīng)用模板等不同的產(chǎn)品組件,還包括可選的公交換乘擴(kuò)展模塊(產(chǎn)品官網(wǎng)上照搬的,其實(shí)我表示一臉懵逼,哈哈哈)。
??經(jīng)過幾次安裝部署發(fā)現(xiàn)其中還遇到了不少坑,捷泰天域的官方安裝部署手冊(cè)中很多都寫的太籠統(tǒng)。里面的原因有我對(duì) GIS 開發(fā)其實(shí)也是不熟悉(以前更多就是用了高德百度地圖 API),還有就是 GIS 這塊的東西在國內(nèi)資源還是比較難查,鑒于此情,寫下學(xué)習(xí)過程中遇到的問題,以備以后查看。
1. 安裝環(huán)境準(zhǔn)備
這里我使用了2個(gè)虛擬機(jī)來分別存放數(shù)據(jù)和部署一下應(yīng)用,是為了通過虛擬機(jī)的快照功能,快速恢復(fù)某一個(gè)的狀態(tài),避免玩崩了重裝軟件等麻煩事。
??我的系統(tǒng)環(huán)境和安裝的必要程序如下:
- 數(shù)據(jù)服務(wù)器(虛擬機(jī),網(wǎng)絡(luò)使用橋接方式)
系統(tǒng):Windows Server 2012 R2 64位;
其它:Oralce11gR2 數(shù)據(jù)庫。 - 應(yīng)用服務(wù)器(虛擬機(jī),網(wǎng)絡(luò)使用橋接方式)
系統(tǒng):Windows Server 2012 R2 64位;
其它:ArcGIS Server 10.5,Oralce11g 客戶端 64位,準(zhǔn)備工作完成后 OneMap 將安裝到該主機(jī)。 - 本機(jī)
系統(tǒng):Windows 10 專業(yè)版 64位;
其它:ArcGIS Desktop 10.5,Oracle11g 客戶端 32位。
注意事項(xiàng):
- 本文所用的截圖為我這幾次在不同環(huán)境下安裝 OneMap 時(shí)為截圖,圖片內(nèi)的部分版本號(hào)和日期并不一定對(duì)應(yīng),但并不影響安裝的步驟和流程;
- 所有安裝 ArcGIS 相關(guān)產(chǎn)品的主機(jī)都要預(yù)先安裝 .NET Framework 3.5;
- 所有主機(jī)的機(jī)器名最好都為字母和數(shù)字組合,如果不是則最好在安裝前更改機(jī)器名,不要帶 "-” 和 "_" ,以免在安裝部署 ActiveMQ(OneMap 需用到,MQ 在機(jī)器名為上述符號(hào)時(shí)有時(shí)啟動(dòng)會(huì)報(bào)異常)和 ArcGIS(不能使用 "_") 時(shí)發(fā)生異常;
- 由于 ArcGIS Server 是 64位的程序,所以 Oracle 客戶端也必須安裝 64位的并配置好環(huán)境變量,而 Desktop 是 32位的程序,所以 Oracle 客戶端需要安裝 32位。如果 Server 和 Desktop 安裝在一個(gè)主機(jī)環(huán)境下,則 32位和64位的 Oracle 客戶端都需要安裝(詳細(xì) Arcgis 安裝可以查閱 Esri 官方網(wǎng)站的安裝說明手冊(cè))。
- Oracle 數(shù)據(jù)庫的字符集要設(shè)置為 ZHS16GBK,為避免意外,最好實(shí)例名使用默認(rèn)的 orcl;
-
需要修改 Oralce 的監(jiān)聽器中的地址為機(jī)器名,否則 ArcGIS 和數(shù)據(jù)庫進(jìn)行連接建立地理信息基礎(chǔ)數(shù)據(jù)庫時(shí)會(huì)出錯(cuò),如下圖所示:
1.png
解決方案:
- 打開 Oracle 的 Net Manager 程序
- 如下圖所示,將監(jiān)聽中的主機(jī)名改為當(dāng)前主機(jī)的機(jī)器名(默認(rèn)是 localhost)
- 查看 ORACLE_HOME/NETWORK/ADMIN/listener.ora 里的監(jiān)聽名稱是否已改為當(dāng)前主機(jī)機(jī)器名
- 修改 tnsnames.ora 里的主機(jī)地址為當(dāng)前主機(jī)的機(jī)器名,并將修改好的 tnsnames.ora 文件復(fù)制到所有客戶端下的相同位置(如客戶端目錄下 NETWORK/ADMIN 文件夾不存在則創(chuàng)建),然后重啟 Oracle 服務(wù)。
2. 注冊(cè) SDE 服務(wù)
2.1 在 Oracle 數(shù)據(jù)庫中創(chuàng)建 sde 賬戶
此賬戶主要用于 ArcGIS 連接訪問 Oracle 數(shù)據(jù)庫。
- 打開 ArcGIS Desktop 中的 ArcMap 程序,在右側(cè) Catalog 工具欄窗口中按照 Toolboxes\System Toolboxes\Data Management Tools.tbx\Geodatabase Administration\ 的目錄找到并打開 Create Enterprise Geodatabase,如下圖所示:
在 Create Enterprise Geodatabase 窗口中填寫數(shù)據(jù)庫實(shí)例、用戶密碼等信息,點(diǎn)擊 OK,如下圖所示:
創(chuàng)建 sde 用戶成功后,會(huì)顯示如下信息:
登錄 Oracle11g 控制臺(tái)可以看到通過 ArcCatalog 工具創(chuàng)建的 sde 表空間和用戶
2.2 在 ArcGIS Server 中注冊(cè) Oracle 數(shù)據(jù)庫
在注冊(cè)之前,如果 ArcGIS Server 尚為建立站點(diǎn)的話,需先行建立一個(gè)站點(diǎn)。建立站點(diǎn)本文不做描述,具體步驟可以查閱 Esri 的官方說明文檔。
??注冊(cè)數(shù)據(jù)庫可以通過兩種方式,一種通過 ArcMap 來注冊(cè),一種是通過訪問 ArcGIS Server 的管理后臺(tái)( http://主機(jī)名:6080/arcgis/manager )來注冊(cè),這里我的是通過 ArcMap 的方式來完成此步驟。具體流程為:
- 在 Catalog 工具欄窗口中 Database Connections 項(xiàng)中找到并打開 Add Database Connection,使用剛才建立的 sde 用戶來建立與數(shù)據(jù)庫的連接,成功后會(huì)生成一個(gè) .sde 文件,如下圖所示:
- 右鍵生成的 .sde 文件,點(diǎn)擊 properties,可以找到 sde 文件的物理位置,以備之后使用
- 在 Catalog 工具欄窗口中 GIS Servers 項(xiàng)中找到并打開 Add ArcGIS Server,建立與 Server 的連接,如下圖所示:
- 選擇建立一個(gè)管理端的 GIS 服務(wù)連接
- 填寫 Server 的地址和站點(diǎn)管理員和密碼
- 連接成功后可以在 GIS Servers 項(xiàng)下看到連接的項(xiàng),如圖所示:
- 在建立的 Server 連接上右鍵點(diǎn)擊 Server Properties... 項(xiàng),選擇注冊(cè)托管數(shù)據(jù)庫,具體操作如圖所示:
- 填寫注冊(cè)數(shù)據(jù)庫的名稱,點(diǎn)擊 Import 按鈕導(dǎo)入之前生成好的 .sde 文件
- 注冊(cè)成功后,如下圖所示:
注意事項(xiàng)
- 如果未安裝 .NET Framework 3.5 此步驟可能會(huì)報(bào)如下圖異常(此圖為我之前用訪問 Server 管理平臺(tái)注冊(cè)數(shù)據(jù)庫時(shí)遇到此問題時(shí)的截圖)
- 由于 OneMap 還未安裝,故文件夾等之后再注冊(cè)。
3. 發(fā)布要素服務(wù)
此服務(wù)主要是用于 OneMap 的擴(kuò)展權(quán)限功能。
- 在之前 Database Connection 項(xiàng)下建立的 sde 連接上右鍵 New > Feature Class 打開要素服務(wù)窗口,并按照官方說明手冊(cè)要求填寫名稱、坐標(biāo)系等信息,具體參數(shù)設(shè)置請(qǐng)參照官方手冊(cè),本文就不再進(jìn)行說明。大體流程如圖所示:
- 完成后在左側(cè)窗口中就可以看到添加好的數(shù)據(jù),根據(jù)手冊(cè)做相應(yīng)配置后保存
而后選擇左側(cè)窗口中的數(shù)據(jù),點(diǎn)擊菜單欄 File > Share As > Service... 開始發(fā)布服務(wù)
- 選擇 Server 服務(wù)和填寫圖層服務(wù)名稱
- 參數(shù)設(shè)置完成后,點(diǎn)擊右上角的 Publish 進(jìn)行服務(wù)發(fā)布
- 發(fā)布成功后,可以登錄 ArcGIS Server 的管理平臺(tái),可以看到剛剛發(fā)布的服務(wù)
- 至此 OneMap 安裝前的準(zhǔn)備工作就全部完成。
4. 安裝和配置 OneMap
詳細(xì)的安裝流程請(qǐng)參照 OneMap 官方安裝部署手冊(cè)進(jìn)行,本文只著重說明下其中的關(guān)鍵步驟。
4.1. 向數(shù)據(jù)庫中導(dǎo)入 OneMap 的用戶、庫表結(jié)構(gòu)和數(shù)據(jù)
- 運(yùn)行安裝程序,點(diǎn)擊創(chuàng)建。而后填寫數(shù)據(jù)庫的連接信息,開始導(dǎo)入數(shù)據(jù)
4.2. 安裝 OneMap 主程序
- 運(yùn)行安裝程序,點(diǎn)擊安裝開始進(jìn)行安裝,盡量不要改動(dòng)其安裝路徑,避免將來遇到未知的錯(cuò)誤
- 安裝完成后,會(huì)彈出參數(shù)配置窗口,如下圖所示:
- 這里需要注意的是,上圖中藍(lán)框的部分為數(shù)據(jù)庫的配置,主機(jī)地址需要填寫 Oracle 數(shù)據(jù)庫所在主機(jī)的機(jī)器名或 IP。綠框的部分為 ArcGIS Server 的配置,主機(jī)地址需要填寫 Server 所在主機(jī)的機(jī)器名或 IP。金黃色框的部分為 OneMap 的配置,主機(jī)地址需要填寫 OneMap 所在主機(jī)的機(jī)器名或 IP。
- 之后在安裝程序主界面點(diǎn)擊授權(quán),導(dǎo)入授權(quán)文件即可激活 OneMap。
- 安裝 OneMap 主程序完成后,還需要在 ArcGIS Server 中注冊(cè) OneMap 的共享文件夾。首先先要設(shè)置 OneMap 所在主機(jī)的 C:\OneMap\temp\upload 文件夾為共享文件夾,并且 ArcGIS 的賬戶,默認(rèn)為 arcgis 擁有權(quán)限,這里為了方便,直接向所有用戶開放了權(quán)限。如圖所示:
4.2 根據(jù) OneMap 的部署要求配置 ArcGIS Server
- 將 C:\OneMap\extension\ArcGIS 文件夾下的 11個(gè) jar 包服務(wù)到 ArcGIS Server 安裝目錄下的
framework\lib\server 文件夾下。
- 編輯 C:\OneMap\extension\ArcGIS 目錄下的 proxool.xml 修改數(shù)據(jù)庫主機(jī)地址為當(dāng)前數(shù)據(jù)庫所在主機(jī)的地址。并將修改好的 proxool.xml 文件復(fù)制到 ArcGIS Server 的工作文件夾中(默認(rèn)為 C:\arcgisserver),本文是將文件復(fù)制到 C:\arcgisserver\oracle 文件夾下,并設(shè)置 oracle 文件夾為共享,以確保 proxool.xml 為共享文件,然后重啟 Server 的服務(wù) 。
- 登錄 ArcGIS Server 后臺(tái)管理系統(tǒng)(主機(jī)名:6080/arcgis/admin),登錄后,按照 security > config > Update Identity Store 的路徑打開更新身份存儲(chǔ)窗口。
- 將下圖中的配置數(shù)據(jù),填寫到 User Store Configuration 和 Role Store Configuration 項(xiàng)中,紅框的路徑要設(shè)置為之前設(shè)置的共享文件位置。
- 填寫完畢后,點(diǎn)擊更新,成功則顯示如下信息:
- 按照 security > users > getUsers 的路徑打開窗口。然后和數(shù)據(jù)庫中的對(duì)應(yīng)表中的用戶名是否一致。
4.3 為 Server 配置 OneMap 本地發(fā)布的 js 庫
- 在 Server 根路徑下找到 framework\runtime\tomcat\webapps\arcgis#rest\WEB-INF\classes\resources\rest-config.properties 配置文件并打開。將其中的 js 資源路徑替換為 OneMap 發(fā)布的資源路徑。
- 注:如果 classes 文件夾下是空的,可以用壓縮工具打開 arcgis#rest\WEB-INF\lib\rest-10.4.1.5686.jar 包。提取 jar 里的 rest-config.properties 文件,修改保存后放置到文檔要求的位置。 (不過這里有個(gè)疑問,官方手冊(cè)匹配 ArcGIS 版本是10.1/10.2/10.3,我發(fā)現(xiàn) 10.4.1 版本的 rest-10.4.1.5686.jar 中的配置文件是放在根路徑下,而并非是在 resources 包下,發(fā)布后應(yīng)該也是在 classes 而不是 處理 classes/resources 下,具體等有時(shí)間了再進(jìn)行測(cè)試)。
- 登錄 ArcGIS Server 管理后臺(tái)(Server 主機(jī)名:6080/arcgis/admin),按照 system > handlers > rest > servicesdirectory 的路徑打開窗口。修改 js 相關(guān)地址為 OneMap 發(fā)布的資源地址并保存。
- 登錄 ArcGIS Server Manager,在安全性功能下編輯令牌信息,默認(rèn):geoshare
4.4 啟動(dòng) OneMap 服務(wù)
- 使用 OneMap 啟動(dòng)服務(wù)快捷方式啟動(dòng)所有服務(wù)。
- 如果出現(xiàn) “拒絕訪問” 的錯(cuò)誤,可以使用管理員權(quán)限來執(zhí)行此腳本程序。
- 打開服務(wù)管理器,確認(rèn) OneMap 的 4 個(gè)服務(wù)是否已全部開啟。
5. 訪問和初步配置 OneMap
5.1. 各系統(tǒng)訪問地址
主要包含 4 個(gè)系統(tǒng):
- OneMap 資源服務(wù)中心(門戶系統(tǒng)),URL:http://主機(jī)名:8080/Portal;
- OneMap 捷泰天域平臺(tái)管理系統(tǒng)(運(yùn)維系統(tǒng)),URL:http://主機(jī)名:8080/GeoShareManager;
- OneMap 服務(wù)目錄(服務(wù)系統(tǒng)),URL:http://主機(jī)名:8080/OneMapServer/rest/services;
- OneMap 用戶信息安全加密服務(wù)系統(tǒng)(Token系統(tǒng)),URL:http://主機(jī)名:8080/RemoteTokenServer;
5.2. 配置服務(wù)引擎
- 登錄運(yùn)維系統(tǒng),按照“系統(tǒng)配置” > “服務(wù)引擎配置” 進(jìn)入引擎配置頁面。按照自己的安裝部署環(huán)境和需要配置 Server 引擎、OneMap 服務(wù)引擎、代理和令牌引擎。
5.3. 平臺(tái)監(jiān)控配置
- 打開“系統(tǒng)配置” > “平臺(tái)監(jiān)控配置”,有集群(選組織)、單機(jī)(選服務(wù)器)兩種方式進(jìn)行配置,這里用服務(wù)器的方式進(jìn)行配置。
5.4. 日志系統(tǒng)配置
- 打開“系統(tǒng)配置” > “日志收割”,修改服務(wù)器的 IP 為部署 OneMap 的主機(jī) IP,并保存。
- 點(diǎn)擊遠(yuǎn)端配置按鈕(下圖紅圈處),修改“訪問賬號(hào)”的綁定 IP 為部署 OneMap 的主機(jī) IP。
6. 服務(wù)測(cè)試
至此 OneMap 全部安裝和部署工作已全部完成。現(xiàn)在就就發(fā)布一組測(cè)試數(shù)據(jù)看看是否可以成功。
登錄運(yùn)維系統(tǒng),打開“服務(wù)管理” > “本地服務(wù)發(fā)布”。這里我發(fā)布了 OneMap 在安裝包中提供的示例中國行政區(qū)劃圖的 .sd 文件。
- 發(fā)布成功后,在“服務(wù)平臺(tái)管理”中可以看到剛才發(fā)布的圖層。
- 下圖為把圖層加載到 ArcGIS Online map viewer 中顯示的效果。
- 注:OneMap 安裝時(shí)會(huì)把系統(tǒng)的環(huán)境變量中 JDK 等路徑設(shè)置為他自帶的 JDK 1.6 的路徑。從而影響系統(tǒng)里其他需要 1.7 和以上版本 JDK 的程序。有需要的或者有強(qiáng)迫癥的,可以把 “C:\OneMap\Tomcat\bin\setclasspath.bat”、“C:\OneMap\services\activemq5.4.1\bin\activemq.bat”、“C:\OneMap\services\activemq5.4.1\bin\activemq-admin.bat” 中加上指定 JDK 的語句,然后把環(huán)境變量里的設(shè)置改回原來的即可。