awips2/edex/new-grid/index.html
2022-07-27 15:06:02 +00:00

1501 lines
No EOL
45 KiB
HTML

<!DOCTYPE html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="description" content="Documentation for all things AWIPS.">
<link rel="canonical" href="http://unidata.github.io/awips2/edex/new-grid/">
<meta name="author" content="support-awips@unidata.ucar.edu">
<link rel="shortcut icon" href="../../images/favicon.ico">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-unidata-2.0.3">
<title>Ingest a New Grid - Unidata AWIPS User Manual</title>
<script src="../../assets/javascripts/modernizr-e826f8942a.js"></script>
<link rel="stylesheet" href="../../assets/stylesheets/application-37fa87ea8f.css">
<link rel="stylesheet" href="../../assets/stylesheets/application-624922a329.palette.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono">
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style>
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="../../css/extra.css">
</head>
<body data-md-color-primary="blue-grey" data-md-color-accent="light-blue">
<svg class="md-svg">
<defs>
<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
</defs>
</svg>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search">
<label class="md-overlay" data-md-component="overlay" for="drawer"></label>
<header class="md-header" data-md-component="header">
<a href="../..">
<div class="background-logo" style="background-image:url('../../images/cave.png');background-repeat:no-repeat;height:107px">
<nav class="md-header-nav md-grid">
<div class="md-flex">
<div class="md-flex__cell md-flex__cell--shrink">
<a href="http://unidata.github.io/awips2/" title="Unidata AWIPS User Manual" class="md-header-nav__button md-logo">
<img src="../../images/home.png" width="24" height="24">
</a>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label>
</div>
<div class="md-flex__cell md-flex__cell--stretch">
<span class="md-flex__ellipsis md-header-nav__title">
<span class="md-header-nav__parent">
EDEX User Manual
</span>
Ingest a New Grid
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="search"></label>
<div class="md-search__inner">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" required placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query">
<label class="md-icon md-search__icon" for="search"></label>
<button type="reset" class="md-icon md-search__icon" data-md-component="reset">&#xE5CD;</button>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="result" data-md-lang-search="" data-md-lang-tokenizer="[\s\-]+">
<div class="md-search-result__meta" data-md-lang-result-none="No matching documents" data-md-lang-result-one="1 matching document" data-md-lang-result-other="# matching documents">
Type to start searching
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<div class="md-header-nav__source">
<a href="https://github.com/Unidata/awips2" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container">
<main class="md-main">
<div class="md-main__inner md-grid" data-md-component="container">
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title md-nav__title--site" for="drawer">
<a href="http://unidata.github.io/awips2/" title="Unidata AWIPS User Manual" class="md-nav__button md-logo">
<img src="../../images/home.png">
</a>
Unidata AWIPS User Manual
</label>
<div class="md-nav__source">
<a href="https://github.com/Unidata/awips2" title="Go to repository" class="md-source" data-md-source="github">
<div class="md-source__icon">
<svg viewBox="0 0 24 24" width="24" height="24">
<use xlink:href="#github" width="24" height="24"></use>
</svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." title="Home" class="md-nav__link">
Home
</a>
</li>
<li class="md-nav__item">
<a href="../../install/install-cave/" title="Install CAVE" class="md-nav__link">
Install CAVE
</a>
</li>
<li class="md-nav__item">
<a href="../../install/install-edex/" title="Install EDEX" class="md-nav__link">
Install EDEX
</a>
</li>
<li class="md-nav__item">
<a href="../../appendix/common-problems/" title="Common Problems" class="md-nav__link">
Common Problems
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-5" type="checkbox" id="nav-5">
<label class="md-nav__link" for="nav-5">
CAVE User Manual
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-5">
CAVE User Manual
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../cave/d2d-perspective/" title="D2D Perspective" class="md-nav__link">
D2D Perspective
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/maps-views-projections/" title="Maps, Views, Projections" class="md-nav__link">
Maps, Views, Projections
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/bundles-and-procedures/" title="Displays and Procedures" class="md-nav__link">
Displays and Procedures
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/localization-perspective/" title="Localization Perspective" class="md-nav__link">
Localization Perspective
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/nsharp/" title="NSHARP" class="md-nav__link">
NSHARP
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/warngen/" title="WarnGen Walkthrough" class="md-nav__link">
WarnGen Walkthrough
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/goes-16-17-satellite/" title="GOES 16/17" class="md-nav__link">
GOES 16/17
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/d2d-gis-shapefiles/" title="GIS and Shapefiles" class="md-nav__link">
GIS and Shapefiles
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/d2d-gridded-models/" title="Volume Browser" class="md-nav__link">
Volume Browser
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/d2d-tools/" title="Display Tools" class="md-nav__link">
Display Tools
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/d2d-radar-tools/" title="Radar Tools" class="md-nav__link">
Radar Tools
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/d2d-edit-menus/" title="Editing Menus" class="md-nav__link">
Editing Menus
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/cave-localization/" title="Change Localization" class="md-nav__link">
Change Localization
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/import-export/" title="Import/Export" class="md-nav__link">
Import/Export
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked>
<label class="md-nav__link" for="nav-6">
EDEX User Manual
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-6">
EDEX User Manual
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../install/start-edex/" title="EDEX Basic Commands" class="md-nav__link">
EDEX Basic Commands
</a>
</li>
<li class="md-nav__item">
<a href="../settings/" title="EDEX Settings" class="md-nav__link">
EDEX Settings
</a>
</li>
<li class="md-nav__item">
<a href="../distributed-computing/" title="Distributed EDEX" class="md-nav__link">
Distributed EDEX
</a>
</li>
<li class="md-nav__item">
<a href="../edex-ingest-docker-container/" title="Docker EDEX" class="md-nav__link">
Docker EDEX
</a>
</li>
<li class="md-nav__item">
<a href="../ldm/" title="LDM Feeds" class="md-nav__link">
LDM Feeds
</a>
</li>
<li class="md-nav__item">
<a href="../data-distribution-files/" title="Data Distribution Files" class="md-nav__link">
Data Distribution Files
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc">
<label class="md-nav__link md-nav__link--active" for="toc">
Ingest a New Grid
</label>
<a href="./" title="Ingest a New Grid" class="md-nav__link md-nav__link--active">
Ingest a New Grid
</a>
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#ingest-an-unsupported-grid" title="Ingest an Unsupported Grid" class="md-nav__link">
Ingest an Unsupported Grid
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#download-test-data" title="Download Test Data" class="md-nav__link">
Download Test Data
</a>
</li>
<li class="md-nav__item">
<a href="#check-grib-logs" title="Check Grib Logs" class="md-nav__link">
Check Grib Logs
</a>
</li>
<li class="md-nav__item">
<a href="#check-hdf5-data" title="Check HDF5 Data" class="md-nav__link">
Check HDF5 Data
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#determine-grid-projection" title="Determine Grid Projection" class="md-nav__link">
Determine Grid Projection
</a>
</li>
<li class="md-nav__item">
<a href="#create-grid-projection-file" title="Create Grid Projection File" class="md-nav__link">
Create Grid Projection File
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#projection-types" title="Projection Types" class="md-nav__link">
Projection Types
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-new-projection-file" title="Creating a New Projection File" class="md-nav__link">
Creating a New Projection File
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#create-model-definition" title="Create Model Definition" class="md-nav__link">
Create Model Definition
</a>
</li>
<li class="md-nav__item">
<a href="#adding-a-table" title="Adding a Table" class="md-nav__link">
Adding a Table
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#finding-center" title="Finding Center" class="md-nav__link">
Finding Center
</a>
</li>
<li class="md-nav__item">
<a href="#finding-subcenter" title="Finding Subcenter" class="md-nav__link">
Finding Subcenter
</a>
</li>
<li class="md-nav__item">
<a href="#finding-discipline-and-category" title="Finding Discipline and Category" class="md-nav__link">
Finding Discipline and Category
</a>
</li>
<li class="md-nav__item">
<a href="#corresponding-table" title="Corresponding Table" class="md-nav__link">
Corresponding Table
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#creating-menu-items" title="Creating Menu Items" class="md-nav__link">
Creating Menu Items
</a>
</li>
<li class="md-nav__item">
<a href="#using-wgrib2" title="Using wgrib2" class="md-nav__link">
Using wgrib2
</a>
</li>
<li class="md-nav__item">
<a href="#troubleshooting-grib-ingest" title="Troubleshooting Grib Ingest" class="md-nav__link">
Troubleshooting Grib Ingest
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../data-purge/" title="Purging and Retention" class="md-nav__link">
Purging and Retention
</a>
</li>
<li class="md-nav__item">
<a href="../edex-users/" title="Monitor Users" class="md-nav__link">
Monitor Users
</a>
</li>
<li class="md-nav__item">
<a href="../data-plugins/" title="Data Plugins" class="md-nav__link">
Data Plugins
</a>
</li>
<li class="md-nav__item">
<a href="../case-studies/" title="Archive Case Studies" class="md-nav__link">
Archive Case Studies
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../python/overview/" title="Python-AWIPS" class="md-nav__link">
Python-AWIPS
</a>
</li>
<li class="md-nav__item">
<a href="../../appendix/educational-resources/" title="Educational Resources" class="md-nav__link">
Educational Resources
</a>
</li>
<li class="md-nav__item">
<a href="../../dev/awips-development-environment/" title="Development" class="md-nav__link">
Development
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-toggle md-nav__toggle" data-md-toggle="nav-10" type="checkbox" id="nav-10">
<label class="md-nav__link" for="nav-10">
Appendix
</label>
<nav class="md-nav" data-md-component="collapsible" data-md-level="1">
<label class="md-nav__title" for="nav-10">
Appendix
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../appendix/appendix-grid-parameters/" title="AWIPS Grid Parameters" class="md-nav__link">
AWIPS Grid Parameters
</a>
</li>
<li class="md-nav__item">
<a href="../../python/maps-database/" title="Maps Database" class="md-nav__link">
Maps Database
</a>
</li>
<li class="md-nav__item">
<a href="../../appendix/appendix-acronyms/" title="Acronyms and Abbreviations" class="md-nav__link">
Acronyms and Abbreviations
</a>
</li>
<li class="md-nav__item">
<a href="../../appendix/appendix-wsr88d/" title="WSR-88D Product Table" class="md-nav__link">
WSR-88D Product Table
</a>
</li>
<li class="md-nav__item">
<a href="../../cave/cave-keyboard-shortcuts/" title="Keyboard Shortcuts" class="md-nav__link">
Keyboard Shortcuts
</a>
</li>
<li class="md-nav__item">
<a href="../../raytheon/cave_d2d/" title="Raytheon: CAVE User's Manual" class="md-nav__link">
Raytheon: CAVE User's Manual
</a>
</li>
<li class="md-nav__item">
<a href="../../raytheon/smm/" title="Raytheon: AWIPS System Manager's Manual" class="md-nav__link">
Raytheon: AWIPS System Manager's Manual
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc">
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary">
<label class="md-nav__title" for="toc">Table of contents</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="#ingest-an-unsupported-grid" title="Ingest an Unsupported Grid" class="md-nav__link">
Ingest an Unsupported Grid
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#download-test-data" title="Download Test Data" class="md-nav__link">
Download Test Data
</a>
</li>
<li class="md-nav__item">
<a href="#check-grib-logs" title="Check Grib Logs" class="md-nav__link">
Check Grib Logs
</a>
</li>
<li class="md-nav__item">
<a href="#check-hdf5-data" title="Check HDF5 Data" class="md-nav__link">
Check HDF5 Data
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#determine-grid-projection" title="Determine Grid Projection" class="md-nav__link">
Determine Grid Projection
</a>
</li>
<li class="md-nav__item">
<a href="#create-grid-projection-file" title="Create Grid Projection File" class="md-nav__link">
Create Grid Projection File
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#projection-types" title="Projection Types" class="md-nav__link">
Projection Types
</a>
</li>
<li class="md-nav__item">
<a href="#creating-a-new-projection-file" title="Creating a New Projection File" class="md-nav__link">
Creating a New Projection File
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#create-model-definition" title="Create Model Definition" class="md-nav__link">
Create Model Definition
</a>
</li>
<li class="md-nav__item">
<a href="#adding-a-table" title="Adding a Table" class="md-nav__link">
Adding a Table
</a>
<nav class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#finding-center" title="Finding Center" class="md-nav__link">
Finding Center
</a>
</li>
<li class="md-nav__item">
<a href="#finding-subcenter" title="Finding Subcenter" class="md-nav__link">
Finding Subcenter
</a>
</li>
<li class="md-nav__item">
<a href="#finding-discipline-and-category" title="Finding Discipline and Category" class="md-nav__link">
Finding Discipline and Category
</a>
</li>
<li class="md-nav__item">
<a href="#corresponding-table" title="Corresponding Table" class="md-nav__link">
Corresponding Table
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#creating-menu-items" title="Creating Menu Items" class="md-nav__link">
Creating Menu Items
</a>
</li>
<li class="md-nav__item">
<a href="#using-wgrib2" title="Using wgrib2" class="md-nav__link">
Using wgrib2
</a>
</li>
<li class="md-nav__item">
<a href="#troubleshooting-grib-ingest" title="Troubleshooting Grib Ingest" class="md-nav__link">
Troubleshooting Grib Ingest
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/Unidata/awips2/edit/unidata_18.2.1/docs/edex/new-grid.md" title="Edit this page" class="md-icon md-content__icon">&#xE3C9;</a>
<h1 id="ingest-a-new-grid">Ingest a New Grid<a class="headerlink" href="#ingest-a-new-grid" title="Permanent link"></a></h1>
<p>Unrecognized grids can be decoded by EDEX simply by dropping <code>*.grib</code> or <code>*.grib2</code> files into <code>/awips2/data_store/ingest/</code></p>
<div class="admonition note">
<p class="admonition-title">This page explains how to ingest <code>.grib2</code> products. To view information about <code>.grib</code> products, <a href="../new-grid-grib1-old">please see this page</a>.</p>
</div>
<p>To add support for a new grid, two edits must be made:</p>
<ul>
<li><strong>Geospatial projection</strong> must be defined in a <a href="#create-grid-projection-file"><strong><em>grid navigation file</em></strong></a></li>
<li><strong>Grid name</strong>, <strong>center</strong>, <strong>subcenter</strong>, and <strong>process ID</strong> must be defined in a <a href="#create-model-definition"><strong><em>model definition file</em></strong></a></li>
</ul>
<p>If the parameters in the grib file haven't been previously specified, another change <em>may</em> be needed as well:</p>
<ul>
<li><strong>Center</strong>, <strong>subcenter</strong>, <strong>discipline</strong>, <strong>category</strong>, and possibly <strong>parameter ID</strong> information may need to be defined in a <a href="#adding-a-table"><strong><em>table</em></strong></a></li>
</ul>
<hr />
<h2 id="ingest-an-unsupported-grid">Ingest an Unsupported Grid<a class="headerlink" href="#ingest-an-unsupported-grid" title="Permanent link"></a></h2>
<h3 id="download-test-data">Download Test Data<a class="headerlink" href="#download-test-data" title="Permanent link"></a></h3>
<p>Download an example grib2 file (make sure the extension is <code>.grib2</code> or the <a href="../data-distribution-files/#editing-an-edex-data-distribution-file">EDEX distribution file</a> may not recognize it), and then copy to the manual ingest point <code>/awips2/data_store/ingest/</code>:</p>
<pre><code>wget https://downloads.unidata.ucar.edu/awips2/current/files/CPTI_00.50_20180502-000144.grib2 -O cpti.grib2
cp cpti.grib2 /awips2/data_store/ingest/
</code></pre>
<h3 id="check-grib-logs">Check Grib Logs<a class="headerlink" href="#check-grib-logs" title="Permanent link"></a></h3>
<p>Confirm that the grib file decodes in the grib log file.</p>
<p>Look in the current log file (/awips2/edex/logs/edex-ingestGrib-[YYYYMMDD].log) for the following:</p>
<pre><code>INFO [Ingest.GribDecode] /awips2/data_store/ingest/cpti.grib2 processed in: 0.1200 (sec) Latency: 21.8080 (sec)
INFO [Ingest.GribDecode] /awips2/data_store/ingest/cpti.grib2 processed in: 0.1180 (sec) Latency: 21.8140 (sec)
INFO [Ingest.GribDecode] /awips2/data_store/ingest/cpti.grib2 processed in: 0.4230 (sec) Latency: 21.8360 (sec)
INFO [Ingest.GribDecode] /awips2/data_store/ingest/cpti.grib2 processed in: 0.2240 (sec) Latency: 21.9140 (sec)
...
</code></pre>
<div class="admonition warning">
<p class="admonition-title">This step will fail for our example because the parameter is not yet defined. The error will look like:</p>
</div>
<pre>
INFO 2020-07-20 20:34:17,710 2565 [GribPersist-1] GridDao: EDEX - Discarding record due to missing or unknown parameter mapping: /grid/2018-05-02_00:01:44.0_(0)/GribModel:161:0:97/null/null/403/Missing/FH/500.0/-999999.0
INFO 2020-07-20 20:34:17,710 2566 [GribPersist-1] Ingest: EDEX: Ingest - grib2:: /awips2/data_store/ingest/CPTI_00.50_20180502-000144.grib2 processed in: 2.3550 (sec)
INFO 2020-07-20 20:34:17,827 2567 [Ingest.GribDecode-6] grib: EDEX - No parameter information for center[161], subcenter[0], tableName[4.2.209.3], parameter value[61]
</pre>
<p>In order to successfully ingest the example file, you must <a href="#adding-a-table"><strong>define the appropriate table</strong></a>.</p>
<h3 id="check-hdf5-data">Check HDF5 Data<a class="headerlink" href="#check-hdf5-data" title="Permanent link"></a></h3>
<p>Check that the hdf5 data directory exists for our unnamed grid</p>
<pre><code> ls -latr /awips2/edex/data/hdf5/grid/GribModel:161:0:97
</code></pre>
<p>Though the grib file has been decoded, it has been given a generic name with its <strong>center, subcenter, and process IDs</strong> (161, 0, 97, respectively). </p>
<hr />
<h2 id="determine-grid-projection">Determine Grid Projection<a class="headerlink" href="#determine-grid-projection" title="Permanent link"></a></h2>
<p>When a grid is ingested a record is added to the <code>grid_coverage</code> table with its navigation information:</p>
<pre><code>psql metadata
metadata=&gt; select nx,ny,dx,dy,majoraxis,minoraxis,la1,lo1,lov,latin1,latin2,spacingunit,lad,la2,latin,lo2,firstgridpointcorner from gridcoverage where id=(select distinct(location_id) from grid_info where datasetid='GribModel:161:0:97');
nx | ny | dx | dy | majoraxis | minoraxis | la1 | lo1 | lov | latin1 | latin2 | spacingunit | lad | la2 | latin | lo2 | firstgridpointcorner
-----+-----+-------+-------+-----------+-----------+-----------+-----+-----+--------+--------+-------------+-----+-----+-------+-----+----------------------
600 | 640 | 0.005 | 0.005 | | | 40.799999 | 261 | | | | degree | | | | | UpperLeft
(1 row)
</code></pre>
<p>Compare with the projection info returned by wgrib2 on the original file (look at the bolded sections below and make sure they match up with the corresponding entries returned from the database above):</p>
<!--
Using html for this code block so that certain sections within the code can be emphasized (bolded)
-->
<pre>
wgrib2 -grid -nxny cpti.grib2
1:0:grid_template=0:winds(N/S):
<b>lat-lon grid:(600 x 640)</b> units 1e-06 <b>input WE:NS</b> output WE:SN res 48
lat <b>40.799999</b> to 37.599999 by <b>0.005000</b>
lon <b>260.999999</b> to 263.999999 by <b>0.005000</b> #points=384000:(600 x 640)
...
</pre>
<p>Notice that our grib2 file has a <strong>Lat/lon Grid</strong> projection, that starts in the <strong>UpperLeft</strong> corner (as defined by input West to East, North to South). Where:</p>
<ul>
<li><strong>nx</strong> is <strong>600</strong></li>
<li><strong>ny</strong> is <strong>640</strong></li>
<li><strong>dx</strong> is <strong>0.005</strong></li>
<li><strong>dy</strong> is <strong>0.005</strong></li>
<li><strong>la1</strong> is <strong>40.799999</strong></li>
<li><strong>lo1</strong> is <strong>261</strong></li>
</ul>
<p>We will need these values for the next step. </p>
<div class="admonition note">
<p class="admonition-title"><strong>There is a tolerance of +/- 0.1 degrees</strong> to keep in mind when defining your coverage (la1 and lo1) area.</p>
</div>
<hr />
<h2 id="create-grid-projection-file">Create Grid Projection File<a class="headerlink" href="#create-grid-projection-file" title="Permanent link"></a></h2>
<h3 id="projection-types">Projection Types<a class="headerlink" href="#projection-types" title="Permanent link"></a></h3>
<div class="admonition note">
<p class="admonition-title">You may not have information for every tag listed, for example it's not required for the latLonGridCoverage to have spacingUnit, la2, lo2.</p>
</div>
<p>Grid projection files are stored in <code>/awips2/edex/data/utility/common_static/base/grib/grids/</code> and there are four grid coverage types available:</p>
<ol>
<li>
<p><strong>lambertConformalGridCoverage</strong> (example: <code>RUCIcing.xml</code>)</p>
<pre><code>&lt;lambertConformalGridCoverage&gt;
&lt;name&gt;305&lt;/name&gt;
&lt;description&gt;Regional - CONUS (Lambert Conformal)&lt;/description&gt;
&lt;la1&gt;16.322&lt;/la1&gt;
&lt;lo1&gt;-125.955&lt;/lo1&gt;
&lt;firstGridPointCorner&gt;LowerLeft&lt;/firstGridPointCorner&gt;
&lt;nx&gt;151&lt;/nx&gt;
&lt;ny&gt;113&lt;/ny&gt;
&lt;dx&gt;40.63525&lt;/dx&gt;
&lt;dy&gt;40.63525&lt;/dy&gt;
&lt;spacingUnit&gt;km&lt;/spacingUnit&gt;
&lt;minorAxis&gt;6356775.0&lt;/minorAxis&gt;
&lt;majorAxis&gt;6378160.0&lt;/majorAxis&gt;
&lt;lov&gt;-95.0&lt;/lov&gt;
&lt;latin1&gt;25.0&lt;/latin1&gt;
&lt;latin2&gt;25.0&lt;/latin2&gt;
&lt;/lambertConformalGridCoverage&gt;
</code></pre>
</li>
<li>
<p><strong>polarStereoGridCoverage</strong> (example <code>seaice_south1_grid.xml</code>)</p>
<pre><code>&lt;polarStereoGridCoverage&gt;
&lt;name&gt;405&lt;/name&gt;
&lt;description&gt;Sea Ice south 690X710 13km grid&lt;/description&gt;
&lt;la1&gt;-36.866&lt;/la1&gt;
&lt;lo1&gt;139.806&lt;/lo1&gt;
&lt;firstGridPointCorner&gt;LowerLeft&lt;/firstGridPointCorner&gt;
&lt;nx&gt;690&lt;/nx&gt;
&lt;ny&gt;710&lt;/ny&gt;
&lt;dx&gt;12.7&lt;/dx&gt;
&lt;dy&gt;12.7&lt;/dy&gt;
&lt;spacingUnit&gt;km&lt;/spacingUnit&gt;
&lt;minorAxis&gt;6371229.0&lt;/minorAxis&gt;
&lt;majorAxis&gt;6371229.0&lt;/majorAxis&gt;
&lt;lov&gt;100.0&lt;/lov&gt;
&lt;/polarStereoGridCoverage&gt;
</code></pre>
</li>
<li>
<p><strong>latLonGridCoverage</strong> (example <code>UkmetHR-SHemisphere.xml</code>)</p>
<pre><code>&lt;latLonGridCoverage&gt;
&lt;name&gt;864162002&lt;/name&gt;
&lt;description&gt;UKMet HiRes combined - Southern Hemisphere
Longitude range 71.25E - 70.416E &lt;/description&gt;
&lt;la1&gt;-89.721&lt;/la1&gt;
&lt;lo1&gt;71.25&lt;/lo1&gt;
&lt;firstGridPointCorner&gt;LowerLeft&lt;/firstGridPointCorner&gt;
&lt;nx&gt;864&lt;/nx&gt;
&lt;ny&gt;162&lt;/ny&gt;
&lt;dx&gt;0.833&lt;/dx&gt;
&lt;dy&gt;0.556&lt;/dy&gt;
&lt;spacingUnit&gt;degree&lt;/spacingUnit&gt;
&lt;la2&gt;-0.278&lt;/la2&gt;
&lt;lo2&gt;70.416&lt;/lo2&gt;
&lt;/latLonGridCoverage&gt;
</code></pre>
</li>
<li>
<p><strong>mercatorGridCoverage</strong> (example <code>gridNBM_PR.xml</code>)</p>
<pre><code>&lt;mercatorGridCoverage&gt;
&lt;name&gt;NBM_PR&lt;/name&gt;
&lt;description&gt; National Blend Grid over Puerto Rico - (1.25 km)&lt;/description&gt;
&lt;la1&gt;16.9775&lt;/la1&gt;
&lt;lo1&gt;-68.0278&lt;/lo1&gt;
&lt;firstGridPointCorner&gt;LowerLeft&lt;/firstGridPointCorner&gt;
&lt;nx&gt;339&lt;/nx&gt;
&lt;ny&gt;225&lt;/ny&gt;
&lt;dx&gt;1.25&lt;/dx&gt;
&lt;dy&gt;1.25&lt;/dy&gt;
&lt;la2&gt;19.3750032477232&lt;/la2&gt;
&lt;lo2&gt;-63.984399999999994&lt;/lo2&gt;
&lt;latin&gt;20&lt;/latin&gt;
&lt;spacingUnit&gt;km&lt;/spacingUnit&gt;
&lt;minorAxis&gt;6371200&lt;/minorAxis&gt;
&lt;majorAxis&gt;6371200&lt;/majorAxis&gt;
&lt;/mercatorGridCoverage&gt;
</code></pre>
</li>
</ol>
<h3 id="creating-a-new-projection-file">Creating a New Projection File<a class="headerlink" href="#creating-a-new-projection-file" title="Permanent link"></a></h3>
<p>Copy an existing xml file with the same grid projection type (in this case <strong>latLonGridCoverage</strong>) to a new file <code>cpti.xml</code>:</p>
<pre><code>cd /awips2/edex/data/utility/common_static/base/grib/grids/
cp MRMS-1km-CONUS.xml cpti.xml
</code></pre>
<p>And edit the new <code>cpti.xml</code> to define the projection values using the <a href="#determine-grid-projection">output from wgrib2 or the database</a> (example provided):</p>
<pre><code>vi cpti.xml
&lt;latLonGridCoverage&gt;
&lt;name&gt;600640&lt;/name&gt;
&lt;description&gt;Small domain for CPTI products&lt;/description&gt;
&lt;la1&gt;40.799999&lt;/la1&gt;
&lt;lo1&gt;261&lt;/lo1&gt;
&lt;firstGridPointCorner&gt;UpperLeft&lt;/firstGridPointCorner&gt;
&lt;nx&gt;600&lt;/nx&gt;
&lt;ny&gt;640&lt;/ny&gt;
&lt;dx&gt;0.005&lt;/dx&gt;
&lt;dy&gt;0.005&lt;/dy&gt;
&lt;spacingUnit&gt;degree&lt;/spacingUnit&gt;
&lt;/latLonGridCoverage&gt;
</code></pre>
<div class="admonition note">
<p class="admonition-title">Notice the <code>&lt;name&gt;600640&lt;/name&gt;</code> tag was created by using the number of grid points (600 and 640). This name can be anything as long as it is unique and will be used to match against in the model definition.</p>
</div>
<hr />
<h2 id="create-model-definition">Create Model Definition<a class="headerlink" href="#create-model-definition" title="Permanent link"></a></h2>
<p>Model definition XML files are found in <strong>/awips2/edex/data/utility/common_static/base/grib/models/</strong>. </p>
<p>Since our grib2 file has a center of 161 (NOAA) we will edit the <strong>gribModels_NOAA-161.xml</strong> file.</p>
<pre><code>cd /awips2/edex/data/utility/common_static/base/grib/models/
vi gribModels_NOAA-161.xml
</code></pre>
<p>In <code>&lt;gribModelSet&gt;</code>, under the <code>&lt;-- Subcenter 0 --&gt;</code> comment, add an entry:</p>
<pre><code>&lt;model&gt;
&lt;name&gt;CPTI&lt;/name&gt;
&lt;center&gt;161&lt;/center&gt;
&lt;subcenter&gt;0&lt;/subcenter&gt;
&lt;grid&gt;600640&lt;/grid&gt;
&lt;process&gt;
&lt;id&gt;97&lt;/id&gt;
&lt;/process&gt;
&lt;/model&gt;
</code></pre>
<p>Save the model file and restart edex:</p>
<pre><code>sudo service edex_camel restart ingestGrib
</code></pre>
<p>Now if you drop <code>cpti.grib2</code> into the manual endpoint again, it should ingest without any persistence errors.</p>
<hr />
<h2 id="adding-a-table">Adding a Table<a class="headerlink" href="#adding-a-table" title="Permanent link"></a></h2>
<p>If you ingest a piece of data and the parameter appears as unknown in the metadata database, ensure that the correct parameter tables are in place for the center/subcenter.</p>
<p>The tables are located in <strong>/awips2/edex/data/utility/common_static/base/grib/tables/</strong>. They are then broken into subdirectories using the following structure: <strong>/[Center]/[Subcenter]/4.2.[Discipine].[Category].table</strong>. </p>
<div class="admonition note">
<p class="admonition-title">There are also default parameters that all grib products may access located in this directory: <strong>/awips2/edex/data/utility/common_static/base/grib/tables/-1/-1/</strong></p>
</div>
<p>If you are using a grib2 file, then you can use either the log output or the <code>-center</code>, <code>-subcenter</code>, and <code>-full_name</code> options on <code>wgrib2</code> to get the center, subcenter, discipline, category, and parameter information:</p>
<p>The table would be found in the directory structure using this file's center and subcenter. </p>
<h3 id="finding-center">Finding Center<a class="headerlink" href="#finding-center" title="Permanent link"></a></h3>
<p>The center can be found by either:</p>
<ul>
<li>
<p>Running the following command:</p>
<pre><code>wgrib2 -center cpti.grib2
1:0:center=US NOAA Office of Oceanic and Atmospheric Research
...
</code></pre>
<p>And then looking up the corresponding value for "US NOAA Office of Oceanic and Atmospheric Research" at <a href="https://www.nco.ncep.noaa.gov/pmb/docs/on388/table0.html"><strong>this website</strong></a>, where it happens to be <strong>161</strong>.</p>
</li>
</ul>
<p><strong>OR:</strong></p>
<ul>
<li>
<p>Running the following command:
<br />
<pre>
wgrib2 -varX cpti.grib2
1:0:var209_255_1_<b>161</b>_3_61
...</pre>
</p>
<p>Where the 4th argument after "var" is the center id, in this case <strong>161</strong>.</p>
</li>
</ul>
<h3 id="finding-subcenter">Finding Subcenter<a class="headerlink" href="#finding-subcenter" title="Permanent link"></a></h3>
<p>To get the subcenter, simply run:</p>
<pre>
wgrib2 -subcenter cpti.grib2
1:0:subcenter=<b>0</b>
...
</pre>
<p>The subcenter of this file is <strong>0</strong>.</p>
<p>Based on the center and subcenter, the corresponding directory is:</p>
<pre><code>/awips2/edex/data/utility/common_static/base/grib/tables/161/0/
</code></pre>
<h3 id="finding-discipline-and-category">Finding Discipline and Category<a class="headerlink" href="#finding-discipline-and-category" title="Permanent link"></a></h3>
<p>To find the exact table, we need the discipline and category:</p>
<pre>
wgrib2 -full_name cpti.grib2
1:0:var<b>209</b>_<b>3</b>_<b>61</b>.500_m_above_mean_sea_level
...
</pre>
<p>In this case the <strong>discipline is 209</strong> and <strong>category is 3</strong>, so the corresponding table is:</p>
<pre><code>4.2.209.3.table
</code></pre>
<h3 id="corresponding-table">Corresponding Table<a class="headerlink" href="#corresponding-table" title="Permanent link"></a></h3>
<p>The full path to the corresponding table would be:</p>
<pre><code>/awips2/edex/data/utility/common_static/base/grib/tables/161/0/4.2.209.3.table
</code></pre>
<p>The parameter ID was also listed in that output as <strong>61</strong>. Make sure that specific parameter information is defined in the table:</p>
<pre>
...
56:56:Reflectivity at -20C:dBZ:ReflectivityM20C
57:57:Reflectivity At Lowest Altitude (RALA):dBZ:ReflectivityAtLowestAltitude
58:58:Merged Reflectivity At Lowest Altitude (RALA):dBZ:MergedReflectivityAtLowestAltitude
59:59:CPTI 80mph+:%:CPTI80mph
<b>61:61:CPTI 110mph+:%:CPTI110mph</b>
</pre>
<p>You will have to restart ingestGrib for the changes to take place:</p>
<pre><code> sudo service edex_camel restart ingestGrib
</code></pre>
<p>Now you can try <a href="#download-test-data">re-ingesting the grib2 file</a>.</p>
<hr />
<h2 id="creating-menu-items">Creating Menu Items<a class="headerlink" href="#creating-menu-items" title="Permanent link"></a></h2>
<p>After you have confirmed that the grid was ingested with the given name, you can <a href="../../cave/d2d-edit-menus/">edit the D2D product menus to display the new grid</a>.</p>
<hr />
<h2 id="using-wgrib2">Using wgrib2<a class="headerlink" href="#using-wgrib2" title="Permanent link"></a></h2>
<p>Mentioned in this page are a few command parameters for <code>wgrib2</code> such as <code>-grid</code>, <code>varX</code>, <code>-center</code>, <code>-subcenter</code>, and <code>-full_name</code>.</p>
<p>A complete <a href="https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/long_cmd_list.html">list of all available parameters can be found here</a>.</p>
<hr />
<h2 id="troubleshooting-grib-ingest">Troubleshooting Grib Ingest<a class="headerlink" href="#troubleshooting-grib-ingest" title="Permanent link"></a></h2>
<ul>
<li>
<p>Make sure the latitude and longitude entries in your coverage specification file match those of your ingested raw grib file. There is a tolerance of +/- 0.1 degree to keep in mind when defining your coverage area.</p>
</li>
<li>
<p>If some of the information is unknown, using a grib utility application such as <em>wgrib</em> and <em>wgrib2</em> can be useful in determining the information that must be added to correctly process a new grib file.</p>
</li>
<li>
<p>If you are experiencing <code>Segmentation fault</code> errors when running wgrib2, it may be best to install the latest version using the following command:</p>
<pre><code>yum install wgrib2
</code></pre>
<p>And then you may either need to change where <code>wgrib2</code> points to, or use <code>/bin/wgrib2</code> to run the recently downloaded version.</p>
</li>
</ul>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-nav">
<nav class="md-footer-nav__inner md-grid">
<a href="edex/data-distribution-files/" title="Data Distribution Files" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev">
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i>
</div>
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Previous
</span>
Data Distribution Files
</span>
</div>
</a>
<a href="edex/data-purge/" title="Purging and Retention" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next">
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title">
<span class="md-flex__ellipsis">
<span class="md-footer-nav__direction">
Next
</span>
Purging and Retention
</span>
</div>
<div class="md-flex__cell md-flex__cell--shrink">
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i>
</div>
</a>
</nav>
</div>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-footer-copyright">
<div class="md-footer-copyright__highlight">
Copyright &copy; 2022 Unidata Program Center.
</div>
powered by
<a href="http://www.mkdocs.org" title="MkDocs">MkDocs</a>
and
<a href="http://squidfunk.github.io/mkdocs-material/" title="Material for MkDocs">
Material for MkDocs</a>
</div>
<div class="md-footer-social">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<a href="https://www.unidata.ucar.edu/software/awips2" class="md-footer-social__link fa fa-globe"></a>
<a href="https://github.com/Unidata/awips2" class="md-footer-social__link fa fa-github-alt"></a>
<a href="https://twitter.com/Unidata" class="md-footer-social__link fa fa-twitter"></a>
<a href="https://facebook.com/Unidata" class="md-footer-social__link fa fa-facebook"></a>
</div>
</div>
</div>
</footer>
</div>
<script src="../../assets/javascripts/application-eaeb7b21e3.js"></script>
<script>app.initialize({url:{base:"../.."}})</script>
</body>
</html>