Source code for isofit.core.units

#! /usr/bin/env python3
#
#  Copyright 2018 California Institute of Technology
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
# ISOFIT: Imaging Spectrometer Optimal FITting
# Authors: Philip G. Brodrick, philip.brodrick@jpl.nasa.gov
#          Niklas Bohn, urs.n.bohn@jpl.nasa.gov
#          Evan Greenberg, evan.greenberg@jpl.nasa.gov

import numpy as np


[docs] def E_to_L(E, coszen): """Convert irradiance to radiance. Args: E: input irradiance vector coszen: cosine of solar zenith angle Returns: Data vector converted to radiance """ L = E * coszen / np.pi return L
[docs] def L_to_E(L, coszen): """Convert radiance to irradiance. Args: L: input radiance vector coszen: cosine of solar zenith angle Returns: Data vector converted to irradiance """ E = L * np.pi / coszen return E
[docs] def transm_to_rdn(transm, coszen, solar_irr): """Function to convert a unitless atmospheric vector to radiance units. Args: transm: input data vector in unitless atmospheric units coszen: cosine of solar zenith angle solar_irr: solar irradiance vector Returns: Data vector converted to radiance """ rdn = transm * E_to_L(solar_irr, coszen) return rdn
[docs] def rdn_to_transm(rdn, coszen, solar_irr): """Function to convert a radiance vector to transmittance. Args: rdn: input data vector in radiance coszen: cosine of solar zenith angle solar_irr: solar irradiance vector Returns: Data vector converted to unitless atmospheric units """ transm = rdn / E_to_L(solar_irr, coszen) return transm
[docs] def wavenumber_to_nm(wavenumber): """ Function to convert wavenumber to nm. Args: wavenumber: value(s) in wavenumber in 1/cm Returns: value(s) in nanometers """ nm = 1e7 / (wavenumber) return nm
[docs] def nm_to_wavenumber(nm): """ Function to convert nm to wavenumber. """ wavenumber = wavenumber_to_nm(nm) return wavenumber
[docs] def vis_to_aod(vis): """ Converts VIS modtran parameter to the AOD550 . This formula comes from page 50 of the MODTRAN 6 user manual, which relates ViS to the extinction coefficient at 550 nm. The constant, 0.01159 is the Rayleigh scattering coefficient at 550 nm in 1/km. Args: vis: visibility Returns: Data vector converted to exctinction at 550 nm """ aod = (np.log(50) / vis) - 0.01159 return aod
[docs] def aod_to_vis(aod): """ Converts AOD550 to VIS modtran parameter. Formula comes from page 50 of the MODTRAN 6 users manual, which relates ViS to the extinction coefficient at 550 nm. The constant, 0.01159 is the Rayleigh scattering coefficient at 550 nm in 1/km. Args: aod: extinction at 550 nm Returns: Data vector converted to visibility """ vis = np.log(50) / (aod + 0.01159) return vis
[docs] def rfl_to_rrs(rfl): """ Converts unitless reflectance to remote sensing reflectance Args: rfl: unitless reflectance Returns: Data vector of remote sensing reflectance in units 1/sr """ rrs = rfl / np.pi return rrs
[docs] def rrs_to_rfl(rrs): """ Converts remote sensing reflectance to unitless reflectance Args: rrs: remote sensing reflectance in 1/sr Returns: Data vector of unitless reflectance """ rfl = rrs * np.pi return rfl
[docs] def W_to_uW(w): """ Converts value of units watts to units microwatts Args: w: value(s) in units of Watts Returns: Value(s) in units of microwatts """ uw = w * 1e6 return uw
[docs] def uW_to_W(uw): """ Converts value of units microwatts to units watts Args: uw: value(s) in units of Microwatts Returns: Value(s) in units of microwatts """ w = uw / 1e6 return w
[docs] def Wm2_to_uWcm2(wm): """ Converts value of units Watts / square meter to units of micro-watts / square centimeter Args: wm: value(s) in units of W/m2 Returns: Value(s) in units of uW/cm2 """ uwcm = wm * 1e2 return uwcm
[docs] def uWcm2_to_Wm2(uwcm): """ Converts value of micro-watts / square centimeter to units Watts / square meter Args: uwcm: value(s) in units of uW/cm2 Returns: Value(s) in units of W/m2 """ wm = uwcm / 1e2 return wm
[docs] def micron_to_nm(micron): """ Function to convert microns to nanometers Args: micron: value(s) in microns Returns: value(s) in nanometers """ nm = micron * 1000 return nm
[docs] def nm_to_micron(nm): """ Function to convert nanometers to microns Args: nm: value(s) in nanometers Returns: value(s) in microns """ micron = nm / 1000 return micron
[docs] def cm_to_nm(cm): """ Function to convert microns to nanometers Args: cm: value(s) in centimeters Returns: value(s) in nanometers """ nm = cm * 1e7 return nm
[docs] def nm_to_cm(nm): """ Function to convert nanometers to microns Args: nm: value(s) in nanometers Returns: value(s) in microns """ cm = nm / 1e7 return cm
[docs] def m_to_km(m): """ Converts value of units meters to units kilometer Args: m: value(s) in units of meters Returns: Value(s) in units of kilometers """ km = m / 1000 return km
[docs] def mm_to_cm(mm): """ Converts value of units mm to unit centimeters Args: mm: value(s) in units of millimeters Returns: Value(s) in units of centimeters """ cm = mm / 10 return cm
[docs] def cm_to_mm(cm): """ Converts value of units mm to unit millimeters Args: cm: value(s) in units of centimeters Returns: Value(s) in units of millimeters """ mm = cm * 10 return mm
[docs] def km_to_m(km): """ Converts value of units kilometers to unit meters Args: km: value(s) in units of kilometers Returns: Value(s) in units of meters """ m = km * 1000 return m
[docs] def m_to_ft(m): """ Converts value of units meters to units feet Args: m: value(s) in units of meters Returns: Value(s) in units of feet """ ft = m * 3.280839895 return ft
[docs] def ft_to_m(ft): """ Converts value of units ft to units m Args: ft: value(s) in units of feet Returns: Value(s) in units of meters """ m = ft / 3.280839895 return m