Skip to content

CS-SI/eotile

Repository files navigation

🛰️ EOTile

Version Python

EOTile is a tile grid management tool that provide quick and easy methods to grab tile ids or information about its footprint. There are four grid systems currently supported :

  • The one used by Landsat 8
  • The one used by Sentinel 2
  • The standard for DEM tiles
  • The specific one used by many SRTM providers gathering 5x5 tiles

⏬ Installation

Install the package using pip:

pip install eotile

🔲 Usage

📟 Through the CLI

eotile [input] [output]

You can input these elements : a file, a tile id, a location, a wkt polygon, a bbox

To options (Optional):

  • -to_file FILE_PATH Write tiles to a geography file
  • -to_wkt Output the geometry of matching tiles with wkt format on standard output
  • -to_bbox Output the bounding box of matching tiles on standard output
  • -to_tile_id Output the id(s) of matching tiles on standard output
  • -to_location Output the location of the centroid of matching tiles on standard output

Tiles selection :

  • -no_l8 output S2 tiles and not the L8 ones
  • -no_s2 output L8 tiles and not the S2 ones
  • -s2_overlap Use S2 tiles with overlap
  • -dem Use elevation tiles as well
  • -srtm5x5 Use specific 5x5 SRTM tiles as well
Other options :
  • -epsg Specify the epsg of the input if not WGS84

  • -logger_file LOGGER_FILE_PATH Redirect information from standard output to a file

  • -location_type {city, county, state, country} If needed, specify the location type that is requested

  • -threshold THRESHOLD For large polygons at high resolution, you might want to simplify them using a threshold (0 to 1)

  • -min_overlap MIN_OVERLAP Minimum percentage of overlap to consider a tile (0 to 1)

🐍 Through the python module

Getting Started :

# Import the module
from eotile import eotile_module 

# Create tile lists
[S2_Tiles, L8_Tiles, DEM_Tiles, SRTM5x5_Tiles] = eotile_module.main("Spain", no_s2=True) 
# Replace Spain with whatever string you might need (a file, a tile id, a location, a wkt polygon, a bbox)

# Returned elements are GeoPandas Dataframes :
print(S2_Tiles.id)

# Iter over the Dataframe :
for tile in L8_Tiles.iterrows():
    print(tile[1].geometry.wkt)

You can also use the advanced quicksearch

# Import the module
from eotile.eotile_module import quick_search 

# Create the GeoPandas DataFrame of L8 Tiles corresponding to this S2 Tile id 
gdf = quick_search("31TCJ", "tile_id", "L8")
>>     id                                           geometry
0  198029  POLYGON ((0.84682 44.02364, 0.84638 44.02370, ...
1  199029  POLYGON ((-0.69823 44.02364, -0.69866 44.02370...
2  199030  POLYGON ((-0.86579 42.55300, -1.13296 42.59191...
3  198030  POLYGON ((0.67927 42.55300, 0.41210 42.59191, ...

Note: quick_search uses OGR for a quicker result. This requires a proper installation of GDAL components

🔖 Examples

  • Using a location
eotile "Metropolitan France" -threshold 1 -to_tile_id
  • Using a BBOX
eotile "0.49593622377, 43.326246335, 1.7661878622, 44.246370915" -no_l8 -logger_file test.log

(This line will produce an output under the test.log file)

  • Using a wkt
eotile 'POLYGON ((0.8468214953196805 44.02363566574142, 0.84638 44.0237, 0.8590044453705752 44.06127355906579, 0.8712896362539795 44.09783741052559, 1.325549447552162 45.44983010010615, 1.338016257992888 45.48693449754356, 1.35047 45.524, 1.350948946138455 45.52393017672913, 3.65866 45.1875, 3.644501621308357 45.14977803391441, 3.111537654412643 43.72980975068511, 3.09866 43.6955, 0.8468214953196805 44.02363566574142))' -to_location -no_s2
  • Using S2 tile ids
eotile "31TCJ, 31TCE" -to_file data/TLS_tiles.shp
  • Using a file
eotile tests/test_data/illinois.shp -no_l8 -vvv

👁️‍🗨️ Data sources & Licenses

  • SRTM 5x5
Vector grid of Specific SRTM 5x5 degree tiles
See issue #39 to download 
  • DEM

See DEM_Union_source

🆘 Help and Troubleshoot

See https://www.gaia-gis.it/fossil/libspatialite/tktview/760ef1affb822806191393ac3f208fc9d8647758

  • Note that the number of Tiles of S2 without overlap and with overlap is not the same. The difference apparently lies in the Geodesic line break north and south corners.
    • S2 without overlap: 56686 Tiles
    • S2 with ouverlap: 56984 Tiles