Banc d'essai comparatif

== 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
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