{"id":11434,"date":"2020-06-09T07:03:00","date_gmt":"2020-06-09T05:03:00","guid":{"rendered":"https:\/\/www.opengis.ch\/?p=11434"},"modified":"2021-05-18T17:53:52","modified_gmt":"2021-05-18T15:53:52","slug":"offline-wms-benchmarking-raster-formats-for-qfield","status":"publish","type":"post","link":"https:\/\/www.opengis.ch\/fr\/2020\/06\/09\/offline-wms-benchmarking-raster-formats-for-qfield\/","title":{"rendered":"Offline WMS &#8211; Benchmarking raster formats for QField"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What are we looking for?<\/h2>\n\n\n\n<p>We would like to use WMS offline on QField. For that, we need to figure out what is the best way to get a raster from a WMS and which format is the most efficient (size and performance).<\/p>\n\n\n\n<p>In this post we&rsquo;ll show you is how to generate the ideal raster file from a WMS and the results of our efficiency tests for the the different raster formats.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WMS to GPKG<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">The simple way<\/h3>\n\n\n\n<p>If there is no limitation on the WMS or you need only a small region, here is the easiest process.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Request the WMS and store a <a href=\"https:\/\/gdal.org\/drivers\/raster\/wms.html#xml-description-file\">description file in XML<\/a>:<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>gdal_translate \"WMS:url\" file.xml -of WMS<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\"><li>Create a Geopackage from the information in the description file.<\/li><\/ol>\n\n\n\n<pre class=\"wp-block-code\"><code>gdal_translate -of GPKG file.xml file.gpkg -co TILE_FORMAT=JPEG<\/code><\/pre>\n\n\n\n<p>That was quite simple, right?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The larger datasets way<\/h3>\n\n\n\n<p>If the command takes too much time, it means that it is trying to download too much data and could be caused by downloading higher resolution data than required.<br>The command might even completely fail if it contains a request for bigger data blocks thant the server allows.<\/p>\n\n\n\n<p>Here is the process to get larger datasets in a simple way. Let&rsquo;s use a real example:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Use <code>gdal_translate \"WMS:https:\/\/www.gebco.net\/data_and_products\/gebco_web_services\/web_map_service\/mapserv?request=getmap&amp;service=wms&amp;crs=EPSG:4326&amp;format=image\/jpeg&amp;layers=gebco_latest&amp;version=1.1.0\" test.xml -of WMS<\/code><\/li><li>Open the test.xml file for editing, here you&rsquo;ll find the parameters of the WMS. We change the \u00ab\u00a0SizeX\u00a0\u00bb to 3600 and \u00ab\u00a0SizeY\u00a0\u00bb to 1800. By changing these parameters we lower the resolution. It is important to keep proportionality.<\/li><li>Another thing we need to change are \u00ab\u00a0BlockSizeX\u00a0\u00bb and \u00ab\u00a0BlockSizeY\u00a0\u00bb that define the size of the tiles. We change both to 2048.<\/li><li>Finally, use <code>gdal_translate -of GPKG test.xml test.gpkg -co TILE_FORMAT=JPEG<\/code><\/li><li>To make a Geopackage pyramid use <code>gdaladdo GPKG:test.gpkg:gebco_latest<\/code>. It will <strong>replace<\/strong> the Geopackage, if you want to keep the original one, you need to copy it first.<\/li><\/ol>\n\n\n\n<p>Now you have a raster Geopackage that you can use in QField.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testing raster formats<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Preparing the files<\/h3>\n\n\n\n<p>As first step we exported our test orthophoto WMS to a plain GeoTIFF using QGIS&rsquo; default behaviour.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2483\" height=\"2042\" src=\"https:\/\/i1.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?fit=750%2C617&amp;ssl=1\" alt=\"\" class=\"wp-image-11505\" srcset=\"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?w=2483&amp;ssl=1 2483w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=300%2C247&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=1024%2C842&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=768%2C632&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=321%2C264&amp;ssl=1 321w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=1536%2C1263&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?resize=2048%2C1684&amp;ssl=1 2048w, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/tiff.png?w=2250&amp;ssl=1 2250w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><figcaption>Default parameters&nbsp;used to create the initial tiff<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table alignwide is-style-stripes\">\n<table><thead><tr><th>Format<\/th><th class=\"has-text-align-right\" data-align=\"right\">gdal_translate<\/th><th class=\"has-text-align-right\" data-align=\"right\">gdaladdo<\/th><\/thead><tbody><tr><td>gpkg JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_JPEG.gpkg\u00a0\u00bb -co TILE_FORMAT=JPEG\n<\/td> <td class=\"has-text-align-right\" data-align=\"right\"> <\/td><tr class=\"has-subtle-pale-pink-background-color has-background\"><td>gpkg PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\"><\/td> <tr><td>gpkg PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG_JPEG.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr><td>gpkg PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG8.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr><td>gpkg WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_WEBP.gpkg\u00a0\u00bb -co TILE_FORMAT=WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr class=\"has-subtle-pale-green-background-color has-background\"><td>gpkg pyramid_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_JPEG.gpkg\u00a0\u00bb -co TILE_FORMAT=JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdaladdo GPKG:C:\\test\\test_JPEG.gpkg:test_gpkg_JPEG <\/td><\/tr><tr><td>gpkg pyramid_PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdaladdo GPKG:C:\\test\\test_PNG.gpkg:test_gpkg_PNG<\/td><\/tr><tr class=\"has-subtle-pale-blue-background-color has-background\"><td>gpkg pyramid_PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG_JPEG.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdaladdo GPKG:C:\\test\\test_PNG_JPEG.gpkg:test_gpkg_PNG_JPEG<\/td><\/tr><tr><td>gpkg pyramid_PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_PNG8.gpkg\u00a0\u00bb -co TILE_FORMAT=PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdaladdo GPKG:C:\\test\\test_PNG8.gpkg:test_gpkg_PNG8<\/td><\/tr><tr class=\"has-subtle-pale-green-background-color has-background\"><td>gpkg pyramid_WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of GPKG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_WEBP.gpkg\u00a0\u00bb -co TILE_FORMAT=WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdaladdo GPKG:C:\\test\\test_WEBP.gpkg:test_gpkg_WEBP<\/td><\/tr><tr><td>JPEG2000<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of JP2OpenJPEG \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_jpeg_2000.jpg\u00a0\u00bb<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr><td>COG DEFLATE<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_cog.tif\u00a0\u00bb -co TILED=YES -co COPY_SRC_OVERVIEWS=YES -co COMPRESS=DEFLATE<\/td><td class=\"has-text-align-right\" data-align=\"right\">  <\/td><\/tr><tr><td>COG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_cog_JPEG.tif\u00a0\u00bb -co TILED=YES -co COPY_SRC_OVERVIEWS=YES -co COMPRESS=JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr><td>tif<\/td><td class=\"has-text-align-right\" data-align=\"right\">In QGIS right click on the layer > export > save as > (see the details in the picture under the table)<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><tr><td>MBT<\/td><td class=\"has-text-align-right\" data-align=\"right\">gdal_translate -of MBTILES \u00ab\u00a0C:\\test\\ortho_test.tif\u00a0\u00bb \u00ab\u00a0C:\\test\\test_mbt.mbtiles\u00a0\u00bb<\/td><td class=\"has-text-align-right\" data-align=\"right\"> <\/td><\/tr><\/tbody><\/table>\n<figcaption>Creation commands for all the tested formats<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Rendering test results<\/h3>\n\n\n\n<p>We have tested many formats, here is a table with the results of the size and rendering speed in QGIS and QField.<br>To analyze the speed we used <code>qgis_bench.exe -i 10 -p \"C:\\test\\test.qgs\" &gt;&gt; \"C:\\test\\test.log<\/code>.<br>Qgis_bench is a tool that renders a QGIS project a number of times to get performance measurements. The parameter -i is to define the iterations and -p is the project used which contains only the generated raster.<\/p>\n\n\n\n<figure class=\"wp-block-table alignwide is-style-stripes\"><table><thead><tr><th>Format<\/th><th class=\"has-text-align-right\" data-align=\"right\">Extent [m]<\/th><th class=\"has-text-align-right\" data-align=\"right\">File size [GB]<\/th><th class=\"has-text-align-right\" data-align=\"right\">Total_avg<\/th><th class=\"has-text-align-right\" data-align=\"right\">Total_maxdev<\/th><th class=\"has-text-align-right\" data-align=\"right\">Total_min<\/th><th class=\"has-text-align-right\" data-align=\"right\">Total_stdev<\/th><\/tr><\/thead><tbody><tr><td>gpkg JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">250.242<\/td><td class=\"has-text-align-right\" data-align=\"right\">255.781<\/td><td class=\"has-text-align-right\" data-align=\"right\">5.539<\/td><td class=\"has-text-align-right\" data-align=\"right\">244.984<\/td><\/tr><tr class=\"has-subtle-pale-pink-background-color has-background\"><td>gpkg PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.9<\/td><td class=\"has-text-align-right\" data-align=\"right\">412.002<\/td><td class=\"has-text-align-right\" data-align=\"right\">490.328<\/td><td class=\"has-text-align-right\" data-align=\"right\">152.142<\/td><td class=\"has-text-align-right\" data-align=\"right\">259.859<\/td><\/tr><tr><td>gpkg PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">250.125<\/td><td class=\"has-text-align-right\" data-align=\"right\">256.875<\/td><td class=\"has-text-align-right\" data-align=\"right\">6.750<\/td><td class=\"has-text-align-right\" data-align=\"right\">245.172<\/td><\/tr><tr><td>gpkg PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">283.875<\/td><td class=\"has-text-align-right\" data-align=\"right\">296.406<\/td><td class=\"has-text-align-right\" data-align=\"right\">12.625<\/td><td class=\"has-text-align-right\" data-align=\"right\">271.250<\/td><\/tr><tr><td>gpkg WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.3<\/td><td class=\"has-text-align-right\" data-align=\"right\">330.238<\/td><td class=\"has-text-align-right\" data-align=\"right\">348.109<\/td><td class=\"has-text-align-right\" data-align=\"right\">73.534<\/td><td class=\"has-text-align-right\" data-align=\"right\">256.703<\/td><\/tr><tr class=\"has-subtle-pale-green-background-color has-background\"><td>gpkg pyramid_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.5<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.009<\/td><td class=\"has-text-align-right\" data-align=\"right\">3.406<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.397<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.688<\/td><\/tr><tr><td>gpkg pyramid_PNG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">3.0<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.208<\/td><td class=\"has-text-align-right\" data-align=\"right\">3.281<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.073<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.688<\/td><\/tr><tr class=\"has-subtle-pale-blue-background-color has-background\"><td>gpkg pyramid_PNG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.6<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.491<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.344<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.853<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.016<\/td><\/tr><tr><td>gpkg pyramid_PNG8<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.6<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.508<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.375<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.867<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.969<\/td><\/tr><tr class=\"has-subtle-pale-green-background-color has-background\"><td>gpkg pyramid_WEBP<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.333<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.906<\/td><td class=\"has-text-align-right\" data-align=\"right\">3.573<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.766<\/td><\/tr><tr><td>JPEG2000<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.1<\/td><td class=\"has-text-align-right\" data-align=\"right\">13.888<\/td><td class=\"has-text-align-right\" data-align=\"right\">136.109<\/td><td class=\"has-text-align-right\" data-align=\"right\">122.222<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.219<\/td><\/tr><tr><td>COG DEFLATE<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">3.6<\/td><td class=\"has-text-align-right\" data-align=\"right\">264.427<\/td><td class=\"has-text-align-right\" data-align=\"right\">273.094<\/td><td class=\"has-text-align-right\" data-align=\"right\">25.411<\/td><td class=\"has-text-align-right\" data-align=\"right\">239.016<\/td><\/tr><tr><td>COG_JPEG<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.0<\/td><td class=\"has-text-align-right\" data-align=\"right\">14.778<\/td><td class=\"has-text-align-right\" data-align=\"right\">131.172<\/td><td class=\"has-text-align-right\" data-align=\"right\">116.394<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.734<\/td><\/tr><tr><td>tif<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">6.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">2.367<\/td><td class=\"has-text-align-right\" data-align=\"right\">6.734<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.367<\/td><td class=\"has-text-align-right\" data-align=\"right\">1.672<\/td><\/tr><tr><td>MBT<\/td><td class=\"has-text-align-right\" data-align=\"right\">52&rsquo;880\/29&rsquo;230<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.4<\/td><td class=\"has-text-align-right\" data-align=\"right\">0.469<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.641<\/td><td class=\"has-text-align-right\" data-align=\"right\">4.171<\/td><td class=\"has-text-align-right\" data-align=\"right\">0<\/td><\/tr><\/tbody><\/table><figcaption>Comparison of file size and rendering speed of different raster formats. \u00ab\u00a0Total\u00a0\u00bb columns are rendering times in [s]. Lower file size is more storage friendly, lower Total_avg is more performant. <\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Analysis<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">File size<\/h3>\n\n\n\n<p>The Geopackage WEBP (with and without pyramid) has the best result for file size, <s>but<\/s> it is <s>not <em>yet<\/em> <\/s>supported by QField (from 1.6) and is <s>only<\/s> slightly smaller than the JPEG variant.<\/p>\n\n\n\n<p>Plain GeoTiff, MBTiles, Cloud Optimized GeoTIFF (COG &#8211; DEFLATE mode) and Geopackages with PNG generate by far the largest file sizes (up to 20x larger) and are thus not recommended.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Rendering speed<\/h3>\n\n\n\n<p>MBTiles are on average double as fast as JPEG Geopackages with pyramids which in turn are more than double as fast as GeoTIFF and 15x faster than COG. <br>Geopackages without pyramids are 200 to 400 times slower.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Even though MBTiles render faster than the Geopackage pyramid JPEG, they come with an almost 10x bigger storage requirement which makes us say that the best offline raster format supported by QField is <strong>Geopackage pyramid JPEG<\/strong> or if you need transparency and slightly smaller files <strong>Geopackage pyramid WebP<\/strong>.<\/p>\n\n\n\n<p>If you need transparency before QField 1.6, the best results are achieved with Geopackage pyramid PNG_JPEG.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>What are we looking for? We would like to use WMS offline on QField. For that, we need to figure out what is the best way to get a raster from a WMS and which format is the most efficient (size and performance). In this post we&rsquo;ll show you is [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":11479,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[36,38,15,19],"tags":[125],"class_list":["post-11434","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-processing","category-qfield","category-qgis","category-scripts","tag-qgis-org"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2020\/06\/Screenshot-from-2020-06-08-13-00-42.png?fit=1224%2C828&ssl=1","jetpack-related-posts":[{"id":293,"url":"https:\/\/www.opengis.ch\/fr\/2011\/08\/19\/qgis-data-providers-and-map-canvas\/","url_meta":{"origin":11434,"position":0},"title":"QGIS data providers and map canvas","author":"Marco Bernasocchi","date":"19 ao\u00fbt 2011","format":false,"excerpt":"After finishing with the gui(see previous post) i started testing the data providers.reading and writing shp files always ends in an app crash. Loading rasters, wms and gpx seems to work but the mapcanvas is never drawn. I have to investigate why. But probably it has to do with the\u2026","rel":"","context":"Dans &quot;Android QGIS&quot;","block_context":{"text":"Android QGIS","link":"https:\/\/www.opengis.ch\/fr\/category\/gis\/qfield\/android-qgis\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13792,"url":"https:\/\/www.opengis.ch\/fr\/2023\/06\/20\/prise-en-charge-de-wmts-dans-le-plugin-de-localisation-suisse-de-qgis\/","url_meta":{"origin":11434,"position":1},"title":"Prise en charge de WMTS dans le plugin de localisation suisse de QGIS","author":"Matthias Kuhn","date":"20 juin 2023","format":false,"excerpt":"Le plugin QGIS Swiss Locator facilite la vie de nombreux utilisateurs en Suisse en rendant accessibles les nombreuses g\u00e9odonn\u00e9es de swisstopo et opendata.swiss. Cela inclut un large \u00e9ventail de couches de donn\u00e9es, mais \u00e9galement des informations sur les objets et une recherche de noms de lieux. Gr\u00e2ce \u00e0 un projet\u2026","rel":"","context":"Dans &quot;QGIS&quot;","block_context":{"text":"QGIS","link":"https:\/\/www.opengis.ch\/fr\/category\/gis-fr\/qgis-fr\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/06\/unnamed.png?fit=512%2C341&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":315,"url":"https:\/\/www.opengis.ch\/fr\/2011\/08\/24\/gsoc-2011-final-report\/","url_meta":{"origin":11434,"position":2},"title":"GSoC 2011 final report","author":"Marco Bernasocchi","date":"24 ao\u00fbt 2011","format":false,"excerpt":"So, it is over, after 3 months working on QGIS for android as a Google Summer of code project it is now time to wrap up what I did and didn't do. First of all a QGIS android app exists now and it has many features including: - reading\/writing projects\u2026","rel":"","context":"Dans &quot;Android QGIS&quot;","block_context":{"text":"Android QGIS","link":"https:\/\/www.opengis.ch\/fr\/category\/gis\/qfield\/android-qgis\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":13789,"url":"https:\/\/www.opengis.ch\/2023\/06\/13\/unterstutzung-fur-wmts-in-qgis-swiss-locator\/","url_meta":{"origin":11434,"position":3},"title":"Unterst\u00fctzung f\u00fcr WMTS im QGIS Swiss Locator","author":"Matthias Kuhn","date":"13 juin 2023","format":false,"excerpt":"Das QGIS swiss locator Plugin erleichtert in der Schweiz vielen Anwendern das Leben dadurch, dass es die umfangreichen Geodaten von swisstopo und opendata.swiss zug\u00e4nglich macht. Darunter ein breites Angebot an GIS Layern, aber auch Objektinformationen und eine Ortsnamensuche. Dank eines F\u00f6rderprojektes der Anwendergruppe Schweiz durfte OPENGIS.ch ihr Plugin um eine\u2026","rel":"","context":"Dans &quot;Python&quot;","block_context":{"text":"Python","link":"https:\/\/www.opengis.ch\/fr\/category\/programming\/python\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2023\/06\/unnamed.png?fit=512%2C341&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":15582,"url":"https:\/\/www.opengis.ch\/fr\/2025\/06\/03\/qfield-3-6-gondwana-locking-on-greatness\/","url_meta":{"origin":11434,"position":4},"title":"QField 3.6 \u201cGondwana\u201d: Locking on greatness","author":"Mathieu","date":"3 juin 2025","format":false,"excerpt":"Building on top of the last release which introduced background tracking, this development cycle focused on polishing functionalities and building on top of preexisting features. The variety of improvements is sure to make our diverse user base and community excited to upgrade to QField 3.6.","rel":"","context":"Dans &quot;QField&quot;","block_context":{"text":"QField","link":"https:\/\/www.opengis.ch\/fr\/category\/gis\/qfield\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/splash.png?fit=1200%2C736&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/splash.png?fit=1200%2C736&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/splash.png?fit=1200%2C736&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/splash.png?fit=1200%2C736&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/www.opengis.ch\/wp-content\/uploads\/2025\/05\/splash.png?fit=1200%2C736&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1923,"url":"https:\/\/www.opengis.ch\/fr\/2015\/12\/01\/qfield-for-android-5\/","url_meta":{"origin":11434,"position":5},"title":"QField for Android 5","author":"Marco Bernasocchi","date":"1 d\u00e9cembre 2015","format":false,"excerpt":"It's done, QField runs on any android from 4.0.3 (ICS) with a seamless installing experience. We suggest using at least Android 4.3","rel":"","context":"Dans &quot;Android QGIS&quot;","block_context":{"text":"Android QGIS","link":"https:\/\/www.opengis.ch\/fr\/category\/gis\/qfield\/android-qgis\/"},"img":{"alt_text":"QField app on Google Play","src":"https:\/\/i0.wp.com\/developer.android.com\/images\/brand\/en_app_rgb_wo_45.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_shortlink":"https:\/\/wp.me\/pbdBtI-2Yq","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/posts\/11434","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/comments?post=11434"}],"version-history":[{"count":43,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/posts\/11434\/revisions"}],"predecessor-version":[{"id":12808,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/posts\/11434\/revisions\/12808"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/media\/11479"}],"wp:attachment":[{"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/media?parent=11434"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/categories?post=11434"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opengis.ch\/fr\/wp-json\/wp\/v2\/tags?post=11434"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}