首先這個教程整理,比較偏細節。
因為我本身不是做GIS,所以可能有點流水賬,當然錯漏難免,懇請指正。
當我們做定位的時候,想要可視化展示,室外當然可以直接使用google,百度的底圖。對於室內,有兩種方法:
1.單獨可視化展示可以直接通過簡單的底圖jpg圖片進行,只需要實現jpg像素坐標到你定位坐標的轉換即可。
2.如果還想要想要室內的map matching, 甚至想要路徑規划(導航)都需要矢量地圖生產了發布了。
本文這里只講比較簡單的基於ArcMap/ArcServer(英文版)的實現方法和流程,如果你要設計室內地圖的規范化,標准制定,請移步indoorGML.
當然,這里假設一些基本的arcmap基礎你有,不然一步步的講解的話就太多了。
1.CAD------>SHP
首先,一般的室內地圖我們可以通過CAD的設計圖來進行轉化成想要的底圖背景。
有自定義坐標系的建築設計cad圖,但是和全校底圖不在一個坐標系下。
步驟:
1.利用cad圖導出成shp文件:
a.polyline 放進工作區
b.data->export(layers coordinate system.)
c.在geodatabase中import該shp, start edit and spatial adjust.
2.調整你想要的室內圖到某個底圖(google baidu底圖或者校園地圖這種上去)
a.打開shp文件和底圖文件 (如果看不到可以new a map document 再拖進去)
b.利用arcmap的Spatial adjustment工具里的displacement link tool 來鏈接同名點。
(先點擊待轉換的點,連接到目標點上去,多利用zoom to layer)
c.均勻布設 控制點,然后點擊adjust 進行轉換。
2.通過ArcServer 發布導航服務
2.1概述
有了大概的cad底圖,但是並沒有我們想要的路徑分析,道路信息等。為了實現道路map matching 或者navigation,需要發布map server(network analysis)服務。
1.利用arctmap畫圖並生成網絡數據集(newwork dataset),然后利用arcmap的network analyse分析驗證路算
2.發布網絡數據集到arcgis server 上面即可。
2.2生產:
1.在文件目錄下面新建“文件地理數據庫”test
2.在test建立要素數據集testset,坐標系選擇Project(投影坐標系)(比如UTM 的WGS84-North N36)
3.在testset里面建立需要的要素類比如road toilet(畫圖) 畫圖的時候注意比例尺,否則太大。
4. arcmap上面空白右鍵點擊network analyst功能
5.在testset新建網絡數據集(如果是灰色則需要在自定義拓展模塊中激活network Analyst)
6.網絡數據集創建的時候不能選point 只選擇road 否則會提示創建有錯誤並生成error(代碼16 “交匯點未連接到任何其他邊要素。” )
notice:
1.在生成數據集的時候,連通性設置為所有節點或者是端點 如果是端點需要打斷不然路算繞遠(connectivity項)。交接點也需要打斷 不然走不通。(no route found)
2.如果導航需要方向至少需要(
https://desktop.arcgis.com/zh-cn/arcmap/latest/extensions/network-analyst/setting-directions.htm):
- 具有長度單位的長度屬性(有坐標系就ok)
- 至少有一個邊源
- 邊源上至少有一個文本字段(導航的道路名)(新增字段要在目錄下選擇屬性, 新增完后編輯會顯示不可用的字段,重啟。。。)
- 一條路多線段先畫成一起寫了屬性再打斷會帶有屬性,可以利用高級edit的批量打斷。
3.導航信息中 如果是一條路(上文的文本字段)則不提示轉向(哪怕角度很大 只會計算該路段的起點終點的方向,例如一個直角路是一條路,可能直接說沿着東南路方向行駛,所以需要分成兩段,road名字設置成一樣) WGS84 可設置成顯示decimal degree 並在custom中設置小數位(如果地圖小)
2.3發布網絡分析服務
需要:一台server+安裝arcserver 見:
http://server.arcgis.com/zh-cn/server/latest/get-started/windows/tutorial-publishing-a-network-analysis-service.htm
可能遇到的問題:
1.發布服務后通過web測試你的服務http://your_ip:6080/arcgis/rest/services/MyMapService/NAServer/Route,測試方法見api:
http://resources.arcgis.com/en/help/rest/apiref/
2.通過http://your_ip:6080/arcgis/manager/service.html?name=MyMapService.MapServer管理服務
3.6080ip被防火牆封掉的問題,需要安裝web adaptor(在server包里)然后通過訪問web adaptor來訪問你的服務,即測試你的服務的地址變為http://your_ip/webadapter/rest/services/YourMapService/NAServer/Route
3. 在終端Android(web)中使用你的網絡服務:
2.github 上面看esri的相關sample code.
本文只是介紹了如何從CAD----->Map, 因為arcgis 本身的network analysis暫時並未提供室內三維空間的導航。
所以如何通過arcgis的二維路徑分析進一步實現室內三維導航呢?具體的思路將在下一篇文章中介紹。