8
\ begingroup美元

我想知道美国某一特定点的当前递减率。换句话说,我想要不同高度的“实时”温度数据。Live是灵活的——我通常可以接受对当前时间点有效的预测。我可以从哪里获得这些数据,最好是易于在Python中摄取的格式?

更多的细节:

我目前正在使用一个递减率常数来估计不同高度的温度,但我想使用更复杂的东西。我是一名飞行员,所以我最初想使用Temps & Winds Aloft产品,然后在零星的站点之间插入,但后来我发现NOAA网站上的模型。但是:

  1. 我不清楚哪一个最适合我的用例。Op40似乎是一个很好的默认值。但是,HRRR模型似乎更好,特别是由于更高的分辨率。

  2. 我不确定原始数据的格式在哪里可以使用。例如,如果我在NOAA网站上为Op40创建一个交互式倾斜图,然后我可以单击得到文本按钮,并获得我感兴趣的信息类型:

在这里输入图像描述

但是如果我选择ASCII文本在第一页我得到一个GSD文件这似乎不符合逻辑NOAA自己的文件格式。看起来HRRR是一个grib2格式,这似乎也不像纬度/经度,海拔,温度。似乎这些文件提供了一些更原始的东西,然后需要模拟对获得临时?我发现了一些python库,但可以使用指针的方法,我需要采取。

\ endgroup美元

    2答案2

    3.
    \ begingroup美元

    GSD文件只是一个文本(ASCII)文件,您可以用几乎任何您想要的内容来读取它。既然你正在使用python,我建议你看看Pandas,尤其是pandas.read_csv功能。

    我现在使用这个URL作为示例:https://rucsoundings.noaa.gov/get_soundings.cgi?data_source=Op40&latest=latest&start_year=2019&start_month_name=Dec&start_mday=3&start_hour=7&start_min=0&n_hrs=1.0&fcst_len=shortest&airport=50%2C-90&text=Ascii%20text%20%28GSD%20format%29&hydrometeors=false&start=latest

    ruc试探你提到过。这里我输入lat=50和lon=-90来选择一些东西。您可以在“airport=”的URL中看到这一点。你可以用wget或curl下载你需要的数据,然后把它们放到一个文件名更好的文件中,就像这样:

    wget "https://rucsoundings.noaa.gov/get_soundings.cgi?data_source=Op40&latest=latest&start_year=2019&start_month_name=Dec&start_mday=3&start_hour=7&start_min=0&n_hrs=1.0&fcst_len=shortest&airport=50%2C-90&text=Ascii%20text%20%28GSD%20format%29&hydrometeors=false&start=latest" -O sounds .txt

    然后,您可以编写一个小的python程序来获取所需的数据,并使用pandas读取数据。

    我还想指出,如果您打算使用grib2,您将能够轻松地更改模型,因为grib2是NWP数据的标准格式。这有点复杂,因为读起来有点棘手。Grib2是一种二进制格式,非常适合存储大型数据集。我指的是eccodes如果你想了解更多,请联系ECMWF。

    \ endgroup美元
    2
    • 1
      \ begingroup美元 谢谢。我应该说得更清楚一点。我的问题不是读取数据,而是解读数据。首先,GSD定义说,声音的前四行是识别和信息行”,然而,你发布的文件的第4行显然是第一行数据,所以我已经在想我是否看对了。不过,总的来说,我不知道该怎么做(温度、海拔)从CSV中。没有临时标题。定义建议temp在第4列,但这些值范围小于-500,所以这可能不是temp? \ endgroup美元
      - - - - - -詹姆斯年代
      2019年12月3日17:16
    • \ begingroup美元 我明白了,我误会了。我已经快速浏览了javascript源代码,但无法找到一种直接获得原始数据的方法。或者,您可以考虑从其他来源获取数据。有两种选择:普利茅斯大学提供NWP数据,以及怀俄明大学它给出了真实的观察结果。 \ endgroup美元
      - - - - - -呼呼声
      2019年12月3日21:50
    0
    \ begingroup美元

    从我所看到的,由于某种原因,GSD将“t/td”列分成了两个单独的列,并将温度乘以10。为什么?也许是为了去掉小数点……所以当你看到一个值< -500时,它实际上是< -50°C。

    GSD与get text的比较

    其他变化:
    -压力和高度已经切换。
    压力也被乘以10,所以单位不再是毫巴,而是十帕斯卡…
    -高度已从英尺(“获取文本”版本)转换为米(GSD)。

    总结一下,下面是GSD的推断列标题:
    | 2压力(daPa) | 3海拔高度(m) | 4 t (d°C =确定摄氏度)| 5 td (d°C) |

    我不知道在GSD中出现的“99999”温度线是怎么回事……

    希望你能从中有所收获!

    \ endgroup美元
    4
    • 1
      \ begingroup美元 有趣!我没有费心尝试“解码”GSD并匹配值。我明天再深入研究一下,但我觉得你已经知道了。FWIW:是的,乘10可能是为了删除小数——它少了一个字符来发送/存储,如果这个数据是字节压缩的,然后使用intS代替float可以防止很多问题:belighted.com/blog/float-is-evil \ endgroup美元
      - - - - - -詹姆斯年代
      2019年12月10日4:44
    • \ begingroup美元 是的,我想用整数编码数据是有意义的,即使这意味着使用不常见的单位前缀……如果你能进一步破译文件,请告诉我们! \ endgroup美元
      - - - - - -让-玛丽•Prival
      2019年12月10日8:34
    • \ begingroup美元 @ james,有进展吗? \ endgroup美元
      - - - - - -让-玛丽•Prival
      2019年12月16日8:19
    • 1
      \ begingroup美元 对不起。我分心了。正如你所发现的那样。我还意识到2号线是Valid From日期,4号线包括格点的Lat/Lng。第6列和第7列是风向信息。我整理了一些代码来解码:gist.github.com/jamesshannon/eae1bb995a906dcb1ba2ca8172a7c53e \ endgroup美元
      - - - - - -詹姆斯年代
      2019年12月21日16:43

    你的答案

    点击“张贴您的答案”,即表示您同意我们的服务条款隐私政策而且饼干的政策

    这不是你想要的答案?浏览带标签的其他问题问自己的问题