Package: tmart
T-Mart: Topography-adjusted Monte-carlo Adjacency-effect Radiative Transfer CodeDescriptionT-Mart solves the radiative transfer in a 3D surface-atmosphere system through a Monte-Carlo approach. T-Mart features arbitrary surface models which allow simulating and correcting for the adjacency effect in aquatic remote sensing.LinksHome page:https://github.com/yulunwu8/tmartUser guide:https://tmart-rtm.github.ioPublicationWu, Y., Knudby, A., & Lapen, D. (2023). Topography-Adjusted Monte Carlo Simulation of the Adjacency Effect in Remote Sensing of Coastal and Inland Waters.Journal of Quantitative Spectroscopy and Radiative Transfer, 108589.https://doi.org/10.1016/j.jqsrt.2023.108589Installation1 - Create a conda environment and activate it:condacreate--nametmartpython=3.9
condaactivatetmart2 - Install dependencies:condainstall-cconda-forgePy6S3 - Install tmart:pip3installtmartQuick Start: Adjacency-Effect CorrectionT-Mart supports adjacency-effect correction for Sentinel-2 MSI and Landsat 8 OLI products. Correction is performed directly on level-1 products therefore can be followed by any amtospheric-correction tools. Minimal inputs are:importtmartfile='user/test/S2A_MSIL1C_20160812T143752_N0204_R096_T20MKB_20160812T143749.SAFE'# NASA EarthData Credentials, OB.DAAC Data Access needs to be approvedusername='abcdef'password='123456'### Multiprocessing needs to be wrapped in 'if __name__ == "__main__":' for Windows systems, this is optional for Mac OSif__name__=="__main__":tmart.AEC.run(file,username,password)SeeInstruction - Adjacency-Effect Correctionfor more detailed instructions.Quick Start: Adjacency-Effect ModellingimporttmartimportnumpyasnpfromPy6S.Params.atmosprofileimportAtmosProfile# Specify wavelength in nmwl=400### DEM and reflectance ###image_DEM=np.array([[0,0],[0,0]])# in metersimage_reflectance=np.array([[0.1,0.1],[0.1,0.1]])# unitlessimage_isWater=np.zeros(image_DEM.shape)# 1 is water, 0 is land# Synthesize a surface objectmy_surface=tmart.Surface(DEM=image_DEM,reflectance=image_reflectance,isWater=image_isWater,cell_size=10_000)### Atmosphere ###atm_profile=AtmosProfile.PredefinedType(AtmosProfile.MidlatitudeSummer)aerosol_type='Maritime'my_atm=tmart.Atmosphere(atm_profile,aot550=0,aerosol_type='Maritime')### Create T-Mart Object ###my_tmart=tmart.Tmart(Surface=my_surface,Atmosphere=my_atm,shadow=False)my_tmart.set_geometry(sensor_coords=[51,50,130_000],target_pt_direction=[180,0],sun_dir=[0,0])### Multiprocessing needs to be wrapped in 'if __name__ == "__main__":' for Windows systems.### This can be skipped for Linux-based systems.if__name__=="__main__":results=my_tmart.run(wl=wl,band=None,n_photon=10_000)# Calculate reflectances using recorded photon informationR=tmart.calc_ref(results)fork,vinR.items():print(k,'     ',v)Output should be similar to this:========= Initiating T-Mart =========
Number of photons: 10000
Using 10 core(s)
Number of job(s): 100
Wavelength: 400
target_pt_direction: [180, 0]
sun_dir: [0, 0]
=====================================
Jobs remaining = 102
Jobs remaining = 72
Jobs remaining = 42
Jobs remaining = 12
=====================================
Calculating radiative properties...
R_atm       0.12760589889823587
R_dir       0.06046419017201067
R_env       0.012888590547129805
R_total       0.20095867961737635See user guide for more detailed instructions.OtherT-Mart can calculate reflectances of various units, see Table 1 in Wu et al. (2023) for examples.For questions and suggestions (which I'm always open to!), please email Yulun atyulunwu8@gmail.com