nansat.mappers package

Submodules

nansat.mappers.envisat module

class nansat.mappers.envisat.Envisat

Bases: object

Methods/data shared between Envisat mappers

This class is needed to read awkward N1 format of ENVISAT Mostly it support reading of variables from ADS (additional data sets) which are TIE_POINTS_ADS (MERIS) or GEOLOCATION_GRID_ADS (ASAR)

allADSParams = {'ASA_': {'list': {'first_line_incidence_angle': {'dataType': gdal.GDT_Float32, 'offset': 113, 'units': 'deg'}, 'first_line_lats': {'dataType': gdal.GDT_Int32, 'offset': 157, 'units': '(10)^-6 deg'}, 'first_line_longs': {'dataType': gdal.GDT_Int32, 'offset': 201, 'units': '(10)^-6 deg'}, 'first_line_samp_numbers': {'dataType': gdal.GDT_Float32, 'offset': 25, 'units': ''}, 'first_line_slant_range_times': {'dataType': gdal.GDT_Float32, 'offset': 69, 'units': 'ns'}, 'last_line_incidence_angle': {'dataType': gdal.GDT_Float32, 'offset': 367, 'units': 'deg'}, 'last_line_lats': {'dataType': gdal.GDT_Int32, 'offset': 411, 'units': '(10)^-6 deg'}, 'last_line_longs': {'dataType': gdal.GDT_Int32, 'offset': 455, 'units': '(10)^-6 deg'}, 'last_line_samp_numbers': {'dataType': gdal.GDT_Int32, 'offset': 279, 'units': ''}, 'last_line_slant_range_times': {'dataType': gdal.GDT_Float32, 'offset': 323, 'units': 'ns'}, 'num_lines': {'dataType': gdal.GDT_Int16, 'offset': 13, 'units': ''}}, 'name': 'DS_NAME="GEOLOCATION GRID ADS        "\n', 'width': 11}, 'MER_': {'list': {'DME altitude': {'dataType': gdal.GDT_Int32, 'offset': 581, 'units': 'm'}, 'DME latitude corrections': {'dataType': gdal.GDT_Int32, 'offset': 1149, 'units': '(10)^-6 deg'}, 'DME longitude corrections': {'dataType': gdal.GDT_Int32, 'offset': 1433, 'units': '(10)^-6 deg'}, 'DME roughness': {'dataType': gdal.GDT_UInt32, 'offset': 865, 'units': 'm'}, 'latitude': {'dataType': gdal.GDT_Int32, 'offset': 13, 'units': '(10)^-6 deg'}, 'longitude': {'dataType': gdal.GDT_Int32, 'offset': 297, 'units': '(10)^-6 deg'}, 'mean sea level pressure': {'dataType': gdal.GDT_UInt16, 'offset': 3137, 'units': 'hPa'}, 'meridional winds': {'dataType': gdal.GDT_Int16, 'offset': 2995, 'units': 'm*s-1'}, 'relative humidity': {'dataType': gdal.GDT_UInt16, 'offset': 3421, 'units': '%'}, 'sun azimuth angles': {'dataType': gdal.GDT_Int32, 'offset': 2001, 'units': '(10)^-6 deg'}, 'sun zenith angles': {'dataType': gdal.GDT_UInt32, 'offset': 1717, 'units': '(10)^-6 deg'}, 'total ozone': {'dataType': gdal.GDT_UInt16, 'offset': 3279, 'units': 'DU'}, 'viewing azimuth angles': {'dataType': gdal.GDT_Int32, 'offset': 2569, 'units': '(10)^-6 deg'}, 'viewing zenith angles': {'dataType': gdal.GDT_UInt32, 'offset': 2285, 'units': '(10)^-6 deg'}, 'zonal winds': {'dataType': gdal.GDT_Int16, 'offset': 2853, 'units': 'm*s-1'}}, 'name': 'DS_NAME="Tie points ADS              "\n', 'width': 71}}
structFmt = {gdal.GDT_Float32: '>f', gdal.GDT_Int16: '>h', gdal.GDT_Int32: '>i', gdal.GDT_UInt16: '>H', gdal.GDT_UInt32: '>I'}
lonlatNames = {'ASA_': ['first_line_longs', 'first_line_lats'], 'MER_': ['longitude', 'latitude']}
setup_ads_parameters(filename, gdalMetadata)

Select set of params and read offset of ADS

read_offset_from_header(gadsDSName)

Read offset of ADS from text header.

Find a location of gadsDSName. Adjust the location with textOffset and read the text at the location. Convert the text to integer and set it into offsetDict.

Returns:

offsetDict – offset of DS, size of DS, number of records, size of record

Return type:

dictionary

read_binary_line(offset, fmtString, length)

Read line with binary data at given offset

Open file Read values of given size, at given offset, given times Convert to list of values of given format and return

Parameters:
  • offset (int, start of reading)

  • fmtString (str, data type format)

  • lentgh (number of values to read)

Returns:

binaryValues – values which are read from the file. the number of elements is length

Return type:

list

read_scaling_gads(indeces)

Read Scaling Factor GADS to get scalings of MERIS L1/L2

Parameters:
  • filename (string)

  • indeces (list)

Return type:

list

get_array_from_ADS(adsName)

Create VRT with a band from Envisat ADS metadata

Read offsets of the <adsName> ADS. Read 2D matrix of binary values from ADS from file. Read last line ADS (in case of ASAR). Zoom array with ADS data to <zoomSize>. Zooming is needed to create smooth matrices. Array is zoomed to small size because it is stred in memory. Later the VRT with zoomed array is VRT.get_resized_vrt() in order to match the size of the Nansat onject. Create VRT from the ADS array.

Parameters:

adsName (str) – name of variable from ADS to read. should match allADSParams

Returns:

adsVrt – vrt with a band created from ADS array

Return type:

VRT

create_VRT_from_ADS(adsName, zoomSize=500)

Create VRT with a band from Envisat ADS metadata

Read offsets of the <adsName> ADS. Read 2D matrix of binary values from ADS from file. Zoom array with ADS data to <zoomSize>. Zooming is needed to create smooth matrices. Array is zoomed to small size because it is stred in memory. Later the VRT with zoomed array is VRT.get_resized_vrt() in order to match the size of the Nansat object.

Create VRT from the ADS array.

Parameters:
  • adsName (str) – name of variable from ADS to read. should match allADSParams

  • zoomSize (int, optional, 500) – size, to which original matrix from ADSR is zoomed using scipy.zoom

Returns:

adsVrt

Return type:

VRT, vrt with a band created from ADS array

get_ads_vrts(gdalDataset, adsNames, zoomSize=500, step=1, **kwargs)

Create list with VRTs with zoomed and resized ADS arrays

For given names of variables (which should match self.allADSParams):

Get VRT with zoomed ADS array Get resized VRT

Parameters:
  • gdalDataset (GDAL Dataset) – input dataset

  • adsNames (list with strings) – names of varaiables from self.allADSParams[‘list’]

  • zoomSize (int, 500) – size to which the ADS array will be zoomed by scipy.zoom

  • step (int, 1) – step, at which data will be given

Returns:

adsVRTs – list with resized VRT with zoomed arrays

Return type:

list with VRT

add_geolocation_from_ads(gdalDataset, zoomSize=500, step=1)

Add geolocation domain metadata to the dataset

Get VRTs with zoomed arrays of lon and lat Create geolocation object and add to the metadata

Parameters:
  • gdalDataset (GDAL Dataset) – input dataset

  • zoomSize (int, optional, 500) – size, to which the ADS array will be zoomed using scipy array of this size will be stored in memory

  • step (int) – step of pixel and line in GeolocationArrays. lat/lon grids are generated at that step

  • Modifies

  • --------

  • metadata (Adds Geolocation Array)

nansat.mappers.globcolour module

class nansat.mappers.globcolour.Globcolour

Bases: object

Mapper for GLOBCOLOR L3M products

varname2wkv = {'BBP_mean': 'volume_backscattering_coefficient_of_radiative_flux_in_sea_water_due_to_suspended_particles', 'CDM_mean': 'volume_absorption_coefficient_of_radiative_flux_in_sea_water_due_to_dissolved_organic_matter', 'CHL1_mean': 'mass_concentration_of_chlorophyll_a_in_sea_water', 'CHL2_mean': 'mass_concentration_of_chlorophyll_a_in_sea_water', 'KD490_mean': 'volume_attenuation_coefficient_of_downwelling_radiative_flux_in_sea_water', 'L412_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L443_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L490_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L510_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L531_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L555_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L620_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L670_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L681_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'L709_mean': 'surface_upwelling_spectral_radiance_in_air_emerging_from_sea_water', 'PAR_mean': 'surface_downwelling_photosynthetic_radiative_flux_in_air'}
make_rrsw_meta_entry(nlwMetaEntry)

Make metaEntry for calculation of Rrsw

nansat.mappers.hdf4_mapper module

class nansat.mappers.hdf4_mapper.HDF4Mapper(x_size=1, y_size=1, metadata=None, nomem=False, **kwargs)

Bases: VRT

find_metadata(iMetadata, iKey, default='')

Find metadata which has similar key

Parameters:
  • iMetadata (dict) – input metadata, usually gdalMetadata

  • iKey (str) – key to search for

  • default (str) – default value

nansat.mappers.mapper_aapp_l1b module

class nansat.mappers.mapper_aapp_l1b.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for AVHRR L1B output from AAPP

nansat.mappers.mapper_aapp_l1c module

class nansat.mappers.mapper_aapp_l1c.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for AVHRR L1C output from AAPP

nansat.mappers.mapper_amsr2_l1r module

class nansat.mappers.mapper_amsr2_l1r.Mapper(filename, gdalDataset, gdalMetadata, GCP_STEP=20, MAX_LAT=90, MIN_LAT=50, resolution='low', **kwargs)

Bases: VRT

Mapper for AMSR-2 L1 data

nansat.mappers.mapper_amsr2_l3 module

class nansat.mappers.mapper_amsr2_l3.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

Mapper for Level-3 AMSR2 data from https://gcom-w1.jaxa.jp

freqs = [6, 7, 10, 18, 23, 36, 89]

nansat.mappers.mapper_amsre_uham_leadfraction module

class nansat.mappers.mapper_amsre_uham_leadfraction.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

nansat.mappers.mapper_arome module

class nansat.mappers.mapper_arome.Mapper(*args, **kwargs)

Bases: Mapper

nansat.mappers.mapper_asar module

class nansat.mappers.mapper_asar.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT, Envisat

VRT with mapping of WKV for ASAR Level 1

See also

http

//envisat.esa.int/handbooks/asar/CNTR6-6-9.htm#eph.asar.asardf.asarrec.ASAR_Geo_Grid_ADSR

nansat.mappers.mapper_ascat module

class nansat.mappers.mapper_ascat.Mapper(filename, gdal_dataset, metadata, quartile=0, *args, **kwargs)

Bases: Mapper

Nansat mapper for ASCAT

times()

Get times from time variable

nansat.mappers.mapper_aster_l1a module

class nansat.mappers.mapper_aster_l1a.Mapper(filename, gdalDataset, gdalMetadata, GCP_COUNT=10, bandNames=['VNIR_Band1', 'VNIR_Band2', 'VNIR_Band3N'], bandWaves=[560, 660, 820], **kwargs)

Bases: VRT

Mapper for ASTER L1A VNIR data

nansat.mappers.mapper_aster_l1b module

nansat.mappers.mapper_case2reg module

class nansat.mappers.mapper_case2reg.Mapper(filename, gdalDataset, gdalMetadata, wavelengths=[None, 413, 443, 490, 510, 560, 620, 665, 681, 709, 753, None, 778, 864], **kwargs)

Bases: Mapper

Mapping for the BEAM/Visat output of Case2Regional algorithm

nansat.mappers.mapper_cmems module

nansat.mappers.mapper_cmems.get_gcmd_keywords_mapping()
class nansat.mappers.mapper_cmems.Mapper(*args, **kwargs)

Bases: Mapper

time_coverage()

nansat.mappers.mapper_csks module

class nansat.mappers.mapper_csks.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for Cosmo-Skymed

nansat.mappers.mapper_ecmwf_metno module

class nansat.mappers.mapper_ecmwf_metno.Mapper(*args, **kwargs)

Bases: Mapper

nansat.mappers.mapper_emodnet module

class nansat.mappers.mapper_emodnet.Mapper(inputFileName, gdalDataset, gdalMetadata, logLevel=30, **kwargs)

Bases: VRT

nansat.mappers.mapper_generic module

class nansat.mappers.mapper_generic.Mapper(inputFileName, gdalDataset, gdalMetadata, logLevel=30, rmMetadatas=['NETCDF_VARNAME', '_Unsigned', 'ScaleRatio', 'ScaleOffset', 'dods_variable'], **kwargs)

Bases: VRT

repare_projection(projection)

Replace odd symbols in projection string ‘|’ => ‘,’; ‘&’ => ‘”’

add_gcps_from_metadata(geoMetadata)

Get GCPs from strings in metadata and insert in dataset

add_gcps_from_variables(filename)

Get GCPs from GCPPixel, GCPLine, GCPX, GCPY, GCPZ variables

nansat.mappers.mapper_geostationary module

nansat.mappers.mapper_geostationary.arrays2LUTString(a, b)
class nansat.mappers.mapper_geostationary.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for Geostationary satellite data

calibration()

get calibration data for Geostationary satellites

Returns:

satDict – calibration data for satellite ‘name’, ‘wavelengths’, ‘scale’, ‘offset’

Return type:

dicts

nansat.mappers.mapper_globcolour_l3b module

class nansat.mappers.mapper_globcolour_l3b.Mapper(filename, gdalDataset, gdalMetadata, latlonGrid=None, mask='', **kwargs)

Bases: VRT, Globcolour

Create VRT with mapping of WKV for MERIS Level 2 (FR or RR)

nansat.mappers.mapper_globcolour_l3m module

class nansat.mappers.mapper_globcolour_l3m.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT, Globcolour

Mapper for GLOBCOLOR L3M products

nansat.mappers.mapper_goci_l1 module

class nansat.mappers.mapper_goci_l1.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for MODIS Level 1 (QKM, HKM, 1KM)

nansat.mappers.mapper_hirlam module

class nansat.mappers.mapper_hirlam.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for HIRLAM

nansat.mappers.mapper_hirlam_wind_netcdf module

class nansat.mappers.mapper_hirlam_wind_netcdf.Mapper(filename, gdalDataset, gdalMetadata, logLevel=30, **kwargs)

Bases: VRT

nansat.mappers.mapper_kmss module

class nansat.mappers.mapper_kmss.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for KMSS TOA tiff data

nansat.mappers.mapper_landsat module

class nansat.mappers.mapper_landsat.Mapper(filename, gdalDataset, gdalMetadata, resolution='low', **kwargs)

Bases: VRT

Mapper for LANDSAT5,6,7,8 .tar.gz or tif files

nansat.mappers.mapper_meris_l1 module

class nansat.mappers.mapper_meris_l1.Mapper(filename, gdalDataset, gdalMetadata, geolocation=False, zoomSize=500, step=1, **kwargs)

Bases: VRT, Envisat

VRT with mapping of WKV for MERIS Level 1 (FR or RR)

nansat.mappers.mapper_meris_l2 module

class nansat.mappers.mapper_meris_l2.Mapper(filename, gdalDataset, gdalMetadata, geolocation=False, zoomSize=500, step=1, **kwargs)

Bases: VRT, Envisat

Create VRT with mapping of WKV for MERIS Level 2 (FR or RR)

nansat.mappers.mapper_metno_hires_seaice module

class nansat.mappers.mapper_metno_hires_seaice.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

Create VRT with mapping of WKV for Met.no seaice

nansat.mappers.mapper_metno_local_hires_seaice module

class nansat.mappers.mapper_metno_local_hires_seaice.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: Mapper

Create VRT with mapping of WKV for Met.no seaice

nansat.mappers.mapper_mod44w module

class nansat.mappers.mapper_mod44w.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for MOD44W produc (MODIS watermask at 250 m)

nansat.mappers.mapper_modis_l1 module

class nansat.mappers.mapper_modis_l1.Mapper(filename, gdalDataset, gdalMetadata, GCP_COUNT=30, **kwargs)

Bases: HDF4Mapper

VRT with mapping of WKV for MODIS Level 1 (QKM, HKM, 1KM)

nansat.mappers.mapper_ncep module

class nansat.mappers.mapper_ncep.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for NCEP GFS

nansat.mappers.mapper_ncep_wind module

class nansat.mappers.mapper_ncep_wind.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

VRT with mapping of WKV for NCEP GFS

nansat.mappers.mapper_ncep_wind_online module

class nansat.mappers.mapper_ncep_wind_online.Mapper(filename, gdalDataset, gdalMetadata, outFolder='/home/docs/ncep_gfs_downloads', **kwargs)

Bases: VRT, object

VRT with mapping of WKV for NCEP GFS

nansat.mappers.mapper_netcdf_cf module

Nansat NetCDF-CF mapper

Check CF-compliance of your files here: http://cfconventions.org/compliance-checker.html

exception nansat.mappers.mapper_netcdf_cf.ContinueI

Bases: Exception

class nansat.mappers.mapper_netcdf_cf.Mapper(filename, gdal_dataset, gdal_metadata, *args, **kwargs)

Bases: VRT

input_filename = ''
times()

Get times from time variable

NOTE: This cannot be done with gdal because the time variable is a vector

nansat.mappers.mapper_netcdf_cf_sentinel1 module

class nansat.mappers.mapper_netcdf_cf_sentinel1.Mapper(filename, gdal_dataset, gdal_metadata, *args, **kwargs)

Bases: Sentinel1, Mapper

add_calibrated_nrcs()
add_nrcs_VV_from_HH()

nansat.mappers.mapper_nora10_local_vpv module

class nansat.mappers.mapper_nora10_local_vpv.Mapper(filename, gdalDataset, gdalMetadata, logLevel=30, **kwargs)

Bases: VRT

nansat.mappers.mapper_obpg_l2 module

class nansat.mappers.mapper_obpg_l2.Mapper(filename, gdalDataset, gdalMetadata, GCP_COUNT=10, **kwargs)

Bases: OBPGL2BaseClass

Mapper for SeaWIFS/MODIS/MERIS/VIIRS L2 data from OBPG

TODO: * Test on SeaWIFS * Test on MODIS Terra

nansat.mappers.mapper_obpg_l2_nc module

class nansat.mappers.mapper_obpg_l2_nc.Mapper(filename, gdalDataset, gdalMetadata, GCP_COUNT=10, **kwargs)

Bases: OBPGL2BaseClass

Mapper for SeaWIFS/MODIS/MERIS/VIIRS L2 data from OBPG in NC4 format

nansat.mappers.mapper_obpg_l3 module

class nansat.mappers.mapper_obpg_l3.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

Mapper for Level-3 Standard Mapped Image from http://oceancolor.gsfc.nasa.gov

param2wkv = {'CDOM Index': 'volume_absorption_coefficient_of_radiative_flux_in_sea_water_due_to_dissolved_organic_matter', 'Chlorophyll a concentration': 'mass_concentration_of_chlorophyll_a_in_sea_water', 'Chlorophyll a concentration, Garver-Siegel-Maritorena Model': 'mass_concentration_of_chlorophyll_a_in_sea_water', 'Diffuse attenuation coefficient': 'volume_attenuation_coefficient_of_downwelling_radiative_flux_in_sea_water', 'Instantaneous Photosynthetically Available Radiation': 'instantaneous_downwelling_photosynthetic_photon_radiance_in_sea_water', 'Particle backscatter at 443 nm': 'volume_backscattering_coefficient_of_radiative_flux_in_sea_water_due_to_suspended_particles', 'Photosynthetically Available Radiation': 'downwelling_photosynthetic_photon_radiance_in_sea_water', 'Remote sensing reflectance': 'surface_ratio_of_upwelling_radiance_emerging_from_sea_water_to_downwelling_radiative_flux_in_air', 'Sea Surface Salinity': 'sea_surface_salinity', 'Sea Surface Temperature': 'sea_surface_temperature'}

nansat.mappers.mapper_ocean_productivity module

class nansat.mappers.mapper_ocean_productivity.Mapper(filename, gdalDataset, gdalMetadata, **kwargs)

Bases: VRT

Mapper for Ocean Productivity website http://www.science.oregonstate.edu/ocean.productivity/

param2wkv = {'bbp': 'particle_backscatter_at_443_nm', 'chl': 'mass_concentration_of_chlorophyll_a_in_sea_water', 'ipar': 'instantaneous_downwelling_photosynthetic_photon_radiance_in_sea_water', 'par': 'downwelling_photosynthetic_photon_radiance_in_sea_water', 'sst': 'sea_surface_temperature'}
bandNames = {'instantaneous_downwelling_photosynthetic_photon_radiance_in_sea_water': 'ipar', 'mass_concentration_of_chlorophyll_a_in_sea_water': 'algal_1', 'particle_backscatter_at_443_nm': 'bbp_443', 'sea_surface_temperature': 'SST'}

nansat.mappers.mapper_opendap_arome module

class nansat.mappers.mapper_opendap_arome.Mapper(filename, gdal_dataset, gdal_metadata, date=None, ds=None, bands=None, cachedir=None, *args, **kwargs)

Bases: Opendap, Mapper

baseURLs = ['http://thredds.met.no/thredds/catalog/arome25/catalog.html', 'https://thredds.met.no/thredds/dodsC/aromearcticarchive', 'http://thredds.met.no/thredds/dodsC/aromearcticarchive', 'https://thredds.met.no/thredds/dodsC/meps25epsarchive', 'http://thredds.met.no/thredds/dodsC/meps25epsarchive']
timeVarName = 'time'
xName = 'x'
yName = 'y'
timeCalendarStart = '1970-01-01'
static get_date(filename)

Extract date and time parameters from filename and return it as a formatted string

Parameters:

filename (str) – nn

Returns:

str, YYYY-mm-ddThh

Return type:

MMZ

Examples

>>> Mapper.get_date('/path/to/arome_arctic_full_2_5km_20171030T21Z.nc')
'2017-10-30T21:00Z'
convert_dstime_datetimes(ds_time)

Convert time variable to np.datetime64

nansat.mappers.mapper_opendap_globcurrent module

nansat.mappers.mapper_opendap_globcurrent_thredds module

nansat.mappers.mapper_opendap_mywave module

class nansat.mappers.mapper_opendap_mywave.Mapper(filename, gdal_dataset, gdal_metadata, date=None, ds=None, bands=None, cachedir=None, *args, **kwargs)

Bases: Opendap

baseURLs = ['http://thredds.met.no/thredds/dodsC/fou-hi/mywavewam4archive', 'https://thredds.met.no/thredds/dodsC/sea/mywavewam4/mywavewam4_be']
timeVarName = 'time'
xName = 'rlon'
yName = 'rlat'
timeCalendarStart = '1970-01-01'
static get_date(filename)

Extract date and time parameters from filename and return it as a formatted (isoformat) string

Parameters:

filename (str)

Returns:

str, YYYY-mm-ddThh

Return type:

MM:00Z

Examples

>>> Mapper.get_date('/path/to/MyWave_wam4_WAVE_20171029T18Z.nc')
'2017-10-29T18:00:00Z'
convert_dstime_datetimes(ds_time)

Convert time variable to np.datetime64

nansat.mappers.mapper_opendap_occci module

nansat.mappers.mapper_opendap_osisaf module

nansat.mappers.mapper_opendap_ostia module

nansat.mappers.mapper_opendap_sentinel1 module

nansat.mappers.mapper_opendap_sentinel2 module

class nansat.mappers.mapper_opendap_sentinel2.Mapper(filename, gdal_dataset, gdal_metadata, date=None, ds=None, bands=None, cachedir=None, *args, **kwargs)

Bases: Opendap

baseURLs = ['http://nbstds.met.no/thredds/dodsC/NBS/S2A', 'http://nbstds.met.no/thredds/dodsC/NBS/S2B']
timeVarName = 'time'
xName = 'x'
yName = 'y'
timeCalendarStart = '1981-01-01'
GCP_STEP = 100
static get_date(filename)

Extract date and time parameters from filename and return it as a formatted (isoformat) string

Parameters:

filename (str) – nn

Returns:

str, YYYY-mm-ddThh

Return type:

MMZ

convert_dstime_datetimes(ds_time)

Convert time variable to np.datetime64

nansat.mappers.mapper_opendap_siwtacsst module

nansat.mappers.mapper_opendap_sstcci module

nansat.mappers.mapper_pathfinder52 module

class nansat.mappers.mapper_pathfinder52.Mapper(filename, gdalDataset, gdalMetadata, minQual=4, **kwargs)

Bases: VRT

Mapper PATHFINDER (local files)

TODO: * remote files

nansat.mappers.mapper_quikscat module

class nansat.mappers.mapper_quikscat.Mapper(filename, gdal_dataset, metadata, quartile=0, *args, **kwargs)

Bases: Mapper

Nansat mapper for QuikScat

nansat.mappers.mapper_radarsat2 module

class nansat.mappers.mapper_radarsat2.Mapper(inputFileName, gdalDataset, gdalMetadata, xmlonly=False, **kwargs)

Bases: VRT

Create VRT with mapping of WKV for Radarsat2

init_from_xml(productXml, filename)

Fast init from metada in XML only

nansat.mappers.mapper_sentinel1_l1 module

class nansat.mappers.mapper_sentinel1_l1.Mapper(filename, gdalDataset, gdalMetadata, fast=False, fixgcp=True, **kwargs)

Bases: VRT

Create VRT with mapping of Sentinel-1 (A and B) stripmap mode (S1A_SM)

Parameters:
  • filename (str) – name of input Sentinel-1 L1 file

  • gdalDataset (None)

  • gdalMetadata (None)

  • fast (bool) – Flag that triggers faster reading of metadata from Sentinel-1 file. If True, no bands are added to the dataset and georeference is not corrected. If False, all bands are added and GCPs are corrected if necessary (see Mapper.correct_geolocation_data for details).

Note

Creates self.dataset and populates it with S1 bands (when fast=False).

read_calibration(xml, vectorListName, variable_names, pol)

Read calibration data from calibration or noise XML files :param xml: String with XML from calibration or noise files :type xml: str :param vectorListName: tag of the element that contains lists with LUT values :type vectorListName: str :param variable_names: names of LUT variable to read :type variable_names: list of str :param pol: HH, HV, etc :type pol: str

Returns:

data – Calibration or noise data. Keys: The same as variable_names + ‘pixel’, ‘line’

Return type:

dict

read_annotation(annotation_files)

Read lon, lat, etc from annotation XML

Parameters:

annotation_files (list) – strings with names of annotation files

Returns:

data

geolocation data from the XML as 2D np.arrays. Keys:

pixel, line, longitude, latitude, height, incidenceAngle, elevationAngle: 2D arrays shape : tuple (shape of geolocation data arrays) x_size, y_size : int pol : list

Return type:

dict

correct_geolocation_data()

Correct lon/lat values in geolocation data for points high above ground (incorrect)

Each GCP in Sentinel-1 L1 image (both in the GeoTIF files and Annotation LUT) have five coordinates: X, Y, Z (height), Pixel and Line. On some scenes that cover Greenland (and probably other lands) some GCPs have height above zero even over ocean. This is incorrect, because the radar signal comes actually from the surface and not from a point above the ground as stipulated in such GCPs. Correction of GCPs in this function is equivalelnt to reverse DEM correction of SAR data.

Notes

Updates ‘pixel’ and ‘height’ in self.annotation_data

static create_gcps(x, y, z, p, l)

Create GCPs from geolocation data

Parameters:
  • x

  • y

  • z

  • p

  • l

  • X (N-D arrays with value of)

  • Y

  • Z

  • coordinates. (Pixel and Line)

  • lon (X and Y are typically)

  • lat

  • height. (Z -)

Returns:

gcps

Return type:

list with GDAL GCPs

read_manifest_data(input_file)

Read information (time_coverage_start, etc) manifest XML

Parameters:

input_file (str) – name of manifest file

Returns:

data

manifest data. Keys:

time_coverage_start time_coverage_end platform_familyName platform_number

Return type:

dict

vrts_from_arrays(data, variable_names, pol='', resize=True, resample_alg=2)

Convert input dict with arrays into dict with VRTs

Parameters:
  • data (dict) – 2D arrays with data from LUT

  • variable_names (list of str) – variable names that should be converted to VRTs

  • pol (str) – HH, HV, etc

  • resize (bool) – Shall VRT be zoomed to full size?

  • resample_alg (int) – Index of resampling algorithm. See VRT.get_resized_vrt()

Returns:

vrts

Return type:

dict with (resized) VRTs

nansat.mappers.mapper_sentinel1_l2 module

class nansat.mappers.mapper_sentinel1_l2.Mapper(filename, gdalDataset, gdalMetadata, product_type='RVL', GCP_COUNT=10, **kwargs)

Bases: VRT

Create VRT with mapping of Sentinel-1A stripmap mode (S1A_SM)

nansat.mappers.mapper_topography module

class nansat.mappers.mapper_topography.Mapper(filename, gdal_dataset, *args, **kwargs)

Bases: VRT

Mapping for the GTOPO30 (https://lta.cr.usgs.gov/GTOPO30) and the GMTED2010 (https://lta.cr.usgs.gov/GMTED2010) global elevation models.

Parameters:
  • filename (string) – The vrt filename, e.g., gtopo30.vrt

  • gdal_dataset (osgeo.gdal.Dataset) – The GDAL dataset returned by gdal.Open(filename)

Example

You can create your own gtopo30.vrt file with gdal, e.g.:

gdalbuildvrt <dem>.vrt [E,W]*.DEM

Note

Either the name of a GTOPO30 DEM file or GMTED2010 tif file, or <path>/<dem>.vrt. The latter is an aggregation of the DEM-files available from the given DEM. The GTOPO30 vrt does not contain the Antarctic, because this is in polarstereographic projection.

Remember to update this mapper by adding allowed filenames to the list of accepted filenames (accepted_names) if you create or apply new DEM datasets.

nansat.mappers.mapper_viirs_l1 module

class nansat.mappers.mapper_viirs_l1.Mapper(filename, gdalDataset, gdalMetadata, GCP_COUNT0=5, GCP_COUNT1=20, pixelStep=1, lineStep=1, **kwargs)

Bases: VRT

VRT with mapping of WKV for VIIRS Level 1B

nansat.mappers.obpg module

class nansat.mappers.obpg.OBPGL2BaseClass(x_size=1, y_size=1, metadata=None, nomem=False, **kwargs)

Bases: VRT

Base Class for Mappers for SeaWIFS/MODIS/MERIS/VIIRS L2 data from OBPG

titles = ['HMODISA Level-2 Data', 'MODISA Level-2 Data', 'HMODIST Level-2 Data', 'MERIS Level-2 Data', 'GOCI Level-2 Data', 'VIIRSN Level-2 Data', 'SeaWiFS Level-2 Data']

nansat.mappers.opendap module

class nansat.mappers.opendap.Opendap(x_size=1, y_size=1, metadata=None, nomem=False, **kwargs)

Bases: VRT

Methods for all OpenDAP mappers

P2S = {'D': 86400, 'H': 3600, 'M': 2592000, 'Y': 31536000}
test_mapper(filename)

Tests if filename fits mapper. May raise WrongMapperError

Parameters:

filename (str) – absolute url of input file

Raises:

WrongMapperError – if input url does not match with list of: urls for a mapper

get_dataset(ds)

Open Dataset

Parameters:

ds (str or netCDF4.Dataset)

get_geospatial_variable_names()

Get names of variables with both spatial dimensions

get_dataset_time()

Load data from time variable

static get_layer_datetime(date, datetimes)

Get datetime of the matching layer and layer number

get_metaitem(url, var_name, var_dimensions)

Set metadata for creating band VRT

Parameters:
  • url (str,) – absolute url of an input file

  • var_name (str,) – name of a variable/band from netCDF file

  • var_dimensions – iterable array with dimensions of the variable

create_vrt(filename, gdalDataset, gdalMetadata, date, ds, bands, cachedir)

Create VRT

Parameters:
  • filename (str,) – absolute url of an input file

  • date (str,) – date in format YYYY-MM-DD

  • ds (netDCF.Dataset)

  • bands (list) – list of src bands

  • cachedir (str)

create_metadict(filename, var_names, time_id)

Create list which contains a dictionary with metadata for each single band

Parameters:
  • filename (str,) – full path to the file

  • var_names (iterable,) – iterable object (list) with required band names (str)

  • time_id (int,) – index of required slice in time dimension

Returns:

meta_dict – list which contains a dictionary with metadata for each <var_name>

Return type:

list

get_time_coverage_resolution()

Try to fecth time_coverage_resolution and convert to seconds

get_shape()

Get srcRasterXSize and srcRasterYSize from OpenDAP

get_geotransform()

Get first two values of X,Y variables and create geoTranform

nansat.mappers.scatterometers module

class nansat.mappers.scatterometers.Mapper(filename, gdal_dataset, metadata, quartile=0, *args, **kwargs)

Bases: Mapper

Nansat mapper for scatterometers

set_gcps(lon, lat, gdal_dataset)

Set gcps

static shift_longitudes(lon)

Apply correction of longitudes (they are defined on 0:360 degrees but also contain egative values)

TODO: consider making this core to nansat - different ways of defining longitudes (-180:180 og 0:360 degrees) often cause problems…

nansat.mappers.sentinel1 module

class nansat.mappers.sentinel1.Sentinel1(filename, flip_gcp_line=False)

Bases: VRT

Mapper class to access Sentinel-1 data with netCDF4 to work for both opendap streams and local files.

timeVarName = 'time'
input_filename = ''
set_gcmd_dif_keywords()
get_gcps(flip_gcp_line=False)

Get Ground Control Points for the dataset.

Note that OPeNDAP streams and netCDF files are read differently by gdal. The OPeNDAP streams are read by specifying the get parameters to the OPeNDAP url. The get parameters specify the reference dimensions, e.g., x and y. Since these are specified, the raster data is correctly referenced to the GCPs. However, when gdal reads a raster band from netCDF, it reads it “blindly”. This is risky, since the definition of origo may be different in gdal vs the original data (e.g., first line starts in upper left corner or in lower left corner). For Sentinel-1, the raster data is flipped in relation to the GCPs, so we need to flip the GCP line vector as well.

add_incidence_angle_band()
get_full_size_GCPs()
add_look_direction_band()

Module contents