利用QGIS下載地圖數據

  • 2019 年 10 月 3 日
  • 筆記

這段時間做了一些利用地理資訊進行定位導航的系列工作,其中很重要的一部分是如何獲取到地圖數據,比如道路的矢量圖、某一區域的柵格圖,我用到的主要工具是QGIS。QGIS是一個跨平台的免費應用,其中集成了對矢量圖、柵格圖處理的很多功能,同時也集成了很多開放地圖數據網站的介面,比如OpenStreetMap等,因此,在獲取數據,並處理成我們需要的格式方面非常便利。本篇博文主要介紹如何使用QGIS下載數據,並處理成特定的格式。

一、 指定區域指定地物矢量圖獲取

我們經常會遇到這樣一種需求:獲取某一區域的指定地物的地圖,比如獲取某一區域的道路圖、河流圖等。這一節的內容能夠解決這一需求。通常我們從開放的地圖平台OpenStreetMap中下載某一區域的矢量地圖,而後通過後續的處理,來獲取我們需要的地圖資訊。

1、數據下載

1) 在vector菜單欄中選擇OpenStreetMap ->Download Data,即可打開數據的下載框:

 

2)而後設定需要下載數據的區域,這裡提供了三種區域設置方式:

a) From map canvas:當前窗口顯示的區域

b) From layer:某一圖層所代表的區域

c) Manual:人為設定區域

通常當我們已知我們需要下載的數據的區域,我們採用第三種方式。

 

3)下載數據:設置好下載區域,並輸入保存文件名後,點擊確定,即開始下載數據。這裡需要注意的一點是,在設定保存文件名時,需要把文件的擴展名帶上,即.osm,這樣在後續載入文件時,才不會出現找不到文件的情況。

 

2、提取指定地物及矢量圖保持

上一步下載的數據是以xml的形式存儲的,不是矢量圖的格式,因此不能被直接處理。我們需要首先將該文件載入入QGIS中,並轉換為矢量數據,才能進行下一步的處理。

1) osm文件載入:選擇vector->Import Topology from XML,打開數據導入頁面: 

選擇需要導入的文件(即剛才我們下載的osm文件),設置轉換後文件名,點擊確認。

2) 導出矢量圖:選擇vector->Export Topology to SpatiaLite,打開矢量圖導出頁面: 

由於此處我們需要得到的是道路數據,因此我們在“export type”選擇Polylines;而後設置導出文件名;最後需要導出標籤。選擇Load from DB,並選擇感興趣的標籤。這裡我們僅對道路感興趣,因此我們僅選擇highway。保留標籤的目的是為了進一步篩選,雖然我們在“export type”中選擇了Polylines,但是並不是所有的Polylines都是道路(也有可能是河流等),因此需要進行進一步的篩選。 

3) 篩選感興趣的地物:

 

上述得到的矢量圖,不僅僅包含道路圖,還包含了其他地物特徵,因此需要進一步篩選。

在獲得的圖層上,右鍵打開菜單選項,選擇Open Attribute Table: 

選擇select by expression(圖中紅色圈),而後設置篩選的條件。這裡我們需要選擇的是道路,因此我們的篩選條件為:NOT (“highway”= ‘NULL’)。點集select按鈕後,可以看見,道路部分被黃色高亮了。

 

而後我們在圖層窗口右鍵打開菜單,選擇保存,打開保存頁面:

 

設置保存文件名,地理坐標系,注意勾選紅色圈內選項,選擇保存,即得到該區域的道路矢量圖。

二、指定區域柵格圖獲取

1、設置下載網址

在Browser Panel窗口中找到Tile Server(XYZ),右鍵,New Connection:

輸入伺服器的網址,例如:

高德影像圖:

https://webst01.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}

高德路網:

https://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=2&style=8&ltype=11

此時會生成伺服器地圖的介面。

2、創建柵格地圖圖層

雙擊上述創建的伺服器地圖介面,即會在Layer Panel中生成一個響應的圖層。此時,如果我們知道需要下載的區域的地理坐標,可直接進入第三步。如果不知道,可以打開參考地圖,通過手動選取,來設定下載區域。具體做法為:

打開web->OpenLayers plugin,選擇想要的地圖:

 

而後通過縮放,拖動等操作,將地圖設置到我們需要的區域:

 

3、保存需要的柵格地圖

在創建的柵格圖層上,右鍵,選擇保存,打開保存頁面:

 

設置保存的路徑,地理坐標系,範圍(Extent),解析度(Resolution),點擊確定後,柵格地圖數據就會被下載下來。如果保存的範圍很大,通常地圖會被分割為若干個小的區域進行保存。 

相關操作,可以參考影片:https://www.bilibili.com/video/av65253432/