SuperMap iServer數據動態更新刷新地圖與數據服務


一、使用背景

有這么一個需求,后端也就通過SuperMap iDesktop或數據庫更新了新增或更新某個數據地理信息后,服務端也就是SuperMap iServer無法實時查看到更新的數據,原因是SuperMap iServer沒有主動監測第三方修改數據的變化(使用SuperMap iServer接口增刪改無該問題)
解決方式要么通過重啟SuperMap iServer解決,要么通過刪除服務重新發布解決,但是這兩種版本都比較麻煩,SuperMap iServer 10.1.3版本中可以通過調用SuperMap iServer Rest API的方式進行刷新工作空間。

二、SuperMap iServer環境

2.1 使用SuperMap iServer版本

官網10.1.3及以上已經同步該問題,建議使用官網正式版本。
以下為10.1.2臨時包:

  • Linux:supermap_iserver_1012_19721_5526_linux64_deploy.tar.gz
  • Windows:supermap_iserver_1012_19721_5497_win64_deploy.zip

下載地址:

2.2 使用方法

2.2.1 修改SuperMap iServer配置

修改%SuperMap iServer安裝目錄%\webapps\iserver\WEB-INF\iserver-system.xml

  • checkDatasourceConnectionInterval 檢查“數據庫型 工作空間”是否改變或“數據庫型數據源”是否斷開的時間間隔,單位為秒,默認30s
  • refreshDatasource 設置是否開啟刷新數據庫型數據源,默認為false

修改成以下配置:

<checkDatasourceConnectionInterval>3</checkDatasourceConnectionInterval>
<refreshDatasource>true</refreshDatasource>

修改完成后,重啟SuperMap iServer服務。

2.2.2 數據更新后,通過SuperMap iServer RestAPI代碼刷新工作空間內容

1. 通過RestAPI操作必須先申請iServer Token

申請地址:

http://IP:8090/iserver/services/security/tokens

2.刷新工作空間

請求URL:

http://IP:8090/iserver/manager/workspaces/workspacereload.rjson?token=

POST請求

{
    "workspaceConnectionInfo": "/opt/zhui.sxwu",
    "isForce": true,
    "datasets": {
        "pggis": ["region_sum"]
    }
}

請求體說明:

  • workspaceConnectionInfo 文件型工作空間路徑絕對路徑。如果是數據庫類型工作空間,請查看具體請查看SuperMap iServer 幫助文檔,例如oracle工作空間則填寫"server=orcl203;username=test;password=test;type=ORACLE;database=;name=testWorkSpace;driver=null"
  • pggis 為需刷新的數據源名稱
  • region_sum 為刷新數據集名稱,如果有多個數據源刷新為數組

例如:

1.刷新指定工作空間的內容

2.返回結果為true代表刷新成功

2.2.3 驗證服務

1.數據服務

workspacereload刷新前:

workspacereload刷新后:

2.地圖服務

由於SuperMap iServer默認表述瀏覽(classic/leaflet等)有緩存,故需要使用iClient客戶端進行驗證,且iClient客戶對接地圖出圖設置cacheEnabled: false屬性。

例如:

workspacereload刷新前:

workspacereload刷新后:

(轉發請注明出處:http://www.cnblogs.com/zhangyongli2011/ 如發現有錯,請留言,謝謝)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM