Index de tuiles

Author:HostGIS
Last Updated:

04/07/2013

Introduction

Une introduction aux indexes de tuiles, la méthode de MapServer pour réaliser du mosaicage à la volée.

Qu’est ce qu’un index de tuiles et comment en faire un?

A tileindex is a shapefile that ties together several datasets into a single layer. Therefore, you don’t need to create separate layers for each piece of imagery or each county’s road data; make a tileindex and let MapServer piece the mosaic together on the fly.

Making a tileindex is easy using gdaltindex for GDAL data sources (rasters) and ogrtindex for OGR data sources (vectors). You just run them, specifying the index file to create and the list of data sources to add to the index.

Par exemple, pour faire une mosaïque de plusieurs TIFFs :

gdaltindex imagery.shp imagery/*.tif

Et pour faire une mosaïque de vecteurs :

ogrtindex strees.shp tiger/CA/*.shp tiger/NV/*.shp

Note

ogrtindex and gdaltindex add the specified files to the index. Sometimes you’ll have to delete the index file to avoid creating duplicate entries.

Utiliser l’index de tuiles (tileindex) dans votre mapfile

L’utilisation d’un index de tuiles (indextile) comme une couche s’explique plus facilement avec un exemple :

LAYER
    NAME "Roads"
    STATUS ON
    TYPE LINE
    TILEINDEX "tiger/index.shp"
    TILEITEM "LOCATION"
END

There are two items of note here: TILEINDEX and TILEITEM. TILEINDEX is simply the path to the index file, and TILEITEM specifies the field in the shapefile which contains the filenames referenced by the index. The TILEITEM will usually be “LOCATION” unless you specified the -tileindex option when running gdaltindex or ogrtindex.

Deux choses importantes à retenir sur les noms des chemins :

  • Le chemin de TILEINDEX suit les mêmes conventions que les autres sources de données, c’est à dire en utilisant le SHAPEPATH ou le chemin relatif à l’emplacement du mapfile.

  • The filenames specified on the command line to gdaltindex or ogrtindex will be used with the same conventions as well, following the SHAPEPATH or else being relative to the mapfile’s location. I find it very useful to change into the SHAPEPATH directory and then run ogrtindex/gdaltindex from there; this ensures that I specify the correct pathnames.

Les index de tuiles (tileindex) pourraient rendre votre carte plus rapide

Un index de tuiles (tileindex) est souvent un moyen d’améliorer les performances pour deux raisons :

  • C’est plus efficace que d’avoir plusieurs couches séparées.

  • MapServer will examine the tileindex to determine which datasets fall into the map’s view, and will open only those datasets. This can result in a great savings for a large dataset, especially for use cases where most of the time only a very small spatial region of the data is being used. (for example, citywide maps with nationwide street imagery)

A tileindex will not help in the case where all/most of the data sources will usually be opened anyway (e.g. street data by county, showing states or larger regions). In that case, it may even result in a decrease in performance, since it may be slower to open 100 files than to open one giant file.

Le cas idéal pour un index de tuiles (tileindex) est quand les aires de carte les plus souvent demandées tombent dans quelques tuiles. Par exemple, si vous montrez des états et des régions plus larges, essayez de faire rentrer vos données dans des blocs de la taille d’un Etat au lieu de blocs de la taille de comtés (américains); et si vous montrez des villes et des comtés, faites plutôt des blocs de la taille des comtés.

Vous aurez juste à faire vos expérimentations et voir ce qui marche le mieux pour vos cas d’utilisation.

Tileindexes avec des tuiles dans différentes projections

Starting with MapServer 6.4, a raster tileindex can contain rasters in different projections. Such tileindex can be generated with gdaltindex (GDAL 1.11 or later), with the -t_srs and -src_srs_name options. The -t_srs instructs gdaltindex to write the envelope of each raster tile into a common target projection, so that the geometries written in the tile index are consistent. This common projection must be the projection of the raster layer.

gdaltindex -t_srs EPSG:4326 -src_srs_name src_srs imagery.shp imagery/*.tif

The corresponding LAYER definition will need to specify the TILESRS keyword with the value of the -src_srs_name option.

c’est à dire:

LAYER
    NAME "My Imagery"
    STATUS ON
    TYPE RASTER
    TILEINDEX "imagery.shp"
    TILEITEM "LOCATION"
    TILESRS "src_srs"
    PROJECTION
        AUTO
        # or :
        # "+init=EPSG:4326"
    END
END

MapServer sera capable de réaliser la reprojection et le mosaïcage à la volée.

For layers that must be exposed as WCS layers, a few metadata fields (“wcs_extent”, “wcs_size”, “wcs_resolution”) must be specified in the LAYER definition, so as to define a “virtual dataset” coverage (see Serveur WCS). The GDAL wcs_virtds_params.py sample script can help generating those metadata fields.

Note: le support de tileindex avec des projections mixtes est seulement disponible pour les couches raster pour le moment.