Banc d'essai comparatif

From OSGeo
Jump to navigation Jump to search

Banc d'essai comparatif pour MrSid, ECW, TIF, JPG2000

Au Ministère de la sécurité publique du Québec, nous avons voulu tester la performance de Mapserver avec 4 formats d'images matriciels. L'objectif principal était de vérifier ce qui ce dit sur les forums par rapport au format MrSid vs ECW sous Mapserver. Étant donné que presque tout les Ministères au Québec utilisent le format MrSid, nous avions pensé faire de même, mais ce banc d'essai nous a montré qu'il fallait se questionner davantage.

Méthode

Nous avons utilisé l'outil 'shp2img' livré avec le package FWTools(http://fwtools.maptools.org/). Cet outil permet de simuler le comportement de Mapserver et d'éliminer les imprévues relié au réseaux. De plus, nous n'avons pas reprojeté l'image de sorti. Nous avons également fait un test avec une enveloppe de petite dimension pour tester la décompression par MapServer.

Images

Notre image de départ était une image MrSid que nous avons convertit en format HDR à l'aide de GDAL. Ce format n'a aucune limite de taille de fichier et pouvait être convertit par ERMapper en format ECW.

gdal_translate -of EHdr -not_strict -a_nodata 0 C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.sid  C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.bil

Cette image a été transformée en GeoTiff, en JPG2000 avec GDAL. Notons que l'image GeoTiff est tuilée et multi-résolution, ce qui a grandement grossit sa taille (800 000K). De plus l'image ECW à été compressé a 25:1 l'aide de ERMapper.

gdal_translate -of gtiff -not_strict -co 'ALPHA=YES' -co "TILED=YES" -a_nodata 0 C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.bil C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.tif
gdaladdo -r average C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.tif 2 4 8 16 32 64 128 256
gdal_translate -of JP2KAK -co 'Clayers=20' -co 'Clevels=8' -co 'Corder=RPCL' -co 'Cprecincts={256,256},{256,256},{128,128}' -co 'ORGgen_plt=yes' -co 'ORGtparts=R' -co 'Cblk={32,32}' -co 'Creversible=no' -co 'quality=10' C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.bil C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.jp2

Enfin, le manque de temps nous imposant de faire un peu de spéculation, nous croyons que l'image MrSid a été compressée a avec un ratio de 20:1 et sauvegardé avec multi-résolution(Nousn'avons pas demandé au MRNF). Nous avons remarqué que même en demandant un ratio de 20:1 a ERMapper, le moteur de compression a tout même compressé à 25:1 sans en affecter la qualité visuelle. Nous avons donc tout de même utilisé cette image et il faut comprendre que l'image MrSid pourrait être de plus petite taille. Par contre nous ne croyons pas que cela affecte les résultats de notre test.


Résultats

Aucune surprise pour le format le plus performent, comme souvent dit par plusieurs utilisateurs, le meilleur format d'image pour diffuser un service Web avec Mapserver est le format TIF décompressé tuilé. Il est par contre coûteux pour les grandes organisations qui ont de grande quantité d'images. Il en résulte qu'en combinant l'espace de stockage et le temps de traitement, le format ECW dépasse de loin les autres formats d'image. Même si il demande l'achat d'une licence d'utilisation ERMapper Image Compressor (qui n'est pas très dispendieux...), il apporte plus que le coût lié au stockage des images TIF décompressées.

Pour le format MrSid, même si le ratio de compression est moins important que le format ECW, l'image MrSid est tout simplement déclassé... pour ne pas dire pitoyable avec MapServer. Quand au format JPG2000 ... on doit oublier ce type de fichier pour les services Web...

Images	 				Taile		Time Full	Time extent	Compression
-----------------------			------		-------		-----------	-------------
MOS_07_22D05-SE_F07_56CM.tif		3 325 779	0.255sec	0.306sec	1x 
MOS_07_22D05-SE_F07_56CM.jp2		496 781 	14.686sec	14.576sec	6.7x 
MOS_07_22D05-SE_F07_56CM.sid		191 945 	3.375sec	7.050sec	17.3x 
MOS_07_22D05-SE_F07_56CM.ecw		100 841 	0.300sec	0.511sec	33x 

Les annexes qui suivent, montre les lignes de commandes, mapfile et logfile du banc d'essai.

Annexe


Annexe 1 - shp2img batchfile


del C:\Travail\sid\*.jpg<br>
shp2img -m C:\Travail\sid\img2.map -l tif -i jpeg -o C:\Travail\sid\tif-fullview.jpg
shp2img -m C:\Travail\sid\img2.map -l ecw -i jpeg -o C:\Travail\sid\ecw-fullview.jpg
shp2img -m C:\Travail\sid\img2.map -l sid -i jpeg -o C:\Travail\sid\sid-fullview.jpg
shp2img -m C:\Travail\sid\img2.map -l jp2 -i jpeg -o C:\Travail\sid\jp2-fullview.jpg
shp2img -m C:\Travail\sid\img2.map -l tif -i jpeg -o C:\Travail\sid\tif-ext.jpg -e 219589 5347860 226045 5353101
shp2img -m C:\Travail\sid\img2.map -l ecw -i jpeg -o C:\Travail\sid\ecw-ext.jpg -e 219589 5347860 226045 5353101
shp2img -m C:\Travail\sid\img2.map -l sid -i jpeg -o C:\Travail\sid\sid-ext.jpg -e 219589 5347860 226045 5353101
shp2img -m C:\Travail\sid\img2.map -l jp2 -i jpeg -o C:\Travail\sid\jp2-ext.jpg -e 219589 5347860 226045 5353101

Annexe 2 - mapfile for shp2img


MAP
    NAME "img2"
    STATUS OFF
    EXTENT 211978 5346173 230725 5360345
    SIZE 935 760
    IMAGETYPE PNG
    IMAGECOLOR 255 255 255
    UNITS METERS
    CONFIG  "MS_ERRORFILE" "C:\Travail\sid\log.txt"    
    PROJECTION
        "init=epsg:32187"
    END
    LAYER
        NAME "ecw"
        DEBUG 5
        STATUS OFF
        DATA "C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.ecw"
        TYPE RASTER
        PROJECTION
          "init=epsg:32187" 
        END
    END  
    LAYER
        NAME "sid"
        DEBUG 5
        STATUS OFF
        DATA "C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.sid"
        TYPE RASTER
        PROJECTION
          "init=epsg:32187"  
        END
    END 
    LAYER
        NAME "tif"
        DEBUG 5
        STATUS OFF
        DATA "C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.tif"
        TYPE RASTER
        PROJECTION
          "init=epsg:32187" 
        END
    END  
    LAYER
        NAME "jp2"
        DEBUG 5
        STATUS OFF
        DATA "C:\Travail\sid\MOS_07_22D05-SE_F07_56CM.jp2"
        TYPE RASTER
        PROJECTION
          "init=epsg:32187" 
        END
    END      
END

Annexe 3 - mapserver logfile


[Fri Feb 15 16:05:14 2008].742000 msDrawRasterLayerLow(tif): entering.
[Fri Feb 15 16:05:14 2008].762000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:05:14 2008].762000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:15 2008].2000 msDrawMap(): Layer 2 (tif), 0.260s
[Fri Feb 15 16:05:15 2008].493000 msDrawRasterLayerLow(ecw): entering.
[Fri Feb 15 16:05:15 2008].493000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:05:15 2008].493000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:15 2008].793000 msDrawMap(): Layer 0 (ecw), 0.300s
[Fri Feb 15 16:05:16 2008].264000 msDrawRasterLayerLow(sid): entering.
[Fri Feb 15 16:05:16 2008].274000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:05:16 2008].274000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:19 2008].639000 msDrawMap(): Layer 1 (sid), 3.375s
[Fri Feb 15 16:05:20 2008].120000 msDrawRasterLayerLow(jp2): entering.
[Fri Feb 15 16:05:20 2008].130000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:05:20 2008].130000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:34 2008].791000 msDrawMap(): Layer 3 (jp2), 14.671s
[Fri Feb 15 16:05:35 2008].251000 msDrawRasterLayerLow(tif): entering.
[Fri Feb 15 16:05:35 2008].261000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:05:35 2008].261000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:35 2008].552000 msDrawMap(): Layer 2 (tif), 0.301s
[Fri Feb 15 16:05:36 2008].43000 msDrawRasterLayerLow(ecw): entering.
[Fri Feb 15 16:05:36 2008].53000 msDrawGDAL(): src=13583,12924,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:05:36 2008].53000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:36 2008].553000 msDrawMap(): Layer 0 (ecw), 0.510s
[Fri Feb 15 16:05:37 2008].44000 msDrawRasterLayerLow(sid): entering.
[Fri Feb 15 16:05:37 2008].54000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:05:37 2008].54000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:44 2008].84000 msDrawMap(): Layer 1 (sid), 7.040s
[Fri Feb 15 16:05:44 2008].595000 msDrawRasterLayerLow(jp2): entering.
[Fri Feb 15 16:05:44 2008].605000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:05:44 2008].605000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:05:58 2008].966000 msDrawMap(): Layer 3 (jp2), 14.371s
[Fri Feb 15 16:07:12 2008].91000 msDrawRasterLayerLow(tif): entering.
[Fri Feb 15 16:07:12 2008].111000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:07:12 2008].111000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:12 2008].341000 msDrawMap(): Layer 2 (tif), 0.250s
[Fri Feb 15 16:07:12 2008].802000 msDrawRasterLayerLow(ecw): entering.
[Fri Feb 15 16:07:12 2008].812000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:07:12 2008].812000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:13 2008].102000 msDrawMap(): Layer 0 (ecw), 0.300s
[Fri Feb 15 16:07:13 2008].573000 msDrawRasterLayerLow(sid): entering.
[Fri Feb 15 16:07:13 2008].593000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:07:13 2008].593000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:16 2008].948000 msDrawMap(): Layer 1 (sid), 3.375s
[Fri Feb 15 16:07:17 2008].448000 msDrawRasterLayerLow(jp2): entering.
[Fri Feb 15 16:07:17 2008].458000 msDrawGDAL(): src=0,0,33477,25307, dst=0,26,935,707
[Fri Feb 15 16:07:17 2008].458000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:32 2008].150000 msDrawMap(): Layer 3 (jp2), 14.702s
[Fri Feb 15 16:07:32 2008].610000 msDrawRasterLayerLow(tif): entering.
[Fri Feb 15 16:07:32 2008].620000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:07:32 2008].620000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:32 2008].921000 msDrawMap(): Layer 2 (tif), 0.311s
[Fri Feb 15 16:07:33 2008].381000 msDrawRasterLayerLow(ecw): entering.
[Fri Feb 15 16:07:33 2008].391000 msDrawGDAL(): src=13583,12924,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:07:33 2008].391000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:33 2008].892000 msDrawMap(): Layer 0 (ecw), 0.511s
[Fri Feb 15 16:07:34 2008].383000 msDrawRasterLayerLow(sid): entering.
[Fri Feb 15 16:07:34 2008].393000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:07:34 2008].393000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:41 2008].443000 msDrawMap(): Layer 1 (sid), 7.060s
[Fri Feb 15 16:07:41 2008].934000 msDrawRasterLayerLow(jp2): entering.
[Fri Feb 15 16:07:41 2008].944000 msDrawGDAL(): src=13584,12925,11541,9381, dst=0,0,935,760
[Fri Feb 15 16:07:41 2008].944000 msDrawGDAL(): red,green,blue,alpha bands = 1,2,3,0
[Fri Feb 15 16:07:56 2008].384000 msDrawMap(): Layer 3 (jp2), 14.450s