enpt
Advanced tools
+24
-15
| { | ||
| "title": "EnPT - EnMAP Processing Tool", | ||
| "description": "The EnPT Python package is an automated pre-processing pipeline for the new EnMAP hyperspectral satellite data. It provides free and open-source features to transform EnMAP Level-1B data to Level-2A. The package has been developed at the GFZ Helmholtz Centre for Geosciences, Germany, as an alternative to the processing chain of the EnMAP Ground Segment.", | ||
| "notes": "This software was developed within the context of the EnMAP project supported by the DLR Space Administration with funds of the German Federal Ministry of Economic Affairs and Energy (on the basis of a decision by the German Bundestag: 50 EE 1529) and contributions from DLR, GFZ and OHB System AG.", | ||
| "access_right": "open", | ||
| "license": "GPL-3.0+", | ||
@@ -19,3 +21,4 @@ "upload_type": "software", | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics", | ||
| "orcid": "0000-0003-4106-8928" | ||
| "orcid": "0000-0003-4106-8928", | ||
| "type": "Researcher" | ||
| }, | ||
@@ -25,3 +28,4 @@ { | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics", | ||
| "orcid": "0000-0003-4078-886X" | ||
| "orcid": "0000-0003-4078-886X", | ||
| "type": "Researcher" | ||
| }, | ||
@@ -31,7 +35,10 @@ { | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics", | ||
| "orcid": "0000-0001-9805-9390" | ||
| "orcid": "0000-0001-9805-9390", | ||
| "type": "Researcher" | ||
| }, | ||
| { | ||
| "name": "Segl, Karl", | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics" | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics", | ||
| "orcid": "0000-0001-8909-1006", | ||
| "type": "WorkPackageLeader" | ||
| } | ||
@@ -61,2 +68,3 @@ ], | ||
| "affiliation": "GFZ Helmholtz Centre for Geosciences, Section 1.4 - Remote Sensing and Geoinformatics", | ||
| "orcid": "0000-0001-8909-1006", | ||
| "type": "WorkPackageLeader" | ||
@@ -71,5 +79,7 @@ }, | ||
| ], | ||
| "references": [ | ||
| "Scheffler, D., Brell, M., Bohn, N., Alvarado, L., Soppa, M., Segl, K., Bracher, A., Chabrillat, S. (2023): EnPT - an Alternative Pre-Processing Chain for Hyperspectral EnMAP Data. Proceedings of IGARSS 2023 - International Geoscience and Remote Sensing Symposium (Pasadena, CA 2023). https://doi.org/10.1109/IGARSS52108.2023.10281805" | ||
| ], | ||
| "related_identifiers": [ | ||
| { | ||
| "scheme": "url", | ||
| "identifier": "https://git.gfz-potsdam.de/EnMAP/GFZ_Tools_EnMAP_BOX/EnPT", | ||
@@ -80,3 +90,2 @@ "relation": "isSupplementTo", | ||
| { | ||
| "scheme": "url", | ||
| "identifier": "https://enmap.git-pages.gfz-potsdam.de/GFZ_Tools_EnMAP_BOX/EnPT/doc", | ||
@@ -87,14 +96,14 @@ "relation": "isDocumentedBy", | ||
| { | ||
| "scheme": "url", | ||
| "identifier": "https://www.enmap.org/data_tools/enmapbox/", | ||
| "relation": "isPartOf" | ||
| "relation": "isPartOf", | ||
| "resource_type": "software" | ||
| } | ||
| ], | ||
| "grants": [ | ||
| { | ||
| "code": "50 EE 1529", | ||
| "funder": "German Federal Ministry of Economic Affairs and Energy (on the basis of a decision by the German Bundestag)", | ||
| "title": "EnMAP" | ||
| } | ||
| ] | ||
| "custom": { | ||
| "code:programmingLanguage": [ | ||
| {"id": "python"} | ||
| ], | ||
| "code:codeRepository": "https://git.gfz-potsdam.de/EnMAP/GFZ_Tools_EnMAP_BOX/EnPT", | ||
| "code:developmentStatus": {"id": "active"} | ||
| } | ||
| } |
+1
-1
@@ -119,3 +119,3 @@ .. highlight:: shell | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -122,0 +122,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
+1
-1
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
+1
-1
@@ -6,3 +6,3 @@ #!/usr/bin/env python | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -9,0 +9,0 @@ # Stephane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -121,4 +121,4 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| not (os.path.exists(path_enmap_image) and zipfile.is_zipfile(path_enmap_image)): | ||
| raise ValueError("The parameter 'path_enmap_image' must be a directory or the path to an existing zip " | ||
| "archive. Received %s." % path_enmap_image) | ||
| raise ValueError(f"The parameter 'path_enmap_image' must be a directory or the path to an existing zip " | ||
| f"archive. Received {path_enmap_image}") | ||
@@ -125,0 +125,0 @@ # extract L1B image archive if needed |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -83,2 +83,5 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| self._deadpixelmap = None | ||
| self._sicor_cwv = None | ||
| self._sicor_liq = None | ||
| self._sicor_ice = None | ||
| self._isofit_atm_state = None | ||
@@ -319,2 +322,56 @@ self._isofit_uncertainty = None | ||
| @property | ||
| def sicor_cwv(self) -> GeoArray: | ||
| """Return SICOR's column water vapor output. | ||
| :return: geoarray.GeoArray | ||
| """ | ||
| return self._sicor_cwv | ||
| @sicor_cwv.setter | ||
| def sicor_cwv(self, *geoArr_initArgs): | ||
| self._sicor_cwv = ( | ||
| self._get_geoarray_with_datalike_geometry( | ||
| geoArr_initArgs, | ||
| 'sicor_cwv', | ||
| nodataVal=-9999) | ||
| ) | ||
| self._sicor_cwv.bandnames = ['column water vapor'] | ||
| @property | ||
| def sicor_liq(self) -> GeoArray: | ||
| """Return SICOR's liquid water content output. | ||
| :return: geoarray.GeoArray | ||
| """ | ||
| return self._sicor_liq | ||
| @sicor_liq.setter | ||
| def sicor_liq(self, *geoArr_initArgs): | ||
| self._sicor_liq = ( | ||
| self._get_geoarray_with_datalike_geometry( | ||
| geoArr_initArgs, | ||
| 'sicor_liq', | ||
| nodataVal=-9999) | ||
| ) | ||
| self._sicor_liq.bandnames = ['path length of liquid water / canopy water content'] | ||
| @property | ||
| def sicor_ice(self) -> GeoArray: | ||
| """Return SICOR's ice content output. | ||
| :return: geoarray.GeoArray | ||
| """ | ||
| return self._sicor_ice | ||
| @sicor_ice.setter | ||
| def sicor_ice(self, *geoArr_initArgs): | ||
| self._sicor_ice = ( | ||
| self._get_geoarray_with_datalike_geometry( | ||
| geoArr_initArgs, | ||
| 'sicor_ice', | ||
| nodataVal=-9999) | ||
| ) | ||
| self._sicor_ice.bandnames = ['path length of ice'] | ||
| @property | ||
| def isofit_atm_state(self) -> GeoArray: | ||
@@ -321,0 +378,0 @@ """Return ISOFIT's atmospheric state output which contains the estimated aerosol optical depth and water vapour. |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -37,2 +37,3 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| from os import path, makedirs | ||
| import shutil | ||
@@ -305,2 +306,3 @@ import numpy as np | ||
| 'mask_cirrus', 'quicklook_vnir', 'quicklook_swir', 'deadpixelmap', | ||
| 'sicor_cwv', 'sicor_liq', 'sicor_ice', | ||
| 'isofit_atm_state', 'isofit_uncertainty', | ||
@@ -314,3 +316,3 @@ 'polymer_logchl', 'polymer_logfb', 'polymer_rgli', 'polymer_rnir', 'polymer_bitmask']: | ||
| if attrName.startswith('polymer_') or attrName.startswith('isofit_'): | ||
| if attrName.startswith('sicor_') or attrName.startswith('isofit_') or attrName.startswith('polymer_'): | ||
| ext = \ | ||
@@ -328,2 +330,5 @@ 'TIF' if self.cfg.output_format == 'GTiff' else \ | ||
| polymer_bitmask=f'{self.meta.scene_basename}-ACOUT_POLYMER_BITMASK.{ext}', | ||
| sicor_cwv=f'{self.meta.scene_basename}-ACOUT_SICOR_CWV.{ext}', | ||
| sicor_liq=f'{self.meta.scene_basename}-ACOUT_SICOR_LIQ.{ext}', | ||
| sicor_ice=f'{self.meta.scene_basename}-ACOUT_SICOR_ICE.{ext}', | ||
| isofit_atm_state=f'{self.meta.scene_basename}-ACOUT_ISOFIT_ATM_STATE.{ext}', | ||
@@ -374,2 +379,5 @@ isofit_uncertainty=f'{self.meta.scene_basename}-ACOUT_ISOFIT_UNCERTAINTY.{ext}' | ||
| # move logfile to output folder and rename to L2A format | ||
| shutil.move(self.logger.path_logfile, path.join(product_dir, f'{self.meta.scene_basename}-ENPT_LOG.log')) | ||
| return product_dir |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -162,3 +162,3 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| # dof (degrees of freedom), information_content, retrieval_noise, smoothing_error | ||
| # -> SWIR geometry (?) # FIXME | ||
| # -> SWIR geometry # FIXME | ||
| boa_ref_vnir, boa_ref_swir, land_additional_results = \ | ||
@@ -199,3 +199,3 @@ sicor_ac_enmap(enmap_l1b=enmap_ImageL1, | ||
| def _run_ac__water_mode(self, enmap_ImageL1: EnMAPL1Product_SensorGeo | ||
| ) -> (np.ndarray, np.ndarray): | ||
| ) -> (np.ndarray, np.ndarray, dict): | ||
| """Run atmospheric correction in 'water' mode, i.e., use ACWater/Polymer for water surfaces only. | ||
@@ -243,3 +243,3 @@ | ||
| enmap_ImageL1: EnMAPL1Product_SensorGeo | ||
| ) -> (np.ndarray, np.ndarray, dict): | ||
| ) -> (np.ndarray, np.ndarray, dict, dict): | ||
| """Run atmospheric corr. in 'combined' mode, i.e., use SICOR for land and ACWater/Polymer for water surfaces. | ||
@@ -332,3 +332,4 @@ | ||
| # set initial value water_additional_results | ||
| # set initial values | ||
| land_additional_results = None | ||
| water_additional_results = None | ||
@@ -384,4 +385,8 @@ | ||
| # FIXME: Consider to also join SICOR's land_additional_results | ||
| # (contains three phases of water maps and several retrieval uncertainty measures) | ||
| # join three phases of water maps from SICOR (output is in SWIR geometry) | ||
| if land_additional_results: | ||
| # TODO: Consider to also join SICOR's retrieval uncertainty measures | ||
| enmap_ImageL1.swir.sicor_cwv = np.nan_to_num(land_additional_results['cwv_model'], nan=-9999) | ||
| enmap_ImageL1.swir.sicor_liq = np.nan_to_num(land_additional_results['liq_model'], nan=-9999) | ||
| enmap_ImageL1.swir.sicor_ice = np.nan_to_num(land_additional_results['ice_model'], nan=-9999) | ||
@@ -388,0 +393,0 @@ # join additional results from ACwater/Polymer |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -164,4 +164,10 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| for attrName in ['mask_landwater', 'mask_clouds', 'mask_cloudshadow', 'mask_haze', 'mask_snow', 'mask_cirrus', | ||
| 'sicor_cwv', 'sicor_liq', 'sicor_ice', | ||
| 'polymer_logchl', 'polymer_logfb', 'polymer_rgli', 'polymer_rnir', 'polymer_bitmask']: | ||
| attr = getattr(enmap_ImageL1.vnir, attrName) | ||
| if attrName.startswith('sicor_'): | ||
| attr = getattr(enmap_ImageL1.swir, attrName) # SICOR attributes are stored in SWIR geometry | ||
| _lons, _lats = lons_swir, lats_swir | ||
| else: | ||
| attr = getattr(enmap_ImageL1.vnir, attrName) | ||
| _lons, _lats = lons_vnir, lats_vnir | ||
@@ -175,4 +181,4 @@ if attr is not None: | ||
| GT = Geometry_Transformer( | ||
| lons=lons_vnir if lons_vnir.ndim == 2 else lons_vnir[:, :, 0], | ||
| lats=lats_vnir if lats_vnir.ndim == 2 else lats_vnir[:, :, 0], | ||
| lons=_lons if _lons.ndim == 2 else _lons[:, :, 0], | ||
| lats=_lats if _lats.ndim == 2 else _lats[:, :, 0], | ||
| **kw_init_attr) | ||
@@ -195,3 +201,6 @@ | ||
| for attr_gA in [L2_obj.mask_landwater, L2_obj.mask_clouds, L2_obj.mask_cloudshadow, L2_obj.mask_haze, | ||
| L2_obj.mask_snow, L2_obj.mask_cirrus]: | ||
| L2_obj.mask_snow, L2_obj.mask_cirrus, | ||
| L2_obj.sicor_cwv, L2_obj.sicor_liq, L2_obj.sicor_ice, | ||
| L2_obj.polymer_logchl, L2_obj.polymer_logfb, L2_obj.polymer_rgli, | ||
| L2_obj.polymer_rnir, L2_obj.polymer_bitmask]: | ||
| if attr_gA is not None: | ||
@@ -198,0 +207,0 @@ attr_gA[~mask_nodata_common] = attr_gA.nodata |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -305,8 +305,8 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| msg = 'Coordinate normalization yields significantly out-of-range values for %s. ' \ | ||
| 'Check the coordinates and RPC coefficients.' | ||
| # for llh, name in zip([lon_norm, lat_norm, height_norm], ['longitudes', 'latitudes', 'heights']): | ||
| for llh, name in zip([lon_norm, lat_norm, height_norm], ['longitudes', 'latitudes']): | ||
| if llh.min() < -1.1 or llh.max() > 1.1: | ||
| raise RuntimeError((llh.min(), llh.max()), msg % name) | ||
| raise RuntimeError((llh.min(), llh.max()), | ||
| f'Coordinate normalization yields significantly out-of-range values for {name}. ' | ||
| f'Check the coordinates and RPC coefficients.') | ||
@@ -313,0 +313,0 @@ return lon_norm, lat_norm, height_norm |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -67,3 +67,3 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| self.fmt_suffix = fmt_suffix | ||
| self.path_logfile = path_logfile | ||
| self.path_logfile = os.path.abspath(path_logfile) if path_logfile else None | ||
| self.log_level = log_level | ||
@@ -70,0 +70,0 @@ |
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
+3
-3
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -31,4 +31,4 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) | ||
| __version__ = '1.0.5' | ||
| __versionalias__ = '20250616.01' | ||
| __version__ = '1.1.0' | ||
| __versionalias__ = '20250904.01' | ||
| __author__ = 'Daniel Scheffler' |
+11
-1
@@ -5,6 +5,16 @@ ======= | ||
| 1.1.0 (2025-09-04) | ||
| ------------------ | ||
| * !119: Added GitLeaks CI job. | ||
| * !120: Updated copyright. | ||
| * Updated Zenodo metadata due to upstream changes in the Zenodo API. | ||
| * !121: Added SICOR's three phases of water retrieval maps (water vapor, liquid water, ice) to EnPT's L2A output. | ||
| * !122: Fixed issue of EnPT log file not being moved to output folder. | ||
| 1.0.5 (2025-06-16) | ||
| ------------------ | ||
| !117: Fixed OverflowError when transforming LUT into ISOFIT format. | ||
| * !117: Fixed OverflowError when transforming LUT into ISOFIT format. | ||
@@ -11,0 +21,0 @@ |
+1
-1
@@ -15,3 +15,3 @@ `EnPT` is distributed under the GNU General Public License, version 3 (GPLv3). | ||
| EnMAP PT | ||
| Copyright (C) 2018-2024 Karl Segl | ||
| Copyright (C) 2018–2025 Karl Segl | ||
@@ -18,0 +18,0 @@ This program is free software: you can redistribute it and/or modify |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: enpt | ||
| Version: 1.0.5 | ||
| Version: 1.1.0 | ||
| Summary: EnMAP Processing Tool | ||
@@ -5,0 +5,0 @@ Project-URL: Source code, https://git.gfz-potsdam.de/EnMAP/GFZ_Tools_EnMAP_BOX/EnPT |
+1
-1
@@ -5,3 +5,3 @@ # -*- coding: utf-8 -*- | ||
| # | ||
| # Copyright (C) 2018-2024 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # Copyright (C) 2018–2025 Karl Segl (GFZ Potsdam, segl@gfz.de), Daniel Scheffler | ||
| # (GFZ Potsdam, danschef@gfz.de), Niklas Bohn (GFZ Potsdam, nbohn@gfz.de), | ||
@@ -8,0 +8,0 @@ # Stéphane Guillaso (GFZ Potsdam, stephane.guillaso@gfz.de) |
Sorry, the diff of this file is too big to display
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
2060977
0.94%8856
0.91%