开源GIS解决方案,暨GeoServer+OpenLayer结合开发总结
http://linking123.github.io/2018/07/21/%E5%BC%80%E6%BA%90GIS%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%EF%BC%8C%E6%9A%A8GeoServer-OpenLayer%E7%BB%93%E5%90%88%E5%BC%80%E5%8F%91%E6%80%BB%E7%BB%93/
?
– 0.感嘆
– 1.文檔說明
– 2.文檔內容
— 2.1 GeoServer - 地圖服務
— 2.2 OpenLayers - 前端渲染引擎
— 2.3 地圖資源
— 2.4 地圖編輯器
— 2.5 2.5d偽三維效果
— 2.6 GeoJson
— 2.7 集成到工程中
— 2.8 商業解決方案
0.感嘆
原以為,此生與GIS再無交集。
因緣際會,項目上有機會重拾 GIS 相關,這就是人生啊!
看來,早年的某個舉動,在未來某個時刻真的會影響人生的軌跡吧!
1.文檔說明
需滿足的需求:地理信息,設備信息,建筑物信息等在地圖上集中展示。
本文檔主要記錄此次用到的一些開源地理信息解決方案的集合,使用過程等。
2.文檔內容
架構圖:
2.1 GeoServer - 地圖服務
GeoServer
從官網下載免安裝包后,運行命令:
geoserver-x.x.x/bin/startup.sh打開默認網址http://localhost:8080/geoserver,默認端口8080可能被占用,需要自行修改。
- workspaces:工作區
- styles:樣式
- stores:數據存貯
- layers:圖層
- layergroups:圖層集
發布新的store時,選擇字符集為utf-8,加入新的shape文件后,在數據頁,一定要點擊計算地圖顯示范圍,即從數據中計算與Computefrom native bounds自動計算并顯示Lat/Lon Bounding Box邊框數據。
部署服務器時,可直接拷貝本地 geoserver-x.x.x文件夾部署運行即可。注意自動啟動與后臺服務注冊。
參考:
GeoServer基礎教程(三):部署發布Shapefile地圖數據
發布shape圖層為服務
2.2 OpenLayers - 前端渲染引擎
OpenLayers?OverView:
OpenLayers makes it easy to put a dynamic map in any web page. It can display map tiles「OSM, Bing, MapBox, Stamen, and any other XYZ source」, vector data「from GeoJSON, TopoJSON, KML, GML, Mapbox vector tiles」 and markers loaded from any source. OpenLayers has been developed to further the use of geographic information of all kinds. It is completely free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).
官方實例
基本上支持所有地圖資源,除了overview中介紹的,還包括百度地圖、天地圖等國內地圖,還可以加載自發布的地圖服務,如ArcGIS Server。
2.3 地圖資源
利用ArcMap手繪,需要繪制室內地圖(體現三維效果),自定義路徑規劃
2.4 地圖編輯器
ArcMap 制圖,請自行學習。
2.5 2.5d偽三維效果
項目中需要用到 2.5d 偽三維效果,經過搜索,找到一些參考「GeoServer官方 sld文檔」、「通過sld樣式拉伸渲染為偽3d建筑的地圖效果通過geoserver發布」、「Geoserver偽三維SLD文件配置」、「SLD 樣式 之GeoServer中設計2.5維建筑物」。
uDig自定義圖層 style
可將ArcMap制作的 shapeFile 文件編輯出想要的樣式。
uDig支持點線面的編輯。導入shp格式文件后,選擇change style,制作自己想要的樣式,然后導出xml代碼到GeoServer的styles中。
2.6 GeoJson
{"type": "Feature","geometry": {"type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"} }載入?GeoJson?屬性圖層,更靈活的展示數據,也可從后臺拼接這種數據格式。
GeoJson加入Feature圖層:?轉換,工具,?使用
多層地圖,及屬性圖層疊加
shape to geoJson
geoJson 生成
2.7 集成到工程中
因為我是按照?教程?用nodejs來開發前端的,所以涉及一個集成的問題。如果是直接引用openLayers的資源則不存在這個問題
前端開發完成,如果需要寫成動態,可能需要集成到其他工程中。
如我集成到 Java Web 中,在 Tomcat 中發布,雖然官方只用了一句copy the dist/ folder to your production server.說可以把生成的源碼直接copy到web服務中,但由于jsp的特點,需要局部改造。所幸改造難度不大,需要注意的是切換地圖時,需要先清空map容器,如下
$("#map").html("")因為 html 標簽是復用的,map容器需要先清空。然后再重新請求地圖資源。
2.8 商業解決方案
在調研過程中,發現一家專業制作室內地圖的公司,記錄下來備用。
公司名為蜂鳥云(不是那個送外賣的哦),經過與商務溝通,了解到他們是按面積階梯性收費,綜合起來也不是很貴,而且滿足離線部署這一項很符合我們的業務需求,但由于地圖數據不受自己的控制,最終舍棄了這個方案。(這不屬于商業秘密嗎?如有違反,請聯系本人侵刪。)
需求方提供標準CAD文件,由他們繪制底圖,這個就是按面積收費的;地圖數據部署在云服務上,可以無限次編輯,下載,離線部署。
哦,說一下他們的地圖坐標系,支持坐標系轉換,支持大部分坐標系。室外是地理坐標系 WGS 84(4326),室內是投影坐標系。
商業上來說,這家服務真的可以考慮。
以上,為在項目開發中用到的 開源GIS解決方案的大體框架。
總結
以上是生活随笔為你收集整理的开源GIS解决方案,暨GeoServer+OpenLayer结合开发总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Security3源码分析
- 下一篇: 在WordPress文章中插入表格的四种