首页 > 编程语言 >Python 栅格数据处理教程(一)

Python 栅格数据处理教程(一)

时间:2024-08-13 18:15:59浏览次数:14  
标签:教程 os 栅格 Python 数据 fileName 栅格数据 TIF arcpy

本文将介绍通过 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.

标签:教程,os,栅格,Python,数据,fileName,栅格数据,TIF,arcpy
From: https://www.cnblogs.com/qsgeo/p/18357501

相关文章

  • inscode的会员计划的python环境问题【版本3.9.16】无法升级python
    购买了inscode的会员计划后,部署python项目遇到python环境无法升级的问题inscode的会员计划的环境是3.9.16,但是项目用的例子需要3.10以上的版本,最终本人也无法完全解决,虽然手动安装了python3.10,一切都可以实现,但是最后环境自动恢复到3.9版本,导致自己手动配置的全废了,本帖子......
  • 【复现成功版✌】【Python开发】写隐藏文件管理工具(隐藏自己的重要文件)
    教程......
  • 基于Flask与MySQL的在线问答系统的设计与实现/Python/计算机毕业设计
    摘要为了更够是学生更快更方便的获取问题答案,开发一款在线问答系统供学生使用。基于系统的业务要求,系统开发平台为Windows10,主要使用Python语言进行开发,以及Python开发语言的框架Flask,使用MySQL作为数据库存储相关数据。开发软件为PyCharm,与此同时运用Navicat作为数据库管......
  • 使用 Flask、Celery 和 Python 实现每月定时任务
    为了创建一个使用Flask、Celery和Python实现的每月定时任务,我们需要按照以下步骤进行:1.安装必要的库我们需要安装Flask、Celery和Redis(作为消息代理)。我们可以使用pip来安装它们:bash复制代码pipinstallflaskceleryredis2.设置Flask和Celery首先,我们需要设......
  • Python网页应用开发神器fac 0.3.0全新版本发布
    大家好我是费老师,在Python生态中,有很多以Python为主要开发语言,实现网页应用开发的框架,其中最为知名的有Dash、flet、streamlit、gradio、nicegui等。如果综合考虑流行度、开发效率、开发自由度、相关生态成熟度、可拓展性、安全性等各方面的能力,Dash是其中天花板级别的存在,这也是......
  • python连接钉钉自动化提交OA审批
    一、准备工作1、安装阿里云支持包,点击跳转:https://open.dingtalk.com/document/resourcedownload/download-server-sdk2、注册钉钉开发者账号,点击链接:https://open.dingtalk.com/3、获取AK,SK4、USERID通过企业管理后台可以查看每个用户的ID或者通过接口获取5、PROCESS_CODE......
  • pbootcms教程—设置的会话目录创建失败!
    pbootcms教程—设置的会话目录创建失败!这个问题常见于宝塔面板,用户将pbootcms模板传到宝塔上,打开域名出现这个问题。解决方法:1、打开宝塔面板,左侧找到文件,找到对应的站点目录,如下图:2、按照下图进行设置,点确定,如果默认就是这样的设置,也要点下确定。 ......
  • 【Python机器学习】树回归——使用Python的tkinter库创建GUI
    机器学习给我们提供了一些强大的工具,能从未知数据中抽取出有用的信息。因此,能否这些信息以易于人们理解的方式呈现十分重要。如果人们可以直接与算法和数据交互,将可以比较轻松的进行解释。其中一个能够同时支持数据呈现和用户交互的方式就是构建一个图形用户界面(GUI)。利用GUI......
  • python 画小提琴图
    我这里有2023年6月-2024年8月每日的温度数据,想画一个小提琴图,看看其中值等信息代码如下:#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:vilolinpic.py@time:2024/08/13@desc:"""importpandasaspdimportmatplotlib.pyplotaspltimport......
  • 《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark
    1.简介按照以前的讲解和分享路数,宏哥今天就应该从外观上来讲解WireShark的界面功能了。2.软件界面由上到下依次是标题栏、主菜单栏、主菜单工具栏、显示过滤文本框、打开区、最近捕获并保存的文件、捕获区、捕获过滤文本框、本机所有网络接口、学习区及用户指南等。2.1启动界......