今天要來介紹owslib
,這個套件是python中拿來處理wms/wmts等服務的套件,
在matplotlib basemap也是使用這個套件,另外QGIS軟體中也有使用。
大綱:
首先,安裝owslib的部分我們使用使用conda,打開cmd輸入
conda install -c conda-forge owslib
我們用owslib來呼叫一個wms
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服務中的圖層清單取得可以透過下列方法:
for item in list(wms.contents):
print(layer+":"+wms[item].title)
根據上面的圖層清單,我們先呼叫其中一個1353_1
layer=wms['1353_1']
從layer物件可以看看圖層的基本內容
例如:bbox範圍
layer.boundingBoxWGS84
回應:(-181.117, 57.0998, -138.538, 71.6062)
title
layer.title
回應:'Alaska Arctic AVHRR False-color Infrared Base Map'
坐標系統
layer.crsOptions
回應: ['epsg:900913','epsg:4326','epsg:54004', 'epsg:3338', 'epsg:54008','epsg:3785','epsg:54009']
GetMap是WMS規範中取得影像/網格資料的方法
在這邊的操作也是使用GetMap取得網格資料,
例如:
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)
取得影像後,可以把圖片存起來
out = open('image.png', 'wb')
out.write(img.read())
out.close()
可以看到,影像被儲存了。
今天使用owslib
取得WMS資料,預計接下來幾天會進入網格資料的GIS操作喔!
參考資料:
SDAT Help: Use ORNL DAAC WMS Service in Python