跳到主要內容

發表文章

目前顯示的是有「python」標籤的文章

農業溫室氣體排放估算 - 水田甲烷(參數篇)

基本概念可參考上一篇文章 https://learncropmodel.blogspot.com/2025/05/blog-post.html 上一篇文章提及碳排係數在Tier1當中的拆解方式如下,我們來看看文獻裡的參數吧 $EF_i = EF_c \cdot SF_w \cdot SF_p \cdot SF_o$ EF i : i條件的每日排放係數 EF c : 無施用有機肥料下持續灌溉水田的排放係數 SF w : 不同水分管理區域的調整因子(表 5.12) SF p : 不同種植前水分管理調整因子(表 5.13) SF o : 有機質肥料型態或施用量之調整因子(Eq. 5.3, 表5.14) Baseline emission factor 也就是EF c 的預設係數來自於表5.1 (page 5.53) 表5.1 預設水田甲烷排放係數,假設水稻栽培時間小於180天、連續淹水、未施用有機質 World Regional Emission factor (kg CH 4 ha -1 d -1 ) Error range (kg CH 4 ha -1 d -1 ) Region Emission factor (kg CH 4 ha -1 d -1 ) Error range (kg CH 4 ha -1 d -1 ) 1.19 0.80 - 1.76 Africa 1.19 0.80 - 1.76 East Asia 1.32 0.89 - 1.96 Southeast Asia 1.22 0.83 - 1.81 South Asia 0.85 0.58 - 1.26 Europe 1.56 1.06 - 2.31 ...

Python 解析多光譜 (2)

接下來我們就試著用Python畫出NDVI的作品 一樣的,先載入必要的套件,並設定working directory import os import matplotlib.pyplot as plt import numpy as np import rasterio as rio import geopandas as gpd import earthpy as et from earthpy import spatial as es from earthpy import plot as ep path = "D:\Python\multispectral" os.chdir(path) 接著,利用rasterio載入影像,用shape函式查看影像基本特性 pine_path = os.path.join("pineapple","pineapple0808.tif") with rio.open(pine_path) as msi: pine0808 = msi.read() pine0808.shape (6, 4604, 9634) 再來就利用earthpy 的 normalized_diff 函式來算 NDVI,再使用ep.plot_bands來畫圖 pine_ndvi = es.normalized_diff(pine0808[4], pine0808[2]) ep.plot_bands(pine_ndvi, cmap='PiYG', scale=True, vmin=-1,vmax=1, title="NDVI of Pineapple 0808") plt.show() 我們來觀察一下 es.normalized_diff 這一個函式吧。 help(es.normalized_diff) normalized_diff(b1, b2) Take two n-dimensional numpy arrays and calculate the normalized difference. Mat...

Python 解析多光譜 (1)

跟著Earth lab的內容逐步練習 基本概念 通常在表達波段的時候,都是選用波段的中間值表示,例如820-830 nm,我們就會說是825 nm。 高光譜和多光譜的差異在於波段的數量,從GIS geography可以找到以下的解釋 Multispectral: 3-10 wider bands. Hyperspectral: Hundreds of narrow bands 資料出處: https://gisgeography.com/multispectral-vs-hyperspectral-imagery-explained/ 使用Python 操作多光譜 rasterio.open()  函數用來打開多光譜影像 stack() 函數可用來引入多光譜資料 earthpy的plot_rgb() 函數用來指定波段 開始吧 首先載入所有必要的元件 import os import matplotlib.pyplot as plt import numpy as np import rasterio as rio import geopandas as gpd import earthpy as et import earthpy.plot as ep 需要額外安裝的套件包括rasterio, geopandas, earthypy,可以從anaconda power shell prompt 安裝。 接著設定路徑 path = "D:\Python\multispectral" os.chdir(path) plt.rcParams['figure.figsize'] = (10, 10) plt.rcParams['axes.titlesize'] = 20 接著我們載入影像,使用rasterio(縮寫為rio)的open function,把它取名為msi,這裡是multispectral image 的意思,把圖檔命名為pine0808 pine_path = os.path.join("pineapple","pineapple0808.tif") with rio.open(pine_path) as msi: pine0808 = msi.read...