5
\ begingroup美元

在这里,我有一个区域排放清单,主要包含的我会提取纬度,,发射,发射形状是(纬度、经度)

例如:

  1. ODIAC,空间分辨率1 * 1度,发射的形状(180360),单位:gC / m2 / d;

  2. 赫斯提亚,空间分辨率0.002 * 0.002度,发射的形状(521560)单位:千克;

现在,我要地图地理坐标的排放(纬度、经度)WRF模式网格,这可能看起来像99 * 99网格间距的3公里,或87 * 87网格间距的1公里

似乎映射的过程涉及到的计算区域的网格的排放清单。

我困惑于如何去做。有什么有效的方法来处理它?

谢谢你的所有帮助。

\ endgroup美元
8
  • 1
    \ begingroup美元 单位ODIAC排放清单的gC / m2 / d。你可以插入这个数据集不考虑网格细胞的大小。我这样重新映射任务cdo。如果你想做同样的事情与cdo,赫斯提的数据集可能的选项setgridarea帮助,但我不确定。但一般:是的,有人(程序或者你)计算网格单元区域。 \ endgroup美元
    - - - - - -daniel.heydebreck
    2018年3月22日14:28
  • \ begingroup美元 @daniel。诺伊曼,谢谢你的回复,我将努力学习使用cdo第一。 \ endgroup美元
    - - - - - -艾伦张
    2018年3月22日,15:21
  • 2
    \ begingroup美元 我建议创建一个python脚本使用技术模块(matplotlib.org/basemap)地理模型和排放转化为x和y坐标,然后插入数据。 \ endgroup美元
    - - - - - -BarocliniCplusplus
    2018年3月22日21:26
  • \ begingroup美元 @BarocliniCplusplus有没有更详细的例子吗? \ endgroup美元
    - - - - - -艾伦张
    2018年3月23日,在3:15
  • 1
    \ begingroup美元 技术用于创建地图。你可以做一个相同的映射到WRF电网使用。例子来说明技术是常用的可以在这里找到:matplotlib.org/basemap/users/examples.html。然后我建议使用scipy插值函数模块(docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html)插入ungridded数据网格。 \ endgroup美元
    - - - - - -BarocliniCplusplus
    2018年3月23日14:43

2答案2

2
\ begingroup美元

我建议为你的目的使用cdo。至少为变量,它的值是独立的网格单元大小,一个可以使用cdo。

cdo

cdo(气候数据运营商)是一个命令行程序来处理netCDF和一种文件格式文件。它开发了一个由大气象研究所的乌维Schulzweida和他的同事们在汉堡,德国。

cdo提供了不同的运营商来处理您的数据。你可以在一个命令链几个运营商。你总是开始的cdo。例子:

cdo OPERATOR1 -OPERATOR2 -OPERATOR3 inputfile1。数控inputfile2。数控outputfile。数控cdo OPERATOR1 -OPERATOR2 inputfile1。数控-OPERATOR3 inputfile2。数控outputfile.nc

第一个操作符只是附加到cdo。所有进一步的附加运营商需要- - - - - -作为后缀。

例子

假设,我们有两个文件(file1.ncfile2.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不考虑网格单元尺寸

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认识吗

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考虑网格单元尺寸

不知道它是如何工作的cdo

\ endgroup美元
3
  • \ begingroup美元 你好,丹尼尔。当再次思考这个问题,因为赫斯提亚的单位公斤,我remapbil到一个87 * 87域直接,结果似乎有点奇怪。的最大下降169857年2771年公斤。是因为没有考虑网格单元格区域或其他什么?然而,当我第一次使用gridboxsum 5 5指令,然后remapbil,最大的数据减少124262年公斤。我困惑吗? \ endgroup美元
    - - - - - -艾伦张
    2018年6月11日14:04
  • \ begingroup美元 另一方面,它看起来像我们可以使用gridarea计算cell_area,然后合并的文件,然后使用exprnew_variable = original_variable / cell_area得到一个new_variableKg / m2 / h的形状,但original_variable(时间、纬度、经度),的形状cell_area(纬度、经度),你有一些经验关于如何处理吗? \ endgroup美元
    - - - - - -艾伦张
    2018年6月11日,在福音14:15
  • \ begingroup美元 看来,使用cdo div infile。数控-gridarea infile。数控outfile.nc能得到想要的价值new_variable整个过程,但是我不确定是正确的?自后remapbil,最大价值将减少4.460.073 \ endgroup美元
    - - - - - -艾伦张
    2018年6月12日,在7:12
1
\ begingroup美元

使用R:

好了,

当你有数据与不同的分辨率,我建议你将你的数据转换为光栅,重新取样匹配wrf_inputs的网格单元。照顾质量守恒。然后栅格转换为一个矩阵,data.frame或空间的特征多边形的排放然后创建wrf_chemi文件

步骤:

  1. 光栅你排放
  2. 光栅你wrf_inputs
  3. 重新取样排放
  4. 创建数据帧的排放
  5. 创建wrf_chemis域
  6. 把你的wrf_chemis污染物

请阅读每个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”)

wrfinput

如果你需要帮助,我的电子邮件sergio.ibarra@usp.br下降

最好的,塞吉奥

\ endgroup美元

    你的答案

    通过点击“发布你的答案”,你同意我们服务条款并承认您已阅读并理解我们的隐私政策的行为准则

    不是你要找的答案?浏览其他问题标记问你自己的问题