網路媒體於20190204關於火燒山的報導 |
在今年年假近尾聲時,雪霸國家公園管轄的雪山主東峰線步道369山莊附近失火了!身為森林系畢業的我自然對這樣的新聞特別關心,畢竟是曾經去過的地方。關注新聞的同時也想知道到底燒了多大的範圍,畢竟從網路報導所提供的照片實在是無法很清楚的了解。利用Open data中可以取得的最高解析度之衛星影像,Sentinel-2,就讓我們來看看這個火燒山的面積鳩近有多大吧?~
//下面先貼上成果圖,等有時間再補上施作細節
利用Google公司最近正式上線的GIS新兵器,Google Earth Engine,我們介接了Sentinel-2衛星的MSI(MultiSpectral Instrument, Level-1C)影像產品,找到火燒前、後最接近日期的369山莊影像(20190131和20190210,20190205雖有影像紀錄但大多數畫面被雲層所遮住),根據RGB套色的火燒範圍標定多邊形圖徵,計算總面積。計算結果:火燒面積約為25.33公頃(新聞好像只報導了3公頃,看來是有誤差的);火燒範圍大概就是登山走到369山莊時,眼前所見白木林跟箭竹草原的範圍,下方照片為20181117拍攝於雪山東峰(往369山莊方向),照片中間的箭竹草原基本上在這次的火燒中整個都燒掉了XD。
火燒山面積的測定 |
20171117由雪山東峰往369山莊拍攝 |
//20190223更新
說好要放上來的code在這邊(沒清乾淨的部分請忽略)
//20190203開始火燒 //20190131、20190205、20190210,Sentinel-2各有拍攝任務飛過台灣上空。故我們抓出這幾張圖片。 /** * Function to mask clouds using the Sentinel-2 QA band * @param {ee.Image} image Sentinel-2 image * @return {ee.Image} cloud masked Sentinel-2 image */ function maskS2clouds(image) { var qa = image.select('QA60'); // Bits 10 and 11 are clouds and cirrus, respectively. var cloudBitMask = 1 << 10; var cirrusBitMask = 1 << 11; // Both flags should be set to zero, indicating clear conditions. var mask = qa.bitwiseAnd(cloudBitMask).eq(0) .and(qa.bitwiseAnd(cirrusBitMask).eq(0)); return image.updateMask(mask).divide(10000); } // Map the function over one year of data and take the median. // Load Sentinel-2 TOA reflectance data. var dataset = ee.ImageCollection('COPERNICUS/S2') .filterDate('2019-01-31', '2019-02-01') // Pre-filter to get less cloudy granules. //這一行是依照雲的比例進行分類,只找出雲面積占pixel 20%以下的畫面,所以如果是要看單次飛行影像,可能會直些篩掉很多。我們使用100去得到所有的影像。 .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 100)) //套用消除雲朵的function .map(maskS2clouds); var dataset2 = ee.ImageCollection('COPERNICUS/S2') .filterDate('2019-02-05', '2019-02-06') // Pre-filter to get less cloudy granules. //這一行是依照雲的比例進行分類,只找出雲面積占pixel 20%以下的畫面,所以如果是要看單次飛行影像,可能會直些篩掉很多。我們使用100去得到所有的影像。 .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 100)) //套用消除雲朵的function .map(maskS2clouds); var dataset3 = ee.ImageCollection('COPERNICUS/S2') .filterDate('2019-02-10', '2019-02-11') // Pre-filter to get less cloudy granules. //這一行是依照雲的比例進行分類,只找出雲面積占pixel 20%以下的畫面,所以如果是要看單次飛行影像,可能會直些篩掉很多。我們使用100去得到所有的影像。 .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 100)) //套用消除雲朵的function .map(maskS2clouds); var rgbVis = { min: 0.0, max: 0.3, bands: ['B4', 'B3', 'B2'], }; //zoom設定選16剛剛好;修正座標至369山莊。 Map.setCenter(121.254755, 24.392263, 16); Map.addLayer(dataset.median(), rgbVis, 'RGB0131'); Map.addLayer(dataset2.median(), rgbVis, 'RGB0205'); Map.addLayer(dataset3.median(), rgbVis, 'RGB0210'); //下方為根據火燒區域插入多邊形,以計算面積。Earth engine可以選取換成feature插入的型式。 var geometry = /* color: #d63000 */ee.Geometry.Polygon( [[[121.25340103694282, 24.395151518044415], [121.25310062953315, 24.39522968562599], [121.25297188350044, 24.395444646225936], [121.25269293376289, 24.39554235546864], [121.25228523799262, 24.395698690099767], [121.2520277459272, 24.39554235546864], [121.25179171153388, 24.395307853159206], [121.25153421946845, 24.39540556250769], [121.25134110041938, 24.395288311280428], [121.25123381205879, 24.395073350414474], [121.25108360835395, 24.394995182736178], [121.25123381205879, 24.3946043436192], [121.25138401576362, 24.394291671455083], [121.2512552697309, 24.39411579302271], [121.25123381205879, 24.393959456432828], [121.25086903163276, 24.393568614111814], [121.25093340464912, 24.3929041793913], [121.25106215068183, 24.39257196072075], [121.2512552697309, 24.392259283526997], [121.2514698464521, 24.392024775123907], [121.25164150782905, 24.391790266285565], [121.25177025386176, 24.391555757012], [121.25232815333686, 24.391399417254494], [121.25254273005805, 24.391301704807827], [121.25262856074653, 24.3911258222134], [121.25286459513984, 24.39098902447071], [121.25310062953315, 24.390793598867102], [121.2538301903852, 24.390852226579923], [121.25408768245063, 24.391301704807827], [121.2542808014997, 24.39171209657608], [121.25481724330268, 24.391614384371195], [121.25520348140083, 24.391731639007986], [121.25563263484321, 24.391848893535965], [121.2558472115644, 24.39194660555949], [121.25610470362983, 24.392024775123907], [121.256855722154, 24.392239741176702], [121.25683426448188, 24.39245470686377], [121.25576138087592, 24.39247424918083], [121.25558971949897, 24.392747841302203], [121.2557399232038, 24.393138686162217], [121.25610470362983, 24.393549071964014], [121.2561905343183, 24.393744493305892], [121.25655531474433, 24.3938031196495], [121.25676989146552, 24.39392037225514], [121.25726341792426, 24.394018082676705], [121.25739216395698, 24.39431121348801], [121.25737070628486, 24.394623885603767], [121.25724196025214, 24.394975640809047], [121.2573063332685, 24.395171059944346], [121.25687717982612, 24.39540556250769], [121.256855722154, 24.395600980977985], [121.25644802638374, 24.39565960646012], [121.25623344966255, 24.395796399145986], [121.25576138087592, 24.39565960646012], [121.25556826182685, 24.395679148281467], [121.25524639674506, 24.39593319168373], [121.25492453166328, 24.396011358781656], [121.2544953782209, 24.39575731553657], [121.25402330943427, 24.395698690099767], [121.25378727504096, 24.395600980977985], [121.25350832530341, 24.39554235546864], [121.2533795792707, 24.395386020644032]]]); print(geometry); print('Polygon area: ', geometry.area().divide(1000 * 1000)); //Polygon area: 0.25330297939272167 km^2
留言
張貼留言