離線地圖解決方案,除了買地圖數據,使用專業的ArcGIS來作外,也可使用GMap.Net來作。html
關於GMap的開發教程,能夠看我之前的文章:基於GMap.Net的地圖解決方案web
使用了GMap一年了,也有了一些積累,開發了一個能夠下載ArcGIS、百度、谷歌、高德、騰訊SOSO、天地圖、Here等地圖的地圖下載器。sql
百度和google地圖加載顯示以下:數據庫
百度普通地圖:緩存
百度混合地圖:網絡
谷歌普通地圖:多線程
谷歌混合地圖:app
從目前的狀況來看,百度的普通的地圖數據是更新最快的,可是有些小地方沒有衛星地圖,而谷歌幾乎全部的地方都有衛星地圖,可是谷歌中國的地圖更新太慢,好比說南京已經有3號線和10號線了,谷歌地圖上就沒有。ide
只要地圖能加載顯示,就能夠下載到本地,開發的地圖下載器支持SQLite、MySQL、MsSQL、PostgreSQL等數據庫保存,也能夠以固定目錄組織保存到本地磁盤上,支持ArcGIS的WMS切片服務的圖源使用。工具
下載到本地磁盤的地圖:
支持的地圖下載方式:
(1)選擇一個矩形區域下載。
(2)選擇某個省、市進行下載。
下載到MySQL的地圖數據:
本身擴展的.Net地圖控件主要功能:
1)下載百度、谷歌、高德、騰訊、Here、天地圖的地圖,按區域下載或是省市邊界下載。
2)各種畫圖工具:矩形、圓形、多邊形、線段、折線段。能夠做爲電子圍欄、地圖圈選工具、地圖畫圖工具使用。
3)各類圖標:圖片、圖片+文字說明、gif動態圖片、帶旋轉角度的箭頭、閃動的報警圖標
4)相似百度地圖的「測距」功能:兩點之間的距離,或者根據某個距離在地圖上展現線段或者多邊形。
5)發佈離線地圖服務:這裏的離線地圖只是地圖顯示服務,將下載的離線地圖數據做爲Http服務發佈在局域網內使用。
這樣的離線地圖客戶端仍然可使用GMap.Net,而Web端可使用Openlayers或者是Leaflet等js庫作。
更多關於離線web GIS方面的資料,請參考《Web GIS離線解決方案》。
以下是用leaflet js作的簡單的demo,用的是google的地圖:
6)GPX數據的讀取與展現。
7)KML數據的保存與讀取展現。
8)POI數據查詢展現:
經過省市名稱和關鍵字查詢POI數據,圖示以下:
9)地址定位:輸入地址關鍵字定位到某些點。
輸入一個肯定的地址定位到地圖上的點。
10)地址逆解析:點擊地圖上某點,查詢該點的位置。
11)路徑導航:經過「起點」和「終點」,查詢路徑顯示路徑規劃。
配置使用:MapDownloader.exe.config配置文件
<appSettings> <!--Mysql Server的IP和Port--> <add key="MySQLServerIP" value="127.0.0.1"></add> <add key="MySQLServerPort" value="3306"></add> <!--Mysql Server的數據庫名、用戶名、密碼--> <add key="Database" value="mapcache"></add> <add key="UserID" value="root"></add> <add key="Password" value="admin"></add> <!--地圖中心點座標:--> <!--南京:118.773,32.043--> <add key="MapCenter" value="118.773,32.043"></add> <!--本地存儲切片的路徑--> <add key="TilePath" value="D:\\GisMap"></add> <!--下載失敗時重試的最大次數,網絡狀態很差時候可修改成一個大的整數值,好比10--> <add key="Retry" value="3"></add> </appSettings>
一些功能說明:
推薦下載範圍:
世界:1--5級。中國:5--9級。省:9--12級。市:12--18級。級數超過16後數據會比較大。
1)下載方式:
(1)在「畫圖工具」中選擇「矩形」(按着左鍵拖動鼠標,放開左鍵完成畫圖)或者「多邊形」(點擊左鍵)畫圖,雙擊所畫的多邊形,進入下載配置,選擇所需下載的級別便可。
(2)在「區域下載」下點擊某個省、市、區(縣),雙擊區域多邊形,進入下載配置,選擇所需下載的級別便可。
2)下載速度:
已經改進爲多線程下載,顯示整個切片的下載速度。選擇某個市的前15級下載仍是比較快的,16級之後因爲圖片數量巨大,下載須要等待較長時間。
3)下載儲存方式:
默認是在MapCache下SQLite數據庫裏(\MapCache\TileDBv5\en\Data.gmdb),下載後可以使用相應工具打開數據庫查看。
若是要保存到MySQL裏,須要修改對應MapDownloader.exe.config配置文件裏的配置項,數據庫」mapcache「要先手動建好,表會自動建立。
若是選擇「本地磁盤」,則以切片形式保存到配置文件「TilePath」對應的路徑目錄裏(默認是D:\GisMap)。
4)測試下載的地圖是否可用:
在「地圖訪問」中選擇「本地緩存」,則地圖自動切換到離線模式,使用本地下載的緩存來訪問地圖。
5)「拼接圖」測試:
在「畫圖工具」中選擇「矩形」畫圖,畫要拼接的範圍,填入要拼接的Zoom,點擊「拼接圖」,會自動在程序運行目錄下生成一張拼接大圖。這個拼接圖沒有集成地理信息,我的以爲拼接圖沒有太大意義,在實際應用中,要先下載各個zoom下的切片,根據座標信息拼接成一個大圖,再在相似ArcGIS或GeoServer中切片發佈成服務,這樣作太麻煩,不如直接按ArcGIS或GeoServer的切片組織規則下載命名切片,再加上對應的配置就能夠直接發佈服務使用。
6)離線切片導出,做爲ArcGIS或GeoServer中服務使用的切片:
把下載到數據庫中的切片按ArcGIS或GeoServer的切片組織規則導出到本地做爲服務的數據使用。
7)離線Web服務:
勾選「離線Web服務」,能夠將下載的地圖切片發佈爲地圖底圖服務(先下載谷歌地圖,用做地圖服務的切片),可用於局域網下的Web項目,僅僅用於測試。 詳情參考《Web GIS離線解決方案》
8)POI查詢導出:
聯網使用服務查詢POI數據,導出到Excel或者數據庫中。高德和騰訊的POI能夠和地圖無誤差顯示,百度的不行。
9)地址解析與地址逆解析:
聯網使用一些服務得到地址信息。
10)路徑導航:
聯網使用一些服務查詢路徑並顯示。
11)離線地圖文件「Data.gmdb」的加載
用這個下載器下載完的Data.gmdb文件只能用這個下載器去加載,沒法用C#源碼去加載,由於每一個GMapProvider裏的GUID是不一樣的,對應生成的地圖的type也是不一樣的。
下載地址:http://pan.baidu.com/s/1miMF9nM (更新於2017-7)
本軟件僅供我的學習與科研使用,所下載的數據版權歸各個地圖服務商全部,任何組織或我的因數據使用不當形成的問題,軟件做者不負責任。
聯繫方式:站內信,QQ:599965176
參考:
http://www.cnblogs.com/luxiaoxun/p/3802559.html
http://www.cnblogs.com/luxiaoxun/category/513908.html