iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 25
0

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

大綱:

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

安裝

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

conda install -c conda-forge owslib

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) 

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

取得Layer資訊

根據上面的圖層清單,我們先呼叫其中一個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

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()

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


上一篇
Day24 交通資料-國道ETC
下一篇
Day26 網格資料的處理-Rasterio初探
系列文
30天精通GIS資料分析-使用Python30

尚未有邦友留言

立即登入留言