I have sea ice concentration netCDF's from this FTP. I want to georeference them based on the provided "LongitudeLatitudeGrid_3.125km_Arctic.nc" file, which contains both Lat and Lon bands (literally a grid containing the latitude and longitude values for every pixel).

How do I do that?

In my attempts at projecting these netCDF's, I've tried converting to ASCII rasters using GDAL, editing the corner coordinates and cell size in the header, and then manually specifying a .prj file based on the supplied grid information:

The data is displayed in two polar stereographic maps per day, one for the Arctic (Arc) and one for the Antarctic (Ant). Python PYRESAMPLE is used to derive a 3.125km grid according to the (corner) grid coordinates provided by NSIDC (http://nsidc.org/data/polar_stereo/ps_grids.html).

  • Polar stereographic projection with the projection plane intersecting the earth at 70 degree and using the Hughes ellipsoid; with the radius of 6378.273 km and an eccentricity (e) of 0.081816153, follows a semi-minor axis of 6356.88944891.

  • Corner coordinates northern hemisphere ('Arc'):

    lon 168.35, lat 31.00, lon 102.34, lat 31.38, lon -9.98, lat 34.36, lon -80.74, lat 33.94

  • Corner coordinates southern hemisphere ('Ant'):

    lon -42.24, lat -39.25, lon 42.24, lat -39.25, lon 135.00, lat -41.46, lon -135.00, lat -41.46

The values for semi-major axis, semi-minor axis, projection plane, and the corner coordinates are used to calculate the pixel loacations with the PYRESAMPLE package.

The geographic coordinates are provided in the following netCDF-file: LongitudeLatitudeGrid_3.125km_Arctic.nc

This results in something close, but not quite: (red line is a land file with true location based on Hughes 1980 datum)

enter image description here

Here is the gdalinfo, in case it helps:

Driver: netCDF/Network Common Data Format Files: Arc_20150910_res3.125_pyres.nc Size is 512, 512 Coordinate System is `' Metadata: NC_GLOBAL#algorithm=ASI v5 NC_GLOBAL#CDI=Climate Data Interface version 1.6.9 (http://mpimet.mpg.de/cdi)
NC_GLOBAL#CDO=Climate Data Operators version 1.6.9 (http://mpimet.mpg.de/cdo) NC_GLOBAL#cite=Spreen, G., L. Kaleschke, G. Heygster, Sea Ice Remote Sensing Using AMSR-E 89 GHz Channels, J. Geophys. Res., 113, C02S03, doi:10.1029/2005JC003384, 2008.
NC_GLOBAL#Comment1=Scaled land mask value is 12500, NaN values are masked 11500 NC_GLOBAL#Comment2=After application of scale_factor (multiply with 0.01): land mask value is 125, NaN values are masked 115 NC_GLOBAL#[email protected]
NC_GLOBAL#Conventions=CF-1.4 NC_GLOBAL#datasource=JAXA
NC_GLOBAL#description=gridded ASI AMSR2 sea ice concentration
NC_GLOBAL#geocorrection=none NC_GLOBAL#grid=NSIDC polar stereographic with tangential plane at 70degN , see http://nsidc.org/data/polar_stereo/ps_grids.html
NC_GLOBAL#gridding_method=Nearest Neighbor, with Python package pyresample NC_GLOBAL#grid_resolution=3.125 km
NC_GLOBAL#hemisphere=North NC_GLOBAL#history=Fri Sep 11 20:46:58 2015: cdo setdate,2015-09-10 -settime,12:00:00 /scratch/clisap/seaice/OWN_PRODUCTS/AMSR2_SIC_3125/2015/Arc_20150910_res3.125_pyres_temp.nc /scratch/clisap/seaice/OWN_PRODUCTS/AMSR2_SIC_3125/2015/Arc_20150910_res3.125_pyres.nc Created Fri Sep 11 20:46:57 2015 NC_GLOBAL#landmask_value=12500
NC_GLOBAL#missing_value=11500 NC_GLOBAL#netCDF_created_by=Alexander Beitsch, alexander.beitsch(at)zmaw.de NC_GLOBAL#offset=0
NC_GLOBAL#sensor=AMSR2 NC_GLOBAL#tiepoints=P0=47 K, P1=11.7 K
NC_GLOBAL#title=Daily averaged Arctic sea ice concentration derived from AMSR2 L1R brightness temperature measurements Subdatasets:
SUBDATASET_1_NAME=NETCDF:"Arc_20150910_res3.125_pyres.nc":sea_ice_concentration SUBDATASET_1_DESC=[1x3584x2432] sea_ice_area_fraction (16-bit integer) SUBDATASET_2_NAME=NETCDF:"Arc_20150910_res3.125_pyres.nc":land
SUBDATASET_2_DESC=[1x3584x2432] land_binary_mask (8-bit integer) Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left (
0.0, 512.0) Upper Right ( 512.0, 0.0) Lower Right ( 512.0, 512.0) Center ( 256.0, 256.0)

  • Knowing the latitude and longitude at every pixel must be enough for projecting a raster in Arc, right? If so, how do I "point Arc to it?"
    – Wassadamo
    Commented Apr 26, 2017 at 22:07
  • 1
    This is a georeferencing problem not a reprojecion one. The extent of the projected polar coordinates is enough to position the grid, they are otherwise completely redundant. Pretty sure those longlats are the cell centres, inverse transformed from native. I'll dig it up and post an example
    – mdsumner
    Commented Apr 27, 2017 at 4:36
  • 1
    Here's an example, I know those numbers and CRS because we use this regularly but you can apply the same offset/scale information in your GIS. You only need the extent (xmin, xmax, ymin, ymax) and the CRS to georeference the native grid. Notice how I use the R function "extent" and "projection" with a PROJ.4 string here. Your GIS is probably going to ask for an offset (e.g. xmin/ymin) and scale (e.g. pixel size, which is 3125m in this case - you can find the range in x and y and see the matrix dimensions divide up by that grain). rpubs.com/cyclemumner/amsr2-grid
    – mdsumner
    Commented Apr 27, 2017 at 11:21
  • This may or may not work: geonet.esri.com/thread/59786 which has a prj file that you can try to use.
    – mkennedy
    Commented Apr 27, 2017 at 22:54
  • 1
    @mdsumner I love this R code integrating download, unzipping, processing, and mapping. I still had projection problems when I added it to Arc, but I fixed it with projectRaster(...). I'll add an answer when I have time, but I can't thank you enough for this.
    – Wassadamo
    Commented Apr 27, 2017 at 23:53


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.