Python 柵格資料處理教程(一)

姜颢睿發表於2024-08-13

本文將介紹透過 ArcGIS Pro 的 Python 模組(arcpy)對柵格資料定義投影及裁剪的方法。

1 資料來源及介紹

降水量資料:國家青藏高原科學資料中心的 中國1km解析度逐月降水量資料集

行政區資料:天地圖行政區劃資料中的吉林省邊介面資料,該資料為 GeoJSON 格式,可透過 QGIS 等軟體將其轉換為 shapefile 格式檔案。

中國1km解析度逐月降水量資料集為 NetCDF 格式,透過《NetCDF 檔案批次轉柵格並匯出柵格各波段》文中的方法轉換後的 tif 格式資料沒有確定座標系,而資料官網中對於座標系統建議使用 WGS84,故本文透過 arcpy 的 DefineProjection 函式批次定義柵格投影后,透過 ExtractByMask 函式根據吉林省邊介面資料裁剪得到吉林省範圍的降水量資料。

2 示例程式碼

2.1 定義柵格投影

import os
import arcpy

# "TIF":柵格資料資料夾相對路徑
for fileName in os.listdir("TIF"):
    # 遍歷資料夾中所有字尾名為 .tif 的檔案
    if fileName[-4:] == ".tif":
        # 讀取柵格資料檔案路徑
        raster = os.path.join("TIF", fileName)
        # 定義柵格投影為 WGS 1984
        sr = arcpy.SpatialReference("WGS 1984")
        arcpy.DefineProjection_management(raster, sr)
        print(f"{fileName[:-4]} conversion successful!")

將定義投影后的資料匯入 ArcGIS,其空間參考資訊如下:

image

2.2 按掩膜提取

import os
import arcpy
from arcpy import sa

# 如果在程式碼同級資料夾中沒有結果資料庫,則建立該資料庫
if "Pre_Jilin.gdb" not in os.listdir("."):
    print("即將為您建立用於儲存結果柵格的檔案地理資料庫(Pre_Jilin.gdb)……")
    arcpy.CreateFileGDB_management(".", "Pre_Jilin")
    print("資料庫建立完成!")

for fileName in os.listdir("TIF"):
    if fileName[-4:] == ".tif":
        # 讀取輸入柵格及掩膜資料的檔案路徑,可根據實際情況調整
        inRaster = os.path.join("TIF", fileName)
        inMaskData = "Data/Jilin.shp"
        # 執行按掩膜提取,並將提取結果儲存至資料庫
        # 結果檔名稱與不包含字尾部分的原始檔名稱相同
        sa.ExtractByMask(inRaster, inMaskData).save(f"Pre_Jilin.gdb/{fileName[:-4]}")
        print(f"{fileName[:-4]} conversion successful!")

按掩膜提取結果柵格如下所示:

image

3 降水資料參考文獻格式

3.1 資料的引用

彭守璋. (2020). 中國1km解析度逐月降水量資料集(1901-2023). 國家青藏高原資料中心. https://doi.org/10.5281/zenodo.3114194.

Peng, S. (2020). 1-km monthly precipitation dataset for China (1901-2023). National Tibetan Plateau / Third Pole Environment Data Center. https://doi.org/10.5281/zenodo.3114194.

3.2 文章的引用

1、Peng, S.Z., Ding, Y.X., Wen, Z.M., Chen, Y.M., Cao, Y., & Ren, J.Y. (2017). Spatiotemporal change and trend analysis of potential evapotranspiration over the Loess Plateau of China during 2011-2100. Agricultural and Forest Meteorology, 233, 183-194. https://doi.org/10.1016/j.agrformet.2016.11.129

2、Ding, Y.X., & Peng, S.Z. (2020). Spatiotemporal trends and attribution of drought across China from 1901–2100. Sustainability, 12(2), 477.

3、Peng, S.Z., Ding, Y.X., Liu, W.Z., & Li, Z. (2019). 1 km monthly temperature and precipitation dataset for China from 1901 to 2017. Earth System Science Data, 11, 1931–1946. https://doi.org/10.5194/essd-11-1931-2019

4、Peng, S., Gang, C., Cao, Y., & Chen, Y. (2017). Assessment of climate change trends over the loess plateau in china from 1901 to 2100. International Journal of Climatology.

相關文章