GPT mosaic missing data

Use this Forum to find information on, or ask a question about, NASA Earth Science data.
Post Reply
gisjie
Posts: 5
Joined: Fri Mar 17, 2023 12:11 am America/New_York
Answers: 0

GPT mosaic missing data

by gisjie » Fri May 05, 2023 9:51 am America/New_York

It's a bit strange that I'm experiencing some missing data when processing MODIS level 2 data using GPT Mosaic. In particular, there seem to be parts of the output Rrs and rhos that are missing, and the specific regions that are affected vary from image to image. I've attached an RGB image from L1mapgen (which shows the full image processed from level 1 data: A2022186011500.L1A_LAC), an RGB image from the mosaicked rhos (produced using GPT Mosaic from level 2 data), as well as the XML file I used for mosaicking. I used SeaDAS version 8.3. Can you help me figure out what might be causing this issue? Thank you!

<graph id="AQUA_MODIS">
<version>1.0</version>
<node id="MosaicNode">
<operator>Mosaic</operator>
<sources>
<sourceProducts>${sourceProducts}</sourceProducts>
</sources>
<parameters>
<variables>
<variable>
<name>Rrs_412</name>
<expression>Rrs_412</expression>
</variable>
<variable>
<name>Rrs_443</name>
<expression>Rrs_443</expression>
</variable>
<variable>
<name>Rrs_469</name>
<expression>Rrs_469</expression>
</variable>
<variable>
<name>Rrs_488</name>
<expression>Rrs_488</expression>
</variable>
<variable>
<name>Rrs_531</name>
<expression>Rrs_531</expression>
</variable>
<variable>
<name>Rrs_547</name>
<expression>Rrs_547</expression>
</variable>
<variable>
<name>Rrs_555</name>
<expression>Rrs_555</expression>
</variable>
<variable>
<name>Rrs_645</name>
<expression>Rrs_645</expression>
</variable>
<variable>
<name>Rrs_667</name>
<expression>Rrs_667</expression>
</variable>
<variable>
<name>Rrs_678</name>
<expression>Rrs_678</expression>
</variable>
<variable>
<name>Rrs_748</name>
<expression>Rrs_748</expression>
</variable>
<variable>
<name>Rrs_859</name>
<expression>Rrs_859</expression>
</variable>
<variable>
<name>Rrs_869</name>
<expression>Rrs_869</expression>
</variable>
<variable>
<name>Rrs_1240</name>
<expression>Rrs_1240</expression>
</variable>
<variable>
<name>Rrs_1640</name>
<expression>Rrs_1640</expression>
</variable>
<variable>
<name>Rrs_2130</name>
<expression>Rrs_2130</expression>
</variable>
<variable>
<name>rhos_412</name>
<expression>rhos_412</expression>
</variable>
<variable>
<name>rhos_443</name>
<expression>rhos_443</expression>
</variable>
<variable>
<name>rhos_469</name>
<expression>rhos_469</expression>
</variable>
<variable>
<name>rhos_488</name>
<expression>rhos_488</expression>
</variable>
<variable>
<name>rhos_531</name>
<expression>rhos_531</expression>
</variable>
<variable>
<name>rhos_547</name>
<expression>rhos_547</expression>
</variable>
<variable>
<name>rhos_555</name>
<expression>rhos_555</expression>
</variable>
<variable>
<name>rhos_645</name>
<expression>rhos_645</expression>
</variable>
<variable>
<name>rhos_667</name>
<expression>rhos_667</expression>
</variable>
<variable>
<name>rhos_678</name>
<expression>rhos_678</expression>
</variable>
<variable>
<name>rhos_748</name>
<expression>rhos_748</expression>
</variable>
<variable>
<name>rhos_859</name>
<expression>rhos_859</expression>
</variable>
<variable>
<name>rhos_869</name>
<expression>rhos_869</expression>
</variable>
<variable>
<name>rhos_1240</name>
<expression>rhos_1240</expression>
</variable>
<variable>
<name>rhos_1640</name>
<expression>rhos_1640</expression>
</variable>
<variable>
<name>rhos_2130</name>
<expression>rhos_2130</expression>
</variable>
<variable>
<name>chlor_a</name>
<expression>chlor_a</expression>
</variable>
<variable>
<name>Kd_490</name>
<expression>Kd_490</expression>
</variable>
<variable>
<name>nflh</name>
<expression>nflh</expression>
</variable>
<variable>
<name>ATMFAIL</name>
<expression>l2_flags.ATMFAIL ? 1 : 0</expression>
</variable>
<variable>
<name>LAND</name>
<expression>l2_flags.LAND ? 1 : 0</expression>
</variable>
<variable>
<name>PRODWARN</name>
<expression>l2_flags.PRODWARN ? 1 : 0</expression>
</variable>
<variable>
<name>HIGLINT</name>
<expression>l2_flags.HIGLINT ? 1 : 0</expression>
</variable>
<variable>
<name>HILT</name>
<expression>l2_flags.HILT ? 1 : 0</expression>
</variable>
<variable>
<name>HISATZEN</name>
<expression>l2_flags.HISATZEN ? 1 : 0</expression>
</variable>
<variable>
<name>COASTZ</name>
<expression>l2_flags.COASTZ ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE8</name>
<expression>l2_flags.SPARE8 ? 1 : 0</expression>
</variable>
<variable>
<name>STRAYLIGHT</name>
<expression>l2_flags.STRAYLIGHT ? 1 : 0</expression>
</variable>
<variable>
<name>CLDICE</name>
<expression>l2_flags.CLDICE ? 1 : 0</expression>
</variable>
<variable>
<name>COCCOLITH</name>
<expression>l2_flags.COCCOLITH ? 1 : 0</expression>
</variable>
<variable>
<name>TURBIDW</name>
<expression>l2_flags.TURBIDW ? 1 : 0</expression>
</variable>
<variable>
<name>HISOLZEN</name>
<expression>l2_flags.HISOLZEN ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE14</name>
<expression>l2_flags.SPARE14 ? 1 : 0</expression>
</variable>
<variable>
<name>LOWLW</name>
<expression>l2_flags.LOWLW ? 1 : 0</expression>
</variable>
<variable>
<name>CHLFAIL</name>
<expression>l2_flags.CHLFAIL ? 1 : 0</expression>
</variable>
<variable>
<name>NAVWARN</name>
<expression>l2_flags.NAVWARN ? 1 : 0</expression>
</variable>
<variable>
<name>ABSAER</name>
<expression>l2_flags.ABSAER ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE19</name>
<expression>l2_flags.SPARE19 ? 1 : 0</expression>
</variable>
<variable>
<name>MAXAERITER</name>
<expression>l2_flags.MAXAERITER ? 1 : 0</expression>
</variable>
<variable>
<name>MODGLINT</name>
<expression>l2_flags.MODGLINT ? 1 : 0</expression>
</variable>
<variable>
<name>CHLWARN</name>
<expression>l2_flags.CHLWARN ? 1 : 0</expression>
</variable>
<variable>
<name>ATMWARN</name>
<expression>l2_flags.ATMWARN ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE24</name>
<expression>l2_flags.SPARE24 ? 1 : 0</expression>
</variable>
<variable>
<name>SEAICE</name>
<expression>l2_flags.SEAICE ? 1 : 0</expression>
</variable>
<variable>
<name>NAVFAIL</name>
<expression>l2_flags.NAVFAIL ? 1 : 0</expression>
</variable>
<variable>
<name>FILTER</name>
<expression>l2_flags.FILTER ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE28</name>
<expression>l2_flags.SPARE28 ? 1 : 0</expression>
</variable>
<variable>
<name>BOWTIEDEL</name>
<expression>l2_flags.BOWTIEDEL ? 1 : 0</expression>
</variable>
<variable>
<name>HIPOL</name>
<expression>l2_flags.HIPOL ? 1 : 0</expression>
</variable>
<variable>
<name>PRODFAIL</name>
<expression>l2_flags.PRODFAIL ? 1 : 0</expression>
</variable>
<variable>
<name>SPARE32</name>
<expression>l2_flags.SPARE32 ? 1 : 0</expression>
</variable>
</variables>
<crs>GEOGCS["WGS84(DD)", DATUM["WGS84", SPHEROID["WGS84", 6378137.0, 298.257223563]],PRIMEM["Greenwich", 0.0], UNIT["degree", 0.017453292519943295],AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH]]</crs>
<resampling>Bicubic</resampling>
<westBound>-178.5</westBound>
<northBound>-28</northBound>
<eastBound>-174.5</eastBound>
<southBound>-32</southBound>
<pixelSizeX>0.00454545</pixelSizeX>
<pixelSizeY>0.00454545</pixelSizeY>
</parameters>
</node>
</graph>
Attachments
AQUA_MODIS_20220705T011500_GPT_Mosaic_RGB.jpg
AQUA_MODIS_20220705T011500_GPT_Mosaic_RGB.jpg (182.92 KiB) Not viewed yet
AQUA_MODIS_20220705T011500_RGB-l1mapgen.jpg
AQUA_MODIS_20220705T011500_RGB-l1mapgen.jpg (154.22 KiB) Not viewed yet

Tags:

OB SeaDAS - xuanyang02
Subject Matter Expert
Subject Matter Expert
Posts: 644
Joined: Tue Feb 09, 2021 5:42 pm America/New_York
Answers: 1
Been thanked: 1 time

Re: GPT mosaic missing data

by OB SeaDAS - xuanyang02 » Fri May 05, 2023 5:01 pm America/New_York

Previously we said Mosaic has issues dealing with geographic area that crosses the dateline. viewtopic.php?p=14394#p14394

In fact, Mosaic has issues with geographic area that is near the dateline, even it does not cross the dateline.

Here is the workaround, which is less than straight forward.

1. Create a new band "new_long" in SeaDAS (shift the longitude 50 degrees away from the dateline -- with the edited expression "longitude < 0 ? longitude + 50 : longitude - 50")
Screen Shot 2023-05-05 at 4.34.21 PM.png
Screen Shot 2023-05-05 at 4.34.21 PM.png (108.42 KiB) Not viewed yet
2. Open a band (e.g. Rrs_443), do Tools -> Attach Pixel Geo-Coding), choose new_long as Longitude band, and save the file as AQUA_MODIS.20220705T011501.L2.OC_new_long.dim
Screen Shot 2023-05-05 at 4.38.29 PM.png
Screen Shot 2023-05-05 at 4.38.29 PM.png (58.79 KiB) Not viewed yet
3. Do Mosaic on the saved file with the xml file modified as the following, note it's -128.5/-124.5 instead of -178.5/-174.5) --
<variable>
<name>latitude</name>
<expression>latitude</expression>
</variable>
<variable>
<name>longitude</name>
<expression>longitude</expression>
</variable>
<variable>
<name>new_long</name>
<expression>new_long</expression>
</variable>

<westBound>-128.5</westBound>
<northBound>-28</northBound>
<eastBound>-124.5</eastBound>
<southBound>-32</southBound>

4. Open the output file (AQUA_MODIS.20220705T011501.L2.OC_Mosaic.dim), and do Tools -> Attach Pixel Geo-Coding) again. This time use longitude as Longitude band.

This is the image of Rrs_443 --
Screen Shot 2023-05-05 at 5.54.10 PM.png
Screen Shot 2023-05-05 at 5.54.10 PM.png (157.12 KiB) Not viewed yet

gisjie
Posts: 5
Joined: Fri Mar 17, 2023 12:11 am America/New_York
Answers: 0

Re: GPT mosaic missing data

by gisjie » Mon May 08, 2023 3:12 am America/New_York

That's great, thank you very much! I was wondering if there are any other ways to perform mosaicking (reprojection and subset), such as through Python code. Are you aware of any options?

OB SeaDAS - xuanyang02
Subject Matter Expert
Subject Matter Expert
Posts: 644
Joined: Tue Feb 09, 2021 5:42 pm America/New_York
Answers: 1
Been thanked: 1 time

Re: GPT mosaic missing data

by OB SeaDAS - xuanyang02 » Mon May 08, 2023 11:45 am America/New_York

If your task is to Subset and Reprojection, you can avoid Mosaic by extract (SeaDAS processors) and then reprojection --

1. SeaDAS-Toolbox -> SeaDAS Processors -> extractors

2. Raster -> Geometric -> Reprojection

Here is the resulted image of chlor_a
Screen Shot 2023-05-08 at 11.44.03 AM.png
Screen Shot 2023-05-08 at 11.44.03 AM.png (133.76 KiB) Not viewed yet
--

Post Reply