GIS 系統因其獨特的地理位置特性,越來越受到重視,在各行業中也有越來越多的展示機會。
那 GIS 系統開發的主要流程有哪些?我來整理一下。
1. 確定需求,確定硬件環境。
首選確定業務功能需求,只有需求確定下來了,才能確定使用什么技術路線。是BS構架還是CS構架,需要的開發工具等。一般BS系統偏向內容展示,CC系統偏向內容編輯。
硬件環境主要為網絡環境,因為網絡環境牽涉到地圖底圖的來源,如果不能訪問外網,還需要考慮采用離線底圖。
2. 確定開發技術
2.1 地圖引擎
地圖引擎,說明白點就是SDK或者JS庫,可以提供將地圖數據轉化為地圖位置的功能,並且可以提供加載底圖的功能。總的來說,它提供了地圖顯示的所有接口。
具體可以結合2.3查看。
2.2 底圖
除了上面提到的網絡環境影響底圖的選擇,還要根據客戶需求以及開發技術來確定底圖圖源的情況。
一般的底圖除了常見的類似百度地圖服務器提供的圖片格式底圖,還包括.shp ,.tab, geojson文件格式。通過不同的地圖引擎庫加載不同的文件,最終實現在地圖上顯示點線面的效果。
國內在線底圖圖源: 百度地圖、高德、天地圖、騰訊。
國外在線底圖圖源: 谷歌地圖、OpenStreet、ArcGIS、Bing。
2.3 開發技術
綜合上面的地圖引擎,底圖來源,可以為項目開發選擇合適的開發技術路線。
一般分為以下幾種:
2.3.1 ArcGIS 全家桶: 由美國ESRI公司(國內公司為易智瑞,其對應產品為GeoScene)提供的全套支持地圖開發的系列軟件,包括地圖數據處理 ArcGIS Desktop (ArcMap 和 ARCGIS Pro),
用於地圖服務的ArcGIS Server(ArcGIS Enterprise),用於BS頁面開發的 ArcGIS JavaScript API(支持2D、3D),用於桌面CS軟件開發的 ArcGIS Engine,Android SDK ,iOS SDK 等。
其優點是功能齊全,文檔規范,示例全面,覆蓋面廣,包含了所有可能涉及到的應用場景。 缺點是系統復雜,安裝配置內容繁瑣,接口多而雜,入門門檻高。非開源且收費貴。
可選技術: C# + ArcGIS JavaScript +ArcGISServer + ArcEngine + SDK
底圖可選: ArcGIS + OSM + GoogleMap + 天地圖
可見shp文件通過ArcGIS Server 發布為局域網內地圖服務作為底圖。支持離線。
2.3.2 開源開發:
2.3.2.1 Openlayers 和 Leaflet: 開源的二維地圖JS開發庫,其源碼在GitHub開源,團隊型開發,由很多地圖基礎功能,很多人會以此為基礎寫很多plugin。包括國內地圖訪問,地圖工具,地圖分析等。
可選技術: Openlayers/LeafletJS + GeoServer/PostGIS/天地圖/OSM ,
其中GeoServer和PostGIS為地圖服務引擎,可以通過這兩個服務發布地圖服務,用來作為底圖。免費,支持離線。
2.3.2.2 Cesium 和 maptalks: 開源的三維地圖JS開發庫。其源碼在GitHub開發,公司型開發,如果只使用其他JS庫,不使用其服務資源不收費。
可選技術:CesiumJS/maptalks + CesiumMap/OSM/天地圖
可通過加載三維模型以及使用WebGL技術對地圖內容進行操作和效果展示。 目前不確認是否支持離線。
2.3.3 API開發:
GoogleMap :其地圖API在國內已無法訪問。
BaiduMap:百度公司提供的地圖API,可在線訪問百度地圖的底圖資源包括三維建築等信息,並根據接口進行相關功能開發。
根據國測局要求,其底圖進行了加密,必須使用其API加載數據才能顯示正常位置。
可選技術:JavaScript + BaiduMap API , 不支持離線。
非開源軟件,接口固定,無法進行修改,底圖不收費,其他服務類接口超過訪問次數后收費。
AMap:高德公司提供的地圖API,可在線訪問高德地圖的底圖資源包括三維建築等信息,並根據接口進行相關功能開發。
根據國測局要求,其底圖進行了加密,必須使用其API加載數據才能顯示正常位置。
可選技術:JavaScript + AMap API , 不支持離線。
非開源軟件,接口固定,無法進行修改,底圖不收費,其他服務類接口超過訪問次數后收費。
天地圖:天地圖以提供底圖資源為主,在實際開發過程中,很少直接使用天地圖的API進行項目開發。
可選技術:JavaScript + TMap API , 不支持離線。
3. 業務數據
業務數據必須包含地理位置信息,也就是常說的經緯度信息,只有有了經緯度信息,才能知道在地圖上將對象放在哪里,否則無法確定位置。也就是失去了GIS系統的優勢和意義。
需要對相應的數據進行地圖入庫,如ArcGIS Server、GeoServer、
4. 業務邏輯
根據功能需求,設計交互操作以及信息展示。各個行業的需求模式不同,其交互邏輯也不相同。
5. 開發
根據業務邏輯,使用對應的技術,開發出對應的功能。
6. 部署
部署的時候,除了考慮項目文件的部署,還要考慮底圖的部署,離線地圖要放在對應的文件夾,如果是ArcGIS Server、GeoServer、PostGIS這樣的地圖服務軟件,
要單獨進行安裝,並將地圖源文件導入發布。
說明:離線底圖除了 ArcGIS/GeoServer/PostGIS 這樣的發布局域網服務的地圖服務外,可以使用下載軟件將在線底圖下載到本地加載,也稱之為離線底圖。
參考:
ArcGIS Developer Documents: https://developers.arcgis.com/documentation/
LeafletJS: https://leafletjs.com/
openlayersJS: https://openlayers.org/
CesiumJS: https://cesium.com/
maptalksJS: https://maptalks.org/
GeoServer: http://geoserver.org/
PostGIS: https://postgis.net/
天地圖: http://lbs.tianditu.gov.cn/server/MapService.html
BaiduMapAPI: http://lbsyun.baidu.com/index.php?title=jspopular3.0
AMapAPI: https://lbs.amap.com/api/javascript-api/summary/
openstreetMap: https://www.openstreetmap.org/
