| Title: | Download and Manage Data from Theia | 
| Version: | 0.4.0 | 
| Description: | Provides a simple interface to search available data provided by Theia (https://theia.cnes.fr), download it, and manage it. Data can be downloaded based on a search result or from a cart file downloaded from Theia website. | 
| Language: | en-US | 
| Depends: | R (≥ 3.5) | 
| Imports: | askpass (≥ 1.1), httr (≥ 1.3), R6 (≥ 2.3), raster (≥ 2.6), tools (≥ 3.5), XML (≥ 3.86) | 
| License: | GPL (≥ 3.0) | 
| URL: | https://github.com/norival/theiaR | 
| BugReports: | https://github.com/norival/theiaR/issues | 
| Encoding: | UTF-8 | 
| LazyData: | true | 
| RoxygenNote: | 7.1.1 | 
| Suggests: | knitr, rmarkdown, gdalcubes | 
| Collate: | 'TheiaAuth.R' 'TheiaTile.R' 'TheiaCollection.R' 'TheiaQuery.R' 'theiaR.R' 'utils.R' | 
| VignetteBuilder: | knitr | 
| NeedsCompilation: | no | 
| Packaged: | 2020-11-14 18:05:09 UTC; xavier | 
| Author: | Xavier Laviron | 
| Maintainer: | Xavier Laviron <xavier@norival.dev> | 
| Repository: | CRAN | 
| Date/Publication: | 2020-11-19 09:30:02 UTC | 
Authentication system to Theia website
Description
Generate and manage authentication to Theia website from login and password. It requests a token to download tiles when created and automatically request a new one when it has expired (after 2h). It is used to download tiles from TheiaTile and TheiaCollection objects.
Usage
a <- TheiaAuth$new(auth.file) a$token()
Arguments
- a:
- A - TheiaAuthobject
- auth.file
- The path to the file containing login and password. It will be created if it does not exist. See 'Details' for more informations 
Details
TheiaAuth$new(auth.file) Create a new instance of the class
a$token() Return the current token or generate a next one if it has
expired
This class is used to manage authentication to Theia website, without intervention from the user. Login and password must be stored in a separate text file with these two lines:
login password
File content is read each time authentication is needed (to request a new token), so login and password are not stored in R's memory. If this file does not exist, R will prompt you to enter your login and password and will create the file.
Examples
## Not run: 
# create an authentication object
myauth <- TheiaAuth$new("path_to_auth_file.txt")
# show the access token (and request a new one if needed)
myauth$token
## End(Not run)
A collection of tiles from Theia
Description
Generate and manage collection of tiles from Theia. This collection can be
created either from a cart file ('.meta4') downloaded from Theia website,
from a TheiaQuery object or from a list of
TheiaTile (not implemented yet).
Usage
   c <- TheiaCollection$new(cart.path = NULL,
                            tiles     = NULL,
                            query     = NULL,
                            dir.path  = NULL,
                            check     = TRUE)
                            quiet     = TRUE)
   c$download(auth, overwrite = FALSE, check = TRUE, quiet = TRUE)
   c$check()
   c$status
   c$extract(overwrite = FALSE, dest.dir = NULL)
   c$read(bands)
   c$as_gdalcube(out.file = "gdalcube_collection.sqlite")
Arguments
- c:
- A - TheiaCollectionobject
- dir.path:
- The path to the directory containing zip files 
- check:
- Whether or not to check existing files on collection's creation 
- quiet:
- Control verbose output 
- tiles:
- A list of TheiaTile objects 
- cart:
- An XML cart parsed from a 'meta4' file downloaded from Theia 
website. Used only if Collection is created from a cart
- query:
- A TheiaQuery object, used only if collection is created from a TheiaQuery object. Can also be a list with search terms. In this case, it will create a 'TheiaQuery' object from it. See - TheiaQueryfor details on query syntax
- auth:
- A character string giving the file path to Theia credentials. Or a - TheiaAuthobject
- overwrite:
- Overwrite existing tiles (default to 'FALSE') 
- bands:
- A character vector of bands to load from tiles 
- out.file:
- Filename to store gdalcubes' image collection 
Details
TheiaCollection$new() Create a new instance of the class
c$download(overwrite = FALSE, check = TRUE) Download the tiles of the collection
and check the resulting files
$ccheck() Check the tiles of the collection
c$status Return the status of each tile of the collection
c$extract(overwrite = FALSE, dest.dir = NULL) Extract archives to
dest.dir if supplied, or to the same directory as the archives otherwise
c$read(bands) Read requested bands, apply corrections on values
(as specified in Theia's product information), and return a list of
RasterStack objects (one stack per tile)
c$as_gdalcube(out.file) Create a 'gdalcubes' image collection from
downloaded tiles. See https://github.com/appelmar/gdalcubes_R for
more details.
Examples
# Create a collection from a query
## Create a query to Theia database, looking for tiles from Sentinel2
## satellite around Grenoble, between 2018-07-01 and 2018-07-06.
query <- list(collection = "SENTINEL2",
              town       = "Grenoble",
              start.date = "2018-07-01",
              end.date   = "2018-07-06")
## Create a collecion of tiles from this query
mycollection <- TheiaCollection$new(query = query, dir.path = ".")
print(mycollection)
# Alternatively, you can create a collection from a cart file (that you can
# download from Theia's website)
cart.path <- system.file("extdata", "cart.meta4", package = "theiaR")
mycollection <- TheiaCollection$new(cart.path = cart.path,
                                    dir.path  = ".")
print(mycollection)
## Not run: 
# Download the tiles in the collection
mycollection$download()
## End(Not run)
## Not run: 
# Finally, you can extract zip archives containing the tiles
mycollection$extract(overwrite = FALSE)
## End(Not run)
A query to the Theia website
Description
Generate an send a query to Theia web API to get and download tiles based on input given by the user.
Usage
q <- TheiaQuery$new(query) q$update_token() q$submit()
Arguments
- q:
- A - TheiaQueryobject
- query:
- list, the users' request, see 'Queries' for more informations
Details
TheiaQuery$new() Create a new instance of the class, parse 'query'
list and submit the query to Theia to retrieve files catalog
q$submit() Submit the query to Theia and get a list of tiles
corresponding to search criteria
Queries
Search criteria are given with a 'list' accepting these fields:
- collection: The collection to look for. Accepted values are: 'SENTINEL2', 'LANDSAT', 'Landsat57', 'SpotWorldHeritage', 'Snow'. Defaults to 'SENTINEL2' 
- platform: The platform to look for. Accepted values are: 'LANDSAT5', 'LANDSAT7', 'LANDSAT8', 'SPOT1', 'SPOT2', 'SPOT3', 'SPOT4', 'SPOT5', 'SENTINEL2A', 'SENTINEL2B' 
- level: Processing level. Accepted values are: 'LEVEL1C', 'LEVEL2A', LEVEL3A', 'N2A'. Defaults to 'LEVEL2A' (or 'N2A' if querying Landsat57 collection). 
- town: The location to look for. Give a common town name. 
- tile: The tile identifier to retrieve. 
- start.date: The first date to look for (format: YYYY-MM-DD). 
- end.date: The last date to look for (format: YYYY-MM-DD). Must be after start.date. Defaults to today's date. 
- latitude: The x coordinate of a point 
- longitude: The y coordinate of a point 
- latmin: The minimum latitude to search 
- latmax: The maximum latitude to search 
- lonmin: The minimum longitude to search 
- lonmax: The maximum longitude to search 
- orbit.number: The orbit number 
- rel.orbit.number: The relative orbit number 
- max.clouds: The maximum of cloud cover wanted (0-100) 
- max.records: The maximum of tiles to search 
See Also
https://github.com/olivierhagolle/theia_download for an alternative download method based on Python. Inspiration for this function.
Examples
# Create a query to Theia database, looking for tiles from Sentinel2
# satellite around Grenoble, between 2018-07-01 and 2018-07-06.
query <- list(collection = "SENTINEL2",
              town       = "Grenoble",
              start.date = "2018-07-01",
              end.date   = "2018-07-06")
q <- TheiaQuery$new(query)
# Show informations on found tiles
print(q$tiles)
A tile from Theia
Description
Generate and manage a tile from Theia (download, check, load).
Usage
   t <- TheiaTile$new(file.path,
                      url,
                      file.hash,
                      check = TRUE,
                      quiet = TRUE)
   t$download(overwrite = FALSE, check = TRUE, quiet = TRUE)
   t$check()
   t$extract(overwrite = FALSE, dest.dir = NULL)
   t$read(bands)
Arguments
- t:
- A - TheiaTileobject
- file.path:
- The path to the zip file containing the tile 
- url:
- The url to download the tile 
- file.hash:
- The md5sum used to check the zip file 
- check:
- Whether or not to check existing files on tile's creation 
- quiet:
- Control verbose output 
- auth:
- A character string giving the file path to Theia credentials. Or a - TheiaAuthobject
- overwrite:
- Overwrite existing tiles (default to 'FALSE') 
- bands:
- A character vector of bands to load from tiles 
Details
TheiaTile$new(file.path, url, file.hash, check) Create a new instance of
the class
t$download(auth, overwrite = FALSE, check = TRUE) Download the
tiles of the collection and check the resulting files
t$check() Check the tiles of the collection
t$extract(overwrite = FALSE, dest.dir = NULL) Extract archive to
dest.dir if supplied, or to the same directory as the archive otherwise
t$read(bands) Read requested bands, apply corrections on values
(as specified in Theia's product information), and return a RasterStack
t$bands List bands available in the tile
theiaR: search, download and manage theia data
Description
Search, manage and download data from Theia website