在这里,我有一个区域排放清单,主要包含的我会提取纬度
,朗
,发射
,发射
形状是(纬度、经度)
。
例如:
现在,我要地图地理坐标的排放(纬度、经度)
WRF模式网格,这可能看起来像99 * 99
网格间距的3公里
,或87 * 87
网格间距的1公里
。
似乎映射的过程涉及到的计算区域的网格的排放清单。
我困惑于如何去做。有什么有效的方法来处理它?
谢谢你的所有帮助。
江南体育网页版地球科学堆栈交换是一个问答网江南电子竞技平台站对于那些感兴趣的地质学、气象学、海洋学、环境科学。注册只需要一分钟。
报名加入这个社区在这里,我有一个区域排放清单,主要包含的我会提取纬度
,朗
,发射
,发射
形状是(纬度、经度)
。
例如:
现在,我要地图地理坐标的排放(纬度、经度)
WRF模式网格,这可能看起来像99 * 99
网格间距的3公里
,或87 * 87
网格间距的1公里
。
似乎映射的过程涉及到的计算区域的网格的排放清单。
我困惑于如何去做。有什么有效的方法来处理它?
谢谢你的所有帮助。
我建议为你的目的使用cdo。至少为变量,它的值是独立的网格单元大小,一个可以使用cdo。
cdo(气候数据运营商)是一个命令行程序来处理netCDF和一种文件格式文件。它开发了一个由大气象研究所的乌维Schulzweida和他的同事们在汉堡,德国。
cdo提供了不同的运营商来处理您的数据。你可以在一个命令链几个运营商。你总是开始的cdo。例子:
cdo OPERATOR1 -OPERATOR2 -OPERATOR3 inputfile1。数控inputfile2。数控outputfile。数控cdo OPERATOR1 -OPERATOR2 inputfile1。数控-OPERATOR3 inputfile2。数控outputfile.nc
第一个操作符只是附加到cdo
。所有进一步的附加运营商需要- - - - - -
作为后缀。
假设,我们有两个文件(file1.nc
和file2.nc
)和一些海洋数据(风场
,盐度
,u
,v
,……)。我们要计算的区别风场
两个文件。这是通过
cdo diff -selname,海温file1。数控-selname,海温file2。数控outfile.nc
我们可以做这也在四个步骤:
cdo selname,海温file1。数控sst_of_file1。数控cdo selname,海温file2。数控sst_of_file2。数控cdo diff sst_of_file1。数控sst_of_file2。数控outfile.nc
cdo为插值提供了不同的运营商。REMAPBIL
双线性interpolat,REMAPNN
对于近邻插值,等等。手册中列出。我使用remapbil
作为一个例子。
cdo remapbil, NEW_GRID_DEF file_old_grid。数控file_new_grid.nc
的file_old_grid.nc
你的输入文件和吗file_new_grid.nc
是你的输出文件。在这里你会发现一个例子从GitHub:我的工作
网格定义你的输入文件file_old_grid.nc
需要被cdo。测试,是否承认你可以试一试
cdo griddes file_old_grid.nc
如果打印出正确的网格定义,那么一切都很好。如果没有,你需要正确的定义lon-lat网格。请您看一看下面的相应部分的细节。
的NEW_GRID_DEF
是一个文件,目标网格描述。如果你的目标网格是一个很好地定义网格,您可以编写这个文件。例如它可能看起来像cdo(从HTML手动复制):
gridtype = lonlat xsize = 60 ysize = 30 xfirst = -177 xinc = 6 yfirst = -87 yinc = 6
请寻找“CDO电网”和“网格描述”cdo HTML手册好更多的例子和解释。
如果你没有很好地定义网格,您可以生成NEW_GRID_DEF
。这是我经常做的事情,因为我们的化学传输模式设置需要non-nicely定义网格。
cdo griddes file_with_wrf_grid_definition。数控> NEW_GRID_DEF
在file_with_wrf_grid_definition.nc
,模型网格必须定义和它需要被cdo。在这里你会发现一个例子从GitHub:我的工作
cdo假定您的文件符合CF公约(气候和预测约定)。请您看一看本章的CF约定文档一般描述。
一个工作网格定义可以看如下(如ncdump输出):
维度:时间=无限;/ /目前(1)= 1;lat = 78;朗= 62;变量:浮动纬度(纬度、经度);纬度:long_name =“纬度”;纬度:单位= "学位北”;纬度:var_desc = "纬度(南消极的)”;纬度:cell_methods =“TSTEP,躺:的意思是”; float lon(lat, lon) ; lon:long_name = "longitudes " ; lon:units = "degree east " ; lon:var_desc = "longitude (west negative) " ; lon:cell_methods = "TSTEP, LAY: mean" ; float DATA_VAR(time, lay, lat, lon) ; DATA_VAR:long_name = "some long var name" ; DATA_VAR:units = "some unit" ; DATA_VAR:var_desc = "some description" ; DATA_VAR:coordinates = "lat lon" ;
重要的方面是,数据变量有一个属性坐标
,价值包含两个经度和纬度维变量(我在第二个例子很明显)。此外,standard_name
和单位
维变量属性应该正确设置。
维度:时间=无限;/ /目前(1)= 1;lat = 78;朗= 62;变量:浮动lat_1(纬度、经度);lat_1: long_name =“纬度”;lat_1: standard_name =“纬度”;lat_1:单位= "学位北”;lat_1: var_desc = "纬度(南消极的)”; float lon_1(lat, lon) ; lon_1:long_name = "longitudes " ; lon_1:standard_name = "longitudes " ; lon_1:units = "degree east " ; lon_1:var_desc = "longitude (west negative) " ; float DATA_VAR(time, lay, lat, lon) ; DATA_VAR:long_name = "some long var name" ; DATA_VAR:standard_name = "the standard name" ; DATA_VAR:units = "some unit" ; DATA_VAR:var_desc = "some description" ; DATA_VAR:coordinates = "lat_1 lon_1" ;
不知道它是如何工作的cdo
公斤
,我remapbil
到一个87 * 87
域直接,结果似乎有点奇怪。的最大下降169857年
来2771年
公斤。是因为没有考虑网格单元格区域或其他什么?然而,当我第一次使用gridboxsum 5 5
指令,然后remapbil
,最大的数据减少124262年
公斤。我困惑吗?
\ endgroup美元
gridarea
计算cell_area
,然后合并的文件,然后使用expr
与new_variable = original_variable / cell_area
得到一个new_variable
与Kg / m2 / h
的形状,但original_variable
是(时间、纬度、经度)
,的形状cell_area
是(纬度、经度)
,你有一些经验关于如何处理吗?
\ endgroup美元
cdo div infile。数控-gridarea infile。数控outfile.nc
能得到想要的价值new_variable
整个过程,但是我不确定是正确的?自后remapbil
,最大价值将减少4.46
来0.073
。
\ endgroup美元
使用R:
好了,
当你有数据与不同的分辨率,我建议你将你的数据转换为光栅,重新取样匹配wrf_inputs的网格单元。照顾质量守恒。然后栅格转换为一个矩阵,data.frame或空间的特征多边形的排放然后创建wrf_chemi文件
步骤:
请阅读每个R包的文档:光栅,ratmos,科幻小说,静脉,eixport。
你可以栅格数据:
库(光栅)devtools: install_github (“ibarraespinosa / ratmos”)图书馆(ratmos)图书馆(sf)图书馆(静脉)图书馆(eixport) r <——光栅(emissions.tif) #或.nc光栅将使用gdal知道ri < - raster_wrf (wrfinput_d02) spplot (ri,鳞片=列表(画= T)) #检查图#然后它应该这样new_r < -作物(r, ri) #作物数据到新的光栅new_r < -重新取样(new_r ri) #检查选项df < - st_as_sf (rasterToPolygons (new_r)) #创建数组。Checkif需要旋转你的数组一个< - GriddedEmissionsArray (df关口= ncol (ri)行= nrow (ri),旋转= T) #创建你wrfchemi wrf_create (‘wrfinput’,‘path_to_wrfchemi’,……“污染物”)#,然后把你的排放int wrfchemi wrf_put (“path_to_wrfchemi”、“name_of_pollutant”)
如果你需要帮助,我的电子邮件sergio.ibarra@usp.br下降
最好的,塞吉奥
gC / m2 / d
。你可以插入这个数据集不考虑网格细胞的大小。我这样重新映射任务cdo。如果你想做同样的事情与cdo,赫斯提的数据集可能的选项setgridarea
帮助,但我不确定。但一般:是的,有人(程序或者你)计算网格单元区域。 \ endgroup美元cdo
第一。 \ endgroup美元