In [30]:
import numpy as np
import pandas as pd
import netCDF4 as nc
from glob import glob
import os
import shapely.geometry as shpg
from shapely.ops import cascaded_union
import gdal
import time
from ipywidgets import *
import matplotlib.pyplot as plt
from osgeo import gdal
% matplotlib inline

In [2]:
def get_buffered_ext(shape, buff_dist):
    """Create a buffer around a feature and return a union of shape+buffer.
    
    Parameters
    ----------
    shape: shapely.geometry.polygon.Polygon
        A shapely Polygon object
    buff_dist: float
        Width of the buffer (in units of polygons nodes)
    
    Returns
    -------
    total: shapely.geometry.polygon.Polygon
         A shapely Polygon object as union of shape and buffer
    """
    
    buffer = shape.buffer(buff_dist)
    total = cascaded_union(buffer, shape)
    
    return total

In [3]:
def pixelOffset2coord(rasterfn,xOffset,yOffset):
    """Change pixel coordinates to coordinates"""
    raster = gdal.Open(rasterfn)
    geotransform = raster.GetGeoTransform()
    originX = geotransform[0]
    originY = geotransform[3]
    pixelWidth = geotransform[1]
    pixelHeight = geotransform[5]
    coordX = originX + pixelWidth * xOffset
    coordY = originY + pixelHeight * yOffset
    return coordX, coordY

In [4]:
def raster2array(rasterfn):
    """Convert a raster to numpy array
    
    Parameters
    ----------
    rasterfn: Path to raster to be read (must be gdal readable)
    
    Returns
    -------
    array: numpy.array
        A numpy array with pixel values
    extent: list
        A Python list containing top left x, w-e pixel resolution, top left y, n-s pixel resolution
    """
    
    raster = gdal.Open(rasterfn)
    geotransform = raster.GetGeoTransform()
    extent = [geotransform[0], geotransform[1], geotransform[3], geotransform[5]]
    band = raster.GetRasterBand(1)
    array = band.ReadAsArray()
    
    return array, extent

In [5]:
def getNoDataValue(rasterfn):
    """Get no data value from a raster
    
    Parameters
    ----------
    rasterfn: Path to raster to be read (must be gdal readable)
    
    Returns
    -------
    No data value as defined in raster metadata
    """
    
    raster = gdal.Open(rasterfn)
    band = raster.GetRasterBand(1)
    
    return band.GetNoDataValue()

In [6]:
def strucinfo(rootgrp):
    """Print structure info of netCDF4 file
    
    Parameters
    ----------
    rootgrp: A netCDF4.Dataset object
    """
    
    def walktree(top):

        values = top.groups.values()
        yield values
        for value in top.groups.values():
            for children in walktree(value):
                yield children
    print (rootgrp)
    for children in walktree(rootgrp):
        for child in children:
            print (child)

In [7]:
def ncdump(nc_fid, verb=True):
    '''
    Adapted from Chris Slocum, modified for Python 3.5 & extended for netCDF4 (groups) by Johannes Landmann.
    
    ncdump outputs dimensions, variables and their attribute information.
    The information is similar to that of NCAR's ncdump utility.
    ncdump requires a valid instance of Dataset.
 
    Parameters
    ----------
    nc_fid : netCDF4.Dataset
        A netCDF4 dateset object
    verb : Boolean
        whether or not nc_attrs, nc_dims, and nc_vars are printed
 
    Returns
    -------
    nc_attrs : list
        A Python list of the NetCDF file global attributes
    nc_dims : list
        A Python list of the NetCDF file dimensions
    nc_vars : list
        A Python list of the NetCDF file variables
    '''
    def print_ncattr(key):
        """
        Prints the NetCDF file attributes for a given key
 
        Parameters
        ----------
        key : unicode
            a valid netCDF4.Dataset.variables key
        """
        try:
            print ("\t\ttype:", repr(nc_fid.variables[key].dtype))
            for ncattr in nc_fid.variables[key].ncattrs():
                print ('\t\t%s:' % ncattr,\
                      repr(nc_fid.variables[key].getncattr(ncattr)))
        except KeyError:
            print ("\t\tWARNING: %s does not contain variable attributes" % key)
 
    # NetCDF global attributes
    nc_attrs = nc_fid.ncattrs()
    if verb:
        print ("NetCDF Global Attributes:")
        for nc_attr in nc_attrs:
            print ('\t%s:' % nc_attr, repr(nc_fid.getncattr(nc_attr)))
    nc_dims = [dim for dim in nc_fid.dimensions]  # list of nc dimensions
    # Dimension shape information.
    if verb:
        print ("NetCDF dimension information:")
        for dim in nc_dims:
            print ("\tName:", dim) 
            print ("\t\tsize:", len(nc_fid.dimensions[dim]))
            print_ncattr(dim)
    # Variable information.
    nc_vars = [var for var in nc_fid.variables]  # list of nc variables
    if verb:
        print ("NetCDF variable information:")
        for var in nc_vars:
            if var not in nc_dims:
                print ('\tName:', var)
                print ("\t\tdimensions:", nc_fid.variables[var].dimensions)
                print ("\t\tsize:", nc_fid.variables[var].size)
                print_ncattr(var)
    return nc_attrs, nc_dims, nc_vars

In [15]:
pdf = pd.read_csv('C:\\Users\\jlandman\\Desktop\\database_Fischer_et_al._2015_The_Cryosphere.txt', sep = '\t', encoding='iso-8859-1')
pdf.ID_SGI1973 = pdf.ID_SGI1973.astype('str')
#pda = pd.read_excel('C:\\Users\\jlandman\\Desktop\\__data-request_GLACIER.xlsx', encoding='iso-8859-1')
#pdd = pd.read_excel('C:\\Users\\jlandman\\Desktop\\__data-request_CHANGE.xlsx', encoding='iso-8859-1')
pda = pd.read_csv('C:\\Users\\jlandman\\Desktop\\DOI-WGMS-FoG-2016-08\\WGMS-FoG-2016-08-A-GLACIER.csv', encoding='iso-8859-1')
pdd = pd.read_csv('C:\\Users\\jlandman\\Desktop\\DOI-WGMS-FoG-2016-08\\WGMS-FoG-2016-08-D-CHANGE.csv', encoding='iso-8859-1')
pdd = pdd[~pd.isnull(pdd.REMARKS)]

In [9]:
def FoG_equiv(sgi1973_code):
    """Find the FoG_ID equivalent to a given SGI1973 ID"""
    sgi1973_code = sgi1973_code.lstrip('0')
    try:
        sgi2010 = pdf[pdf.ID_SGI1973.str.contains(sgi1973_code)].Code_SGI2010.iloc[0]
    except:
        wgms_id = np.nan
        return wgms_id
    wgms_id = pdd[pdd.REMARKS.str.contains(str(sgi2010))].WGMS_ID.iloc[0]
    return wgms_id

In [10]:
def make_nc4(fpath, data, extent, location):
    """Compile a netCDF4 dataset"""
    
    with nc.Dataset(fpath, 'w',  format='NETCDF4_CLASSIC') as dataset:
        
        # get the WGMS_ID (a bit complicated) in order to be able to retrieve data from the FoG tables
        sgi_73_id  = os.path.basename(fpath).split('_')[1].split('.')[0]
        wgms_id = FoG_equiv(sgi_73_id)
        if np.isnan(wgms_id):
            print("No equivalent for SGI1973 %s" % sgi_73_id)
            return
        
        # extract/calculate the data
        lats_out = np.arange(extent[2] - data.shape[0] * extent[3], extent[2], extent[3])
        lons_out = np.arange(extent[0] - data.shape[1] * extent[1], extent[1], extent[1])
        change_out = data[...,0]
        unc_out = data[...,1]
        mask_out = data[...,2]
        
        # create dimensions
        dataset.createDimension('latitude', data.shape[0])
        dataset.createDimension('longitude', data.shape[1])
        dataset.createDimension('time', None)
        
        # create some metadata attributes
        dataset.WGMS_ID = wgms_id
        try:
            dataset.region = pda[pda.WGMS_ID == wgms_id].REGION.iloc[0]
        except:
            pass
        try:
            dataset.subregion = pda[pda.WGMS_ID == wgms_id].SUBREGION.iloc[0]
        except:
            pass
        try:
            dataset.reference = pdd[pdd.WGMS_ID == wgms_id].REFERENCE.iloc[0]
        except:
            pass
        dataset.source = 'World Glacier Monitoring Service, Zurich, Switzerland' 
        dataset.history = 'Created ' + time.ctime(time.time())
        dataset._FillValue = -9999.
        
        # create variables
        lats = dataset.createVariable('latitude', np.float32, ('latitude',), zlib=True, least_significant_digit=5)
        lons = dataset.createVariable('longitude', np.float32, ('longitude',), zlib=True, least_significant_digit=5)
        
        # Assign units attributes to coordinate var data. This attaches a
        # text attribute to each of the coordinate variables, containing the
        # units.
        lats.units = 'degrees_north'
        lons.units = 'degrees_east'
        
        # write data to coordinate vars.
        lats[:] = lats_out
        lons[:] = lons_out
        
        # create the pressure and temperature variables 
        change = dataset.createVariable('change', float, ('latitude','longitude'), zlib=True, least_significant_digit=3)
        unc = dataset.createVariable('uncertainty', float, ('latitude','longitude'), zlib=True,least_significant_digit=3)
        mask = dataset.createVariable('mask', int, ('latitude','longitude'), zlib=True, least_significant_digit=3)    
        
        # set the units attribute.
        change.units = 'm'
        unc.units = 'm'
        mask.units = ''
        
        # write data to variables.
        change[:] = change_out
        unc[:] = unc_out
        mask[:] = mask_out

In [11]:
def make_nc4_groups(outpath, data_e, data_c, e_times, c_periods, extent, location):
    """Compile a netCDF4 dataset to the given outpath.
    
    Parameters
    -----------
    outpath: Path for the output netCDF4 file
    data_e: Elevation data as array (third dimension contains elevation and its uncertainty alternately)
    data_c: Change data as array (third dimension contains change and its uncertainty alternately)
    e_times: Times (in years AD) of elevation grids (format: YYYY)
    c_periods: Reference periods (in years AD) of change grids (format: Y2Y2Y2Y2Y1Y1Y1Y1)
    extent: Geographical extent of the data
    location: Example parsable argument, here the political unit
    """
    
    # get WGMS_ID for retrieving data from FoG
    sgi_73_id  = os.path.basename(outpath).split('_')[1].split('.')[0]
    wgms_id = FoG_equiv(sgi_73_id)
    if np.isnan(wgms_id):
        print("No equivalent for SGI1973 %s" % sgi_73_id)
        return
    
    with nc.Dataset(outpath, 'w') as rootgrp:
        
        chggrp = rootgrp.createGroup("change")
        elvgrp = rootgrp.createGroup("elevation")
        
        # extract/calculate the data
        latsc_out = np.arange(extent[2] - data_c.shape[0] * extent[3], extent[2], extent[3])
        lonsc_out = np.arange(extent[0] - data_c.shape[1] * extent[1], extent[1], extent[1])
        latse_out = np.arange(extent[2] - data_e.shape[0] * extent[3], extent[2], extent[3])
        lonse_out = np.arange(extent[0] - data_e.shape[1] * extent[1], extent[1], extent[1])
        
        # it cannot guarantee everything, but at least it reveals if there could be missing data or uncertainties
        assert data_c.shape[2] % 2 == 0
        assert data_e.shape[2] % 2 == 0
        
        # grab the data
        chg_out = data_c[:,:,::2]      # get every second element of the third dimension, starting at 0
        chg_unc_out = data_c[:,:,1::2] # get every second element of the third dimension, starting at 1
        elev_out = data_e[:,:,::2]     # get every second element of the third dimension, starting at 0
        elev_unc_out = data_e[:,:,1::2]# get every second element of the third dimension, starting at 1
        
        # create dimensions
        elvgrp.createDimension('latitude', data_e.shape[0])
        elvgrp.createDimension('longitude', data_e.shape[1])
        elvgrp.createDimension('time', None)
        
        chggrp.createDimension('latitude', data_c.shape[0])
        chggrp.createDimension('longitude', data_c.shape[1])
        chggrp.createDimension('level', None)
        
        # create some metadata attributes from FoG
        rootgrp.WGMS_ID = wgms_id
        gseries = pda[pda.WGMS_ID == wgms_id]
        if not gseries.empty:
            rootgrp.glaciername = pda[pda.WGMS_ID == wgms_id].NAME.iloc[0]
            rootgrp.region = pda[pda.WGMS_ID == wgms_id]['GEO-REGION_CODE'].iloc[0]
            rootgrp.subregion = pda[pda.WGMS_ID == wgms_id]['GEO-SUBREGION_CODE'].iloc[0]
            rootgrp.references = pdd[pdd.WGMS_ID == wgms_id].REFERENCE.iloc[0]
        
        rootgrp.conventions = 'CF-1.6'
        rootgrp.title = 'Glacier surface height and its changes for %s (FoG ID %s )' % (pda[pda.WGMS_ID == wgms_id].NAME.iloc[0], wgms_id)
        rootgrp.institution = 'World Glacier Monitoring Service (WGMS), Zurich, Switzerland'
        rootgrp.source = 'Space/terrestrial remote sensing or maps'
        rootgrp.comment = 'Data sources are documented in FoG dataset'
        rootgrp.contact = 'wgms@geo.uzh.ch' 
        rootgrp.history = 'Created ' + time.ctime(time.time())
        rootgrp._FillValue = -9999.000000
        #rootgrp._FillValue = 9.96920996839e+36
        
        # create variables
        latse = elvgrp.createVariable('latitude', np.float32, ('latitude',), zlib=True, least_significant_digit=5)
        lonse = elvgrp.createVariable('longitude', np.float32, ('longitude',), zlib=True, least_significant_digit=5)
        timese = elvgrp.createVariable('time', np.int16, ('time',), zlib=True, least_significant_digit=0)
        
        latsc = chggrp.createVariable('latitude', np.float32, ('latitude',), zlib=True, least_significant_digit=5)
        lonsc = chggrp.createVariable('longitude', np.float32, ('longitude',), zlib=True, least_significant_digit=5)
        levelsc = chggrp.createVariable('level', np.int32, ('level',), zlib=True, least_significant_digit=0)
        
        # Assign units attributes to coordinate var data. This attaches a
        # text attribute to each of the coordinate variables, containing the units
        latse.units = 'degree_north'
        latse.long_name = 'Latitude' 
        latse.standard_name = 'latitude'

        lonse.units = 'degree_east'
        lonse.long_name = 'Longitude'
        lonse.standard_name = 'longitude'
        
        timese.units = 'years since 0000-01-01 00:00:00'
        timese.calendar = 'gregorian'
        
        latsc.units = 'degree_north'
        latsc.long_name = 'Latitude'
        latsc.standard_name = 'latitude'
        lonsc.units = 'degree_east'
        lonsc.long_name = 'Longitude'
        latse.standard_name = 'latitude'       
        
        levelsc.long_name = 'Subtraction grids'   # good idea? dimension- and unitless coordinate
        
        # write data to coordinate vars
        latse[:] = latse_out
        lonse[:] = lonse_out
        timese[:] = e_times
        
        
        latsc[:] = latsc_out
        lonsc[:] = lonsc_out
        
        # create the elevation and its uncertainty as variables
        chg = chggrp.createVariable('change', float, ('level', 'latitude','longitude'), zlib=True, least_significant_digit=3)
        chg_unc = chggrp.createVariable('uncertainty', float, ('level', 'latitude','longitude'), zlib=True,least_significant_digit=3)
    
        # create the change and its uncertainty as variables
        elev = elvgrp.createVariable('elevation', float, ('time','latitude','longitude'), zlib=True, least_significant_digit=3)
        elev_unc = elvgrp.createVariable('uncertainty', float, ('time','latitude','longitude'), zlib=True,least_significant_digit=3)
        
        # set the units attribute
        chg.units = 'm'
        chg.standard_name = 'land_surface_height_change'  # new invention
        chg_unc.units = 'm'
        chg_unc.standard_name = 'land_surface_height_change_uncertainty'  # new invention
        elev.units = 'm'
        elev.standard_name = 'land_ice_surface_height'  # new invention
        elev_unc.units = 'm'
        elev.standard_name = 'land_ice_surface_height_uncertainty'  # new invention
        
        # specify the coordinate axes
        chg._CoordinateAxes = "level lat lon"
        chg_unc._CoordinateAxes = "level lat lon"
        elev._CoordinateAxes = "time lat lon"
        elev_unc._CoordinateAxes = "time lat lon"
        latse._CoordinateAxisType = "Lat"
        lonse._CoordinateAxisType = "Lon"
        timese._CoordinateAxisType = "Times"
        latsc._CoordinateAxisType = "Lat"
        lonsc._CoordinateAxisType = "Lon"
        levelsc._CoordinateAxisType = "Times"
        
        # simplify change periods/time for indexing
        tim_range = np.arange(len(e_times))
        chg_range = np.arange(len(c_periods))
        
        # make th data arrays fit the netcdf variables
        chg_out = np.rollaxis(chg_out, -1, 0)
        chg_unc_out = np.rollaxis(chg_unc_out, -1, 0)
        elev_out = np.rollaxis(elev_out, -1, 0)
        elev_unc_out = np.rollaxis(elev_unc_out, -1, 0)
        
        # write data
        chg[:] = chg_out    
        chg_unc[:] = chg_unc_out    
        elev[:] = elev_out
        elev_unc[:] = elev_unc_out

Read the sample data


In [16]:
fpaths = glob("C:\\Users\\jlandman\\Desktop\\model_db\\data\\glacier_dh_rasterized_fischer et al. 2015\\dh_*.*")

e_times = [1986,2016]
c_periods = [20161986, 19861850]

for fp in fpaths:
    changes, extent = raster2array(fp)
    changes_uncertainty, extent = raster2array(fp)
    elev, extent = raster2array(fp)
    elev_uncertainty, extent = raster2array(fp)
    dvi=np.dstack((changes,changes, changes))
    dvi_big = np.dstack((changes, changes_uncertainty, elev, elev_uncertainty))
    
    #make_nc4('C:\\users\\jlandman\\desktop\\testnetCDFs\\simple\\dh_'+os.path.basename(fp).split('_')[1].split('.')[0]+'.nc', dvi, extent, location='Switzerland')
    make_nc4_groups('C:\\users\\jlandman\\desktop\\testnetCDFs\\groups\\dh_'+os.path.basename(fp).split('_')[1].split('.')[0]+'.nc', dvi_big, dvi_big, e_times, c_periods, extent, location='Switzerland')


No equivalent for SGI1973 0236
No equivalent for SGI1973 0315
No equivalent for SGI1973 0328
No equivalent for SGI1973 0337
No equivalent for SGI1973 0342
No equivalent for SGI1973 0348
No equivalent for SGI1973 0349
No equivalent for SGI1973 0352
No equivalent for SGI1973 0356
No equivalent for SGI1973 0359
No equivalent for SGI1973 0368
No equivalent for SGI1973 0369
No equivalent for SGI1973 0381
No equivalent for SGI1973 0389
No equivalent for SGI1973 0394
No equivalent for SGI1973 0395
No equivalent for SGI1973 0396
No equivalent for SGI1973 0397
No equivalent for SGI1973 0398
No equivalent for SGI1973 0402
No equivalent for SGI1973 0404
No equivalent for SGI1973 0406
No equivalent for SGI1973 0412
No equivalent for SGI1973 0414
No equivalent for SGI1973 0420
No equivalent for SGI1973 0425
No equivalent for SGI1973 0431
No equivalent for SGI1973 0437
No equivalent for SGI1973 0444
No equivalent for SGI1973 0448
No equivalent for SGI1973 0449
No equivalent for SGI1973 0451
No equivalent for SGI1973 0461
No equivalent for SGI1973 0463
No equivalent for SGI1973 0470
No equivalent for SGI1973 0479
No equivalent for SGI1973 0493
No equivalent for SGI1973 0496
No equivalent for SGI1973 0497
No equivalent for SGI1973 0503
No equivalent for SGI1973 0516
No equivalent for SGI1973 0530
No equivalent for SGI1973 0531
No equivalent for SGI1973 0535
No equivalent for SGI1973 0537
No equivalent for SGI1973 0539
No equivalent for SGI1973 0540
No equivalent for SGI1973 0541
No equivalent for SGI1973 0554
No equivalent for SGI1973 0562
No equivalent for SGI1973 0565
No equivalent for SGI1973 0570
No equivalent for SGI1973 0575
No equivalent for SGI1973 0579
No equivalent for SGI1973 0582
No equivalent for SGI1973 0591
No equivalent for SGI1973 0593
No equivalent for SGI1973 0594
No equivalent for SGI1973 0614
No equivalent for SGI1973 0637
No equivalent for SGI1973 0658
No equivalent for SGI1973 0684
No equivalent for SGI1973 0698
No equivalent for SGI1973 0701
No equivalent for SGI1973 0713
No equivalent for SGI1973 0720
No equivalent for SGI1973 0729
No equivalent for SGI1973 0733
No equivalent for SGI1973 0737
No equivalent for SGI1973 0745
No equivalent for SGI1973 0751
No equivalent for SGI1973 0753
No equivalent for SGI1973 0756
No equivalent for SGI1973 0758
No equivalent for SGI1973 0776
No equivalent for SGI1973 0779
No equivalent for SGI1973 0791
No equivalent for SGI1973 0811
No equivalent for SGI1973 0815
No equivalent for SGI1973 0823
No equivalent for SGI1973 0831
No equivalent for SGI1973 0835
No equivalent for SGI1973 0848
No equivalent for SGI1973 0853
No equivalent for SGI1973 0856
No equivalent for SGI1973 0862
No equivalent for SGI1973 0871
No equivalent for SGI1973 0873
No equivalent for SGI1973 0874
No equivalent for SGI1973 0877
No equivalent for SGI1973 0878
No equivalent for SGI1973 0888
No equivalent for SGI1973 0889
No equivalent for SGI1973 0897
No equivalent for SGI1973 0904
No equivalent for SGI1973 0911
No equivalent for SGI1973 0916
No equivalent for SGI1973 0921
No equivalent for SGI1973 0928
No equivalent for SGI1973 0934
No equivalent for SGI1973 0963
No equivalent for SGI1973 0966
No equivalent for SGI1973 0973
No equivalent for SGI1973 0990
No equivalent for SGI1973 0994
No equivalent for SGI1973 1001
No equivalent for SGI1973 1002
No equivalent for SGI1973 1004
No equivalent for SGI1973 1005
No equivalent for SGI1973 1007
No equivalent for SGI1973 1008
No equivalent for SGI1973 1011
No equivalent for SGI1973 1012
No equivalent for SGI1973 1013
No equivalent for SGI1973 1014
No equivalent for SGI1973 1016
No equivalent for SGI1973 1019
No equivalent for SGI1973 1020
No equivalent for SGI1973 1021
No equivalent for SGI1973 1022
No equivalent for SGI1973 1023
No equivalent for SGI1973 1025
No equivalent for SGI1973 1028
No equivalent for SGI1973 1031
No equivalent for SGI1973 1035
No equivalent for SGI1973 1040
No equivalent for SGI1973 1043
No equivalent for SGI1973 1046
No equivalent for SGI1973 1047
No equivalent for SGI1973 1048
No equivalent for SGI1973 1050
No equivalent for SGI1973 1052
No equivalent for SGI1973 1053
No equivalent for SGI1973 1055
No equivalent for SGI1973 1056
No equivalent for SGI1973 1057
No equivalent for SGI1973 1058
No equivalent for SGI1973 1059
No equivalent for SGI1973 1061
No equivalent for SGI1973 1063
No equivalent for SGI1973 1064
No equivalent for SGI1973 1065
No equivalent for SGI1973 1067
No equivalent for SGI1973 1068
No equivalent for SGI1973 1069
No equivalent for SGI1973 1070
No equivalent for SGI1973 1072
No equivalent for SGI1973 1073
No equivalent for SGI1973 1075
No equivalent for SGI1973 1077
No equivalent for SGI1973 1078
No equivalent for SGI1973 1079
No equivalent for SGI1973 1080
No equivalent for SGI1973 1081
No equivalent for SGI1973 1083
No equivalent for SGI1973 1086
No equivalent for SGI1973 1087
No equivalent for SGI1973 1088
No equivalent for SGI1973 1090
No equivalent for SGI1973 1092
No equivalent for SGI1973 1094
No equivalent for SGI1973 1095
No equivalent for SGI1973 1097
No equivalent for SGI1973 1098
No equivalent for SGI1973 1099
No equivalent for SGI1973 1100
No equivalent for SGI1973 1101
No equivalent for SGI1973 1102
No equivalent for SGI1973 1103
No equivalent for SGI1973 1105
No equivalent for SGI1973 1106
No equivalent for SGI1973 1108
No equivalent for SGI1973 1110
No equivalent for SGI1973 1112
No equivalent for SGI1973 1113
No equivalent for SGI1973 1114
No equivalent for SGI1973 1115
No equivalent for SGI1973 1117
No equivalent for SGI1973 1119
No equivalent for SGI1973 1120
No equivalent for SGI1973 1121
No equivalent for SGI1973 1122
No equivalent for SGI1973 1124
No equivalent for SGI1973 1127
No equivalent for SGI1973 1128
No equivalent for SGI1973 1129
No equivalent for SGI1973 1130
No equivalent for SGI1973 1131
No equivalent for SGI1973 1133
No equivalent for SGI1973 1135
No equivalent for SGI1973 1136
No equivalent for SGI1973 1137
No equivalent for SGI1973 1141
No equivalent for SGI1973 1142
No equivalent for SGI1973 1143
No equivalent for SGI1973 1146
No equivalent for SGI1973 1147
No equivalent for SGI1973 1152
No equivalent for SGI1973 1155
No equivalent for SGI1973 1159
No equivalent for SGI1973 1161
No equivalent for SGI1973 1163
No equivalent for SGI1973 1164
No equivalent for SGI1973 1165
No equivalent for SGI1973 1166
No equivalent for SGI1973 1167
No equivalent for SGI1973 1171
No equivalent for SGI1973 1174
No equivalent for SGI1973 1176
No equivalent for SGI1973 1180
No equivalent for SGI1973 1182
No equivalent for SGI1973 1184
No equivalent for SGI1973 1185
No equivalent for SGI1973 1186
No equivalent for SGI1973 1189
No equivalent for SGI1973 1190
No equivalent for SGI1973 1192
No equivalent for SGI1973 1193
No equivalent for SGI1973 1197
No equivalent for SGI1973 1198
No equivalent for SGI1973 1200
No equivalent for SGI1973 1202
No equivalent for SGI1973 1206
No equivalent for SGI1973 1207
No equivalent for SGI1973 1208
No equivalent for SGI1973 1212
No equivalent for SGI1973 1215
No equivalent for SGI1973 1217
No equivalent for SGI1973 1219
No equivalent for SGI1973 1220
No equivalent for SGI1973 1221
No equivalent for SGI1973 1222
No equivalent for SGI1973 1225
No equivalent for SGI1973 1226
No equivalent for SGI1973 1227
No equivalent for SGI1973 1228
No equivalent for SGI1973 1229
No equivalent for SGI1973 1230
No equivalent for SGI1973 1231
No equivalent for SGI1973 1233
No equivalent for SGI1973 1234
No equivalent for SGI1973 1235
No equivalent for SGI1973 1236
No equivalent for SGI1973 1237
No equivalent for SGI1973 1238
No equivalent for SGI1973 1239
No equivalent for SGI1973 1240
No equivalent for SGI1973 1242
No equivalent for SGI1973 1243
No equivalent for SGI1973 1244
No equivalent for SGI1973 1245
No equivalent for SGI1973 1246
No equivalent for SGI1973 1247
No equivalent for SGI1973 1253
No equivalent for SGI1973 1254
No equivalent for SGI1973 1255
No equivalent for SGI1973 1256
No equivalent for SGI1973 1258
No equivalent for SGI1973 1259
No equivalent for SGI1973 1262
No equivalent for SGI1973 1263
No equivalent for SGI1973 1264
No equivalent for SGI1973 1269
No equivalent for SGI1973 1270
No equivalent for SGI1973 1274
No equivalent for SGI1973 1275
No equivalent for SGI1973 1276
No equivalent for SGI1973 1277
No equivalent for SGI1973 1278
No equivalent for SGI1973 1279
No equivalent for SGI1973 1281
No equivalent for SGI1973 1282
No equivalent for SGI1973 1283
No equivalent for SGI1973 1284
No equivalent for SGI1973 1286
No equivalent for SGI1973 1287
No equivalent for SGI1973 1288
No equivalent for SGI1973 1290
No equivalent for SGI1973 1292
No equivalent for SGI1973 1294
No equivalent for SGI1973 1295
No equivalent for SGI1973 1297
No equivalent for SGI1973 1298
No equivalent for SGI1973 1299
No equivalent for SGI1973 1300
No equivalent for SGI1973 1312
No equivalent for SGI1973 1313
No equivalent for SGI1973 1315
No equivalent for SGI1973 1317
No equivalent for SGI1973 1318
No equivalent for SGI1973 1322
No equivalent for SGI1973 1326
No equivalent for SGI1973 1328
No equivalent for SGI1973 1329
No equivalent for SGI1973 1331
No equivalent for SGI1973 1332
No equivalent for SGI1973 1336
No equivalent for SGI1973 1337
No equivalent for SGI1973 1338
No equivalent for SGI1973 1340
No equivalent for SGI1973 1342
No equivalent for SGI1973 1344
No equivalent for SGI1973 1348
No equivalent for SGI1973 1351
No equivalent for SGI1973 1352
No equivalent for SGI1973 1354
No equivalent for SGI1973 1356
No equivalent for SGI1973 1357
No equivalent for SGI1973 1358
No equivalent for SGI1973 1359
No equivalent for SGI1973 1360
No equivalent for SGI1973 1361
No equivalent for SGI1973 1367
No equivalent for SGI1973 1368
No equivalent for SGI1973 1369
No equivalent for SGI1973 1370
No equivalent for SGI1973 1372
No equivalent for SGI1973 1373
No equivalent for SGI1973 1374
No equivalent for SGI1973 1375
No equivalent for SGI1973 1376
No equivalent for SGI1973 1379
No equivalent for SGI1973 1380
No equivalent for SGI1973 1381
No equivalent for SGI1973 1382
No equivalent for SGI1973 1385
No equivalent for SGI1973 1387
No equivalent for SGI1973 1389
No equivalent for SGI1973 1391
No equivalent for SGI1973 1392
No equivalent for SGI1973 1394
No equivalent for SGI1973 1395
No equivalent for SGI1973 1396
No equivalent for SGI1973 1397
No equivalent for SGI1973 1398
No equivalent for SGI1973 1399
No equivalent for SGI1973 1400
No equivalent for SGI1973 1402
No equivalent for SGI1973 1404
No equivalent for SGI1973 1405
No equivalent for SGI1973 1406
No equivalent for SGI1973 1411
No equivalent for SGI1973 1412
No equivalent for SGI1973 1414
No equivalent for SGI1973 1415
No equivalent for SGI1973 1417
No equivalent for SGI1973 1418
No equivalent for SGI1973 1419
No equivalent for SGI1973 1420
No equivalent for SGI1973 1421
No equivalent for SGI1973 1422
No equivalent for SGI1973 1423
No equivalent for SGI1973 1424
No equivalent for SGI1973 1425
No equivalent for SGI1973 1427
No equivalent for SGI1973 1428
No equivalent for SGI1973 1430
No equivalent for SGI1973 1431
No equivalent for SGI1973 1434
No equivalent for SGI1973 1437
No equivalent for SGI1973 1438
No equivalent for SGI1973 1439
No equivalent for SGI1973 1441
No equivalent for SGI1973 1443
No equivalent for SGI1973 1444
No equivalent for SGI1973 1445
No equivalent for SGI1973 1446
No equivalent for SGI1973 1447
No equivalent for SGI1973 1448
No equivalent for SGI1973 1449
No equivalent for SGI1973 1450
No equivalent for SGI1973 1451
No equivalent for SGI1973 1453
No equivalent for SGI1973 1456
No equivalent for SGI1973 1460
No equivalent for SGI1973 1461
No equivalent for SGI1973 1463
No equivalent for SGI1973 1464
No equivalent for SGI1973 1465
No equivalent for SGI1973 1467
No equivalent for SGI1973 1468
No equivalent for SGI1973 1469
No equivalent for SGI1973 1470
No equivalent for SGI1973 1474
No equivalent for SGI1973 1478
No equivalent for SGI1973 1479
No equivalent for SGI1973 1481
No equivalent for SGI1973 1482
No equivalent for SGI1973 1483
No equivalent for SGI1973 1484
No equivalent for SGI1973 1493
No equivalent for SGI1973 1496
No equivalent for SGI1973 1497
No equivalent for SGI1973 1499
No equivalent for SGI1973 1500
No equivalent for SGI1973 1503
No equivalent for SGI1973 1506
No equivalent for SGI1973 1510
No equivalent for SGI1973 1512
No equivalent for SGI1973 1515
No equivalent for SGI1973 1516
No equivalent for SGI1973 1520
No equivalent for SGI1973 1523
No equivalent for SGI1973 1525
No equivalent for SGI1973 1526
No equivalent for SGI1973 1528
No equivalent for SGI1973 1530
No equivalent for SGI1973 1531
No equivalent for SGI1973 1532
No equivalent for SGI1973 1535
No equivalent for SGI1973 1536
No equivalent for SGI1973 1537
No equivalent for SGI1973 1538
No equivalent for SGI1973 1539
No equivalent for SGI1973 1540
No equivalent for SGI1973 1541
No equivalent for SGI1973 1542
No equivalent for SGI1973 1543
No equivalent for SGI1973 1545
No equivalent for SGI1973 1546
No equivalent for SGI1973 1547
No equivalent for SGI1973 1548
No equivalent for SGI1973 1550
No equivalent for SGI1973 1552
No equivalent for SGI1973 1554
No equivalent for SGI1973 1556
No equivalent for SGI1973 1558
No equivalent for SGI1973 1559
No equivalent for SGI1973 1560
No equivalent for SGI1973 1562
No equivalent for SGI1973 1564
No equivalent for SGI1973 1565
No equivalent for SGI1973 1567
No equivalent for SGI1973 1568
No equivalent for SGI1973 1570
No equivalent for SGI1973 1574
No equivalent for SGI1973 1575
No equivalent for SGI1973 1576
No equivalent for SGI1973 1578
No equivalent for SGI1973 1579
No equivalent for SGI1973 1581
No equivalent for SGI1973 1582
No equivalent for SGI1973 1584
No equivalent for SGI1973 1586
No equivalent for SGI1973 1587
No equivalent for SGI1973 1591
No equivalent for SGI1973 1593
No equivalent for SGI1973 1594
No equivalent for SGI1973 1595
No equivalent for SGI1973 1601
No equivalent for SGI1973 1606
No equivalent for SGI1973 1610
No equivalent for SGI1973 1611
No equivalent for SGI1973 1614
No equivalent for SGI1973 1616
No equivalent for SGI1973 1620
No equivalent for SGI1973 1621
No equivalent for SGI1973 1623
No equivalent for SGI1973 1624
No equivalent for SGI1973 1627
No equivalent for SGI1973 1630
No equivalent for SGI1973 1637
No equivalent for SGI1973 1640
No equivalent for SGI1973 1646
No equivalent for SGI1973 1649
No equivalent for SGI1973 1650
No equivalent for SGI1973 1653
No equivalent for SGI1973 1658
No equivalent for SGI1973 1661
No equivalent for SGI1973 1663
No equivalent for SGI1973 1664
No equivalent for SGI1973 1665
No equivalent for SGI1973 1667
No equivalent for SGI1973 1669
No equivalent for SGI1973 1671
No equivalent for SGI1973 1673
No equivalent for SGI1973 1674
No equivalent for SGI1973 1677
No equivalent for SGI1973 1678
No equivalent for SGI1973 1681
No equivalent for SGI1973 1682
No equivalent for SGI1973 1683
No equivalent for SGI1973 1684
No equivalent for SGI1973 1687
No equivalent for SGI1973 1690
No equivalent for SGI1973 1691
No equivalent for SGI1973 1695
No equivalent for SGI1973 1696
No equivalent for SGI1973 1698
No equivalent for SGI1973 1700
No equivalent for SGI1973 1701
No equivalent for SGI1973 1703
No equivalent for SGI1973 1704
No equivalent for SGI1973 1707
No equivalent for SGI1973 1708
No equivalent for SGI1973 1709
No equivalent for SGI1973 1713
No equivalent for SGI1973 1717
No equivalent for SGI1973 1718
No equivalent for SGI1973 1720
No equivalent for SGI1973 1721
No equivalent for SGI1973 1722
No equivalent for SGI1973 1725
No equivalent for SGI1973 1729
No equivalent for SGI1973 1730
No equivalent for SGI1973 1732
No equivalent for SGI1973 1733
No equivalent for SGI1973 1735
No equivalent for SGI1973 1736
No equivalent for SGI1973 1737
No equivalent for SGI1973 1741
No equivalent for SGI1973 1743
No equivalent for SGI1973 1745
No equivalent for SGI1973 1747
No equivalent for SGI1973 1751
No equivalent for SGI1973 1752
No equivalent for SGI1973 1753
No equivalent for SGI1973 1754
No equivalent for SGI1973 1755
No equivalent for SGI1973 1756
No equivalent for SGI1973 1758
No equivalent for SGI1973 1762
No equivalent for SGI1973 1763
No equivalent for SGI1973 1764
No equivalent for SGI1973 1766
No equivalent for SGI1973 1768
No equivalent for SGI1973 1770
No equivalent for SGI1973 1771
No equivalent for SGI1973 1776
No equivalent for SGI1973 1777
No equivalent for SGI1973 1778
No equivalent for SGI1973 1779
No equivalent for SGI1973 1781
No equivalent for SGI1973 1788
No equivalent for SGI1973 1791
No equivalent for SGI1973 1795
No equivalent for SGI1973 1797
No equivalent for SGI1973 1799
No equivalent for SGI1973 1800
No equivalent for SGI1973 1803
No equivalent for SGI1973 1806
No equivalent for SGI1973 1810
No equivalent for SGI1973 1811
No equivalent for SGI1973 1813
No equivalent for SGI1973 1815
No equivalent for SGI1973 1817
No equivalent for SGI1973 1818
No equivalent for SGI1973 1820
No equivalent for SGI1973 1821
No equivalent for SGI1973 1822
No equivalent for SGI1973 1823
No equivalent for SGI1973 1824
No equivalent for SGI1973 1826
No equivalent for SGI1973 1829
No equivalent for SGI1973 1831
No equivalent for SGI1973 1832
No equivalent for SGI1973 1835
No equivalent for SGI1973 1837
No equivalent for SGI1973 1840
No equivalent for SGI1973 1841
No equivalent for SGI1973 1842
No equivalent for SGI1973 1844
No equivalent for SGI1973 1845
No equivalent for SGI1973 1846
No equivalent for SGI1973 1847
No equivalent for SGI1973 1848
No equivalent for SGI1973 1849
No equivalent for SGI1973 1851
No equivalent for SGI1973 1853
No equivalent for SGI1973 1854
No equivalent for SGI1973 1856
No equivalent for SGI1973 1860
No equivalent for SGI1973 1861
No equivalent for SGI1973 1862
No equivalent for SGI1973 1863
No equivalent for SGI1973 1864
No equivalent for SGI1973 1866
No equivalent for SGI1973 1867
No equivalent for SGI1973 1868
No equivalent for SGI1973 1869
No equivalent for SGI1973 1870
No equivalent for SGI1973 1871
No equivalent for SGI1973 1872
No equivalent for SGI1973 1873
No equivalent for SGI1973 1874
No equivalent for SGI1973 1877
No equivalent for SGI1973 1878
No equivalent for SGI1973 1879
No equivalent for SGI1973 1885
No equivalent for SGI1973 1886
No equivalent for SGI1973 1888
No equivalent for SGI1973 1889
No equivalent for SGI1973 1890
No equivalent for SGI1973 1892
No equivalent for SGI1973 1895
No equivalent for SGI1973 1897
No equivalent for SGI1973 1898
No equivalent for SGI1973 1899
No equivalent for SGI1973 1900
No equivalent for SGI1973 1903
No equivalent for SGI1973 1904
No equivalent for SGI1973 1906
No equivalent for SGI1973 1909
No equivalent for SGI1973 1911
No equivalent for SGI1973 1912
No equivalent for SGI1973 1915
No equivalent for SGI1973 1916
No equivalent for SGI1973 1917
No equivalent for SGI1973 1919
No equivalent for SGI1973 1921
No equivalent for SGI1973 1923
No equivalent for SGI1973 1925
No equivalent for SGI1973 1927
No equivalent for SGI1973 1928
No equivalent for SGI1973 1932
No equivalent for SGI1973 1933
No equivalent for SGI1973 1934
No equivalent for SGI1973 1939
No equivalent for SGI1973 1940
No equivalent for SGI1973 1944
No equivalent for SGI1973 1946
No equivalent for SGI1973 1950
No equivalent for SGI1973 1951
No equivalent for SGI1973 1952
No equivalent for SGI1973 1953
No equivalent for SGI1973 1954
No equivalent for SGI1973 1955
No equivalent for SGI1973 1957
No equivalent for SGI1973 1958
No equivalent for SGI1973 1960
No equivalent for SGI1973 1961
No equivalent for SGI1973 1962
No equivalent for SGI1973 1963
No equivalent for SGI1973 1964
No equivalent for SGI1973 1966
No equivalent for SGI1973 1968
No equivalent for SGI1973 1969
No equivalent for SGI1973 1970
No equivalent for SGI1973 1973
No equivalent for SGI1973 1976
No equivalent for SGI1973 1979
No equivalent for SGI1973 1985
No equivalent for SGI1973 1986
No equivalent for SGI1973 1988
No equivalent for SGI1973 1989
No equivalent for SGI1973 1990
No equivalent for SGI1973 1991
No equivalent for SGI1973 1992
No equivalent for SGI1973 1994
No equivalent for SGI1973 1995
No equivalent for SGI1973 1997
No equivalent for SGI1973 1998
No equivalent for SGI1973 1999
No equivalent for SGI1973 2001
No equivalent for SGI1973 2002
No equivalent for SGI1973 2003
No equivalent for SGI1973 2004
No equivalent for SGI1973 2007
No equivalent for SGI1973 2009
No equivalent for SGI1973 2010
No equivalent for SGI1973 2014
No equivalent for SGI1973 2015
No equivalent for SGI1973 2016
No equivalent for SGI1973 2017
No equivalent for SGI1973 2018
No equivalent for SGI1973 2019
No equivalent for SGI1973 2020
No equivalent for SGI1973 2021
No equivalent for SGI1973 2023
No equivalent for SGI1973 2024
No equivalent for SGI1973 2025
No equivalent for SGI1973 2026
No equivalent for SGI1973 2027
No equivalent for SGI1973 2028
No equivalent for SGI1973 2030
No equivalent for SGI1973 2031
No equivalent for SGI1973 2032
No equivalent for SGI1973 2033
No equivalent for SGI1973 2035
No equivalent for SGI1973 2036
No equivalent for SGI1973 2037
No equivalent for SGI1973 2039
No equivalent for SGI1973 2041
No equivalent for SGI1973 2044
No equivalent for SGI1973 2047
No equivalent for SGI1973 2049
No equivalent for SGI1973 2050
No equivalent for SGI1973 2051
No equivalent for SGI1973 2052
No equivalent for SGI1973 2054
No equivalent for SGI1973 2055
No equivalent for SGI1973 2056
No equivalent for SGI1973 2057
No equivalent for SGI1973 2061
No equivalent for SGI1973 2062
No equivalent for SGI1973 2064
No equivalent for SGI1973 2065
No equivalent for SGI1973 2066
No equivalent for SGI1973 2068
No equivalent for SGI1973 2069
No equivalent for SGI1973 2070
No equivalent for SGI1973 2072
No equivalent for SGI1973 2073
No equivalent for SGI1973 2077
No equivalent for SGI1973 2080
No equivalent for SGI1973 2081
No equivalent for SGI1973 2086
No equivalent for SGI1973 2088
No equivalent for SGI1973 2089
No equivalent for SGI1973 2091
No equivalent for SGI1973 2092
No equivalent for SGI1973 2093
No equivalent for SGI1973 2094
No equivalent for SGI1973 2095
No equivalent for SGI1973 2096
No equivalent for SGI1973 2097
No equivalent for SGI1973 2098
No equivalent for SGI1973 2099
No equivalent for SGI1973 2100
No equivalent for SGI1973 2101
No equivalent for SGI1973 2102
No equivalent for SGI1973 2104
No equivalent for SGI1973 2106
No equivalent for SGI1973 2107
No equivalent for SGI1973 2108
No equivalent for SGI1973 2110
No equivalent for SGI1973 2111
No equivalent for SGI1973 2112
No equivalent for SGI1973 2113
No equivalent for SGI1973 2114
No equivalent for SGI1973 2115
No equivalent for SGI1973 2116
No equivalent for SGI1973 2119
No equivalent for SGI1973 2123
No equivalent for SGI1973 2125
No equivalent for SGI1973 2126
No equivalent for SGI1973 2129
No equivalent for SGI1973 2131
No equivalent for SGI1973 2132
No equivalent for SGI1973 2133
No equivalent for SGI1973 2134
No equivalent for SGI1973 2135
No equivalent for SGI1973 2136
No equivalent for SGI1973 2137
No equivalent for SGI1973 2138
No equivalent for SGI1973 2139
No equivalent for SGI1973 2140
No equivalent for SGI1973 2141
No equivalent for SGI1973 2142
No equivalent for SGI1973 2143
No equivalent for SGI1973 2144
No equivalent for SGI1973 2145
No equivalent for SGI1973 2146
No equivalent for SGI1973 2147
No equivalent for SGI1973 2148
No equivalent for SGI1973 2150
No equivalent for SGI1973 2152
No equivalent for SGI1973 2153
No equivalent for SGI1973 2155
No equivalent for SGI1973 2156
No equivalent for SGI1973 2157
No equivalent for SGI1973 2159
No equivalent for SGI1973 2160
No equivalent for SGI1973 2162
No equivalent for SGI1973 2163
No equivalent for SGI1973 2164
No equivalent for SGI1973 2165
No equivalent for SGI1973 2166
No equivalent for SGI1973 2168
No equivalent for SGI1973 2169
No equivalent for SGI1973 2170
No equivalent for SGI1973 2173
No equivalent for SGI1973 2175
No equivalent for SGI1973 2177
No equivalent for SGI1973 2178
No equivalent for SGI1973 2183
No equivalent for SGI1973 2184
No equivalent for SGI1973 2188
No equivalent for SGI1973 2189
No equivalent for SGI1973 2190
No equivalent for SGI1973 2192
No equivalent for SGI1973 2195
No equivalent for SGI1973 2196
No equivalent for SGI1973 2199
No equivalent for SGI1973 2203
No equivalent for SGI1973 2204
No equivalent for SGI1973 2208
No equivalent for SGI1973 2211
No equivalent for SGI1973 2212
No equivalent for SGI1973 2215
No equivalent for SGI1973 2217
No equivalent for SGI1973 2222
No equivalent for SGI1973 2223
No equivalent for SGI1973 2224
No equivalent for SGI1973 2226
No equivalent for SGI1973 2228
No equivalent for SGI1973 2229
No equivalent for SGI1973 2230
No equivalent for SGI1973 2231
No equivalent for SGI1973 2232
No equivalent for SGI1973 2233
No equivalent for SGI1973 2235
No equivalent for SGI1973 2236
No equivalent for SGI1973 2237
No equivalent for SGI1973 2240
No equivalent for SGI1973 2241
No equivalent for SGI1973 2244
No equivalent for SGI1973 2245
No equivalent for SGI1973 2247
No equivalent for SGI1973 2251
No equivalent for SGI1973 2253
No equivalent for SGI1973 2256
No equivalent for SGI1973 2258
No equivalent for SGI1973 2259
No equivalent for SGI1973 2260
No equivalent for SGI1973 2261
No equivalent for SGI1973 2262
No equivalent for SGI1973 2263
No equivalent for SGI1973 2264
No equivalent for SGI1973 2267
No equivalent for SGI1973 2268
No equivalent for SGI1973 2270
No equivalent for SGI1973 2272
No equivalent for SGI1973 2273
No equivalent for SGI1973 2275
No equivalent for SGI1973 2276
No equivalent for SGI1973 2278
No equivalent for SGI1973 2279
No equivalent for SGI1973 2282
No equivalent for SGI1973 2284
No equivalent for SGI1973 2285
No equivalent for SGI1973 2286
No equivalent for SGI1973 2287
No equivalent for SGI1973 2289
No equivalent for SGI1973 2293
No equivalent for SGI1973 2294
No equivalent for SGI1973 2295
No equivalent for SGI1973 2297
No equivalent for SGI1973 2299
No equivalent for SGI1973 2301
No equivalent for SGI1973 2303
No equivalent for SGI1973 2304
No equivalent for SGI1973 2306
No equivalent for SGI1973 2310
No equivalent for SGI1973 2312
No equivalent for SGI1973 2313
No equivalent for SGI1973 2315
No equivalent for SGI1973 2320
No equivalent for SGI1973 2321
No equivalent for SGI1973 2323
No equivalent for SGI1973 2324
No equivalent for SGI1973 2327
No equivalent for SGI1973 2328
No equivalent for SGI1973 2330
No equivalent for SGI1973 2334
No equivalent for SGI1973 2337
No equivalent for SGI1973 2338
No equivalent for SGI1973 2339
No equivalent for SGI1973 2341
No equivalent for SGI1973 2342
No equivalent for SGI1973 2343
No equivalent for SGI1973 2344
No equivalent for SGI1973 2345
No equivalent for SGI1973 2347
No equivalent for SGI1973 2348
No equivalent for SGI1973 2349
No equivalent for SGI1973 2352
No equivalent for SGI1973 2353
No equivalent for SGI1973 2355
No equivalent for SGI1973 2356
No equivalent for SGI1973 2357
No equivalent for SGI1973 2358
No equivalent for SGI1973 2359
No equivalent for SGI1973 2360
No equivalent for SGI1973 2361
No equivalent for SGI1973 2362
No equivalent for SGI1973 2363
No equivalent for SGI1973 2364
No equivalent for SGI1973 2365
No equivalent for SGI1973 2366
No equivalent for SGI1973 2367
No equivalent for SGI1973 2368
No equivalent for SGI1973 2369
No equivalent for SGI1973 2370
No equivalent for SGI1973 2372
No equivalent for SGI1973 2373
No equivalent for SGI1973 2375
No equivalent for SGI1973 2376
No equivalent for SGI1973 2377
No equivalent for SGI1973 2378
No equivalent for SGI1973 2381
No equivalent for SGI1973 2382
No equivalent for SGI1973 2383
No equivalent for SGI1973 2384
No equivalent for SGI1973 2389
No equivalent for SGI1973 2390
No equivalent for SGI1973 2391
No equivalent for SGI1973 2392
No equivalent for SGI1973 2393
No equivalent for SGI1973 2394
No equivalent for SGI1973 2395
No equivalent for SGI1973 2396
No equivalent for SGI1973 2397
No equivalent for SGI1973 2398
No equivalent for SGI1973 2402
No equivalent for SGI1973 2403
No equivalent for SGI1973 2404
No equivalent for SGI1973 2405
No equivalent for SGI1973 2406
No equivalent for SGI1973 2407
No equivalent for SGI1973 2408
No equivalent for SGI1973 2410
No equivalent for SGI1973 2411
No equivalent for SGI1973 2412
No equivalent for SGI1973 2413
No equivalent for SGI1973 2414
No equivalent for SGI1973 2416
No equivalent for SGI1973 2418
No equivalent for SGI1973 2420
No equivalent for SGI1973 2425
No equivalent for SGI1973 2426
No equivalent for SGI1973 2427
No equivalent for SGI1973 2431
No equivalent for SGI1973 2434
No equivalent for SGI1973 2437
No equivalent for SGI1973 2439
No equivalent for SGI1973 2441
No equivalent for SGI1973 2442
No equivalent for SGI1973 2444
No equivalent for SGI1973 2446
No equivalent for SGI1973 2447
No equivalent for SGI1973 2448
No equivalent for SGI1973 2449
No equivalent for SGI1973 2451
No equivalent for SGI1973 2452
No equivalent for SGI1973 2453
No equivalent for SGI1973 2455
No equivalent for SGI1973 2457
No equivalent for SGI1973 2458
No equivalent for SGI1973 2459
No equivalent for SGI1973 2461
No equivalent for SGI1973 2462
No equivalent for SGI1973 2463
No equivalent for SGI1973 2467
No equivalent for SGI1973 2470
No equivalent for SGI1973 2471
No equivalent for SGI1973 2473
No equivalent for SGI1973 2476
No equivalent for SGI1973 2477
No equivalent for SGI1973 2479
No equivalent for SGI1973 2480
No equivalent for SGI1973 2486
No equivalent for SGI1973 2487
No equivalent for SGI1973 2493
No equivalent for SGI1973 2494
No equivalent for SGI1973 2495
No equivalent for SGI1973 2496
No equivalent for SGI1973 2497
No equivalent for SGI1973 2498
No equivalent for SGI1973 2502
No equivalent for SGI1973 2503
No equivalent for SGI1973 2505
No equivalent for SGI1973 2506
No equivalent for SGI1973 2507
No equivalent for SGI1973 2509
No equivalent for SGI1973 2510
No equivalent for SGI1973 2511
No equivalent for SGI1973 2516
No equivalent for SGI1973 2517
No equivalent for SGI1973 2518
No equivalent for SGI1973 2519
No equivalent for SGI1973 2521
No equivalent for SGI1973 2522
No equivalent for SGI1973 2524
No equivalent for SGI1973 2525
No equivalent for SGI1973 2528
No equivalent for SGI1973 2530
No equivalent for SGI1973 2531
No equivalent for SGI1973 2535
No equivalent for SGI1973 2537
No equivalent for SGI1973 2539
No equivalent for SGI1973 2540
No equivalent for SGI1973 2541
No equivalent for SGI1973 2544
No equivalent for SGI1973 2549
No equivalent for SGI1973 2551
No equivalent for SGI1973 2554
No equivalent for SGI1973 2555
No equivalent for SGI1973 2558
No equivalent for SGI1973 2559
No equivalent for SGI1973 2561
No equivalent for SGI1973 2562
No equivalent for SGI1973 2563
No equivalent for SGI1973 2565
No equivalent for SGI1973 2566
No equivalent for SGI1973 2569
No equivalent for SGI1973 2570
No equivalent for SGI1973 2571
No equivalent for SGI1973 2572
No equivalent for SGI1973 2575
No equivalent for SGI1973 2579
No equivalent for SGI1973 2580
No equivalent for SGI1973 2582
No equivalent for SGI1973 2586
No equivalent for SGI1973 2588
No equivalent for SGI1973 2589
No equivalent for SGI1973 2591
No equivalent for SGI1973 2592
No equivalent for SGI1973 2593
No equivalent for SGI1973 2594
No equivalent for SGI1973 2599
No equivalent for SGI1973 2600
No equivalent for SGI1973 2603
No equivalent for SGI1973 2604
No equivalent for SGI1973 2607
No equivalent for SGI1973 2608
No equivalent for SGI1973 2609
No equivalent for SGI1973 2614
No equivalent for SGI1973 2615
No equivalent for SGI1973 2616
No equivalent for SGI1973 2617
No equivalent for SGI1973 2619
No equivalent for SGI1973 2620
No equivalent for SGI1973 2628
No equivalent for SGI1973 2629
No equivalent for SGI1973 2637
No equivalent for SGI1973 2638
No equivalent for SGI1973 2639
No equivalent for SGI1973 2641
No equivalent for SGI1973 2642
No equivalent for SGI1973 2644
No equivalent for SGI1973 2645
No equivalent for SGI1973 2649
No equivalent for SGI1973 2651
No equivalent for SGI1973 2655
No equivalent for SGI1973 2656
No equivalent for SGI1973 2658
No equivalent for SGI1973 2659
No equivalent for SGI1973 2660
No equivalent for SGI1973 2661
No equivalent for SGI1973 2669
No equivalent for SGI1973 2671
No equivalent for SGI1973 2672
No equivalent for SGI1973 2674
No equivalent for SGI1973 2675
No equivalent for SGI1973 2676
No equivalent for SGI1973 2678
No equivalent for SGI1973 2679
No equivalent for SGI1973 2682
No equivalent for SGI1973 2684
No equivalent for SGI1973 2685
No equivalent for SGI1973 2688
No equivalent for SGI1973 2689
No equivalent for SGI1973 2690
No equivalent for SGI1973 2694
No equivalent for SGI1973 2697
No equivalent for SGI1973 2698
No equivalent for SGI1973 2700
No equivalent for SGI1973 2701
No equivalent for SGI1973 2704
No equivalent for SGI1973 2705
No equivalent for SGI1973 2707
No equivalent for SGI1973 2709
No equivalent for SGI1973 2710
No equivalent for SGI1973 2711
No equivalent for SGI1973 2712
No equivalent for SGI1973 2713
No equivalent for SGI1973 2715
No equivalent for SGI1973 2716
No equivalent for SGI1973 2718
No equivalent for SGI1973 2719
No equivalent for SGI1973 2720
No equivalent for SGI1973 2724
No equivalent for SGI1973 2726
No equivalent for SGI1973 2727
No equivalent for SGI1973 2728
No equivalent for SGI1973 2729
No equivalent for SGI1973 2730
No equivalent for SGI1973 2731
No equivalent for SGI1973 2732
No equivalent for SGI1973 2733
No equivalent for SGI1973 2734
No equivalent for SGI1973 2736
No equivalent for SGI1973 2737
No equivalent for SGI1973 2739
No equivalent for SGI1973 2740
No equivalent for SGI1973 2741
No equivalent for SGI1973 2743
No equivalent for SGI1973 2745
No equivalent for SGI1973 2746
No equivalent for SGI1973 2748
No equivalent for SGI1973 2751
No equivalent for SGI1973 2753
No equivalent for SGI1973 2755
No equivalent for SGI1973 2756
No equivalent for SGI1973 2757
No equivalent for SGI1973 2758
No equivalent for SGI1973 2759
No equivalent for SGI1973 2762
No equivalent for SGI1973 2767
No equivalent for SGI1973 2773
No equivalent for SGI1973 2775
No equivalent for SGI1973 2776
No equivalent for SGI1973 2779
No equivalent for SGI1973 2780
No equivalent for SGI1973 2781
No equivalent for SGI1973 2783
No equivalent for SGI1973 2784
No equivalent for SGI1973 2785
No equivalent for SGI1973 2786
No equivalent for SGI1973 2787
No equivalent for SGI1973 2791
No equivalent for SGI1973 2793
No equivalent for SGI1973 2796
No equivalent for SGI1973 2797
No equivalent for SGI1973 2798
No equivalent for SGI1973 2802
No equivalent for SGI1973 2803
No equivalent for SGI1973 2805
No equivalent for SGI1973 2806
No equivalent for SGI1973 2807
No equivalent for SGI1973 2809
No equivalent for SGI1973 2811
No equivalent for SGI1973 2812
No equivalent for SGI1973 2813
No equivalent for SGI1973 2814
No equivalent for SGI1973 2815
No equivalent for SGI1973 2816
No equivalent for SGI1973 2819
No equivalent for SGI1973 2820
No equivalent for SGI1973 2823
No equivalent for SGI1973 2827
No equivalent for SGI1973 2830
No equivalent for SGI1973 2831
No equivalent for SGI1973 2835
No equivalent for SGI1973 2836
No equivalent for SGI1973 2837
No equivalent for SGI1973 2839
No equivalent for SGI1973 2842
No equivalent for SGI1973 2843
No equivalent for SGI1973 2844
No equivalent for SGI1973 2845
No equivalent for SGI1973 2848
No equivalent for SGI1973 2850
No equivalent for SGI1973 2852
No equivalent for SGI1973 2853
No equivalent for SGI1973 2854
No equivalent for SGI1973 2855
No equivalent for SGI1973 2856
No equivalent for SGI1973 2857
No equivalent for SGI1973 2858
No equivalent for SGI1973 2859
No equivalent for SGI1973 2860
No equivalent for SGI1973 2862
No equivalent for SGI1973 2864
No equivalent for SGI1973 2865
No equivalent for SGI1973 2867
No equivalent for SGI1973 2869
No equivalent for SGI1973 2871
No equivalent for SGI1973 2873
No equivalent for SGI1973 2874
No equivalent for SGI1973 2876
No equivalent for SGI1973 2877
No equivalent for SGI1973 2878
No equivalent for SGI1973 2879
No equivalent for SGI1973 2880
No equivalent for SGI1973 2882
No equivalent for SGI1973 2883
No equivalent for SGI1973 2884
No equivalent for SGI1973 2886
No equivalent for SGI1973 2888
No equivalent for SGI1973 2889
No equivalent for SGI1973 2891
No equivalent for SGI1973 2893
No equivalent for SGI1973 2894
No equivalent for SGI1973 2897
No equivalent for SGI1973 2899
No equivalent for SGI1973 2904
No equivalent for SGI1973 2908
No equivalent for SGI1973 2911
No equivalent for SGI1973 2912
No equivalent for SGI1973 2913
No equivalent for SGI1973 2916
No equivalent for SGI1973 2917
No equivalent for SGI1973 2920
No equivalent for SGI1973 2921
No equivalent for SGI1973 2922
No equivalent for SGI1973 2923
No equivalent for SGI1973 2924
No equivalent for SGI1973 2925
No equivalent for SGI1973 2926
No equivalent for SGI1973 2928
No equivalent for SGI1973 2929
No equivalent for SGI1973 2930
No equivalent for SGI1973 2931
No equivalent for SGI1973 2934
No equivalent for SGI1973 2937
No equivalent for SGI1973 2938
No equivalent for SGI1973 2942
No equivalent for SGI1973 2943
No equivalent for SGI1973 2944
No equivalent for SGI1973 2945
No equivalent for SGI1973 2953
No equivalent for SGI1973 2956
No equivalent for SGI1973 2957
No equivalent for SGI1973 2959
No equivalent for SGI1973 2963
No equivalent for SGI1973 2965
No equivalent for SGI1973 2966
No equivalent for SGI1973 2967
No equivalent for SGI1973 2968
No equivalent for SGI1973 2969
No equivalent for SGI1973 2970
No equivalent for SGI1973 2971
No equivalent for SGI1973 2972
No equivalent for SGI1973 2973
No equivalent for SGI1973 2980
No equivalent for SGI1973 2981
No equivalent for SGI1973 2982
No equivalent for SGI1973 2984
No equivalent for SGI1973 2989
No equivalent for SGI1973 2990
No equivalent for SGI1973 2993
No equivalent for SGI1973 2994
No equivalent for SGI1973 2995
No equivalent for SGI1973 2996
No equivalent for SGI1973 2997
No equivalent for SGI1973 3000
No equivalent for SGI1973 3001
No equivalent for SGI1973 3004
No equivalent for SGI1973 3005
No equivalent for SGI1973 3010
No equivalent for SGI1973 3012
No equivalent for SGI1973 3014
No equivalent for SGI1973 3016
No equivalent for SGI1973 3017
No equivalent for SGI1973 3018
No equivalent for SGI1973 3019
No equivalent for SGI1973 3021
No equivalent for SGI1973 3023
No equivalent for SGI1973 3026
No equivalent for SGI1973 3028
No equivalent for SGI1973 3029
No equivalent for SGI1973 3031
No equivalent for SGI1973 3032
No equivalent for SGI1973 3033
No equivalent for SGI1973 3034
No equivalent for SGI1973 3035
No equivalent for SGI1973 3036
No equivalent for SGI1973 3038
No equivalent for SGI1973 3039
No equivalent for SGI1973 3040
No equivalent for SGI1973 3041
No equivalent for SGI1973 3042
No equivalent for SGI1973 3043
No equivalent for SGI1973 3044
No equivalent for SGI1973 3046
No equivalent for SGI1973 3047
No equivalent for SGI1973 3048
No equivalent for SGI1973 3049
No equivalent for SGI1973 3050
No equivalent for SGI1973 3051
No equivalent for SGI1973 3052
No equivalent for SGI1973 3053
No equivalent for SGI1973 3059
No equivalent for SGI1973 3061
No equivalent for SGI1973 3063
No equivalent for SGI1973 3064
No equivalent for SGI1973 3070

This is a nice try to make everything easier, but it also messes up a bit the attributes (too general, like 'GDAL band number 1'


In [ ]:
#Open existing dataset
src_ds = gdal.Open("C:\\Users\\jlandman\\Desktop\\glacier_dh_rasterized_fischer et al. 2015\\glacier_dh_rasterized_fischer et al. 2015\\dh_0997.asc")
dst_filename = 'C:\\Users\\jlandman\\Desktop\\test_gdal_ascii2nc.nc'

#Open output format driver, see gdal_translate --formats for list
format = "netCDF"
driver = gdal.GetDriverByName(format)

#Output to new format
dst_ds = driver.CreateCopy( dst_filename, src_ds, 0 )

#Properly close the datasets to flush to disk
dst_ds = None
src_ds = None

But the other way around is quite nice: you can easily convert netcdf to ASCII


In [65]:
#Open existing dataset
src_ds_list = glob("C:\\Users\\jlandman\\Desktop\\testnetCDFs\\groups\\*.nc")

for path in src_ds_list[:10]:
    src_ds = gdal.Open(path)
    
    subdata = src_ds.GetSubDatasets()
    #print(subdata)
    for s in range(len(subdata)):
        
        sds = gdal.Open(subdata[s][0])

        dst_path = ("\\").join(os.path.dirname(path).split('\\')[:-1]) + \
        "\\" + "asciifromnc" + "\\" + os.path.basename(path).split('.')[0] + \
        "_" + ('_').join(subdata[s][0].split('//')[-1].split('/')) + '.asc'

        dst_path = 'C:\\Users\\jlandman\\Desktop\\test.asc'
        # Open output format driver, see gdal_translate --formats for list
        oformat = "AAIGrid"
        driver = gdal.GetDriverByName(oformat)
        print(driver, dst_path)
        # Output to new format
        dst_ds = driver.CreateCopy(dst_path, sds,0)
        #os.system("gdal_translate -of %s NETCDF:%s %s" % (oformat, sds, dst_path))
        # "filename.nc":dem_bnds %s"
        # Properly close the datasets to flush to disk
        dst_ds = None
        sds= None
    src_ds = None


<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE40> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCC60> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE40> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCD20> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE40> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCD20> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE40> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCD20> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE40> > C:\Users\jlandman\Desktop\test.asc
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BCE10> > C:\Users\jlandman\Desktop\test.asc

In [59]:
sds.GetRasterBand(1)


Out[59]:
<osgeo.gdal.Band; proxy of <Swig Object of type 'GDALRasterBandShadow *' at 0x0000025E844BC750> >

In [52]:
#Open existing dataset
src_ds_list = glob("C:\\Users\\jlandman\\Desktop\\testnetCDFs\\simple\\*.nc")

for path in src_ds_list[:10]:
    src_ds = gdal.Open(path)
    
    print(src_ds)
    dst_path = ("\\").join(os.path.dirname(path).split('\\')[:-1]) + \
    "\\" + "asciifromnc" + "\\" + os.path.basename(path).split('.')[0] + \
    "_" + ('_').join(subdata[s][0].split('//')[-1].split('/')) + '.asc'

    # Open output format driver, see gdal_translate --formats for list
    oformat = "AAIGrid"
    driver = gdal.GetDriverByName(oformat)
    print(driver, dst_path)
    # Output to new format
    dst_ds = driver.CreateCopy(dst_path, src_ds,0)
    #os.system("gdal_translate -of %s NETCDF:%s %s" % (oformat, sds, dst_path))
    # "filename.nc":dem_bnds %s"
    # Properly close the datasets to flush to disk
    print(dst_ds)
    dst_ds = None
    src_ds = None


<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC480> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0000_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC7E0> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0001_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC480> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0002_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC7E0> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0003_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC480> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0004_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC7E0> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0005_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC480> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0006_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC7E0> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0007_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC480> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0008_elevation_uncertainty.asc
None
<osgeo.gdal.Dataset; proxy of <Swig Object of type 'GDALDatasetShadow *' at 0x0000025E844BC870> >
<osgeo.gdal.Driver; proxy of <Swig Object of type 'GDALDriverShadow *' at 0x0000025E844BC7E0> > C:\Users\jlandman\Desktop\testnetCDFs\asciifromnc\dh_0009_elevation_uncertainty.asc
None

In [267]:
sds.ReadAsArray().shape


Out[267]:
(2, 314, 546)

In [224]:
f = nc.Dataset("C:\\Users\\jlandman\\Desktop\\testnetCDFs\\groups\\dh_3071.nc")

In [225]:
change = f['change'].variables['change']
elevation = f['elevation'].variables['elevation']

In [226]:
change.shape


Out[226]:
(2, 314, 546)

In [227]:
ncdump(f)


NetCDF Global Attributes:
	WGMS_ID: 391
	glaciername: 'GORNER'
	region: 'CEU'
	subregion: 'CEU-01'
	reference: nan
	source: 'World Glacier Monitoring Service, Zurich, Switzerland'
	history: 'Created Wed Aug 24 15:21:03 2016'
	_FillValue: -9999.0
NetCDF dimension information:
NetCDF variable information:
Out[227]:
(['WGMS_ID',
  'glaciername',
  'region',
  'subregion',
  'reference',
  'source',
  'history',
  '_FillValue'],
 [],
 [])

In [232]:
strucinfo(f)


<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
    WGMS_ID: 391
    glaciername: GORNER
    region: CEU
    subregion: CEU-01
    reference: nan
    source: World Glacier Monitoring Service, Zurich, Switzerland
    history: Created Wed Aug 24 15:21:03 2016
    _FillValue: -9999.0
    dimensions(sizes): 
    variables(dimensions): 
    groups: change, elevation

<class 'netCDF4._netCDF4.Group'>
group /change:
    dimensions(sizes): latitude(314), longitude(546), level(2)
    variables(dimensions): float32 latitude(latitude), float32 longitude(longitude), int32 level(level), float64 change(level,latitude,longitude), float64 uncertainty(level,latitude,longitude)
    groups: 

<class 'netCDF4._netCDF4.Group'>
group /elevation:
    dimensions(sizes): latitude(314), longitude(546), time(2)
    variables(dimensions): float32 latitude(latitude), float32 longitude(longitude), int16 time(time), float64 elevation(time,latitude,longitude), float64 uncertainty(time,latitude,longitude)
    groups: 


In [198]:
f.getncattr('missing_value')


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-198-3e06d8c0367d> in <module>()
----> 1 f.getncattr('missing_value')

netCDF4\_netCDF4.pyx in netCDF4._netCDF4.Dataset.getncattr (netCDF4\_netCDF4.c:18469)()

netCDF4\_netCDF4.pyx in netCDF4._netCDF4._get_att (netCDF4\_netCDF4.c:4116)()

AttributeError: NetCDF: Attribute not found

In [144]:
plt.imshow(elevation[0,:,:])


Out[144]:
<matplotlib.image.AxesImage at 0x2542ba6f898>

In [201]:
f.close()

In [146]:
plt.imshow(dvi_big[:,:,0], interpolation='none', origin='lower')


Out[146]:
<matplotlib.image.AxesImage at 0x2542bbe6d30>

In [47]:
dvi_big[:,:,:].shape


Out[47]:
(20, 31, 4)

In [ ]:


In [233]:
src = gdal.Open('C:\\Users\\jlandman\\Desktop\\testnetCDFs\\groups\\dh_3071.nc')

In [253]:
('_').join(src.GetSubDatasets()[0][0].split('//')[-1].split('/'))


Out[253]:
'change_change'

In [247]:
src.GetMetadata_Dict()


Out[247]:
{'WGMS_ID': '',
 '_FillValue': '-9999 ',
 'change_change_DIMENSION_LIST': '',
 'change_change_least_significant_digit': '3 ',
 'change_change_units': 'm',
 'change_latitude_CLASS': 'DIMENSION_SCALE',
 'change_latitude_NAME': 'latitude',
 'change_latitude_REFERENCE_LIST': '',
 'change_latitude__Netcdf4Dimid': '3 ',
 'change_latitude_least_significant_digit': '5 ',
 'change_latitude_units': 'degrees_north',
 'change_level_CLASS': 'DIMENSION_SCALE',
 'change_level_NAME': 'level',
 'change_level_REFERENCE_LIST': '',
 'change_level__Netcdf4Dimid': '5 ',
 'change_level_least_significant_digit': '0 ',
 'change_longitude_CLASS': 'DIMENSION_SCALE',
 'change_longitude_NAME': 'longitude',
 'change_longitude_REFERENCE_LIST': '',
 'change_longitude__Netcdf4Dimid': '4 ',
 'change_longitude_least_significant_digit': '5 ',
 'change_longitude_units': 'degrees_east',
 'change_uncertainty_DIMENSION_LIST': '',
 'change_uncertainty_least_significant_digit': '3 ',
 'change_uncertainty_units': 'm',
 'elevation_elevation_DIMENSION_LIST': '',
 'elevation_elevation_least_significant_digit': '3 ',
 'elevation_elevation_units': 'm',
 'elevation_latitude_CLASS': 'DIMENSION_SCALE',
 'elevation_latitude_NAME': 'latitude',
 'elevation_latitude_REFERENCE_LIST': '',
 'elevation_latitude__Netcdf4Dimid': '0 ',
 'elevation_latitude_least_significant_digit': '5 ',
 'elevation_latitude_units': 'degrees_north',
 'elevation_longitude_CLASS': 'DIMENSION_SCALE',
 'elevation_longitude_NAME': 'longitude',
 'elevation_longitude_REFERENCE_LIST': '',
 'elevation_longitude__Netcdf4Dimid': '1 ',
 'elevation_longitude_least_significant_digit': '5 ',
 'elevation_longitude_units': 'degrees_east',
 'elevation_time_CLASS': 'DIMENSION_SCALE',
 'elevation_time_NAME': 'time',
 'elevation_time_REFERENCE_LIST': '',
 'elevation_time__Netcdf4Dimid': '2 ',
 'elevation_time_calendar': 'gregorian',
 'elevation_time_least_significant_digit': '0 ',
 'elevation_time_units': 'years AD',
 'elevation_uncertainty_DIMENSION_LIST': '',
 'elevation_uncertainty_least_significant_digit': '3 ',
 'elevation_uncertainty_units': 'm',
 'glaciername': 'GORNER',
 'history': 'Created Wed Aug 24 15:21:03 2016',
 'reference': 'nan ',
 'region': 'CEU',
 'source': 'World Glacier Monitoring Service, Zurich, Switzerland',
 'subregion': 'CEU-01'}

In [ ]: