Skip to content
GitLab
    • Explore Projects Groups Topics Snippets
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • T TELIS
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

La forge institutionnelle d'INRAE étant en production depuis le 10 juin 2025, nous vous invitons à y créer vos nouveaux projets.

  • Commandre Benjamin
  • TELIS
  • Merge requests
  • !4
An error occurred while fetching the assigned milestone of the selected merge_request.

Develop

  • Review changes

  • Download
  • Patches
  • Plain diff
Closed Commandre Benjamin requested to merge develop into master 4 years ago
  • Overview 0
  • Commits 8
  • Pipelines 0
  • Changes 5
Compare
  • master (base)

and
  • latest version
    03af9c2b
    8 commits, 4 years ago

5 files
+ 28
− 20

    Preferences

    File browser
    Compare changes
app/Archive.py
+ 18
− 19
  • View file @ 03af9c2b

  • Edit in single-file editor

  • Open in Web IDE


@@ -66,7 +66,7 @@ class Archive():
@@ -66,7 +66,7 @@ class Archive():
self.liste_archive = []
self.liste_archive = []
self.url = ''
self.url = ''
def vector_projection_with_epsg(self, chemin_vecteur, output_path, epsg=32631):
def vector_projection_with_epsg(self, chemin_vecteur, output_path, epsg=32630):
driver = ogr.GetDriverByName('ESRI Shapefile')
driver = ogr.GetDriverByName('ESRI Shapefile')
@@ -128,19 +128,20 @@ class Archive():
@@ -128,19 +128,20 @@ class Archive():
# Processus to convert the UTM shapefile
# Processus to convert the UTM shapefile
# in decimal degrees shapefile with ogr2ogr in command line
# in decimal degrees shapefile with ogr2ogr in command line
utm_outfile = "{0}/UTM_{1}".format(os.path.split(self.emprise)[0], os.path.split(self.emprise)[1])
# utm_outfile = "{0}/UTM_{1}".format(os.path.split(self.emprise)[0], os.path.split(self.emprise)[1])
if os.path.exists(utm_outfile):
# if os.path.exists(utm_outfile):
os.remove(utm_outfile)
# os.remove(utm_outfile)
# wgs84 : 4326
# wgs84 : 4326
self.vector_projection_with_epsg(self.emprise, utm_outfile, epsg=4326)
# self.vector_projection_with_epsg(self.emprise, utm_outfile, epsg=4326)
# To get shapefile extent
# To get shapefile extent
# Avec import ogr
# Avec import ogr
driver = ogr.GetDriverByName('ESRI Shapefile')
driver = ogr.GetDriverByName('ESRI Shapefile')
# Open shapefile
# Open shapefile
data_source = driver.Open(utm_outfile, 0)
# data_source = driver.Open(utm_outfile, 0)
 
data_source = driver.Open(self.emprise, 0)
if data_source is None:
if data_source is None:
self.logger.error('Could not open file')
self.logger.error('Could not open file')
@@ -153,14 +154,10 @@ class Archive():
@@ -153,14 +154,10 @@ class Archive():
## Close source data
## Close source data
data_source.Destroy()
data_source.Destroy()
area_coord_corner = str(extent_[2]) + ',' + str(extent_[0]) + ',' + str(extent_[3]) + ',' + str(extent_[1])
return "{},{},{},{}".format(extent_[0], extent_[2], extent_[1], extent_[3])
return "{},{},{},{}".format(extent_[2], extent_[0], extent_[3], extent_[1])
def listing_by_tile(self):
def listing_by_tile(self):
nbImage = 0
for tuile in self.liste_tuiles :
for tuile in self.liste_tuiles :
self.requete['location'] = tuile
self.requete['location'] = tuile
@@ -172,8 +169,10 @@ class Archive():
@@ -172,8 +169,10 @@ class Archive():
def listing_by_coord(self):
def listing_by_coord(self):
self.requete['box'] = self.coord_box_dd()
self.requete['box'] = self.coord_box_dd()
self.url = "{0}/{1}/api/collections/{2}/search.json?{3}".format(self.serveur, self.resto, self.capteur, urlencode(self.requete))
self.url = "{0}/{1}/api/collections/{2}/search.json?{3}".format(self.serveur, self.resto, self.capteur, urlencode(self.requete))
 
 
print(self.url)
self.get_liste_images()
self.get_liste_images()
@@ -287,7 +286,7 @@ class Archive():
@@ -287,7 +286,7 @@ class Archive():
sauvegarde = configparser.ConfigParser()
sauvegarde = configparser.ConfigParser()
# Pour toutes les images disponible
# Pour toutes les images disponible
for l in self.liste_archive :
for l in self.liste_archive :
# Récupération de la date quand l'image a été prise
# Récupération de la date quand l'image a été prise
@@ -299,7 +298,7 @@ class Archive():
@@ -299,7 +298,7 @@ class Archive():
# Lecture du fichier de sauvegarde
# Lecture du fichier de sauvegarde
sauvegarde.read("{}/sauvegarde.ini".format(self.dossier_sortie))
sauvegarde.read("{}/sauvegarde.ini".format(self.dossier_sortie))
# Si la date existe dans le fichier de sauvegarde ...
# Si la date existe dans le fichier de sauvegarde ...
if str(date) in sauvegarde.keys() :
if str(date) in sauvegarde.keys() :
# ... mais pas l'image, on la rajoute dans la liste des images à traiter.
# ... mais pas l'image, on la rajoute dans la liste des images à traiter.
@@ -373,7 +372,7 @@ class Archive():
@@ -373,7 +372,7 @@ class Archive():
del liste_content
del liste_content
# Mis à jour du fichier de sauvegarde
# Mis à jour du fichier de sauvegarde
# Lecture du fichier de sauvegarde
# Lecture du fichier de sauvegarde
sauvegarde.read("{}/sauvegarde.ini".format(self.dossier_sortie))
sauvegarde.read("{}/sauvegarde.ini".format(self.dossier_sortie))
@@ -486,7 +485,7 @@ class Archive():
@@ -486,7 +485,7 @@ class Archive():
tuiles_image = []
tuiles_image = []
tuiles_nuage = []
tuiles_nuage = []
# Options Gdal pour la fusion des bandes
# Options Gdal pour la fusion des bandes
options_vrt = gdal.ParseCommandLine('-resolution highest -srcnodata -10000 -vrtnodata NaN -separate')
options_vrt = gdal.ParseCommandLine('-resolution highest -srcnodata -10000 -vrtnodata NaN -separate')
self.logger.info("Extraction des images")
self.logger.info("Extraction des images")
@@ -516,8 +515,8 @@ class Archive():
@@ -516,8 +515,8 @@ class Archive():
# liste_bandes.append(gdal.Open(mmap_name))
# liste_bandes.append(gdal.Open(mmap_name))
liste_bandes.append(mmap_name)
liste_bandes.append(mmap_name)
# On fusionne les différentes bandes en une seule image
# On fusionne les différentes bandes en une seule image
# on découpe l'image selon l'emprise
# on découpe l'image selon l'emprise
# et on conserve l'image obtenue
# et on conserve l'image obtenue
vrt = gdal.BuildVRT("", liste_bandes, options=options_vrt)
vrt = gdal.BuildVRT("", liste_bandes, options=options_vrt)
@@ -568,7 +567,7 @@ class Archive():
@@ -568,7 +567,7 @@ class Archive():
self.logger.debug("Dossier image : {0}".format(dossier))
self.logger.debug("Dossier image : {0}".format(dossier))
# On effectue une mosaïque des images qu'on découpe selon l'emprise.
# On effectue une mosaïque des images qu'on découpe selon l'emprise.
Outils.clip(tuiles_image, self.emprise, form="GTiff", dst="{0}/{1}.tif".format(dossier,date))
Outils.clip(tuiles_image, self.emprise, form="GTiff", dst="{0}/{1}.tif".format(dossier,date))
del tuiles_nuage
del tuiles_nuage
README.md 0 → 100644
+ 4
− 0
  • View file @ 03af9c2b

  • Edit in single-file editor

  • Open in Web IDE

 
Programme de téléchargement des images Sentinel2 à partir d'un fichier vecteur représentant l'emprise ou de l'identifiant des tuiles S2 à télécharger.
 
 
Exemple d'utilisation :
 
`python3 telis.py -config config.ini`
 
\ No newline at end of file
config.ini
+ 3
− 1
  • View file @ 03af9c2b

  • Edit in single-file editor

  • Open in Web IDE


[donnees]
[donnees]
# chemin/vers/shapefile/emprise
# chemin/vers/shapefile/emprise
 
# Le shapefile doit en géographie WGS84 (EPSG:4326)
chemin_emprise =
chemin_emprise =
# chemin/vers/shapefile/zone_etude
# chemin/vers/shapefile/zone_etude
# Si vide, zone d'étude = emprise
# Si vide, zone d'étude = emprise
 
# Le shapefile doit en géographie WGS84 (EPSG:4326)
chemin_zone_etude =
chemin_zone_etude =
# Liste des tuiles Sentinel2 à télécharger
# Liste des tuiles Sentinel2 à télécharger
@@ -36,7 +38,7 @@ chemin =
@@ -36,7 +38,7 @@ chemin =
# - Tuile (Regroupe les images en fonction de la tuile sentinel2 auquelle elles correspondent )
# - Tuile (Regroupe les images en fonction de la tuile sentinel2 auquelle elles correspondent )
groupe = Tuile
groupe = Tuile
# Vrai si extraction des images des archives, faux si téléchagement de celles-ci
# "True" si extraction des images des archives, "False" si téléchagement de celles-ci
extraction = False
extraction = False
[theia]
[theia]
requirement.txt 0 → 100644
+ 3
− 0
  • View file @ 03af9c2b

  • Edit in single-file editor

  • Open in Web IDE

 
configparser
 
argparse
 
requests
 
\ No newline at end of file
main.py → telis.py
+ 0
− 0
  • View file @ 03af9c2b

  • Edit in single-file editor

  • Open in Web IDE

Unable to load file contents. Try again later.
File renamed with no changes. Show file contents
0 Assignees
None
Assign to
0 Reviewers
None
Request review from
Labels
0
None
0
None
    Assign labels
  • Manage project labels

Milestone
No milestone
None
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
0
0 Participants
Reference:
Source branch: develop

Menu

Explore Projects Groups Topics Snippets