Hi,

Thanks for the tips, Klokan. Really useful. We already have a maptiler license, and we use it, but we can't use that tool this time.

Best regards,

Jorge
Klokan Petr Pridal <mailto:klo...@klokan.cz>
February 3, 2015 at 2:18 AM
Hi Jorge,

rendering of your sample file down to zoomlevel 19 would generate over 2 billion tiles - probably tens of terabytes of data. I guess it is not what you want to do... Typically the overzooming is done on client side in a JavaScript viewer or on the tileserver hosting.

The tiling utilities suggests you the native zoom level automatically - based on the raster resolution of the input.

In case you want to render large datasets composed of multiple files efficiently I would recommend to try our MapTiler Pro command line utility. It is significantly faster then GDAL2Tiles and produces optimised and correct tiles, while handling merging of multiple files, solving issues with dateline crossing, reprojection and merging of data in different srs, direct output to MBTiles, OGC WMTS compatible export, and many more features.

The usage on command line is quite easy:

$ maptiler -o merged_output_dir input1.tif input2.tif input3.tif

Input files can be in the original srs - every extra reprojection degrades visual quality of the output. Merging with VRT is not recommend - it slow down the tile rendering, as there are artificial blocks introduced - it is better for performance to pass the original files directly.

MapTiler is a complete C/C++ reimplementation of my GDAL2Tiles utility. There are several significant improvements in the merging and internal tiling process including multi-thread CPU parallelization and automatic file size optimisation (PNG color quantization and JPEG tweaks). Installation is possible with the .deb or .rpm packages or binaries for Mac OS X or Windows or Docker.

The small file, like your sample mentioned above, can be rendered directly with the MapTiler Free in the graphical user interface which is available for download at: http://www.maptiler.com/download/

If you drop us an email we send you also the Pro version with command line for your free testing.

Best regards,

Petr Pridal, PhD
Klokan Technologies GmbH




--
http://blog.klokan.cz/
http://www.maptiler.org/
http://www.oldmapsonline.org/
Jorge Arévalo <mailto:jo...@cartodb.com>
January 29, 2015 at 1:13 AM


El jueves, 29 de enero de 2015, Even Rouault <even.roua...@spatialys.com <mailto:even.roua...@spatialys.com>> escribió:

    Le jeudi 29 janvier 2015 00:05:32, Jorge Arévalo a écrit :
    > > Even Rouault <mailto:even.roua...@spatialys.com <javascript:;>>
    > > January 28, 2015 at 9:28 PM
    > >
    > > Le mercredi 28 janvier 2015 20:17:08, Jorge Arévalo a écrit :
    > >> Hi,
    > >>
    > >> I'm working with a patched version of gdal2tiles, which makes
    use of
    > >> parallelization:
    > >>
    http://gis.stackexchange.com/questions/7743/performance-of-google-map-ti
    > >> le- creation-processes/74446#74446
    > >>
    > >> I want to create a complete TMS cache from raster imagery. No
    > >> assumptions about SRS of data type for input data.
    > >>
    > >> I want the tiling process to be as fast as possible
    (gdal2tiles is
    > >> really heavy process), do you have any recomendations about
    the data or
    > >> the parameters used?
    > >>
    > >> Right now, I'm doing this
    > >>
    > >> Step 1: build vrt from input images
    > >>
    > >> gdal_vrtmerge.py -o merged.vrt<list of input tif files>
    > >>
    > >> Step 2: build tiles from vrt file
    > >>
    > >> gdal2tiles.py -r cubic -s epsg:XXXX -z 0-19 -w all merged.vrt
    tms_dir
    > >>
    > >> Even with parallelization, process still feels really slow.
    Would it be
    > >> faster if, for example, I convert all my input files to
    epsg:3857? Or if
    > >> I scale them to 8-bit? Or if I use near resampling method
    instead of
    > >> cubic? (I'm using cubic because I'm working with continuous data:
    > >> satellite images, am I doing it right?).
    > >>
    > >  From a quick look at the source, it seems that there's an
    optimization
    > >  if the
    > >
    > > input SRS == output SRS that avoids going through the warped
    VRT path.
    > >
    > > That said, we definitely need one or several maintainers for
    gdal2tiles.
    > > There are quite a faw patches floating around in Trac that
    would need
    > > someone to review, test, fix, apply them, as well as writing
    tests (no
    > > autotest for gdal2tiles yet), etc...
    >
    > Ok. But the applications is taking hours to generate a complete tile
    > cache (zoom levels 0-19) for a 3MB tiff file, in epsg:3857. A 4
    cores
    > machine with 8GB of RAM. The file is this one
    >
    >
    https://dl.dropboxusercontent.com/u/6599273/gis_data/katrina-3857.tif
    >
    > Taking so much time for a 3MB file sounds ridiculous. I'm
    probably doing
    > something wrong. This is the line
    >
    > gdal2tiles.py  -s epsg:3857 -z 0-19 -r cubic katrina-3857.tif
    tiles_dir
    >
    > Do you see something wrong in this approach?

    The performance seems to be deeply impacted by "-r cubic", but
    even without
    it, it still sucks. The reason is the zoom level 19. Your dataset
    has a
    resolution of 3469 m. zoom 19 corresponds to a resolution of ~ 0.3
    m. So you
    basically try to generate a TMS that is rougly 12000 x 12000
    larger than your
    source dataset...

Wow, thanks for the enlightment. So, with that resolution, I could easily create TMS cache until levels 5-6, according to this https://msdn.microsoft.com/en-us/library/aa940990.aspx

If I'd want higher zoom levels... That could mean high processing cost. Worse if cúbic resampling method is used.

Conclussion: better guessing the highest zoom level for that resolution using the table on the previous link, and building the TMS cache with that constraint in mind.

Thanks again, Even!

    >
    > Anyway, if this is a problem of gdal2tiles and it needs fine
    tunning or
    > maintenance, we could talk. I don't know if there's any other
    method to
    > generate a complete TMS cache using GDAL.
    >
    > >> Any other tips?
    > >>
    > >> Many thanks in advance
    > >>
    > >> Best regards

    --
    Spatialys - Geospatial professional services
    http://www.spatialys.com



--
Jorge Arévalo

http://cartodb.com/
Skype ID: jorgecartodb

Even Rouault <mailto:even.roua...@spatialys.com>
January 29, 2015 at 12:27 AM
Le jeudi 29 janvier 2015 00:05:32, Jorge Arévalo a écrit :
Even Rouault<mailto:even.roua...@spatialys.com>
January 28, 2015 at 9:28 PM

Le mercredi 28 janvier 2015 20:17:08, Jorge Arévalo a écrit :
Hi,

I'm working with a patched version of gdal2tiles, which makes use of
parallelization:
http://gis.stackexchange.com/questions/7743/performance-of-google-map-ti
le- creation-processes/74446#74446

I want to create a complete TMS cache from raster imagery. No
assumptions about SRS of data type for input data.

I want the tiling process to be as fast as possible (gdal2tiles is
really heavy process), do you have any recomendations about the data or
the parameters used?

Right now, I'm doing this

Step 1: build vrt from input images

gdal_vrtmerge.py -o merged.vrt<list of input tif files>

Step 2: build tiles from vrt file

gdal2tiles.py -r cubic -s epsg:XXXX -z 0-19 -w all merged.vrt tms_dir

Even with parallelization, process still feels really slow. Would it be
faster if, for example, I convert all my input files to epsg:3857? Or if
I scale them to 8-bit? Or if I use near resampling method instead of
cubic? (I'm using cubic because I'm working with continuous data:
satellite images, am I doing it right?).

   From a quick look at the source, it seems that there's an optimization
  if the

input SRS == output SRS that avoids going through the warped VRT path.

That said, we definitely need one or several maintainers for gdal2tiles.
There are quite a faw patches floating around in Trac that would need
someone to review, test, fix, apply them, as well as writing tests (no
autotest for gdal2tiles yet), etc...
Ok. But the applications is taking hours to generate a complete tile
cache (zoom levels 0-19) for a 3MB tiff file, in epsg:3857. A 4 cores
machine with 8GB of RAM. The file is this one

https://dl.dropboxusercontent.com/u/6599273/gis_data/katrina-3857.tif

Taking so much time for a 3MB file sounds ridiculous. I'm probably doing
something wrong. This is the line

gdal2tiles.py  -s epsg:3857 -z 0-19 -r cubic katrina-3857.tif tiles_dir

Do you see something wrong in this approach?

The performance seems to be deeply impacted by "-r cubic", but even without
it, it still sucks. The reason is the zoom level 19. Your dataset has a
resolution of 3469 m. zoom 19 corresponds to a resolution of ~ 0.3 m. So you
basically try to generate a TMS that is rougly 12000 x 12000 larger than your
source dataset...

Anyway, if this is a problem of gdal2tiles and it needs fine tunning or
maintenance, we could talk. I don't know if there's any other method to
generate a complete TMS cache using GDAL.

Any other tips?

Many thanks in advance

Best regards

Jorge Arévalo <mailto:jo...@cartodb.com>
January 29, 2015 at 12:05 AM


Even Rouault <mailto:even.roua...@spatialys.com>
January 28, 2015 at 9:28 PM
Le mercredi 28 janvier 2015 20:17:08, Jorge Arévalo a écrit :
Hi,

I'm working with a patched version of gdal2tiles, which makes use of
parallelization:
http://gis.stackexchange.com/questions/7743/performance-of-google-map-tile-
creation-processes/74446#74446

I want to create a complete TMS cache from raster imagery. No
assumptions about SRS of data type for input data.

I want the tiling process to be as fast as possible (gdal2tiles is
really heavy process), do you have any recomendations about the data or
the parameters used?

Right now, I'm doing this

Step 1: build vrt from input images

gdal_vrtmerge.py -o merged.vrt<list of input tif files>

Step 2: build tiles from vrt file

gdal2tiles.py -r cubic -s epsg:XXXX -z 0-19 -w all merged.vrt tms_dir

Even with parallelization, process still feels really slow. Would it be
faster if, for example, I convert all my input files to epsg:3857? Or if
I scale them to 8-bit? Or if I use near resampling method instead of
cubic? (I'm using cubic because I'm working with continuous data:
satellite images, am I doing it right?).

> From a quick look at the source, it seems that there's an optimization if the
input SRS == output SRS that avoids going through the warped VRT path.

That said, we definitely need one or several maintainers for gdal2tiles. There
are quite a faw patches floating around in Trac that would need someone to
review, test, fix, apply them, as well as writing tests (no autotest for
gdal2tiles yet), etc...

Ok. But the applications is taking hours to generate a complete tile cache (zoom levels 0-19) for a 3MB tiff file, in epsg:3857. A 4 cores machine with 8GB of RAM. The file is this one

https://dl.dropboxusercontent.com/u/6599273/gis_data/katrina-3857.tif

Taking so much time for a 3MB file sounds ridiculous. I'm probably doing something wrong. This is the line

gdal2tiles.py  -s epsg:3857 -z 0-19 -r cubic katrina-3857.tif tiles_dir

Do you see something wrong in this approach?

Anyway, if this is a problem of gdal2tiles and it needs fine tunning or maintenance, we could talk. I don't know if there's any other method to generate a complete TMS cache using GDAL.
Any other tips?

Many thanks in advance

Best regards


Even Rouault <mailto:even.roua...@spatialys.com>
January 28, 2015 at 9:28 PM
Le mercredi 28 janvier 2015 20:17:08, Jorge Arévalo a écrit :
Hi,

I'm working with a patched version of gdal2tiles, which makes use of
parallelization:
http://gis.stackexchange.com/questions/7743/performance-of-google-map-tile-
creation-processes/74446#74446

I want to create a complete TMS cache from raster imagery. No
assumptions about SRS of data type for input data.

I want the tiling process to be as fast as possible (gdal2tiles is
really heavy process), do you have any recomendations about the data or
the parameters used?

Right now, I'm doing this

Step 1: build vrt from input images

gdal_vrtmerge.py -o merged.vrt<list of input tif files>

Step 2: build tiles from vrt file

gdal2tiles.py -r cubic -s epsg:XXXX -z 0-19 -w all merged.vrt tms_dir

Even with parallelization, process still feels really slow. Would it be
faster if, for example, I convert all my input files to epsg:3857? Or if
I scale them to 8-bit? Or if I use near resampling method instead of
cubic? (I'm using cubic because I'm working with continuous data:
satellite images, am I doing it right?).

 From a quick look at the source, it seems that there's an optimization if the
input SRS == output SRS that avoids going through the warped VRT path.

That said, we definitely need one or several maintainers for gdal2tiles. There
are quite a faw patches floating around in Trac that would need someone to
review, test, fix, apply them, as well as writing tests (no autotest for
gdal2tiles yet), etc...

Any other tips?

Many thanks in advance

Best regards


--
Sent with Postbox <http://www.getpostbox.com>
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to