{"id":199,"date":"2012-05-13T23:26:25","date_gmt":"2012-05-13T23:26:25","guid":{"rendered":"http:\/\/nf3v.com\/wp\/?page_id=199"},"modified":"2012-06-27T01:57:39","modified_gmt":"2012-06-27T01:57:39","slug":"about-lrit-images","status":"publish","type":"page","link":"http:\/\/nf3v.com\/wp\/?page_id=199","title":{"rendered":"About LRIT Images"},"content":{"rendered":"<p><span style=\"color: #ffff00;\">&#8220;In the Beginning&#8230;&#8221;<\/span><\/p>\n<div>\n<p>I first became interested in weather image reception after ordering a &#8216;manual&#8217; from a company called &#8220;Information Unlimited&#8221; sometime in the mid-80&#8217;s. \u00a0In it, they\u00a0described\u00a0how to receive POES weather satellites images with a tracking helical antenna, a decoder board, and oscilliscope and a\u00a0Polaroid\u00a0camera. \u00a0I never was able to figure out what to do with those plans. \u00a0I didn&#8217;t have an\u00a0oscilloscope, couldn&#8217;t figure out the schematics and didn&#8217;t live in a place where I could track a satellite for more than a few minutes overhead, but I was bitten by the bug of weather satellite image\u00a0reception.<\/p>\n<p>Years intervened and I amassed a collection of articles on how to receive other formats of weather imagery, including shortwave weather fax and GOES Wefax.<\/p>\n<p>Early on, these images were in the format of WEFAX&#8230;an analogue format (which NOAA polar orbiting satellites still use) and which was\u00a0relatively\u00a0easy to\u00a0receive. \u00a0All one needed was a dish, downconverter and receiver. \u00a0Things were nice&#8230;sort of. \u00a0The problem was that the pictures were good&#8230;but not great. \u00a0Additionally, little processing could be done to them.<\/p>\n<p>Then, LRIT came along. \u00a0A digital format based on BPSK (google it). \u00a0It had the promise of crystal clear images and the ability to do some real post processing on them. \u00a0The trouble was&#8230;how was one to receive it? \u00a0NOAA contracted a company in 2003 to look into a receiver design, and the results can be found on the NOAA LRIT website. \u00a0Ths money spent on that contract was not really worth their while (in my opinion). \u00a0The design didn&#8217;t use a readily available\u00a0receiver\u00a0(at this point, it becomes more of an issue of a\u00a0demodulator) and there was discussion of a board, the design of which was not available&#8230; \u00a0a BIG flop&#8230;at least in my opinion.<\/p>\n<p>Fast foward to 2008 when a gentleman in the western USA managed to connect his dish to an LNA, then feed that into a satellite modem which he got cheap off of Ebay. \u00a0He then connected the modem to an FPGA breakout board&#8230;and received data!<\/p>\n<p>This was published in the GEO Quarterly (Group for Earth Observation). \u00a0I became thrilled at the possibility of again receiving GOES imagery. \u00a0The only problem&#8230;finding a satellite modem. \u00a0I did finally manage to get one (an SDM-300A) \u00a0I hooked it up to my Quorum 1691-137.5 Integrated Feed\/Downconverter&#8230;turned everything on&#8230; and &#8230; nothing. \u00a0Not a single lock. \u00a0It would appear the VSAT downconverters have gains that are REALLY big&#8230; and my Quorum downconverter just wasn&#8217;t doing it. \u00a0The Modem went back on the shelf \u00a0(but, hey&#8230;it did only cost me $25&#8230;a steal. \u00a0These thing retail for $4000!)<\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #ffff00;\">&#8220;The quest Continues&#8230;&#8221;<\/span><\/p>\n<p>So&#8230;there I was&#8230;surfing the internet one day \u00a0in the early fall of this year, and did a routine google search for &#8216;LRIT&#8221;&#8230;but this time a new site came up. \u00a0Yes, sure, the routine sites for the\u00a0aforementioned\u00a0NOAA LRIT contract&#8230;and sites describing long range identification and tracking of ships. \u00a0But, there was a new one from the people at GOES-R. \u00a0Here was described a simple, low cost, tested, and\u00a0<em>documented<\/em>\u00a0LRIT receiver called an &#8220;AID&#8221;. \u00a0I <em>had<\/em> to have one.<\/p>\n<p>Well, it turns out that they aren&#8217;t available. \u00a0Foiled\u00a0again&#8230;<\/p>\n<p>&#8230;but not completely&#8230;<\/p>\n<p>What <em>is<\/em> available is what it was modeled after. \u00a0It seams that several years back, a philanthropist named John Gilmore initiated a software initiative headed by Eric Blossum for <em>software defined radio<\/em>. \u00a0Hardware for the platform was created by Matt Ettus. \u00a0For more information google it&#8230;<\/p>\n<p>I tracked down the people at Aerospace Corporation (who were contracted by NOAA) and asked some questions&#8230;.specifically, is the USRP1 a drop-in replacement for the AID board. \u00a0They said yes&#8230; and I had a USRP1 within the week.<\/p>\n<p>There are caveats in life. \u00a0One is that life is somehow fair. \u00a0Another is that the USRP1 is equal to the AID receiver. \u00a0As it turns out, the AID is <em>based upon<\/em> the USRP1. \u00a0Each use a high speed A\/D converter and send the data to an FPGA, and ultimately on the the\u00a0computer. \u00a0There, software assess the data and demodulated the signal. \u00a0What i found out in my experiment was that the front end of the USRP1, with a BasicRx daughterboard, needs a signal of about 2v p-p and I was nowhere near that with my downconverter. \u00a0But&#8230;I did have an extra wefax preamp laying around&#8230;<\/p>\n<p>Well, after figuring out how to rig the bias-t&#8217;s to power both the preamp and LNB, I was set to see if it worked&#8230; and &#8230; it didn&#8217;t. \u00a0It appears that the software that Aerospace created dosn&#8217;t run on on anything created by AMD. \u00a0(correction&#8230;they do on the higher-end AMD chips&#8230;but my desktop wasn&#8217;t one of those) Blame the fact that Intel&#8217;s\u00a0compiler\u00a0basically cripples any software that might try to run on an AMD CPU. \u00a0I think that this was a situation that went before the US Department of Justice&#8230;but I digress. \u00a0Off to the computer store for a generic Intel computer.<\/p>\n<p>Back home, the computer was unpacked, set up and and everything was connected&#8230;.the DOS window was opened&#8230;the program name was entered&#8230;the return key was pressed&#8230;and&#8230;<\/p>\n<p>SUCESS!<\/p>\n<p>There was signal lock and as I watched, data was decoded and LRIT files were being deposited on my hard drive.<\/p>\n<p>Ultimately, I went and purchased a Dartcom USB LRIT ingester and set it up. \u00a0It has been running flawlessly for the past month and a half. \u00a0It is a extruded aluminum box that sits on the computer and connects via USB. \u00a0The .lrit files are decoded and placed on the computer and the processing software assembles them into the appropriate images. \u00a0All in all it works pretty well, but there are some minor things that are on a wish list to change.<\/p>\n<div>\n<p>I&#8217;ve also been looking at writing my own software to decode the .lrit files. \u00a0This would be\u00a0focused\u00a0on those people who have gone the way of using the Ettus box, or even the AID board from the Aerospace corp documentation. \u00a0I&#8217;ve spent the past few days looking at the files from a binary point of view, using a hex viewer, to see how all the header information is put together. \u00a0There is two current image viewers that I have used. \u00a0The first is from Avdyne Corp. and can be found on the GOES LRIT site\u00a0<a href=\"http:\/\/noaasis.noaa.gov\/LRIT\/software.html\" rel=\"nofollow\" target=\"_blank\">here<\/a>. \u00a0The second is a small visual basic program written and can be found\u00a0<a href=\"http:\/\/proengineered.com\/lrit0501\/lrit0501_010.htm\" rel=\"nofollow\" target=\"_blank\">here<\/a>.<\/p>\n<p>Here is what I have found regarding the .lrit file header structure. \u00a0First, it&#8217;s all in there. \u00a0Aside from the primary header (the first sixteen octets of the file), the rest of the header structure is included, so one can figure it out. \u00a0Here is a brief summary&#8230;<\/p>\n<p>The primary header tells you the size of the primary header, total size of all the headers, and the size of all the image data.<\/p>\n<div>\n<p>Here is a breakdown of the header structure as of a received file 12\/31\/2010.<\/p>\n<div>\n<pre>Name \u00a0 \u00a0 \u00a0 \u00a0 \u00a0octects \u00a0type \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Header Name (code)<\/pre>\n<pre>-----------------------------------------------------------<\/pre>\n<pre>PriHdr \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0Primary Header (0x00)<\/pre>\n<pre>PHlength \u00a0 \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>PHfilecode \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int<\/pre>\n<pre>PHtothdrlngth \u00a0 \u00a0 4 \u00a0 \u00a0unsigned int<\/pre>\n<pre>PHdatafldlngth \u00a0 \u00a08 \u00a0 \u00a0unsigned int<\/pre>\n<pre>NOAALRIT \u00a0 \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0NOAA Header (0x82)<\/pre>\n<pre>NLfieldlen \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>NLagency \u00a0 \u00a0 \u00a0 \u00a0 \u00a04 \u00a0 \u00a0CHAR<\/pre>\n<pre>NLprodID \u00a0 \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>NLprodSubID \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>NLprodParm \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>NLcompressflag \u00a0 \u00a01 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ImageStruct \u00a0 \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int \u00a0 \u00a0Image Structure Record (0x01)<\/pre>\n<pre>ISfieldlen \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ISbitsperpix \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ISimagecols \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ISimagelines \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>IScompressflag \u00a0 \u00a01 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ImageNav \u00a0 \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0Image Navigation Record (0x02)<\/pre>\n<pre>INfieldlen \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>INprojection \u00a0 \u00a0 \u00a032 \u00a0 CHAR<\/pre>\n<pre>INcolscalefctr \u00a0 \u00a04 \u00a0 \u00a0int<\/pre>\n<pre>INlinescalefctr \u00a0 4 \u00a0 \u00a0int<\/pre>\n<pre>INcoloffset \u00a0 \u00a0 \u00a0 4 \u00a0 \u00a0int<\/pre>\n<pre>INlineoffset \u00a0 \u00a0 \u00a04 \u00a0 \u00a0int<\/pre>\n<pre>ImageDataFunct \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0Image Data Function Record (0x03)<\/pre>\n<pre>IDFfieldlen \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>IDFdatadef \u00a0 \u00a0 \u00a0 \u00a02689 CHAR<\/pre>\n<pre>ANNOtation \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0Annotation Record (0x04)<\/pre>\n<pre>ANNOfieldlen \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ANNOtxt \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 48 \u00a0 CHAR<\/pre>\n<pre>TimeStamp \u00a0 \u00a0 \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int \u00a0 \u00a0Time Stamp Record (0x05)<\/pre>\n<pre>TSfieldlen \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>TSccsdspfield \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int<\/pre>\n<pre>TSccsdsday \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>TSccsdsms \u00a0 \u00a0 \u00a0 \u00a0 4 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ANCillary \u00a0 \u00a0 \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int \u00a0 \u00a0Ancillary Text Record (0x07)<\/pre>\n<pre>ANCfieldlen \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>ANCtxt \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0225 \u00a0CHAR<\/pre>\n<pre>SegmentID \u00a0 \u00a0 \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int \u00a0 \u00a0Segment Identification Record (0x80)<\/pre>\n<pre>SIDfieldlen \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDimageID \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDsequencenum \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDstartcol \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDstartrow \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDtotalnum \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDmaxcol \u00a0 \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>SIDmaxrow \u00a0 \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>RiceID \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int \u00a0 \u00a0Rice Compression ID Record (0x83)<\/pre>\n<pre>RIDfieldlen \u00a0 \u00a0 \u00a0 2 \u00a0 \u00a0unsigned int<\/pre>\n<pre>RIDflags \u00a0 \u00a0 \u00a0 \u00a0 \u00a02 \u00a0 \u00a0unsigned int<\/pre>\n<pre>RIDpixel \u00a0 \u00a0 \u00a0 \u00a0 \u00a01 \u00a0 \u00a0unsigned int<\/pre>\n<pre>RIDline \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 1 \u00a0 \u00a0unsigned int \u0081<\/pre>\n<p>Notes:<\/p>\n<p>1) type &#8216;I&#8217; (integer) or UI (unsigned integer) has a variable octet size depending on the octet numbers (8,16,24 or 32 bits)<\/p>\n<p>2) &#8216;char&#8217; is one octet (8 bits)<\/p>\n<\/div>\n<p><span style=\"font-family: arial, sans-serif;\">For a more detailed treatment of this\u00a0information, please see &#8220;Part 3 &#8211; Receiver Specification&#8221; at the\u00a0<\/span><a href=\"http:\/\/noaasis.noaa.gov\/LRIT\/system_specs.html\" rel=\"nofollow\" target=\"_blank\">NOAA LRIT site<\/a><span style=\"font-family: arial, sans-serif;\">. \u00a0Note that &#8220;Part 4&#8221; gives an incomplete treatment of some of the records<\/span><\/p>\n<p><span style=\"font-family: arial, sans-serif;\">Once you read all this data in, you have all the information you need to display the image. \u00a0Some caveats&#8230; the image timestamp is not the time the image was scanned&#8230;it&#8217;s the time the file was transmitted. \u00a0One of the problems that I&#8217;d like address when I write my program, is the ability to pick any .lrit file (not just the first segment) and display the entire image (if all the segments are present).<\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;In the Beginning&#8230;&#8221; I first became interested in weather image reception after ordering a &#8216;manual&#8217; from a company called &#8220;Information Unlimited&#8221; sometime in the mid-80&#8217;s. \u00a0In it, they\u00a0described\u00a0how to receive POES weather satellites images with a tracking helical antenna, a &hellip; <a href=\"http:\/\/nf3v.com\/wp\/?page_id=199\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/199"}],"collection":[{"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=199"}],"version-history":[{"count":17,"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/199\/revisions"}],"predecessor-version":[{"id":251,"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=\/wp\/v2\/pages\/199\/revisions\/251"}],"wp:attachment":[{"href":"http:\/\/nf3v.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}