diff --git a/README.md b/README.md index 6bed3bf3dca95ba93de0bf7af9d78f75543e2c72..596c3560f376f81e3e68193ac7fb1b52ed29faf3 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ -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. \ No newline at end of file +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` diff --git a/app/Archive.py b/app/Archive.py index 76f271e026eb4282fd5a65698eb9535c55210a4e..9199317305b1edf524721790281b077f65a9f231 100644 --- a/app/Archive.py +++ b/app/Archive.py @@ -66,7 +66,7 @@ class Archive(): self.liste_archive = [] 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') @@ -128,19 +128,20 @@ class Archive(): # Processus to convert the UTM shapefile # 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): - os.remove(utm_outfile) + # if os.path.exists(utm_outfile): + # os.remove(utm_outfile) # 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 # Avec import ogr driver = ogr.GetDriverByName('ESRI 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: self.logger.error('Could not open file') @@ -153,14 +154,10 @@ class Archive(): ## Close source data data_source.Destroy() - area_coord_corner = str(extent_[2]) + ',' + str(extent_[0]) + ',' + str(extent_[3]) + ',' + str(extent_[1]) - - return "{},{},{},{}".format(extent_[2], extent_[0], extent_[3], extent_[1]) + return "{},{},{},{}".format(extent_[0], extent_[2], extent_[1], extent_[3]) def listing_by_tile(self): - nbImage = 0 - for tuile in self.liste_tuiles : self.requete['location'] = tuile @@ -172,8 +169,10 @@ class Archive(): def listing_by_coord(self): 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)) + + print(self.url) self.get_liste_images() @@ -287,7 +286,7 @@ class Archive(): sauvegarde = configparser.ConfigParser() - # Pour toutes les images disponible + # Pour toutes les images disponible for l in self.liste_archive : # Récupération de la date quand l'image a été prise @@ -299,7 +298,7 @@ class Archive(): # Lecture du fichier de sauvegarde 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() : # ... mais pas l'image, on la rajoute dans la liste des images à traiter. @@ -373,7 +372,7 @@ class Archive(): del liste_content - # Mis à jour du fichier de sauvegarde + # Mis à jour du fichier de sauvegarde # Lecture du fichier de sauvegarde sauvegarde.read("{}/sauvegarde.ini".format(self.dossier_sortie)) @@ -486,7 +485,7 @@ class Archive(): tuiles_image = [] 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') self.logger.info("Extraction des images") @@ -516,8 +515,8 @@ class Archive(): # liste_bandes.append(gdal.Open(mmap_name)) liste_bandes.append(mmap_name) - # On fusionne les différentes bandes en une seule image - # on découpe l'image selon l'emprise + # On fusionne les différentes bandes en une seule image + # on découpe l'image selon l'emprise # et on conserve l'image obtenue vrt = gdal.BuildVRT("", liste_bandes, options=options_vrt) @@ -568,7 +567,7 @@ class Archive(): 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)) del tuiles_nuage diff --git a/config.ini b/config.ini index 35d1c38ff1366d87db7c40b7fc2cd56aa587363c..c83fbc8633331eade19053eab1c5d4d4c7cae23c 100644 --- a/config.ini +++ b/config.ini @@ -1,9 +1,11 @@ [donnees] # chemin/vers/shapefile/emprise +# Le shapefile doit en géographie WGS84 (EPSG:4326) chemin_emprise = # chemin/vers/shapefile/zone_etude # Si vide, zone d'étude = emprise +# Le shapefile doit en géographie WGS84 (EPSG:4326) chemin_zone_etude = # Liste des tuiles Sentinel2 à télécharger @@ -36,7 +38,7 @@ chemin = # - Tuile (Regroupe les images en fonction de la tuile sentinel2 auquelle elles correspondent ) 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 [theia] diff --git a/requirement.txt b/requirement.txt new file mode 100644 index 0000000000000000000000000000000000000000..ad832a9757870f1380d567f3da64b066e494b228 --- /dev/null +++ b/requirement.txt @@ -0,0 +1,3 @@ +configparser +argparse +requests \ No newline at end of file diff --git a/main.py b/telis.py similarity index 100% rename from main.py rename to telis.py