基于python的水文气象分析

2024-11-03
40
基于python的水文气象分析

单价:¥1.00数量:1.00

市场价:¥1.00折扣价:¥1.00

单位:过期时间:2035-11-03

销售地址:上海浦东 生产地址:上海市浦东工厂

关键词:WRF模式与Python融合技术在多领域中的应用及精美绘图教程——python实现HBV水文模型(教学版)

联系电话:159****1625联系QQ:点击我:

公司网址:厦门上市公司名单——专业编程培训

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V:192606-48052 ,欢迎咨询基于python的水文气象分析,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、地理科学类可以当老师吗

可以,但是要考教师资格证。

地理科学的专业就业面相对来说比较狭窄,一般分为以下几种地理老师、自己创业、城乡规划研究院(大部分要求地理专业硕士学位及以上,专业主要为城市规划、地理信息系统等)、国土资源厅(局)(大部分要求地理专业硕士学位及以上。

专业主要为自然地理学、城市规划等)、公司(例如大名鼎鼎的北京航天宏图等,大部分要求地理专业硕士学位及以上。

研究方向主要为城市规划、地理信息系统等)、水文水利厅(局)(大部分要求地理专业学士学位及以上,专业主要为自然地理学等)、环境保护局(大部分要求地理专业学士学位及以上。

专业主要为自然地理学,研究方向为综合地然地理等)、气象局(大部分要求地理专业学士学位及以上,专业主要为自然地理学,研究方向为气候学等)、研究所(大部分要求地理专业硕士学位及以上,各专业均需求),很多比较好的就业单位需要的学历要求很高。

随着现代社会的不断发展和各行各业领域的不断交叉,地理科学在城乡规划、资源监测、智慧农业等方方面面发挥着举足轻重的作用,本专业以重基础、重技能、宽口径的人才培养理念为指导思想。

课上理论学习和课后实习实践学习相结合,已经为该领域提供了各式各样的人才。个人认为地理科学还是相当好的领域,与其他专业结合的面不断扩展。

主修课程:地球科学概论、地图学、遥感概论、地理信息系统原理、人文地理学、生态学、地质学、地貌学、气象气候学、水文与水资源学、土壤地理学、植物地理学、中国地理、世界地理、地理教学论、地理课堂教学技能训练。

上海地理、GIS软件应用、Python语言与地理分析等。为培养学生创新能力和实践能力,相关的主要课程均分别设置了实验实践课程。此外,还有地质地貌实习、自然地理野外实习、人文地理地理实习、中学地理教育实习等实践性教学环节。



二、WRF模式与Python融合技术在多领域中的应用及精美绘图教程

在气象及相关领域,熟练掌握气象数值模式WRF及其数据处理,特别是与Python的融合应用,已经成为不可或缺的技能。WRF作为中尺度气象模式的代表,因其功能强大,常被选为首选。然而,模式运行后的数据处理和可视化同样关键,Python以其灵活性和效率,逐渐成为这个过程中的主导语言。


本教程以理论与实践相结合的方式,深入浅出地讲解:从动力方程和参数化方案的基本知识,到WRF模式在实际中的应用,再到Linux基础操作,如命令行、安装和任务管理。特别关注的是,通过Python与WRF的无缝结合,实现模式运行的自动化,显著提高科研和业务工作效率。教程涵盖数据处理、可视化绘图等场景,如Python在WRF前后处理中的应用实例。


掌握WRF与Python的结合,能够广泛应用于气象学、海洋学、地理学、气候学、水文学和生态学等领域的业务、科研和工程项目,提升分析和展示气象数据的效率和质量。


教程分为六个部分:




  1. WRF基础与Linux基础

  2. WRF模式理论与Linux基础

  3. WRF安装与基本操作




  4. WRF模式运行

  5. 模拟区域设置与前处理

  6. 积分运行与参数化设置

  7. 自动化运行与模拟案例




  8. Python基础

  9. Python安装与数据处理库

  10. 气象绘图基础




  11. WRF应用案例

  12. 台风、强天气过程和太阳辐射模拟




  13. Python助力WRF自动化

  14. 自动运行和数据获取

  15. 业务化预报系统的自动化构建




  16. WRF模式前后处理

  17. 后处理简介与wrf-python库使用

  18. 各种气象数据的绘制和提取




通过这些内容,你将能够全面理解和掌握WRF模式与Python的融合技术,从而在实际工作中发挥重要作用。

python实现HBV水文模型(教学版)

原创2023-02-08 20:09·我不爱机器学习1HBV简介1970年代,HBV模型最初是由瑞典气象水文研究所(SMHI)的水平衡部门开发的,用于预测瑞典水力发电厂的流入。

HBV可作为一个全分布或半分布模型将流域划分为子流域。在集总模型中,假设研究区域(流域)是一个单一的单元(区域),且参数在流域内不发生空间变化。HBV模型由四个主要模块组成:

(1)融雪积雪模块(Snowmeltandsnowaccumulationmodule);

(2)土壤水分和有效降水模块(Soilmoistureandeffectiveprecipitationmodule);

(3)蒸散发模块(Evapotranspirationmodule);

(4)径流响应模块(Runoffresponsemodule)。

下图说明了HBV模型的简化版本的一般过程。

该模型可以按日或月时间步运行;所需的输入数据包括每个时间步的降水和温度观测的时间序列,以及长期估计的月温度和潜在蒸散速率的平均值

如上图所示:

该模型包括一个基于每个时间步的输入温度,将输入的降水处理为降雨或雪的模块。然后在土壤湿度模块处理降雨和融雪(如果存在的话),在那里对有助于地表径流的有效降雨进行评估。降雨的剩余部分有助于土壤水分的储存,只要地下有足够的含水量,这些水分本身就可以蒸发。模型的主要输出是流域出口处的径流,由地表径流(surfacerunoff)、互流(interflow,来自近地表流的贡献)和基流(baseflow,来自地下水流的贡献)三部分组成。该模型有许多参数需要根据现有的观测结果进行校准下面简要介绍每个模块的细节。

2融雪积雪模块融雪和积雪被认为与温度成正比

第一个模型参数为阈值温度;温度高于时,雪融化低于时,雪堆积

将初始温度设置为零摄氏度(32华氏度)是一个合理的初始假设。

如果在温度低于时发生降水事件,则降水以雪的形式积累,否则则假定输入降水为降雨(即液体)。只要温度保持在阈值温度以下,输入的降水就不会促进径流。然而,一旦温度超过阈值,融雪和降水都开始对径流做出贡献在该模型中,用公式1估计融雪速率(snowmeltrate)作为水当量(waterequivalent):

,融雪速率等于水当量,DD,度日因子(degree-dayfactor),T,日平均气温,,积雪融化起始的阈值温度,经验参数度日因子(DD)是指积雪含水率因高于冰点一度而在一天内减少的量。度日因子范围较广,从0.7到0.9。度日因子DD可以假设为常数或可变参数。当降雨发生在现有的雪上时,由于稍暖的雨水中提供的额外热能,融雪量会增加。DD因子是可以通过现场试验测量的模型参数。这个模型参数也可以通过对观测到的水位图(hydrograph)的校准来估计。

3有效降水和土壤水分落在流域上的降水通常分为两部分:

第一部分有助于入渗到土壤区;第二部分有助于地表径流第二部分通常称为有效降水,由HBV根据降水时的土壤含水量估计

田间容量(Fieldcapacity,FC)是描述地表下最大土壤含水量的参数。一般来说,当土壤含水量或降水量越高,降水对径流产生的贡献就越大。当土壤含水量接近田间容量时,入渗减少,降雨对径流产生的贡献增加。

公式2计算了有效降水作为当前土壤含水量的函数:

,有效降水,,真实土壤湿度,,日降水深度,,模型参数(形状参数)对于给定的土壤水分亏缺(soilmoisturedeficit,通过SM/FC的比值测量),称为形状系数的参数控制了有助于径流的液态水(liquidwater,P+SM)的数量。

下图绘制了土壤湿度、田间容量、形状系数和径流系数(runoffcoefficient)之间的关系,径流系数定义为有效降水与总有效水深的比值()。

从图中可以看出,对于特定的土壤湿度,越高,径流系数越低

随着土壤湿度(SM)接近田间容量(FC),径流系数增大。田间容量FC和形状系数都被用作标定参数(calibrationparameters)。

结果表明,径流系数和土壤湿度不是恒定的,它们在模拟的时间步骤中是动态变化的。需要一个土壤湿度的初始值才能开始计算。

利用式2和土壤湿度(SM)的初始值,计算出有效降水量。例如,如果径流系数估计为0.7,那么70%的降雨(rainfall)有助于径流,其余(30%)渗入地下(infiltratesintothesubsurface)。然后根据入渗和蒸散量(infiltrationandevapotranspiration)更新土壤湿度的初始值。对于下一个时间步骤,使用新的土壤湿度值,并使用新的降水(precipitation)重复计算。

注:降雨量是指从天空降落到地面上的雨水,未经蒸发、渗透、流失而在水面上积聚的水层深度,一般以毫米为单位,它可以直观地表示降雨的多少。气象预报把下雨、下雪都叫做降水,降水的多少叫降水量,表示降水量的单位通常用毫米。1毫米的降水量是指单位面积上水深1毫米

4蒸散(Evapotranspiration)为了计算流域的实际蒸散发,模型用户需要提供长期的月平均潜在蒸散发()作为输入。然后,在模拟周期内的每一天,减去根据白天平均温度与长期月平均温度的差值计算得到的潜在蒸散量得到调整后的潜在蒸散量:

,调整后的潜在蒸散量,,日平均温度,,长期月平均气温,,长期月平均潜在蒸散量,是模型参数,当日平均温度与长期平均温度相差较大时,模型参数可以改善模型的性能。通过使用土壤永久萎蔫点(SoilPermanentWiltingPoint,PWP)来耦合土壤湿度和实际蒸散发计算。

公式4为土壤湿度与实际蒸散发的关系

,真实潜散发,,土壤永久萎蔫点,由式4可知,当土壤湿度高于PWP时,实际蒸散发与潜在蒸散发发生速率相同。PWP是土壤水分对蒸散发的限制,即当土壤水分小于PWP时,实际蒸散发小于调整后的蒸散发。

换句话说,由于PWP以下土壤水分有效性不足,公式4减少了蒸散发量。

下图给出了公式4中实际蒸散发量与PWP之间的关系。从图中可以看出,当PWP接近田间容量时,实际蒸散发会更高,反之亦然。在观测的基础上,模型参数和PWP都可以通过模型标定得到。

5径流响应该模块基于水库概念估算流域出口处的径流。该系统由两个概念性储层组成,一个在另一个之上,如图所示。第一个水库用于模拟近地表流(thenearsurfaceflow),第二个水库用于模拟基流(地下水贡献,thebaseflow,groundwatercontribution)。

从时序角度来看,第一个和第二个水库分别模拟快速和缓慢的地下过程。通过使用恒定的渗流速率(percolationrate,),储层之间直接相连。

如图所示,每个水库有两个出口(和)。当上游水库水位超过阈值时,上游水库迅速产生径流()。另外两个出口(outlets)的流量响应相对较慢。

衰退系数(recessioncoefficients)、、分别表示上、下水库的响应函数。为保证径流过程最快,的初始值应始终大于。第三出口()的响应应该比第二出口()慢,因此应该小于。三个衰退系数和渗流速率均为模型参数,经校正估计。

公式5给出了上图所示出口的响应函数

为近地表流量(nearsurfaceflow),为互流(interflow),为基流(baseflow),为渗流(percolation),为近地表流量蓄积系数,为互流蓄积系数,为基流蓄积系数,为渗流蓄积系数,为上游水库水位,为下游水库水位,为水位阈值,为流域面积,。总模拟径流量可由第一水库和第二水库流量之和()得到。

而完整HBV模型还包括其他功能,如使用更详细的流量转换功能和流量路由功能。这些特征没有包括在模型的教学版本中,因为这里的重点更多地是在主要的水文过程和理解它们的相对意义和相互作用上。

6模型校准和性能评估如前所述,在概念模型中,水文过程的数学公式用一些参数加以简化。通常,参数分为两类

描述物理特性的物理基础参数,如田间容量(FC)、土壤永久萎蔫点(PWP)和度日因子(DD)经验性的,只有很少或没有物理基础,但用于概念性地描述过程。该模型的经验参数包括水库参数(、、、、)、形状系数()和参数。在校准过程中,迭代改变模型参数,直到实测流量与模拟流量(observedandsimulateddischarge)达到满意的匹配。如果基于物理的参数是从现场测量或经验中知道的,那么使用经验参数来校准模型就足够了。否则,所有参数都将包括在模型校准中。

在模型标定和评价模型性能(即实测流量与模拟流量是否一致)时,常采用均方根误差、峰值误差、一致性指数、纳什-萨克利夫系数、相关系数和相对累积误差等不同的统计准则。

这里使用NashSutcliffe

为Nash-Sutcliffe系数为模拟流量,为观测流量,为平均观测流量,为时间步数Nash-Sutcliffe系数(),范围在到1之间,其中模型越接近1,模型越准确

另一方面,负值意味着观测值的平均值是比被评估模型更好的预测指标。

7python实现

importnumpyasnpimportdatetimedefmodule_snowmelting(t,precipitations,temp,snow_pack,rainfall,F=1,temp_threshold=0):"""SnowmeltingmoduleReturnstheamountofrainfallandsnowaccumulation.------------------------------------------------------------Parameters:t,date-Runningdayprecipitations,array-Expectedprecipitationsfortherunningperiodtemp,array-Expectedtemperaturesfortherunningperiodsnow_pack,array-AmountofsnowaccumulatedF,float-Degree-dayfactortemp_threshold,float-Temperaturethresholdforsnowtomelt"""iftemp[t]>temp_threshold:#snowmeltsandprecipitationsarerainfallsrainfall[t]=precipitations[t]+F*(temp[t]-temp_threshold)*snow_pack[t-1]snow_pack[t]=snow_pack[t-1]*(1-F*(temp[t]-temp_threshold))else:#thereisnorainfall,precipitationscontributetothesnowpacksnow_pack[t]=snow_pack[t-1]+precipitations[t]rainfall[t]=0returnrainfall,snow_packdefmodule_soilmoisture(t,rainfall,sm,effective_precipitation,FC=1,beta=1):"""SoilmoisturemoduleReturnstheupdatedsoilmoistureandtheeffectiveprecipitationthatcontributestotherunoff.------------------------------------------------------------Parameters:t,date-Runningdayrainfall,array-Amountofrainandmeltingsnowthatgoestothesoilsm,array-SoilMoisturewateramountFC,float-FieldCapacity,iemaximumstorageinthesubsurfacezonebeta,positiveinteger-ShapeCoefficientforthecontributiontoeffectiverunoff"""effective_precipitation[t]=rainfall[t]*(sm[t-1]/FC)**betasm[t]=sm[t-1]+rainfall[t]*(1-(sm[t-1]/FC)**beta)returnsm,effective_precipitationdefmodule_evapotranspiration(t,m,sm,ea,pea,temp,temp_m,pe_m,C=1,PWP=0):"""EvapotranspirationmoduleReturnstheevapotranspirationandthesoilmoisture------------------------------------------------------------Parameters:t,date,-Runningdaym,integerbetween1and12-Runningmonthsm,array-SoilMoisturewateramounttemp,array-Expectedtemperaturesfortherunningperiodtemp_m,array-Long-termmonthlymeantemperaturespe_m,array-Long-termmeanmonthlypotentialevapotranspirationC,float-ModelparameterPWP,float-SoilPermanentWiltingPoin"""#computethedailyadjustedpotentialevapotranspirationpea[t]=(1+C*(temp[t]-temp_m[m]))*pe_m[m]#computesactualevapotranspirationifsm[t]<PWP:ea[t]=pea[t]*sm[t]/PWPelse:ea[t]=pea[t]sm[t]-=ea[t]returnea,smdefmodule_runoff(t,effective_precipitation,rl,ru,a0,a1,a2,perc,K=[1,1,1],L=200):"""RunoffmoduleReturnsthethreerunoffdischarges.------------------------------------------------------------Parameters:t,date,-RunningdayL,float-UpperreservoirthresholdK,array-Recessionscoefficientsforeachreservoirru,array-Upperreservoirlevelrl,array-Lowerreservoirlevela0,array-Nearsurfacerunoffa1,array-Inflowrunoffa2,array-Baseflowrunoffperc,float-Quantitythatispercolatedfromtheuppertothelowerreservoireffective_precipitation,array-Effectivecontributiontotherunoff"""#inflowinreservoirsru[t]=max(0,ru[t-1]+effective_precipitation[t]-perc)rl[t]=rl[t-1]+min(ru[t-1]+effective_precipitation[t],perc)#outflowsa0[t]=K[0]*max(0,ru[t]-L)a1[t]=K[1]*(ru[t]-a0[t])a2[t]=K[2]*rl[t]#updatereservoirslvlsru[t]-=(a0[t]+a1[t])rl[t]-=a2[t]returnrl,ru,a0,a1,a2deftotal_runoff(t,a0,a1,a2):"""Returnsthetotalrunoffdischargeforoneday.------------------------------------------------------------Parameters:t,date,-Runningdaya0,array-Nearsurfacerunoffa1,array-Inflowrunoffa2,array-Baseflowrunoff"""returna0[t]+a1[t]+a2[t]defHBV(days,precipitations,temp,pe_m,temp_m,init):"""Returnsthetotalrunoffwatersforeachday.------------------------------------------------------------Parameters:days,arrayofdates-Daysoftherunningperiodprecipitations,array-Expectedprecipitationsfortherunningperiodtemp,array-Expectedtemperaturesfortherunningperiodtemp_m,array-Long-termmonthlymeantemperaturespe_m,array-Long-termmeanmonthlypotentialevapotranspirationsm0,float-Initialsoilmoisutreinit,list-Listoftheinitialvaluesinthefollowingorder:sm0,rl0,ru0,snow_pack0"""#Parameters:F=3temp_threshold=0.0FC=150PWP=150C=0.05beta=1K=[0.2,0.1,0.05]L=5Perc=0.05T=len(days)#initializationsm=np.zeros(T)rainfall=np.zeros(T)rl=np.zeros(T)ru=np.zeros(T)total=np.zeros(T)a0=np.zeros(T)a1=np.zeros(T)a2=np.zeros(T)effective_precipitation=np.zeros(T)snow_pack=np.zeros(T)ea=np.zeros(T)pea=np.zeros(T)sm0,rl0,ru0,snow_pack0=initsm[0]=sm0rl[0]=rl0ru[0]=ru0snow_pack[0]=snow_pack0#loopoverdaysfortinrange(1,len(days)-1):m=days[t].monthrainfall,snow_pack=module_snowmelting(t,precipitations,temp,snow_pack,rainfall,F,temp_threshold)sm,effective_precipitation=module_soilmoisture(t,rainfall,sm,effective_precipitation,FC,beta)ea,sm=module_evapotranspiration(t,m,sm,temp,ea,pea,temp_m,pe_m,C,PWP)rl,ru,a0,a1,a2=module_runoff(t,effective_precipitation,rl,ru,a0,a1,a2,Perc,K,L)total[t]=total_runoff(t,a0,a1,a2)returntotalsm0,rl0,ru0,snow_pack0=0,0,0,0init=[sm0,rl0,ru0,snow_pack0]days=[datetime.date.today()+datetime.timedelta(days=i)foriinrange(10)]pe_m=[10foriinrange(12)]temp_m=[10foriinrange(12)]precipitations=[5foriinrange(len(days)+1)]temp=[5+iforiinrange(len(days)+1)]a_total=HBV(days,precipitations,temp,pe_m,temp_m,init)参考:AghaKouchakA.,HabibE.,2010,ApplicationofaConceptualHydrologicModelinTeachingHydrologicProcesses,InternationalJournalofEngineeringEducation,26(4),963-973.

【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

电话+V:192606-48052

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

基于python的水文气象分析
拨打电话拨打电话