opticallyshallowdeep 1.2.2__tar.gz → 1.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {opticallyshallowdeep-1.2.2/opticallyshallowdeep.egg-info → opticallyshallowdeep-1.2.3}/PKG-INFO +24 -5
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/README.md +12 -2
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/make_multiband_image.py +1 -1
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/run.py +2 -2
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3/opticallyshallowdeep.egg-info}/PKG-INFO +24 -5
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep.egg-info/requires.txt +1 -1
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/setup.py +2 -2
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/LICENSE +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/MANIFEST.in +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/__init__.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/check_transpose.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/cloud_mask.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/find_epsg.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/make_vertical_strips.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/models/SR.h5 +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/models/TOA.h5 +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/netcdf_to_multiband_geotiff.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/parse_string.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/process_as_strips.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/write_georef_image.py +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep.egg-info/SOURCES.txt +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep.egg-info/dependency_links.txt +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep.egg-info/top_level.txt +0 -0
- {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/setup.cfg +0 -0
{opticallyshallowdeep-1.2.2/opticallyshallowdeep.egg-info → opticallyshallowdeep-1.2.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: opticallyshallowdeep
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.3
|
|
4
4
|
Summary: Identify optically shallow and deep waters in satellite imagery
|
|
5
5
|
Author: Yulun Wu
|
|
6
6
|
Author-email: yulunwu8@gmail.com
|
|
@@ -9,7 +9,7 @@ Requires-Python: >=3.8
|
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Requires-Dist: geopandas
|
|
12
|
-
Requires-Dist: rasterio
|
|
12
|
+
Requires-Dist: rasterio==1.3.9
|
|
13
13
|
Requires-Dist: tifffile==2023.8.12
|
|
14
14
|
Requires-Dist: netCDF4
|
|
15
15
|
Requires-Dist: pyproj
|
|
@@ -18,6 +18,15 @@ Requires-Dist: scipy
|
|
|
18
18
|
Requires-Dist: matplotlib
|
|
19
19
|
Requires-Dist: imagecodecs
|
|
20
20
|
Requires-Dist: tensorflow
|
|
21
|
+
Dynamic: author
|
|
22
|
+
Dynamic: author-email
|
|
23
|
+
Dynamic: classifier
|
|
24
|
+
Dynamic: description
|
|
25
|
+
Dynamic: description-content-type
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
21
30
|
|
|
22
31
|
# Optically-Shallow-Deep
|
|
23
32
|
|
|
@@ -29,7 +38,9 @@ Supported input includes Level-1C (L1C) SAFE files and ACOLITE-processed L2R net
|
|
|
29
38
|
|
|
30
39
|
**Publication:** Richardson, G., Foreman, N., Knudby, A., Wu, Y., & Lin, Y. (2024). Global deep learning model for delineation of optically shallow and optically deep water in Sentinel-2 imagery. *Remote Sensing of Environment*, 311, 114302. <a href="https://doi.org/10.1016/j.rse.2024.114302" target="_blank">https://doi.org/10.1016/j.rse.2024.114302</a>
|
|
31
40
|
|
|
32
|
-
Originally coded by
|
|
41
|
+
Originally coded by G. Richardson and A. Knudby, modified and packaged by Y. Wu
|
|
42
|
+
|
|
43
|
+
Models trained by G. Richardson and N. Foreman
|
|
33
44
|
|
|
34
45
|
|
|
35
46
|
## Installation
|
|
@@ -104,7 +115,7 @@ osd.run(file_L1C, folder_out, file_L2R=file_L2R)
|
|
|
104
115
|
The L1C file is always required as it contains a built-in cloud mask. Pixels within 8 pixels of the cloud mask are masked to reduce the impact of clouds.
|
|
105
116
|
|
|
106
117
|
|
|
107
|
-
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
118
|
+
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
108
119
|
|
|
109
120
|
A log file, an intermediate multi-band geotiff, and a preview PNG are also generated in the output folder. They can be deleted after the processing.
|
|
110
121
|
|
|
@@ -115,6 +126,14 @@ A log file, an intermediate multi-band geotiff, and a preview PNG are also gener
|
|
|
115
126
|
|
|
116
127
|
<img src="images/OSW.jpeg" height="500">
|
|
117
128
|
|
|
129
|
+
|
|
130
|
+
## Tips
|
|
131
|
+
|
|
132
|
+
It is recommended to treat pixels with values between 0 and 40 as ODW, and those between 60 and 100 as OSW (Richardson et al., 2024).
|
|
133
|
+
|
|
134
|
+
Users have reported that averaging results from multiple images acquired on different days can help reduce noise and improve the overall accuracy of classification results.
|
|
135
|
+
|
|
136
|
+
|
|
118
137
|
## Training, test, and validation data
|
|
119
138
|
|
|
120
139
|
All annotated shapefiles used in training, testing, and validating the DNN model are in the annotated_shapefiles folder, grouped by Sentinel-2 Scene ID.
|
|
@@ -8,7 +8,9 @@ Supported input includes Level-1C (L1C) SAFE files and ACOLITE-processed L2R net
|
|
|
8
8
|
|
|
9
9
|
**Publication:** Richardson, G., Foreman, N., Knudby, A., Wu, Y., & Lin, Y. (2024). Global deep learning model for delineation of optically shallow and optically deep water in Sentinel-2 imagery. *Remote Sensing of Environment*, 311, 114302. <a href="https://doi.org/10.1016/j.rse.2024.114302" target="_blank">https://doi.org/10.1016/j.rse.2024.114302</a>
|
|
10
10
|
|
|
11
|
-
Originally coded by
|
|
11
|
+
Originally coded by G. Richardson and A. Knudby, modified and packaged by Y. Wu
|
|
12
|
+
|
|
13
|
+
Models trained by G. Richardson and N. Foreman
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
## Installation
|
|
@@ -83,7 +85,7 @@ osd.run(file_L1C, folder_out, file_L2R=file_L2R)
|
|
|
83
85
|
The L1C file is always required as it contains a built-in cloud mask. Pixels within 8 pixels of the cloud mask are masked to reduce the impact of clouds.
|
|
84
86
|
|
|
85
87
|
|
|
86
|
-
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
88
|
+
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
87
89
|
|
|
88
90
|
A log file, an intermediate multi-band geotiff, and a preview PNG are also generated in the output folder. They can be deleted after the processing.
|
|
89
91
|
|
|
@@ -94,6 +96,14 @@ A log file, an intermediate multi-band geotiff, and a preview PNG are also gener
|
|
|
94
96
|
|
|
95
97
|
<img src="images/OSW.jpeg" height="500">
|
|
96
98
|
|
|
99
|
+
|
|
100
|
+
## Tips
|
|
101
|
+
|
|
102
|
+
It is recommended to treat pixels with values between 0 and 40 as ODW, and those between 60 and 100 as OSW (Richardson et al., 2024).
|
|
103
|
+
|
|
104
|
+
Users have reported that averaging results from multiple images acquired on different days can help reduce noise and improve the overall accuracy of classification results.
|
|
105
|
+
|
|
106
|
+
|
|
97
107
|
## Training, test, and validation data
|
|
98
108
|
|
|
99
109
|
All annotated shapefiles used in training, testing, and validating the DNN model are in the annotated_shapefiles folder, grouped by Sentinel-2 Scene ID.
|
|
@@ -10,7 +10,7 @@ def make_multiband_image(file_in,folder_out):
|
|
|
10
10
|
basename = os.path.basename(file_in).rstrip(".SAFE")
|
|
11
11
|
|
|
12
12
|
# output path
|
|
13
|
-
imageFile = os.path.join(folder_out,basename
|
|
13
|
+
imageFile = os.path.join(folder_out, f"{basename}.tif")
|
|
14
14
|
|
|
15
15
|
if os.path.exists(imageFile):
|
|
16
16
|
print('Multi-band geotiff exists: ' + str(imageFile))
|
|
@@ -70,7 +70,7 @@ def run(file_L1C, folder_out, file_L2R = None, to_log=True):
|
|
|
70
70
|
if file_L2R is None:
|
|
71
71
|
|
|
72
72
|
if_SR = False
|
|
73
|
-
model = 'models
|
|
73
|
+
model = os.path.join('models', 'TOA.h5')
|
|
74
74
|
model_columns = GTOA_model_columns
|
|
75
75
|
file_in = file_L1C
|
|
76
76
|
|
|
@@ -84,7 +84,7 @@ def run(file_L1C, folder_out, file_L2R = None, to_log=True):
|
|
|
84
84
|
sys.exit('file_L2R does not exist: ' + str(file_L2R))
|
|
85
85
|
|
|
86
86
|
if_SR = True
|
|
87
|
-
model = 'models
|
|
87
|
+
model = os.path.join('models', 'SR.h5')
|
|
88
88
|
model_columns = GACOLITE_model_columns
|
|
89
89
|
file_in = file_L2R
|
|
90
90
|
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3/opticallyshallowdeep.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: opticallyshallowdeep
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.3
|
|
4
4
|
Summary: Identify optically shallow and deep waters in satellite imagery
|
|
5
5
|
Author: Yulun Wu
|
|
6
6
|
Author-email: yulunwu8@gmail.com
|
|
@@ -9,7 +9,7 @@ Requires-Python: >=3.8
|
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Requires-Dist: geopandas
|
|
12
|
-
Requires-Dist: rasterio
|
|
12
|
+
Requires-Dist: rasterio==1.3.9
|
|
13
13
|
Requires-Dist: tifffile==2023.8.12
|
|
14
14
|
Requires-Dist: netCDF4
|
|
15
15
|
Requires-Dist: pyproj
|
|
@@ -18,6 +18,15 @@ Requires-Dist: scipy
|
|
|
18
18
|
Requires-Dist: matplotlib
|
|
19
19
|
Requires-Dist: imagecodecs
|
|
20
20
|
Requires-Dist: tensorflow
|
|
21
|
+
Dynamic: author
|
|
22
|
+
Dynamic: author-email
|
|
23
|
+
Dynamic: classifier
|
|
24
|
+
Dynamic: description
|
|
25
|
+
Dynamic: description-content-type
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
21
30
|
|
|
22
31
|
# Optically-Shallow-Deep
|
|
23
32
|
|
|
@@ -29,7 +38,9 @@ Supported input includes Level-1C (L1C) SAFE files and ACOLITE-processed L2R net
|
|
|
29
38
|
|
|
30
39
|
**Publication:** Richardson, G., Foreman, N., Knudby, A., Wu, Y., & Lin, Y. (2024). Global deep learning model for delineation of optically shallow and optically deep water in Sentinel-2 imagery. *Remote Sensing of Environment*, 311, 114302. <a href="https://doi.org/10.1016/j.rse.2024.114302" target="_blank">https://doi.org/10.1016/j.rse.2024.114302</a>
|
|
31
40
|
|
|
32
|
-
Originally coded by
|
|
41
|
+
Originally coded by G. Richardson and A. Knudby, modified and packaged by Y. Wu
|
|
42
|
+
|
|
43
|
+
Models trained by G. Richardson and N. Foreman
|
|
33
44
|
|
|
34
45
|
|
|
35
46
|
## Installation
|
|
@@ -104,7 +115,7 @@ osd.run(file_L1C, folder_out, file_L2R=file_L2R)
|
|
|
104
115
|
The L1C file is always required as it contains a built-in cloud mask. Pixels within 8 pixels of the cloud mask are masked to reduce the impact of clouds.
|
|
105
116
|
|
|
106
117
|
|
|
107
|
-
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
118
|
+
Output is a 1-band geotiff, with values of prediction probability of optically shallow water (OSW): 100 means most likely OSW, 0 means most likely optically deep water (ODW). Non-water pixels are masked.
|
|
108
119
|
|
|
109
120
|
A log file, an intermediate multi-band geotiff, and a preview PNG are also generated in the output folder. They can be deleted after the processing.
|
|
110
121
|
|
|
@@ -115,6 +126,14 @@ A log file, an intermediate multi-band geotiff, and a preview PNG are also gener
|
|
|
115
126
|
|
|
116
127
|
<img src="images/OSW.jpeg" height="500">
|
|
117
128
|
|
|
129
|
+
|
|
130
|
+
## Tips
|
|
131
|
+
|
|
132
|
+
It is recommended to treat pixels with values between 0 and 40 as ODW, and those between 60 and 100 as OSW (Richardson et al., 2024).
|
|
133
|
+
|
|
134
|
+
Users have reported that averaging results from multiple images acquired on different days can help reduce noise and improve the overall accuracy of classification results.
|
|
135
|
+
|
|
136
|
+
|
|
118
137
|
## Training, test, and validation data
|
|
119
138
|
|
|
120
139
|
All annotated shapefiles used in training, testing, and validating the DNN model are in the annotated_shapefiles folder, grouped by Sentinel-2 Scene ID.
|
|
@@ -5,7 +5,7 @@ with open("readme.md", "r") as fh:
|
|
|
5
5
|
|
|
6
6
|
setup(
|
|
7
7
|
name='opticallyshallowdeep',
|
|
8
|
-
version='1.2.
|
|
8
|
+
version='1.2.3',
|
|
9
9
|
author='Yulun Wu',
|
|
10
10
|
author_email='yulunwu8@gmail.com',
|
|
11
11
|
description='Identify optically shallow and deep waters in satellite imagery',
|
|
@@ -18,7 +18,7 @@ setup(
|
|
|
18
18
|
'Programming Language :: Python :: 3'
|
|
19
19
|
],
|
|
20
20
|
python_requires='>=3.8',
|
|
21
|
-
install_requires=['geopandas','rasterio','tifffile==2023.8.12','netCDF4','pyproj',
|
|
21
|
+
install_requires=['geopandas','rasterio==1.3.9','tifffile==2023.8.12','netCDF4','pyproj',
|
|
22
22
|
'joblib','scipy','matplotlib','imagecodecs','tensorflow']
|
|
23
23
|
)
|
|
24
24
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/check_transpose.py
RENAMED
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/cloud_mask.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/models/TOA.h5
RENAMED
|
File without changes
|
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/parse_string.py
RENAMED
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/process_as_strips.py
RENAMED
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep/write_georef_image.py
RENAMED
|
File without changes
|
{opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3}/opticallyshallowdeep.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|