{"id":41471,"date":"2021-07-08T23:17:09","date_gmt":"2021-07-08T23:17:09","guid":{"rendered":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/?p=41471"},"modified":"2021-07-09T14:47:01","modified_gmt":"2021-07-09T14:47:01","slug":"creating-rgb-imagery-using-sift-and-geo2grid","status":"publish","type":"post","link":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/archives\/41471","title":{"rendered":"Creating RGB imagery using SIFT and Geo2Grid"},"content":{"rendered":"<p style=\"padding-left: 40px;\"><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GOES-16_ABI_RadC_C04_20210708_1411_CIRRUSRGBtest_annot.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-41472\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GOES-16_ABI_RadC_C04_20210708_1411_CIRRUSRGBtest_annot.png\" alt=\"\" width=\"625\" height=\"469\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GOES-16_ABI_RadC_C04_20210708_1411_CIRRUSRGBtest_annot.png 960w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GOES-16_ABI_RadC_C04_20210708_1411_CIRRUSRGBtest_annot-300x225.png 300w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GOES-16_ABI_RadC_C04_20210708_1411_CIRRUSRGBtest_annot-768x576.png 768w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>The use of routine multispectral geostationary satellite imagery over the United States has increased the routine use of Red\/Green\/Blue composite imagery to describe and evaluate surface and atmospheric conditions. This blog post will detail how to create new (or old) RGB composites using two UW-Madison\/CIMSS\/SSEC-developed tools: The Satellite Information and Familiarization Tool (<a href=\"https:\/\/sift.ssec.wisc.edu\">SIFT<\/a>; <a href=\"https:\/\/www.google.com\/url?sa=t&amp;source=web&amp;rct=j&amp;url=https:\/\/doi.org\/10.15191\/nwajom.2020.0810%3Futm_source%3Drss%26utm_medium%3Drss%26utm_campaign%3Djom-sifting-through-satellite-imagery-with-the-satellite-information-familiarization-tool&amp;ved=2ahUKEwjA6cGzm9bxAhXOXM0KHbRFDjoQFjADegQICRAC&amp;usg=AOvVaw060KQb-DkxrClqLdXsCZ66\">Journal article link<\/a>) and Geo2Grid (Previous blog posts showing Geo2Grid examples are <a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/?s=geo2grid\">here<\/a>). The scene to be highlighted is shown above in the GOES-16 Cirrus Band; it was chosen because of the interesting parallel bands in the Cirrus, features that can identify regions of turbulence. A larger-scale view of the data (created using <a href=\"https:\/\/geosphere.ssec.wisc.edu\/#coordinate:0,0;\">CSPP Geosphere<\/a>) is <a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GeoSphereView_Band4Cirrus_1411_8July2021.png\">here (for the 1.37 \u00b5m Cirrus band)<\/a> or <a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/GeoSphereView_TrueColor_1411_8July2021.png\">here (for True Color)<\/a>.<\/p>\n<p>SIFT has a very useful (and easy!) RGB generator.\u00a0 For this case involving cirrus, I decided to create an RGB using the Split Window Difference (10.3 \u00b5m &#8211; 12.3 \u00b5m, Band 13 &#8211; Band 15) (shown <a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/SWD_SIFT_1411UTC_8July2021.png\">here<\/a>) that has been used to identify cirrus for quite a while (<a href=\"https:\/\/journals.ametsoc.org\/view\/journals\/apme\/48\/6\/2008jamc1882.1.xml\">link to journal article<\/a>), the cirrus band 4, and also the Snow\/Ice channel Band 5 (1.61 \u00b5m).\u00a0 After downloading SIFT and importing the data (and creating the split window difference field &#8212; <a href=\"https:\/\/sift.ssec.wisc.edu\/2019\/08\/07\/a-lab-that-uses-goes-16-data-and-sift-to-investigate-the-split-window-difference\/\">here&#8217;s a blog post<\/a> that describes how to do that), a SIFT user can create an RGB and tinker with the bounds.\u00a0 Changing the bounds and the gamma causes a simultaneous change in the RGB in the SIFT display window, so it&#8217;s not difficult to iterate to a satisfactory solution.\u00a0 As shown below, the RGB created has the Split Window Difference as the red component, with values from 0 (no red) to 12.0 (saturated red) and a Gamma value of 2;\u00a0 the cirrus channel (C04) is the green component with values from 0.27 (no green) to 0 (saturated green) and a Gamma value of 2;\u00a0 the snow\/ice channel (C05) is the blue component with values from 0.0 (no blue) to 0.40 (saturated blue) and a Gamma value of 1.<\/p>\n<div id=\"attachment_41476\" style=\"width: 385px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/SIFTRGBWindow.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-41476\" class=\"wp-image-41476 size-full\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/SIFTRGBWindow.png\" alt=\"\" width=\"375\" height=\"581\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/SIFTRGBWindow.png 375w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/SIFTRGBWindow-194x300.png 194w\" sizes=\"auto, (max-width: 375px) 100vw, 375px\" \/><\/a><p id=\"caption-attachment-41476\" class=\"wp-caption-text\">SIFT RGB Creation window<\/p><\/div>\n<p>The RGB created in SIFT using these values is shown below.\u00a0 Maybe using maximum green &#8212; a color one&#8217;s eyes are usually particularly adept at viewing &#8212; for no signal in the cirrus channel was not the best choice.\u00a0 But there is nice contrast between the background and the thin cirrus, and an obvious difference between the parallel lines of cirrus in the middle of the image and other clouds, such as the cirrus at the western edge of the image!<\/p>\n<div id=\"attachment_41477\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-41477\" class=\"wp-image-41477\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0.png\" alt=\"\" width=\"625\" height=\"337\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0.png 1101w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0-300x162.png 300w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0-1024x552.png 1024w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_SIFT_2.0_2.0_1.0-768x414.png 768w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-41477\" class=\"wp-caption-text\">&#8220;Cirrus&#8221; RGB at 1411 UTC on 8 July 2021 (click to enlarge)<\/p><\/div>\n<hr \/>\n<p>How do you create something similar using Geo2Grid?\u00a0 Step 1, of course, is always to download and install the software package.\u00a0 To see what products can be created with geo2grid, enter this command:\u00a0 <code>.\/geo2grid.sh -r abi_l1b -w geotiff --list-products -f \/path\/to\/the\/directory\/holding\/GOESR\/Radiance\/Files\/*syyyydddhhmm*.nc<\/code> .\u00a0 Let&#8217;s assume all 16 channels from ABI are available.\u00a0 Important caveat: Geo2Grid will only work on one data time at a time, so specify your year\/julian day\/hour\/minute with sufficient stringency.<\/p>\n<p>RGB product definitions are found in yaml files within the Geo2Grid directory. Ones for abi in particular are found in <code>$GEO2GRID_HOME\/etc\/satpy\/<strong>composites<\/strong>\/abi.yaml<\/code> in which file you would enter something what is shown below for a product called &#8216;cirrustest&#8217;;\u00a0 note that it has three channels:\u00a0 the first is a difference between C13 and C15 (that is, the Split Window Difference);\u00a0 the second is C04 (cirrus channel) and the third is C05 (snow\/ice channel). This is the same as in the SIFT definitions.<\/p>\n<p><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustestRGBdefinition.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-41490\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustestRGBdefinition.png\" alt=\"\" width=\"625\" height=\"206\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustestRGBdefinition.png 738w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustestRGBdefinition-300x99.png 300w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p>Within <code>$GEO2GRID_HOME\/etc\/satpy\/<strong>enhancements<\/strong>\/abi.yaml<\/code> there is a further definition of this RGB.\u00a0 The crude stretch defines the bounds of the RGB:\u00a0 Red includes values from 0 &#8211; 12;\u00a0 Green from 27 &#8212; that is, a reflectance of 0.27, or 27% &#8212; to 0 (note that it is inverted);\u00a0 Blue from 0 to 40.\u00a0 In addition, Gamma values are specified:\u00a0 0.5, 0.5 and 1.<\/p>\n<p>Two important things to note:\u00a0 <strong>Gamma in SIFT follows National Weather Service and JMA conventions.\u00a0 Gamma in Geo2Grid follows EUMETSAT conventions<\/strong>. Thus, one is the reciprocal of the other.\u00a0 Also, note the _abi suffix in the abi.yaml file name in enhancements, i.e., cirrustest_abi, to specify the satellite.<\/p>\n<p><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustest_enhancements.abi_.yaml_.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-41494 size-full\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustest_enhancements.abi_.yaml_.png\" alt=\"\" width=\"573\" height=\"225\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustest_enhancements.abi_.yaml_.png 573w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/cirrustest_enhancements.abi_.yaml_-300x118.png 300w\" sizes=\"auto, (max-width: 573px) 100vw, 573px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">After making these changes to the two abi.yaml files, and rerunning this command:\u00a0 <code>.\/geo2grid.sh -r abi_l1b -w geotiff --list-products -f \/path\/to\/the\/directory\/holding\/GOESR\/Radiance\/Files\/*syyyydddhhmm*.nc<\/code>, you should see a new possibility: cirrustest (or whatever you have named your new RGB). Then you run Geo2Grid commands to create the cirrustest RGB (with the <span style=\"color: #800000;\">-p cirrustest<\/span> flag.\u00a0 The commands below sequentially create the grid for the analysis, create the tiff file, georeference it with coastlines (none, in this case over the Gulf) and latitude\/longitude lines, and annotate it.<\/p>\n<blockquote><p><code>..\/p2g_grid_helper.sh CIRRUSRGBtest -88.3 26.6 500 -500 960 720 &gt; $GEO2GRID_HOME\/CIRRUSRGBtest.conf<br \/>\n#<br \/>\n..\/geo2grid.sh -r abi_l1b -w geotiff -p <span style=\"color: #800000;\">cirrustest<\/span> C04 -g CIRRUSRGBtest --grid-configs $GEO2GRID_HOME\/CIRRUSRGBtest.conf --method nearest -f \/arcdata\/goes_restricted\/grb\/goes16\/2021\/2021_07_08_189\/abi\/L1b\/RadC\/*s20211891411*.nc<br \/>\n..\/add_coastlines.sh --add-borders --borders-outline='blue' --borders-resolution=f --add-grid --grid-text-size 20 --grid-d 5.0 5.0 --grid-D 5.0 5.0 GOES-16_ABI_RadC_cirrustest_20210708_1411??_CIRRUSRGBtest.tif<br \/>\nconvert GOES-16_ABI_RadC_cirrustest_20210708_1411??_CIRRUSRGBtest.png -gravity Southwest -fill yellow -pointsize 14 -annotate +8+24 \"1411 UTC 8 July 2021 Cirrus RGB\" GOES-16_ABI_RadC_cirrustest_20210708_1411_CIRRUSRGBtest_annot_2.png<\/code><\/p><\/blockquote>\n<p>The final image from Geo2Grid is shown below. Its geographic coverage is slightly different than in SIFT, above, but the two RGBs have similar looks.<\/p>\n<div id=\"attachment_41498\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_Geo2grid_0.5_0.5_1.0.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-41498\" class=\"wp-image-41498\" src=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_Geo2grid_0.5_0.5_1.0.png\" alt=\"\" width=\"625\" height=\"469\" srcset=\"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_Geo2grid_0.5_0.5_1.0.png 960w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_Geo2grid_0.5_0.5_1.0-300x225.png 300w, https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-content\/uploads\/sites\/5\/2021\/07\/CIRRUS_RGB_Geo2grid_0.5_0.5_1.0-768x576.png 768w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><p id=\"caption-attachment-41498\" class=\"wp-caption-text\">&#8216;Cirrustest&#8217; RGB at 1411 UTC on 8 July 2021 (Click to enlarge)<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The use of routine multispectral geostationary satellite imagery over the United States has increased the routine use of Red\/Green\/Blue composite imagery to describe and evaluate surface and atmospheric conditions. This blog post will detail how to create new (or old) RGB composites using two UW-Madison\/CIMSS\/SSEC-developed tools: The Satellite Information and Familiarization Tool (SIFT; Journal article [&hellip;]<\/p>\n","protected":false},"author":19,"featured_media":41477,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[74,80,39],"tags":[],"class_list":["post-41471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-goes-16","category-goes-17","category-training"],"acf":[],"_links":{"self":[{"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/posts\/41471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/comments?post=41471"}],"version-history":[{"count":19,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/posts\/41471\/revisions"}],"predecessor-version":[{"id":41510,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/posts\/41471\/revisions\/41510"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/media\/41477"}],"wp:attachment":[{"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/media?parent=41471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/categories?post=41471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cimss.ssec.wisc.edu\/satellite-blog\/wp-json\/wp\/v2\/tags?post=41471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}