Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
GeoSentinel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mario Chirinos Colunga
GeoSentinel
Commits
c04a11c1
Commit
c04a11c1
authored
7 years ago
by
Pedro Alfonso Ramirez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add get RGB sentinel-2 files
parent
7dc7f8fb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
145 additions
and
5 deletions
+145
-5
combination_sentinel_raster
examples/combination_sentinel_raster
+49
-0
arguments.py
geosentinel/arguments.py
+11
-0
ui_utils.py
geosentinel/ui_utils.py
+85
-5
No files found.
examples/combination_sentinel_raster
0 → 100644
View file @
c04a11c1
#!/bin/python
# Copyright (C) 2018 Adan Salazar <asalazargaribay@gmail.com>
#
#
# This file is part of GeoSentinel
#
#
# GeoSentinel is free software you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GeoSentinel is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with StereoVision. If not, see <http://www.gnu.org/licenses/>.
"""
Example of combination raster in Sentinel files in a specific directory
"""
from
argparse
import
ArgumentParser
from
geosentinel.ui_utils
import
(
find_files_Sentinel
,
find_files_byext_Sentinel
,
search_band_combination
)
from
geosentinel.arguments
import
SENTINEL_COMBINATION_ARGUMENTS
def
main
():
"""
Get combination raster all Sentinel files in the folder specified by the user.
Please run: python unzip_sentinel_files --help before usage
"""
parser
=
ArgumentParser
(
description
=
"Combination raster in Sentinel files in the folder specified by the user"
,
parents
=
[
SENTINEL_COMBINATION_ARGUMENTS
])
args
=
parser
.
parse_args
()
list_files
=
find_files_Sentinel
(
args
)
list_files_byext
=
find_files_byext_Sentinel
(
list_files
,
args
)
search_band_combination
(
list_files_byext
,
args
)
if
__name__
==
"__main__"
:
main
()
This diff is collapsed.
Click to expand it.
geosentinel/arguments.py
View file @
c04a11c1
...
@@ -56,3 +56,14 @@ SENTINEL_UNZIP_ARGUMENTS.add_argument("folder", help="Folder to find Sentinel fi
...
@@ -56,3 +56,14 @@ SENTINEL_UNZIP_ARGUMENTS.add_argument("folder", help="Folder to find Sentinel fi
SENTINEL_UNZIP_ARGUMENTS
.
add_argument
(
"plattform"
,
help
=
"Sentinel-1 or Sentinel-2"
)
SENTINEL_UNZIP_ARGUMENTS
.
add_argument
(
"plattform"
,
help
=
"Sentinel-1 or Sentinel-2"
)
SENTINEL_UNZIP_ARGUMENTS
.
add_argument
(
"product_type"
,
help
=
"sentinel product type {all, SM_SLC, SM_GRDF, SM_GRDH, SM_GRDM, IW_SLC, IW_GRDH, IW_GDRM, EW_SLC, EW_GRDH, EW_GRDM, WV_SLC, WV_GRDM, MSIL1C, OPER_PRD }"
)
SENTINEL_UNZIP_ARGUMENTS
.
add_argument
(
"product_type"
,
help
=
"sentinel product type {all, SM_SLC, SM_GRDF, SM_GRDH, SM_GRDM, IW_SLC, IW_GRDH, IW_GDRM, EW_SLC, EW_GRDH, EW_GRDM, WV_SLC, WV_GRDM, MSIL1C, OPER_PRD }"
)
SENTINEL_COMBINATION_ARGUMENTS
=
ArgumentParser
(
add_help
=
False
)
SENTINEL_COMBINATION_ARGUMENTS
.
add_argument
(
"folder"
,
help
=
"Folder to find Sentinel files"
)
SENTINEL_COMBINATION_ARGUMENTS
.
add_argument
(
"plattform"
,
help
=
"Sentinel-1 or Sentinel-2"
)
SENTINEL_COMBINATION_ARGUMENTS
.
add_argument
(
"product_type"
,
help
=
"sentinel product type {all, SM_SLC, SM_GRDF, SM_GRDH, SM_GRDM, IW_SLC, IW_GRDH, IW_GDRM, EW_SLC, EW_GRDH, EW_GRDM, WV_SLC, WV_GRDM, MSIL1C, OPER_PRD }"
)
SENTINEL_COMBINATION_ARGUMENTS
.
add_argument
(
"product_output_type"
,
help
=
"sentinel product type {RGB}"
)
\ No newline at end of file
This diff is collapsed.
Click to expand it.
geosentinel/ui_utils.py
View file @
c04a11c1
...
@@ -32,7 +32,9 @@ Functions:
...
@@ -32,7 +32,9 @@ Functions:
* "check_existing_directory" - Check out if the folder exist. Create folder if it does not exist
* "check_existing_directory" - Check out if the folder exist. Create folder if it does not exist
* "check_existing_productType" - Check args if exist
* "check_existing_productType" - Check args if exist
* "select_products" - # Select products that their intersection area is less than a certain percentage threshold
* "select_products" - # Select products that their intersection area is less than a certain percentage threshold
* "combinations_bands_sentinel" - Get combination bands such product
* "search_band_combination" - Get path and bands for combination such product
* "find_files_byext_Sentinel" - Discover Sentinel files by extension
"""
"""
#from argparse import ArgumentParser
#from argparse import ArgumentParser
...
@@ -44,12 +46,16 @@ from collections import OrderedDict
...
@@ -44,12 +46,16 @@ from collections import OrderedDict
from
osgeo
import
ogr
from
osgeo
import
ogr
from
osgeo
import
gdal
from
osgeo.gdalconst
import
*
from
sentinelsat.sentinel
import
SentinelAPI
#read_geojson, geojson_to_wkt
from
sentinelsat.sentinel
import
SentinelAPI
#read_geojson, geojson_to_wkt
from
geosentinel.products
import
SentinelData
from
geosentinel.products
import
SentinelData
def
check_existing_productType
(
product
,
flag
):
def
check_existing_productType
(
product
,
args
,
flag
):
if
(
flag
==
1
):
if
(
flag
==
1
):
product_type
=
[
'Sentinel-1'
,
'sentinel-1'
,
'Sentinel-2'
,
'sentinel-2'
]
product_type
=
[
'Sentinel-1'
,
'sentinel-1'
,
'Sentinel-2'
,
'sentinel-2'
]
findProduct
=
product
in
product_type
findProduct
=
product
in
product_type
...
@@ -57,16 +63,90 @@ def check_existing_productType(product,flag):
...
@@ -57,16 +63,90 @@ def check_existing_productType(product,flag):
print
product
+
" not exist"
print
product
+
" not exist"
sys
.
exit
()
sys
.
exit
()
if
(
flag
==
2
):
if
(
flag
==
2
):
product_type
=
[
"all"
,
"SM_SLC"
,
"SM_GRDF"
,
"SM_GRDH"
,
"SM_GRDM"
,
"IW_SLC"
,
"IW_GRDH"
,
"IW_GDRM"
,
"EW_SLC"
,
"EW_GRDH"
,
"EW_GRDM"
,
"WV_SLC"
,
"WV_GRDM"
,
"MSIL1C"
,
"OPER_PRD"
]
product_type
=
[
"all"
,
"SM_SLC"
,
"SM_GRDF"
,
"SM_GRDH"
,
"SM_GRDM"
,
"IW_SLC"
,
"IW_GRDH"
,
"IW_GDRM"
,
"EW_SLC"
,
"EW_GRDH"
,
"EW_GRDM"
,
"WV_SLC"
,
"WV_GRDM"
,
"MSIL1C"
,
"OPER_PRD"
,
"RGB"
]
findProduct
=
product
in
product_type
findProduct
=
product
in
product_type
if
not
findProduct
:
if
not
findProduct
:
print
product
+
" not exist"
print
product
+
" not exist"
sys
.
exit
()
sys
.
exit
()
if
(
flag
==
3
):
ext
=
"_RGB.tif"
product
=
product
[:
-
5
]
+
ext
product_type
=
os
.
listdir
(
args
.
folder
)
findProduct
=
product
in
product_type
return
findProduct
def
combinations_bands_sentinel
(
sentinel_image
,
args
,
products
):
TotImage
=
len
(
products
)
#Get Raster
dataset1
=
gdal
.
Open
(
products
[
2
],
GA_ReadOnly
)
dataset2
=
gdal
.
Open
(
products
[
1
],
GA_ReadOnly
)
dataset3
=
gdal
.
Open
(
products
[
0
],
GA_ReadOnly
)
#Get metadata raster
projectionfrom
=
dataset1
.
GetProjection
()
geotransform
=
dataset1
.
GetGeoTransform
()
band1
=
dataset1
.
GetRasterBand
(
1
)
xsize
=
band1
.
XSize
ysize
=
band1
.
YSize
datatype1
=
band1
.
DataType
band2
=
dataset2
.
GetRasterBand
(
1
)
datatype2
=
band2
.
DataType
band3
=
dataset3
.
GetRasterBand
(
1
)
datatype3
=
band3
.
DataType
#Reading the raster values
gtiff
=
gdal
.
GetDriverByName
(
'GTiff'
)
output_file
=
sentinel_image
[:
-
5
]
+
"_"
+
args
.
product_output_type
+
".tif"
values1
=
band1
.
ReadRaster
(
0
,
0
,
xsize
,
ysize
,
xsize
,
ysize
,
datatype1
)
values2
=
band2
.
ReadRaster
(
0
,
0
,
xsize
,
ysize
,
xsize
,
ysize
,
datatype2
)
values3
=
band3
.
ReadRaster
(
0
,
0
,
xsize
,
ysize
,
xsize
,
ysize
,
datatype3
)
#Combination bands
output_dataset
=
gtiff
.
Create
(
output_file
,
xsize
,
ysize
,
TotImage
,
GDT_Int16
)
output_dataset
.
SetProjection
(
projectionfrom
)
output_dataset
.
SetGeoTransform
(
geotransform
)
output_dataset
.
GetRasterBand
(
1
)
.
WriteRaster
(
0
,
0
,
xsize
,
ysize
,
values1
)
output_dataset
.
GetRasterBand
(
2
)
.
WriteRaster
(
0
,
0
,
xsize
,
ysize
,
values2
)
output_dataset
.
GetRasterBand
(
3
)
.
WriteRaster
(
0
,
0
,
xsize
,
ysize
,
values3
)
output_dataset
=
None
def
search_band_combination
(
list_files_byext
,
args
):
for
image
in
list_files_byext
:
sentinel_image
=
args
.
folder
+
"
\\
"
+
image
findProduct
=
check_existing_productType
(
image
,
args
,
3
)
if
findProduct
==
True
:
print
args
.
product_output_type
+
" was applied to image... "
+
image
else
:
Granule
=
"
\
GRANULE"
path
=
sentinel_image
+
Granule
file
=
os
.
listdir
(
path
)
path
=
path
+
"
\\
"
+
file
[
0
]
Img_Data
=
"
\
IMG_DATA"
path
=
path
+
Img_Data
file
=
os
.
listdir
(
path
)
products
=
[]
if
args
.
product_output_type
==
"RGB"
:
ext1
=
"B04.jp2"
ext2
=
"B03.jp2"
ext3
=
"B02.jp2"
raster
=
[
f
for
f
in
file
if
f
.
endswith
(
ext1
)
or
f
.
endswith
(
ext2
)
or
f
.
endswith
(
ext3
)]
for
raster
in
raster
:
product
=
path
+
"
\\
"
+
raster
products
.
append
(
product
)
print
"Applying "
+
args
.
product_output_type
+
" to the image... "
,
image
combinations_bands_sentinel
(
sentinel_image
,
args
,
products
)
def
find_files_byext_Sentinel
(
files
,
args
):
findProduct
=
check_existing_productType
(
args
.
product_output_type
,
args
,
2
)
if
args
.
product_output_type
==
"RGB"
:
if
args
.
plattform
==
'Sentinel-2'
or
args
.
plattform
==
'sentinel-2'
:
ext
=
".SAFE"
files
=
[
f
for
f
in
files
if
f
.
endswith
(
ext
)]
if
(
len
(
files
)
==
0
):
print
"Files not found..."
return
files
def
find_files_Sentinel
(
args
):
def
find_files_Sentinel
(
args
):
check_existing_directory
(
args
.
folder
,
2
)
check_existing_directory
(
args
.
folder
,
2
)
check_existing_productType
(
args
.
plattform
,
1
)
findProduct
=
check_existing_productType
(
args
.
plattform
,
args
,
1
)
check_existing_productType
(
args
.
product_type
,
2
)
findProduct
=
check_existing_productType
(
args
.
product_type
,
args
,
2
)
files
=
os
.
listdir
(
args
.
folder
)
files
=
os
.
listdir
(
args
.
folder
)
if
(
args
.
product_type
==
"all"
):
if
(
args
.
product_type
==
"all"
):
if
args
.
plattform
==
'Sentinel-1'
or
args
.
plattform
==
'sentinel-1'
:
if
args
.
plattform
==
'Sentinel-1'
or
args
.
plattform
==
'sentinel-1'
:
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment