[gdal-dev] Serving COGs from GCP bucket to Openlayers

Momtchil Momtchev momtchil at momtchev.com
Wed Sep 16 13:33:23 PDT 2020


I think this question belongs to the Openlayers list, but what I do is 
use the VRT driver with a generated VRT file that consists of multiple 
PNG tiles. This has the benefit of allowing you to both use Openlayers 
directly with a {z}/{x}/{y} url and to be able to read and write it with 
GDAL all while retaining the geo-referencing data. It is a very good 
solution when the information changes very often, but its extent / 
projection / resolution stays the same (I serve weather data). The 
downside is that managing different zoom levels won't be automatic, you 
will have to implement it yourself.

If you don't need to access the same data both with Openlayers and GDAL, 
or if you need zoom levels, maybe you should take a look at the MBTiles 
driver and gdal2tiles. Or mapproxy which can manage the zoom levels for 
you. I have never used them so I don't have any advice.

Generally, if you only need to serve static raster data, you don't need 
any fancy servers, plain HTTP with Openlayers XYZ and a static directory 
structure will do.

Also, the 32 bit data will need to get converted to integers at some 
point. Offline with GDAL if you can afford the storage, online with 
mapproxy if you can afford the CPU, client-side with lots of custom 
Openlayers code if you can afford to lose some browser performance and 
none of the files is too big.

I think this should be your first decision - who will do the heavy 
lifting - the server or the client, and will it be once per data set, or 
at every request. Do you need dynamic meta data (extent, resolution, 
projection) which requires some protocol like WMTS, or is it mostly 
static, which is best served with simple HTTP.

On 16/09/2020 01:01, Arun Govind wrote:
> Hi,
> I need advice on what is the best approach I should take? I'm not an 
> expert in web mapping or its technologies and I'm trying to figure 
> things as I go...
> I've several time-series (for an image date many types like true 
> color, false color, ndvi, etc.) COG imagery files in Google Cloud 
> buckets (unique; 1 bucket per user AOI) and so ideally I'll have 
> several buckets. I want to serve these images using Openlayers (web 
> mapping) and JavaScript (frontend), and the backend is GeoServer on a 
> VPS Linux server.
> A Google developer advised "you can use mapproxy and make it serve off 
> of tiled image URLs that look like this: 
> /https://storage.cloud.google.com/my-bucket-name/zxy/{z}/{x}/{y}.png/"
> Other options suggested include: VRT with GDAL VSIGS, or tile index.
> https://github.com/mapserver/mapserver/wiki/Render-images-straight-out-of-S3-with-the-vsicurl-driver 
> Each COG image is 1 to 10 MB and few years for user AOI will be 1 to 
> 10 GB. Obviously, if there are 100 or 1000 user AOIs, the total file 
> size will be in few TBs. A user will have access or can view only 
> images for their AOI. Some COG are 32 bit float while others are 8 bit.
> I am getting lost with all the options and wondering if you can please 
> help me narrow it down? I'll appreciate your help. Thanks.
> -- 
> Sincerely yours,
> *Arun Govind*
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev

Momtchil Momtchev<momtchil at momtchev.com>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20200916/e9e41e4c/attachment.html>

More information about the gdal-dev mailing list