鐵人賽2019 Day25 用Owslib操作WMS

  1. 1. 安裝
  2. 2. owslib初探
  3. 3. 取得Layer資訊
  4. 4. GetMap
  5. 5. 後記

今天要來介紹owslib,這個套件是python中拿來處理wms/wmts等服務的套件,
matplotlib basemap也是使用這個套件,另外QGIS軟體中也有使用。

大綱:

  • 安裝
  • owslib初探
  • 取得Layer資訊
  • GetMap

安裝

首先,安裝owslib的部分我們使用使用conda,打開cmd輸入

1
conda install -c conda-forge owslib

owslib初探

我們用owslib來呼叫一個wms

1
2
from owslib.wms import WebMapService
wms = WebMapService('https://webmap.ornl.gov/ogcbroker/wms', version='1.1.1')

WMS介紹與說明: [Day 3] 談互操作性及Web Map Service 標準 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

常用WMS清單: [Day 15] wms,wmts資源彙整與OSM - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

wms服務中的圖層清單取得可以透過下列方法:

1
2
for item in list(wms.contents):
print(layer+":"+wms[item].title)

https://ithelp.ithome.com.tw/upload/images/20181109/20107816WjKlbxAWXZ.png

取得Layer資訊

根據上面的圖層清單,我們先呼叫其中一個1353_1

1
layer=wms['1353_1']

從layer物件可以看看圖層的基本內容

例如:bbox範圍

1
layer.boundingBoxWGS84

回應:(-181.117, 57.0998, -138.538, 71.6062)

title

1
layer.title

回應:'Alaska Arctic AVHRR False-color Infrared Base Map'

坐標系統

1
layer.crsOptions

回應:['epsg:900913','epsg:4326','epsg:54004', 'epsg:3338', 'epsg:54008','epsg:3785','epsg:54009']

GetMap

GetMap是WMS規範中取得影像/網格資料的方法
在這邊的操作也是使用GetMap取得網格資料,
例如:

1
2
3
4
5
6
7
8
img = wms.getmap(    
layers=['1353_1'],
styles=['default'],
srs='EPSG:4326',
bbox=(-181.117, 57.0998, -138.538, 71.6062),
size=(600, 300),
format='image/png',
transparent=True)

取得影像後,可以把圖片存起來

1
2
3
out = open('image.png', 'wb')
out.write(img.read())
out.close()

https://ithelp.ithome.com.tw/upload/images/20181109/201078167MK9ry3FqM.png
可以看到,影像被儲存了。

後記

今天使用owslib取得WMS資料,預計接下來幾天會進入網格資料的GIS操作喔!

參考資料:
SDAT Help: Use ORNL DAAC WMS Service in Python

matplotlib basemap toolkit