PCSE_NASA【wofost】 天气数据获取(5.5新版本)

本文介绍了如何在NASA接口更新后,利用PCSE_NASA 5.5新版本获取天气数据,包括新增的平均温度、经纬度、海拔等信息,并提到了总辐射量单位的变化。关键参数保持不变,提供了原文链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PCSE_NASA 天气数据获取(5.5新版本)

之前有个河南农大的哥们写了一个,但是现在NASA接口更新了,然后我随便改了一下好像是能用了,就是作者里面又加了几条数据【平均温度、经纬度、海拔】总辐射量单位发生了变化,作者把单位从千焦变成了焦,不知道再5.5的版本里面是否有对应修改

# 获取数据的基础函数
import pandas as pd
import numpy as np
import requests
import datetime as dt
from math import exp
import json
import time


# 1.公式单位转换
MJ_to_J = lambda x: x * 1e6
mm_to_cm = lambda x: x / 10.
tdew_to_hpa = lambda x: ea_from_tdew(x) * 10.
to_date = lambda d: d.date()

# 2.接口调用设定经纬与时间
def getnasadata(latitude, longitude, start_date, end_date):
    server = "https://power.larc.nasa.gov/api/temporal/daily/point"
    # Variable names in POWER data
    power_variables = ["TOA_SW_DWN", "ALLSKY_SFC_SW_DWN", "T2M", "T2M_MIN",
                       "T2M_MAX", "T2MDEW", "WS2M", "PRECTOTCORR"]
    payload = {
   "request": "execute",
               "parameters": ",".join(power_variables),
               "latitude": latitude,
               "longitude": longitude,
               "start": start_date.strftime("%Y%m%d"),
               "end": end_date.strftime("%Y%m%d"),
               "community": "AG",
               "format": "JSON",
               "user": "anonymous"
               }

    req = requests.get(server, params=payload)
    return req.json()  # 或者 req.json()


# 3.处理并返回气象记录
def _process_POWER_records(powerdata):
    """Process the meteorological records returned by NASA POWER
    """

    fill_value = float(powerdata["header"]["fill_value"])
    power_variables = ["TOA_SW_DWN", "ALLSKY_SFC_SW_DWN", "T2M", "T2M_MIN",
                       "T2M_MAX", "T2MDEW", "WS2M", "PRECTOTCORR"]
    df_power = {
   }
    for varname in power_variables:
        s = pd.Series(powerdata["properties"]["parameter"][varname])
        s[s == fill_value] = np.NaN
        df_power[varname] = s
    df_power = pd.DataFrame(df_power)
    df_power["DAY"] = pd.to_datetime(df_power.index, format="%Y%m%d")

    # find all rows with one or 
校园失物招领微信小程序源码, 失物招领小程序主要为解决大学生时常丢失物品而且很难找回以及归还过程繁琐不方便的问题, 与传统的失物招领方式不同,该款校园失误招领小程序拥有快捷发布寻物启事和失误找领功能, 快速查找、极速归还、高效沟通、防误领冒领等功能, 在开发校园失物招领小程序前与用户访谈发现有近40的同学校园内频繁丢失物品、证件、校园卡等, 数码产品、日用品等,丢失区域主要发生在教学楼、图书馆和食堂。 拾领校园失物招领小程序继承了寻物启事和失物招领,丢失物品或拾取物品都可发布帖子, 首页的横幅滚动公告展示通知公告等,banner图片化的方式更具有视觉吸引力, 最新信息可显示最近发布的招领信息或寻物信息,更加方便快捷的展示信息, 用户可通过首页的发布按钮发布帖子,发布者只需填写物品的相关信息,类别、地点等相关信息, 并且可以填写手机号开启认领验证,并可以一键生成二维码分享或分享至群聊和朋友圈。 列表内可以筛选物品类别或精确搜索,物品详情里可展示物品的相关信息, 确认是自己的物品后可点击认领,然后验证信息,需填写物品的关键信息以作辨认, 防止冒领误领,物品详情页可生成二维码海报分享,还有即时的消息联系功能以提高沟通效率, 发布者还可选择放置在代收处,双方还可以通过拨打电话紧急联系,用于紧急情况,让失物找到主人, 个人中心可以管理发布的物品帖子,管理个人信息,包括昵称、默认学校、手机号的修改、 编辑发布的物品帖子、获取帮助等。帮助用户流畅的使用该小程序。
<think>好的,我现在需要帮助用户了解如何通过调用PCSE库来使用WOFOST模型,并提供示例代码及参数说明。首先,我得回忆一下PCSEWOFOST的相关知识。PCSE(Python Crop Simulation Environment)是一个用于作物模拟的Python库,而WOFOST是其中常用的作物生长模型。用户可能需要在他们的程序中集成这个模型,所以需要具体的步骤和代码示例。 首先,我应该确认用户是否已经安装了必要的库,比如pcse和必要的依赖项。安装步骤通常是第一步,所以需要提到使用pip安装pcse。然后,可能需要导入相关的模块,比如WOFOST模型的不同变体,比如Wofost72_PP。接着,需要加载参数文件,包括作物参数、土壤参数和站点参数。这些参数通常存储在YAML或JSON文件中,PCSE可能有自己的数据存储方式,比如使用内置的DataProvider。 接下来,需要设置模型的起始日期和结束日期,以及天气数据天气数据可能来自文件或数据库,这里可能需要示例数据来说明。然后,初始化模型对象,传入参数和天气数据,之后按天运行模型直到结束。最后,获取输出结果,比如总生物量、叶面积指数等。 在代码示例中,需要展示如何导入模块、加载参数、准备天气数据、初始化模型、运行模型并获取输出。同时,参数说明部分需要解释作物参数、土壤参数、站点参数、天气数据、模拟时间范围和模型类型。可能还需要提到如何处理输出结果,比如转换为DataFrame进行分析。 此外,用户可能遇到问题,比如参数文件路径错误、天气数据格式不正确或模型初始化失败,所以需要给出一些常见问题的解决方法。最后,生成相关问题,帮助用户进一步深入学习,比如参数调优、天气数据整合、结果可视化、与其它模型的对比等。 需要确保所有数学表达式,如果有的话,使用正确的LaTeX格式,但在这个问题中可能涉及较少数学公式,更多是代码和参数说明。同时,引用用户提供的参考信息,虽然内容是关于MATLAB的,但可以关联到参数调优部分,比如提到模型参数的调优方法,如蒸发比、迭代次数等,引用标识要正确添加。 现在,整合这些思考步骤,形成一个结构清晰的回答,包含示例代码、参数说明、注意事项和相关问题。确保语言简洁,步骤明确,用户能够按照指导进行操作。</think>### 通过PCSE调用WOFOST模型的步骤与示例 #### 1. 环境准备 首先安装`pcse`库及其依赖: ```bash pip install pcse ``` #### 2. 导入必要模块 ```python from pcse.models import Wofost72_PP from pcse.base import ParameterProvider from pcse.fileinput import CABOFileReader, YAMLAgroManagementReader from pcse.util import WOFOST72SiteDataProvider import pandas as pd ``` #### 3. 加载模型参数 WOFOST需要三类参数:**作物参数**、**土壤参数**和**站点参数**。 ```python # 加载作物参数(示例文件) crop_params = CABOFileReader("crop_params.cab") # 加载土壤参数 soil_params = CABOFileReader("soil_params.soil") # 站点参数(如海拔、CO2浓度) site_params = WOFOST72SiteDataProvider(WAV=100, CO2=360) # 整合参数 parameters = ParameterProvider(cropdata=crop_params, soildata=soil_params, sitedata=site_params) ``` #### 4. 定义农业管理与天气数据 ```python # 农业管理配置(如播种日期) agro_management = YAMLAgroManagementReader("agro_management.yaml") # 天气数据(示例为手动输入,实际可从文件读取) weather_data = { 'date': pd.date_range(start="2020-01-01", end="2020-12-31"), 'TMAX': [25]*365, # 最高温度 'TMIN': [15]*365, # 最低温度 'IRRAD': [20]*365, # 太阳辐射 'RAIN': [0]*365, # 降水量 'WIND': [2]*365, # 风速 'VAP': [15]*365 # 水汽压 } weather_df = pd.DataFrame(weather_data).set_index('date') ``` #### 5. 初始化并运行模型 ```python # 初始化模型 wofost = Wofost72_PP(parameters, weather_df, agro_management) # 运行模型(逐日模拟) wofost.run_till_terminate() # 获取输出 output = wofost.get_output() results_df = pd.DataFrame(output) ``` #### 6. 关键输出变量说明 | 变量名 | 描述 | 单位 | |-----------------|-----------------------|--------| | `TAGP` | 总地上生物量 | kg/ha | | `LAI` | 叶面积指数 | - | | `SM` | 土壤湿度 | cm³/cm³| | `TWSO` | 籽粒干重 | kg/ha | --- ### 参数调优注意事项[^1] - **蒸发比**:影响土壤水分蒸发速率,需结合当地气候调整。 - **迭代次数**:若模拟结果未收敛,需增加迭代次数。 - **观测与模型误差**:可通过历史数据校准参数(如光合作用系数)。 --- ### 示例代码:敏感性分析(以蒸发比为例) ```python # 修改站点参数中的蒸发比 site_params.WAV = 150 # 原值为100 parameters = ParameterProvider(cropdata=crop_params, soildata=soil_params, sitedata=site_params) # 重新运行模型并对比结果 wofost = Wofost72_PP(parameters, weather_df, agro_management) wofost.run_till_terminate() new_output = wofost.get_output() ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值