以下内容為項目上原來的實作方式,即通過指定動态工作空間中的shapefile渲染圖層,新的實作方式将改為使用GeoJSON。
==========================================
使用動态圖層服務 ——即帶有“動态工作空間”的地圖服務,如下圖
通路REST URL,可以看到有如下内容:
用戶端使用arcgis api for javascript中的esri/layers/ArcGISDynamicMapServiceLayer
new ArcGISDynamicMapServiceLayer(地圖服務的REST URL, { "id": "mymaplayer" });
根據資料源名稱(即shp檔案名)渲染。
shapefile包含以下幾種格式的檔案:
==================================================================
調用arcgis server服務時,會先鎖定相關的shp檔案,但是由于我們項目的業務邏輯,每次調用服務,需要先清空工作空間,再生成shapefile,這樣就會碰到一個問題,就是被鎖定的檔案删除不了,如下圖:
開發環境使用的是ArcGIS 10.1 for Server (Windows),沒有這個檔案被鎖的問題。
生産環境使用的是ArcGIS 10.4.1 for Server (Windows),就有這個問題。
經過與ESRI客服溝通,他們說高版本上才加的這個檔案鎖功能,解決方案的話可以使用ArcGIS REST API把服務重新開機。
第一步:生成token
http://IP:PORT/arcgis/admin/generateToken
第二步:停止服務
http://IP:PORT/arcgis/admin/services/hmcs/dynamicSpace.MapServer/stop
第三步:啟動服務
http://IP:PORT/arcgis/admin/services/hmcs/dynamicSpace.MapServer/start
=============================================================================
官方API文檔
如果調用的是arcgis/admin相關api
參考:https://developers.arcgis.com/rest/enterprise-administration/server/overview.htm
如果調用的是arcgis/rest相關api
參考:https://developers.arcgis.com/rest/services-reference/get-started-with-the-services-directory.htm
或者通路ArcGIS Server部署的位址:http://IP:PORT/arcgis/sdk/rest/
參考連結:
https://www.cnblogs.com/luwl/p/8966325.html
後話:
關于shapefile加鎖被占用的問題,可以參考《關于arcsom.exe和arcsoc.exe以及性能優化》加深了解