opticallyshallowdeep 1.2.2__tar.gz → 1.2.3.post1__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.
Files changed (24) hide show
  1. {opticallyshallowdeep-1.2.2/opticallyshallowdeep.egg-info → opticallyshallowdeep-1.2.3.post1}/PKG-INFO +27 -8
  2. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/README.md +15 -5
  3. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/make_multiband_image.py +1 -1
  4. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/run.py +2 -2
  5. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1/opticallyshallowdeep.egg-info}/PKG-INFO +27 -8
  6. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep.egg-info/requires.txt +1 -1
  7. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/setup.py +2 -2
  8. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/LICENSE +0 -0
  9. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/MANIFEST.in +0 -0
  10. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/__init__.py +0 -0
  11. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/check_transpose.py +0 -0
  12. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/cloud_mask.py +0 -0
  13. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/find_epsg.py +0 -0
  14. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/make_vertical_strips.py +0 -0
  15. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/models/SR.h5 +0 -0
  16. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/models/TOA.h5 +0 -0
  17. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/netcdf_to_multiband_geotiff.py +0 -0
  18. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/parse_string.py +0 -0
  19. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/process_as_strips.py +0 -0
  20. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep/write_georef_image.py +0 -0
  21. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep.egg-info/SOURCES.txt +0 -0
  22. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep.egg-info/dependency_links.txt +0 -0
  23. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/opticallyshallowdeep.egg-info/top_level.txt +0 -0
  24. {opticallyshallowdeep-1.2.2 → opticallyshallowdeep-1.2.3.post1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: opticallyshallowdeep
3
- Version: 1.2.2
3
+ Version: 1.2.3.post1
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 by Galen Richardson and Anders Knudby, modified and packaged by Yulun Wu
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
@@ -47,7 +58,7 @@ For mac OS:
47
58
 
48
59
  ```bash
49
60
  conda install -c apple tensorflow-deps
50
- python -m pip install tensorflow-macos
61
+ python -m pip install tensorflow-macos==2.13.0
51
62
  ```
52
63
 
53
64
 
@@ -104,16 +115,24 @@ 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. It is recommended to treat pixels between 0 and 40 as ODW, and pixels between 60 and 100 as OSW (Richardson et al., 2024).
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
 
111
122
 
112
123
  **Sample Sentinel-2 scene and output:**
113
124
 
114
- <img src="images/TOA.jpeg" height="500">
125
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/TOA.jpeg" height="500">
126
+
127
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/OSW.jpeg" height="500">
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.
115
135
 
116
- <img src="images/OSW.jpeg" height="500">
117
136
 
118
137
  ## Training, test, and validation data
119
138
 
@@ -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 by Galen Richardson and Anders Knudby, modified and packaged by Yulun Wu
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
@@ -26,7 +28,7 @@ For mac OS:
26
28
 
27
29
  ```bash
28
30
  conda install -c apple tensorflow-deps
29
- python -m pip install tensorflow-macos
31
+ python -m pip install tensorflow-macos==2.13.0
30
32
  ```
31
33
 
32
34
 
@@ -83,16 +85,24 @@ 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. It is recommended to treat pixels between 0 and 40 as ODW, and pixels between 60 and 100 as OSW (Richardson et al., 2024).
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
 
90
92
 
91
93
  **Sample Sentinel-2 scene and output:**
92
94
 
93
- <img src="images/TOA.jpeg" height="500">
95
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/TOA.jpeg" height="500">
96
+
97
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/OSW.jpeg" height="500">
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.
94
105
 
95
- <img src="images/OSW.jpeg" height="500">
96
106
 
97
107
  ## Training, test, and validation data
98
108
 
@@ -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) + '.tif'
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/TOA.h5'
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/SR.h5'
87
+ model = os.path.join('models', 'SR.h5')
88
88
  model_columns = GACOLITE_model_columns
89
89
  file_in = file_L2R
90
90
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: opticallyshallowdeep
3
- Version: 1.2.2
3
+ Version: 1.2.3.post1
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 by Galen Richardson and Anders Knudby, modified and packaged by Yulun Wu
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
@@ -47,7 +58,7 @@ For mac OS:
47
58
 
48
59
  ```bash
49
60
  conda install -c apple tensorflow-deps
50
- python -m pip install tensorflow-macos
61
+ python -m pip install tensorflow-macos==2.13.0
51
62
  ```
52
63
 
53
64
 
@@ -104,16 +115,24 @@ 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. It is recommended to treat pixels between 0 and 40 as ODW, and pixels between 60 and 100 as OSW (Richardson et al., 2024).
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
 
111
122
 
112
123
  **Sample Sentinel-2 scene and output:**
113
124
 
114
- <img src="images/TOA.jpeg" height="500">
125
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/TOA.jpeg" height="500">
126
+
127
+ <img src="https://raw.githubusercontent.com/yulunwu8/Optically-Shallow-Deep/main/images/OSW.jpeg" height="500">
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.
115
135
 
116
- <img src="images/OSW.jpeg" height="500">
117
136
 
118
137
  ## Training, test, and validation data
119
138
 
@@ -1,5 +1,5 @@
1
1
  geopandas
2
- rasterio
2
+ rasterio==1.3.9
3
3
  tifffile==2023.8.12
4
4
  netCDF4
5
5
  pyproj
@@ -5,7 +5,7 @@ with open("readme.md", "r") as fh:
5
5
 
6
6
  setup(
7
7
  name='opticallyshallowdeep',
8
- version='1.2.2',
8
+ version='1.2.3.post1',
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