Support the Arctic Sea Ice Forum and Blog

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ChadGreene

Pages: [1]
1
Antarctica / Re: NASA: Antarctic Ice Sheet gaining mass?
« on: November 11, 2015, 05:55:20 PM »
Are the data used to generate the Zwally et al. figures available anywhere?  I've tried to make sense of Figures 3, 6, 9, 10, and 11 but the wacky colormaps make it nearly impossible to see what's going on.  I'd love to re-plot them in a sensible diverging colormap, excepting 3b which warrants a monotonic colormap. 

2
Antarctica / Re: EAIS Contributions to SLR by 2100
« on: October 27, 2015, 06:17:44 PM »
Totten's calving front has undergone some minor seasonal and interannual changes over the past 15 years but there appears to be no major secular trend in the coast line.  Here are MODIS images from February of 2001 and 2015:

ftp://sidads.colorado.edu/pub/DATASETS/ICESHELVES/modis_iceshelf_archive/sabri/images/sabri_2001048_0050_modis_ch02.png

ftp://sidads.colorado.edu/pub/DATASETS/ICESHELVES/modis_iceshelf_archive/sabri/images/sabri_2015263_0040_modis_ch02.png

3
The rest / Ice sheet photography tips
« on: October 08, 2015, 08:04:32 PM »
Does anyone have any good tips for manual photography on an ice sheet?  I've googled around a bit, but most "12 Tips for Photographing Snow" type webpages are severely lacking in depth.  Many of these lists include tips like, "wear warm clothes."  Most snow photography tips seem geared toward mountain landscapes where photos contain a fair amount of color (rock outcrops, trees, creeks) throughout.

I find that on ice sheets my surroundings are quite stunning when I'm there, but the lack of color or contrast makes it difficult to capture with a camera.  What tricks do you have and when do you use them?  The two tricks I've found:

1. Always turn off the automatic white balance to prevent snow from looking gray, and

2. Use a polarizing lens to increase contrast at the horizon between snow and sky.

What else should I be doing?

4
Antarctica / Re: Southern Hemisphere Sea Ice grid error?
« on: September 18, 2015, 06:27:06 PM »
Wipneus, that's it! The

fseek(fid,300,0)

bit gets everything back in order.  After including the fseek line I also verified that

[x,y] = ll2ps(lat,lon,'TrueLat',-70,'EarthRadius',6378273,'Eccentricity',0.081816152829245);

does indeed return the x and y values described on the http://nsidc.org/data/polar_stereo/ps_grids.html page.  Your solution works perfectly--thanks for setting me straight.

5
Antarctica / Re: Southern Hemisphere Sea Ice grid error?
« on: September 17, 2015, 07:06:19 PM »
Hi Wipneus,

Thanks for putting time and thought into this.  It is possible that I have made a mistake somewhere, so I appreciate your efforts to help me track down where I'm messing up.  If I am misunderstanding the sea ice grids I certainly want to know what I'm missing.

I do not dispute that the figure you posted looks correct, but my argument is that the sea ice concentration grids look good enough when they are plotted alone, but errors become evident when the georeferenced sea ice grids are plotted in context with other datasets.  How did you place the dot at McMurdo--by specifying geo coordinates?  How did you register the locations of each pixel of the sea ice concentration grid?  Can you add a graticule and maybe a coastline from a different dataset to provide context? 

What I keep seeing is that if I map each pixel in a sea ice concentration grid to corresponding lats and lons provided in pss25lats_v3.dat and pss25lons_v3.dat, things just don't line up.  I tried to show that as simply as possible, meaning without any coordinate transformations or fancy mapping programs, in Figure 3 of my original post.  Figure 3 of my original post shows dots marking the center locations of each pixel, and if you count them it's 16 pixels off.  When I plot the grids in projected coordinates the 16 pixel offset is manifest as a 400 km error in the polar stereographic easting direction.

Thanks for the note about fread.  That's another discrepancy I found between the documentation and the data files.  In Matlab,

ci = fread(fid, [316 332]);

is shorthand for

ci = fread(fid, [316 332],'uint8=>double');

and both of the above work well for importing sea ice data.  But specifying the 300 byte header skip by

ci = fread(fid, [316 332],'uint8=>double',300);

causes errors.  Unfortunately, it's a binary file so we can't just open it and read it directly.  That is a whole different complaint of mine--Especially for these small 316x332 grids there is no excuse for encoding the data in binary format.  And the data grids are not even in the same format as the corresponding lat, lon grids!  Why make the data so inaccessible?  Why perpetuate the notion that climate data are locked away in an ivory tower for only the eyes of elite experts to see?  Why make it so difficult to debug little georeferencing problems?  What poor design. 

6
Antarctica / Re: Southern Hemisphere Sea Ice grid error?
« on: September 16, 2015, 09:00:34 PM »
If I understand correctly you say that the lon/lat values from the NSIDC files may perhaps be correct...

I suspect the lat/lon values from the NSIDC files are *not* correct.  They are obtained by unprojecting a polar stereographic grid using X values that are exactly 400 kilometers offset.  Mapping each pixel in the sea ice grid to corresponding lats and lons given by pss25lats_v3.dat and pss25lons_v3.dat places the southernmost bit of ocean (McMurdo Sound) 95 kilometers into the western hemisphere. However, in the real world the southernmost bit of ocean is found 305 kilometers into the eastern hemisphere.   

Below I plot a day's sea ice concentration grid three ways in Matlab:

1. Directly map each pixel to pss25lats_v3 and pss25lons_v3.
2. Build the correct grid in polar stereographic coordinates and then transform to the correct lats and lons.
3. Recreate the incorrect pss25lats_v3 and pss25lons_v3 values by subtracting 400,000 meters from the correct X values, then perform inverse polar stereographic coordinate transformation.

% Download NSIDC's grid and a daily field of sea ice concentration:
urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/seaice/polar-stereo/tools/pss25lons_v3.dat','pss25lons_v3.dat');
urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/seaice/polar-stereo/tools/pss25lats_v3.dat','pss25lats_v3.dat');
urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/nsidc0081_nrt_nasateam_seaice/south/nt_20150914_f17_nrt_s.bin','test.bin');

% Import lats:
fid = fopen('pss25lons_v3.dat');
pss25lons_v3 = fread(fid,[316 332],'long','ieee-le')/100000;
fclose(fid);

% Import lons:
fid = fopen('pss25lats_v3.dat');
pss25lats_v3 = fread(fid,[316 332],'long','ieee-le')/100000;
fclose(fid);

% Import a daily field of sea ice concentration data:
fid = fopen('test.bin');
ci = fread(fid, [316 332]);
fclose(fid);

% Plotting pss25lats in context with any other datasets reveals discrepancy: 
subplot(1,3,1)
antmap
pcolorm(pss25lats_v3,pss25lons_v3,ci)
bedmap2 'coast'

% We can build a correct grid in polar stereographic cartesian coordinates:
correctx = -3550000+12500:25000:4350000-12500;
y = 4350000-12500:-25000:-3950000+12500;
[Y,correctX] = meshgrid(y,correctx);

% Convert correct x,y to correct lat and lon:
[correctlat,correctlon] = ps2ll(correctX,Y,'TrueLat',-70,'EarthRadius',6378273,'Eccentricity',0.081816153);

% The correct grid lines up nicely with other datasets:
subplot(1,3,2)
antmap
pcolorm(correctlat,correctlon,ci)
bedmap2 'coast'

% NSIDC's values are off by 400,000 meters: 
nsidcX = correctX - 400000;

% NSIDC's pss25lats_v3.dat and pss25lons_v3.dat can be obtained like this: 
[nsidclat,nsidclon] = ps2ll(nsidcX,Y,'TrueLat',-70,'EarthRadius',6378273,'Eccentricity',0.081816153);

% The lat/lons derived from incorrect X values are the same as the grid
% provided in NSIDC's pss25lats_v3.dat and pss25lons_v3:   
subplot(1,3,3)
antmap
pcolorm(nsidclat,nsidclon,ci)
bedmap2 'coast'




7
Developers Corner / Re: Creating Animated GIFs
« on: September 15, 2015, 10:35:33 PM »
GIFs are pretty easy to make in Matlab.  Here's one I made using the seaice function in Matlab:


8
Antarctica / Southern Hemisphere Sea Ice grid error?
« on: September 15, 2015, 10:20:35 PM »
It looks like the NSIDC's georeferencing grids for sea ice data are offset by 400 km in the polar stereographic x direction.  In Matlab you can download and import a day's gridded sea ice concentration grid and corresponding lat,lon grids like this:

urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/seaice/polar-stereo/tools/pss25lons_v3.dat','pss25lons_v3.dat');
urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/seaice/polar-stereo/tools/pss25lats_v3.dat','pss25lats_v3.dat');
urlwrite('ftp://sidads.colorado.edu/pub/DATASETS/nsidc0081_nrt_nasateam_seaice/south/nt_20150914_f17_nrt_s.bin','test.bin');

fid = fopen('pss25lons_v3.dat');
lon = fread(fid,[316 332],'long','ieee-le')/100000;
fclose(fid);

fid = fopen('pss25lats_v3.dat');
lat = fread(fid,[316 332],'long','ieee-le')/100000;
fclose(fid);

fid = fopen('test.bin');
ci = fread(fid, [316 332]);
fclose(fid);


Using Antarctic Mapping Tools (http://www.mathworks.com/matlabcentral/fileexchange/47638), the grid looks okay until you put it in context with any other dataset such as a Bedmap2 Grounding line:

antmap
pcolorm(lat,lon,ci)
bedmap2 'grounding line'




To be clear, this is not an issue with the polar stereographic projection.  It is a problem with the lats and lons given in the pss25lats_v3.dat and pss25lons_v3.dat files.  This can be shown by plotting raw data in unprojected coordinates. 

In the sea ice concentration grid, values of 253 correspond to the coastline and 254 is the ice sheet.  Below I'm plotting each grid point associated with the ice sheet as black dots, and each grid point associated with the coast line as blue dots.  I'm also labeling McMurdo Station which is located at (166.67E,77.85S).  McMurdo is an identifiable location on any map because it sits on the coast and it was chosen by R.F. Scott because it is the southernmost point a ship can sail.

% Get indices of coastline:
coastline = ci==253;

% Get indices of land:
icesheet = ci==254;

figure
plot(lon(icesheet),lat(icesheet),'k.')
hold on
plot(lon(coastline),lat(coastline),'b.')

% Mark and label McMurdo Station:
plot(166.67,-77.85,'ro','linewidth',4)
text(166.67,-77.85,'MCM','vert','top',...
    'horiz','center','fontweight','bold','color','red')

xlabel 'longitude'
ylabel 'latitude'




McMurdo should sit directly on the coast.  To make it a bit more clear, we can double the grid for continuity and then plot the same as above.  Here's how I double the grid:

lat = [lat lat];
lon = [lon lon+360];
ci = [ci ci];




I've explored this a bit and it looks like the offset is 400 km in the polar stereographic easting direction.  It looks like the values are incorrect here as well: http://nsidc.org/data/polar_stereo/ps_grids.html.  I contacted NSIDC about the issue and they offered a proof that their grids are correct (http://nbviewer.ipython.org/gist/hwilcox/7e533c42abd38975a83a), but that proof does not address the issue that their grid incorrectly places McMurdo Station in the western hemisphere.

If I am missing something, please let me know.  Otherwise it may be best to manually georeference your sea ice data by

[x,y] = meshgrid(-3550000+12500:25000:4350000-12500,4350000-12500:-25000:-3950000+12500);
[lat,lon] = ps2ll(x,y,'TrueLat',-70,'EarthRadius',6378273,'Eccentricity',0.081816153);


and set

ci = flipud(rot90(ci));




Pages: [1]