[gdal-dev] Convert NetCDF to GeoTIFF WGS 84

Michael Sumner mdsumner at gmail.com
Wed Feb 22 23:35:23 PST 2023


in short, take the grid specification you want and pass it to gdalwarp, you
need the subdataset syntax of the particular variable

you need target extent "-te xmin ymin xmax ymax" and  target size "-ts
width height" (or use target resolution "-tr ...."  for a given pixel size)
and -t_srs "EPSG:3857" (a compressed lookup syntax of the full srs string,
see it at the bottom of the WKT)

First check you have a fully fledged srs string in the source "Coordinate
System is:"

gdalinfo NETCDF:"/home/me/netcdf_file.nc":hs

if not you can add it with -a_srs in the gdal_translate step below.

Always a good idea to do a quick test first (take away the -b argument once
you're satisfied to write all bands to the final tif).

gdal_translate NETCDF:"/home/me/netcdf_file.nc":hs -b 1 band1.vrt
gdalwarp band1.vrt  tiff_test.tif -ts 4000 4000 -te -1160000.000
6600000.000 40000.000  7800000.000 -t_srs

We can't advise on the right -a_srs if the "Coordinate System is:" element
is missing in the source gdalinfo, please share that output if you have
follow up questions.  For deeper investigation having the actual file can
be necessary.

Consider the -r argument for resampling by gdalwarp, nearest neighbour is
the default.

Finally, you say "WGS84" but provide Pseudo Mercator world grid - sometimes
"WGS84" means "latitude/longitude ..." - but I've just taken your request
as given. The principle always applies, good extent and srs info for the
input, provide any extent, dimension, srs request for the output and the
warper sorts it out.

HTH, Mike



On Wed, Feb 15, 2023 at 5:12 AM Javier Garcia <tirengarfio at gmail.com> wrote:

> Hi,
>
> I would like to convert the next NetCDF file to a GeoTIFF WGS 84.
>
> NetCDF file `gdalinfo` output:
>
> Driver: netCDF/Network Common Data Format
> Files: /home/me/netcdf_file.nc
> Size is 512, 512
> Metadata:
>   NC_GLOBAL#altimetry=altiCERSAT
>   NC_GLOBAL#altitude_resolution=n/a
>   NC_GLOBAL#area=Ireland 2 min wave grid
>   NC_GLOBAL#BETAMAX=1.52
>   NC_GLOBAL#CICE0=0.25
>   NC_GLOBAL#CICEN=0.75
>   NC_GLOBAL#comment=
>   NC_GLOBAL#contact=waves at mycompany.com
>   NC_GLOBAL#Conventions=CF-1.5
>   NC_GLOBAL#creation_date=2017-07-27T12:20:30Z
>   NC_GLOBAL#data_type=SWASH straight grid
>   NC_GLOBAL#easternmost_longitude=-1.0333328
>   NC_GLOBAL#easting=longitude
>   NC_GLOBAL#field_type=hourly
>   NC_GLOBAL#FLAGTR=4
>   NC_GLOBAL#forcing_ice=iceCFSR
>   NC_GLOBAL#forcing_wind=wndCFSR
>   NC_GLOBAL#forecast_range=analysis
>   NC_GLOBAL#forecast_type=hindcast
>   NC_GLOBAL#grid=irluk-2m
>   NC_GLOBAL#grid_projection=n/a
>   NC_GLOBAL#history=2017-07-27T12:20:30Z : Creation
>   NC_GLOBAL#institution=My Company
>   NC_GLOBAL#institution_references=http://www.mycompany.com/
>   NC_GLOBAL#latitude_resolution=   0.0333333
>   NC_GLOBAL#longitude_resolution=   0.0333333
>   NC_GLOBAL#maximum_altitude=9000 m
>   NC_GLOBAL#minimum_altitude=-12000 m
>   NC_GLOBAL#netcdf_version=netCDF 4.3.0
>   NC_GLOBAL#northernmost_latitude=59.5000000
>   NC_GLOBAL#northing=latitude
>   NC_GLOBAL#product_name=ww3.irluk-2m.199501_hs.nc
>   NC_GLOBAL#product_version=1.0
>   NC_GLOBAL#REFCOAST=0.05
>   NC_GLOBAL#references=http://www.mycompany.com/waves/
>   NC_GLOBAL#REFICEBERG=0.3
>   NC_GLOBAL#REFSUBGRID=0.05
>   NC_GLOBAL#run_time=2017-07-27T12:20:30Z
>   NC_GLOBAL#SDS4 namelist parameter WHITECAPWIDTH=0.30000001
>   NC_GLOBAL#source=TWM WAVEWATCH III (R) v4.18
>   NC_GLOBAL#southernmost_latitude=49.5000000
>   NC_GLOBAL#start_date=1995-01-01T00:00:00Z
>   NC_GLOBAL#stop_date=1995-01-31T23:00:00Z
>   NC_GLOBAL#title=TWM SWASH HINDCAST
>   NC_GLOBAL#WAVEWATCH_III_switches=F90 NOGRB NOPA LRB4 SHRD PR3 UQ FLX0
> LN1 ST4 STAB0 NL1 BT4 DB1 MLIM TR0 BS0 IC0 REF1 XX0 WNT1 WNX1 CRT1 CRX1 O0
> O1 O2 O3 O4 O5 O6 O7 011 NC4 TRKNC IS0
>   NC_GLOBAL#WAVEWATCH_III_version_number=4.18b
>   NC_GLOBAL#westernmost_longitude=-12.0000000
> Subdatasets:
>   SUBDATASET_1_NAME=NETCDF:"/home/me/netcdf_file.nc":MAPSTA
>   SUBDATASET_1_DESC=[301x330] status map (16-bit integer)
>   SUBDATASET_2_NAME=NETCDF:"/home/me/netcdf_file.nc":hs
>   SUBDATASET_2_DESC=[744x301x330] sea_surface_wave_significant_height
> (32-bit floating-point)
> 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)
>
>
> I'm expecting as output a file with WGS 84 projection like this:
>
> `gdalinfo` output:
>
>
> Driver: GTiff/GeoTIFF
> Files: tiff_file.tif
> Size is 4000, 4000
> Coordinate System is:
> PROJCRS["WGS 84 / Pseudo-Mercator",
>     BASEGEOGCRS["WGS 84",
>         DATUM["World Geodetic System 1984",
>             ELLIPSOID["WGS 84",6378137,298.257223563,
>                 LENGTHUNIT["metre",1]]],
>         PRIMEM["Greenwich",0,
>             ANGLEUNIT["degree",0.0174532925199433]],
>         ID["EPSG",4326]],
>     CONVERSION["Popular Visualisation Pseudo-Mercator",
>         METHOD["Popular Visualisation Pseudo Mercator",
>             ID["EPSG",1024]],
>         PARAMETER["Latitude of natural origin",0,
>             ANGLEUNIT["degree",0.0174532925199433],
>             ID["EPSG",8801]],
>         PARAMETER["Longitude of natural origin",0,
>             ANGLEUNIT["degree",0.0174532925199433],
>             ID["EPSG",8802]],
>         PARAMETER["False easting",0,
>             LENGTHUNIT["metre",1],
>             ID["EPSG",8806]],
>         PARAMETER["False northing",0,
>             LENGTHUNIT["metre",1],
>             ID["EPSG",8807]]],
>     CS[Cartesian,2],
>         AXIS["easting (X)",east,
>             ORDER[1],
>             LENGTHUNIT["metre",1]],
>         AXIS["northing (Y)",north,
>             ORDER[2],
>             LENGTHUNIT["metre",1]],
>     USAGE[
>         SCOPE["unknown"],
>         AREA["World - 85°S to 85°N"],
>         BBOX[-85.06,-180,85.06,180]],
>     ID["EPSG",3857]]
> Data axis to CRS axis mapping: 1,2
> Origin = (-1160000.000000000000000,7799999.999999998137355)
> Pixel Size = (300.000000000000000,-300.000000000000000)
> Metadata:
>   AREA_OR_POINT=Area
> Image Structure Metadata:
>   COMPRESSION=LZW
>   INTERLEAVE=PIXEL
> Corner Coordinates:
> Upper Left  (-1160000.000, 7800000.000) ( 10d25'13.65"W, 57d11'40.60"N)
> Lower Left  (-1160000.000, 6600000.000) ( 10d25'13.65"W, 50d52'46.07"N)
> Upper Right (   40000.000, 7800000.000) (  0d21'33.57"E, 57d11'40.60"N)
> Lower Right (   40000.000, 6600000.000) (  0d21'33.57"E, 50d52'46.07"N)
> Center      ( -560000.000, 7200000.000) (  5d 1'50.04"W, 54d 9'26.21"N)
> Band 1 Block=4000x1 Type=Byte, ColorInterp=Red
>   Mask Flags: PER_DATASET ALPHA
> Band 2 Block=4000x1 Type=Byte, ColorInterp=Green
>   Mask Flags: PER_DATASET ALPHA
> Band 3 Block=4000x1 Type=Byte, ColorInterp=Blue
>   Mask Flags: PER_DATASET ALPHA
> Band 4 Block=4000x1 Type=Byte, ColorInterp=Alpha
>
>
> Any help will be appreciated.
>
> Javier
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
>


-- 
Michael Sumner
Software and Database Engineer
Australian Antarctic Division
Hobart, Australia
e-mail: mdsumner at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20230223/f19044fb/attachment.htm>


More information about the gdal-dev mailing list