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美元

    你的答案

    通过点击“发布你的答案”,你同意我们服务条款,隐私政策饼干的政策

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