[gdal-dev] Indexing lots of remote COGs for use with gdal raster clip and QGIS

Scott public at postholer.com
Tue Sep 1 10:07:56 PDT 2026


Hey Robin,

I would look into the GTI raster driver:
https://gdal.org/en/latest/programs/gdal_driver_gti_create.html#gdal-driver-gti-create

It creates a GPKG index of rasters for efficient access. Creating a GTI:

gdal driver gti create --resolution .0029,.0029 --output-layer dem30 
ned10/cogs cogs.gti.gpkg

Using the new index:
gdal raster clip -i cogs.gti.gpkg --bbox -111,36,-110,37 --of COG -o 
newCog.tif

QGIS will read the index as a vector file (since it's GPKG) displaying 
bounding boxes for each raster in the index, but not as a raster as a whole.

Hope that helps!


On 9/1/26 06:33, Robin Wilson via gdal-dev wrote:
> Hi,
> 
> I have a lot of COGs hosted online in HTTP RANGE compatible storage. I 
> want to create a catalog/index of them so that GDAL and tools that use 
> GDAL (like QGIS) can extract the relevant data from the COGs for 
> specific areas. For example, I’d like to use `gdal raster clip` to clip 
> this big ‘virtual raster’ to a specific bbox or polygon. Ideally I’d 
> also like to be able to view the big raster on-the-fly in QGIS, but I’m 
> aware that may be more difficult. My tiles are ’true tiles’ in that they 
> tessellate properly and each location is in a single file.
> 
> I’ve been looking at the GDAL Tile Index format, but have been getting a 
> bit confused, and some things haven’t been working quite how I expect. A 
> few questions below:
> 
> 1. Is there an easy way to generate a GDAL Tile Index file from a file 
> containing a list of remote URLs? I couldn’t find the right way to 
> specify a file containing URLs on the command line, so I ended up 
> writing a short Python script that loads the list of URLs from a file 
> and then passes them to gdal.TileIndex. Is that the best way to do this? 
> One disadvantage of this method is that I can’t seem to get a progress 
> bar to display.
> 
> 2. My current way of doing that requires GDAL loading the bbox of each 
> file by requesting it over the network, which is fairly slow, and I have 
> thousands of files to do this for. Is there a way to get the GTI 
> creation to use local files on my hard disk for getting the extent of 
> each file, but save the location as a /vsicurl/ URL to the remote file? 
> I’ve found --base-url in `gdal raster index` though I’m slightly 
> confused by the description of it ("Base URL for STAC-GeoParquet the 
> href property of the id property in a STAC-GeoParquet index.” - does 
> that do what I want and put a base URL in front of each file it finds?). 
> That option doesn’t seem to be present in `gdal driver gti create` 
> though, and seems like it may be STAC-GeoParquet specific.
> 
> 3. Once I’ve created the file, I can do `gdal raster clip` operations on 
> the command-line quite quickly, but if I load the GTI raster into QGIS 
> then QGIS just hangs. I hoped it would just request the relevant COGs 
> for the area I was looking at. I’ve tried loading it in by dragging and 
> dropping the .gti.gpkg file and then selecting the raster in the layers 
> popup, and also adding it via Add Layer->Raster and putting 
> ‘GTI:<path>’. I have a web map working which loads these COG files on 
> the fly depending on where you’re looking (using a minimal STAC catalog 
> in a JSON file) and was hoping to have the same thing working in QGIS, 
> without the effort of setting up something like titiler or titiler- 
> pgstac, as I’m currently managing to get away without running any 
> servers  (as opposed to static data stores) for this data.
> 
> If there’s an alternative method I should be looking at for doing either 
> part of this (the clipping or the viewing in QGIS) then let me know - 
> I’m aware I may be pushing the boundaries of what can be sensibly done 
> with the GTI format.
> 
> Best regards,
> 
> Robin
> 
> 
> Dr Robin Wilson
> 
> 
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev



More information about the gdal-dev mailing list