Changeset 30f7911 in flex_extract.git for Documentation/html/_modules/GribUtil.html
- Timestamp:
- Aug 20, 2019, 12:49:39 PM (5 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 2255082
- Parents:
- 0690a6c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Documentation/html/_modules/GribUtil.html
rba99230 r30f7911 161 161 162 162 <h1>Source code for GribUtil</h1><div class="highlight"><pre> 163 <span></span><span class="ch">#!/usr/bin/env python </span>163 <span></span><span class="ch">#!/usr/bin/env python3</span> 164 164 <span class="c1"># -*- coding: utf-8 -*-</span> 165 165 <span class="c1">#*******************************************************************************</span> … … 175 175 <span class="c1">#</span> 176 176 <span class="c1"># @License:</span> 177 <span class="c1"># (C) Copyright 2014-2018.</span> 177 <span class="c1"># (C) Copyright 2014-2019.</span> 178 <span class="c1"># Anne Philipp, Leopold Haimberger</span> 178 179 <span class="c1">#</span> 179 <span class="c1"># This software is licensed under the terms of the Apache Licence Version 2.0</span> 180 <span class="c1"># which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.</span> 180 <span class="c1"># SPDX-License-Identifier: CC-BY-4.0</span> 181 181 <span class="c1">#</span> 182 <span class="c1"># @Class Description:</span> 183 <span class="c1"># The GRIB API provides all necessary tools to work directly with the</span> 184 <span class="c1"># grib files. Nevertheless, the GRIB API tools are very basic and are in</span> 185 <span class="c1"># direct connection with the grib files. This class provides some higher</span> 186 <span class="c1"># functions which apply a set of GRIB API tools together in the respective</span> 187 <span class="c1"># context. So, the class initially contains a list of grib files (their</span> 188 <span class="c1"># names) and the using program then applies the methods directly on the</span> 189 <span class="c1"># class objects without having to think about how the actual GRIB API</span> 190 <span class="c1"># tools have to be arranged.</span> 191 <span class="c1">#</span> 192 <span class="c1"># @Class Content:</span> 193 <span class="c1"># - __init__</span> 194 <span class="c1"># - get_keys</span> 195 <span class="c1"># - set_keys</span> 196 <span class="c1"># - copy_dummy_msg</span> 197 <span class="c1"># - index</span> 198 <span class="c1">#</span> 199 <span class="c1"># @Class Attributes:</span> 200 <span class="c1"># - filenames</span> 201 <span class="c1">#</span> 182 <span class="c1"># This work is licensed under the Creative Commons Attribution 4.0</span> 183 <span class="c1"># International License. To view a copy of this license, visit</span> 184 <span class="c1"># http://creativecommons.org/licenses/by/4.0/ or send a letter to</span> 185 <span class="c1"># Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.</span> 202 186 <span class="c1">#*******************************************************************************</span> 203 187 … … 215 199 <span class="sd">'''</span> 216 200 <span class="sd"> Class for GRIB utilities (new methods) based on GRIB API</span> 201 202 <span class="sd"> The GRIB API provides all necessary tools to work directly with the</span> 203 <span class="sd"> grib files. Nevertheless, the GRIB API tools are very basic and are in</span> 204 <span class="sd"> direct connection with the grib files. This class provides some higher</span> 205 <span class="sd"> functions which apply a set of GRIB API tools together in the respective</span> 206 <span class="sd"> context. So, the class initially contains a list of grib files (their</span> 207 <span class="sd"> names) and the using program then applies the methods directly on the</span> 208 <span class="sd"> class objects without having to think about how the actual GRIB API</span> 209 <span class="sd"> tools have to be arranged.</span> 217 210 <span class="sd"> '''</span> 218 211 <span class="c1"># --------------------------------------------------------------------------</span> … … 260 253 <span class="n">codes_release</span><span class="p">)</span> 261 254 262 <span class="n">fileid</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="s1">'r'</span><span class="p">)</span>263 264 255 <span class="n">return_list</span> <span class="o">=</span> <span class="p">[]</span> 265 256 266 <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> 257 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fileid</span><span class="p">:</span> 258 267 259 <span class="n">gid</span> <span class="o">=</span> <span class="n">codes_new_from_file</span><span class="p">(</span><span class="n">fileid</span><span class="p">)</span> 268 269 <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>270 <span class="k">break</span>271 260 272 261 <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeynames</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">wherekeyvalues</span><span class="p">):</span> … … 292 281 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> 293 282 294 <span class="n">fileid</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>295 296 283 <span class="k">return</span> <span class="n">return_list</span></div> 297 284 298 285 299 286 <div class="viewcode-block" id="GribUtil.set_keys"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.set_keys">[docs]</a> <span class="k">def</span> <span class="nf">set_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fromfile</span><span class="p">,</span> <span class="n">keynames</span><span class="p">,</span> <span class="n">keyvalues</span><span class="p">,</span> <span class="n">wherekeynames</span><span class="o">=</span><span class="p">[],</span> 300 <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'w '</span><span class="p">):</span>287 <span class="n">wherekeyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">strict</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span> 301 288 <span class="sd">'''Opens the file to read the grib messages and then write</span> 302 289 <span class="sd"> the selected messages (with wherekeys) to a new output file.</span> … … 330 317 331 318 <span class="sd"> filemode : :obj:`string`, optional</span> 332 <span class="sd"> Sets the mode for the output file. Default is "w ".</span>319 <span class="sd"> Sets the mode for the output file. Default is "wb".</span> 333 320 334 321 <span class="sd"> Return</span> … … 344 331 345 332 <span class="n">fout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="n">filemode</span><span class="p">)</span> 346 <span class="n">fin</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fromfile</span><span class="p">)</span> 347 348 <span class="k">while</span> <span class="mi">1</span><span class="p">:</span> 333 334 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fromfile</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fin</span><span class="p">:</span> 349 335 <span class="n">gid</span> <span class="o">=</span> <span class="n">codes_grib_new_from_file</span><span class="p">(</span><span class="n">fin</span><span class="p">)</span> 350 351 <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>352 <span class="k">break</span>353 336 354 337 <span class="n">select</span> <span class="o">=</span> <span class="kc">True</span> … … 375 358 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> 376 359 377 <span class="n">fin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>378 360 <span class="n">fout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 379 361 … … 381 363 382 364 <div class="viewcode-block" id="GribUtil.copy_dummy_msg"><a class="viewcode-back" href="../Documentation/Api/api_python.html#GribUtil.GribUtil.copy_dummy_msg">[docs]</a> <span class="k">def</span> <span class="nf">copy_dummy_msg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename_in</span><span class="p">,</span> <span class="n">selectWhere</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> 383 <span class="n">keynames</span><span class="o">=</span><span class="p">[],</span> <span class="n">keyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'w '</span><span class="p">):</span>365 <span class="n">keynames</span><span class="o">=</span><span class="p">[],</span> <span class="n">keyvalues</span><span class="o">=</span><span class="p">[],</span> <span class="n">filemode</span><span class="o">=</span><span class="s1">'wb'</span><span class="p">):</span> 384 366 <span class="sd">'''Add the content of another input grib file to the objects file but</span> 385 367 <span class="sd"> only messages corresponding to keys/values passed to the function.</span> … … 404 386 405 387 <span class="sd"> filemode : :obj:`string`, optional</span> 406 <span class="sd"> Sets the mode for the output file. Default is "w ".</span>388 <span class="sd"> Sets the mode for the output file. Default is "wb".</span> 407 389 408 390 <span class="sd"> Return</span> … … 416 398 <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Give a value for each keyname!"</span><span class="p">)</span> 417 399 418 <span class="n">fin</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename_in</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> 400 419 401 <span class="n">fout</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">filenames</span><span class="p">,</span> <span class="n">filemode</span><span class="p">)</span> 420 402 421 403 <span class="n">fields</span> <span class="o">=</span> <span class="mi">0</span> 422 404 423 <span class="k">while</span> <span class="n">fields</span> <span class="o"><</span> <span class="mi">1</span><span class="p">:</span> 405 <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename_in</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">fin</span><span class="p">:</span> 406 <span class="k">if</span> <span class="n">fields</span> <span class="o">>=</span> <span class="mi">1</span><span class="p">:</span> 407 <span class="n">fout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 408 <span class="k">return</span> 409 424 410 <span class="n">gid</span> <span class="o">=</span> <span class="n">codes_grib_new_from_file</span><span class="p">(</span><span class="n">fin</span><span class="p">)</span> 425 426 <span class="k">if</span> <span class="n">gid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>427 <span class="k">break</span>428 411 429 412 <span class="n">select</span> <span class="o">=</span> <span class="kc">True</span> … … 447 430 <span class="n">codes_release</span><span class="p">(</span><span class="n">gid</span><span class="p">)</span> 448 431 449 <span class="n">fin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>450 432 <span class="n">fout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> 451 433
Note: See TracChangeset
for help on using the changeset viewer.