Qtiler · MundoGIS

Quick Start & Workflow Guide

Everything you need to prepare QGIS projects, build manual or on-demand WMTS caches with Qtiler, secure deployments with the optional auth plugin, and publish production-ready services.

1 Getting ready

Prepare QGIS

  • Create and save your project in QGIS 3.x with all layers styled.
  • Define "Map Themes" (a.k.a. Kartteman) for every layer combination you want to cache as a composite.
  • Save the project (Ctrl+S) before uploading so the themes are persisted.

Set up the server

  • Install OSGeo4W or the standalone QGIS build and configure QGIS_PREFIX, OSGEO4W_BIN, PYTHON_EXE.
  • Launch Qtiler with npm start (default http://localhost:3000).
  • Optional: install the Windows Service via node service\\install-service.js.
Already copied projects into qgisprojects/? Just click Reload layers to rebuild the list.

2 Dashboard workflow

Here is the end-to-end flow inside the dashboard—everything you see ships with Qtiler, no manual assets required.

Dashboard overview

Use the top summary to monitor pending jobs, completed caches, and quick actions like Reload layers or Cache all layers.

Layer controls

Each row exposes play/delete/copy/view buttons plus shortcuts to manual or on-demand caching so operators never leave the dashboard.

1️⃣ Upload or refresh projects

Use Upload project for `.qgs/.qgz` files. Qtiler drops them into qgisprojects/ and extracts layers, CRS, extent, and themes. Manual copies work too—just hit Reload layers.

Importante: Si tu proyecto QGIS utiliza capas en archivos externos (por ejemplo, shapefiles, geopackages, etc.), debes comprimir el proyecto junto con todas sus capas y carpetas relacionadas en un archivo .zip manteniendo la misma estructura de carpetas. Al subir el ZIP, Qtiler extraerá el contenido y el proyecto debe poder encontrar las capas en las rutas relativas originales. Si cambias la estructura al comprimir, QGIS no podrá localizar las capas y el proyecto no funcionará correctamente.

2️⃣ Adjust zoom and extent

Set global min/max zoom and open Show extent map when you need precise bounding boxes. The map supports deep zoom (≈1:100) so you can refine the box in WGS84.

3️⃣ Cache per layer

4️⃣ Cache per theme

The Map Themes section lists every theme found. Use ▶ to generate the composite mosaic (`/wmts/<project>/themes/<theme>/…`). Copy the WMTS URL and preview it in the viewer.

3 Jobs & automation

Project-wide cache

Cache all layers launches a batch job that iterates over every layer with the current parameters. The “Running tasks” panel tracks progress live.

Scheduled recache

Open the recache menu to define minute-based intervals. The server records last result and next run inside project-config.json.

On-demand caching

Qtiler can serve tiles directly from QGIS whenever a WMTS request misses the cache. Each live render is written back to disk, so manual batch jobs and on-demand traffic stay perfectly aligned.

Caches live under cache/<project>/. Each run updates index.json with kind, zooms, source layers, and timestamps.

4 Publishing WMTS

The backend exposes a minimal GetCapabilities endpoint at /wmts?SERVICE=WMTS&REQUEST=GetCapabilities&project=<id>. All cached layers and themes appear as individual WMTS layers with ready-to-use templates.

GIS client integration

  • Load the Capabilities URL to register every layer at once.
  • Use individual tile URLs when you only need a specific resource.
  • Themes are identified as <project>:<theme> and stored under _themes/.

WMS, WFS & WMTS endpoints

In addition to WMTS/XYZ tiles, Qtiler exposes OGC endpoints per project. Supported versions:

  • WMTS: 1.0.0
  • WMS: 1.3.0
  • WFS: 1.1.0 and 2.0.0 (WFS-T editing is guaranteed for 1.1.0)
  • WMS GetCapabilities: /wms?SERVICE=WMS&REQUEST=GetCapabilities&project=<id>
  • WFS GetCapabilities: /wfs?SERVICE=WFS&REQUEST=GetCapabilities&project=<id>
  • WFS read (GeoJSON): /wfs?SERVICE=WFS&REQUEST=GetFeature&OUTPUTFORMAT=application/json&TYPENAME=<layer>&project=<id>
WFS-T (editing) uses POST /wfs?project=<id> with an XML <wfs:Transaction> body and may require admin access depending on your auth setup. WFS-T is supported for WFS 1.1.0.
A demo QGIS project is included in qgisprojects/demo so you can test the full workflow out of the box.

Leaflet viewer

Launch the Leaflet viewer from the eye icon next to each layer or theme. Compare cached tiles against the remote source or preview the cache on its own.

Using Qtiler with Origo Map

For Origo-based portals, point the source to the REST XYZ template (not GetCapabilities) and keep the native CRS. Example source configuration:

{
  "source": "Qtiler_Topografiska_Webbkartan",
  "url": "https://ext.rabbalshedekraft.se/wmts/bakgrunder/Topografiska_Webbkartan/{z}/{x}/{y}.png",
  "type": "XYZ",
  "projection": "EPSG:3006"
}

Example layer entry that references the source:

{
  "name": "bakgrunder_Topografiska_Webbkartan",
  "title": "Topografiska_Webbkartan",
  "group": "background",
  "source": "Qtiler_Topografiska_Webbkartan",
  "type": "XYZ",
  "format": "image/png",
  "visible": true,
  "style": "karta_farg",
  "attribution": "© Lantmäteriet",
  "tileGrid": {
    "alignBottomLeft": false,
    "origin": [ -908609.3787282843, 7825048.779051208 ],
    "resolutions": [
      11426.844956133727, 5713.422478066864, 2856.711239033432,
      1428.355619516716, 714.177809758358, 357.088904879179,
      178.5444524395895, 89.27222621979475, 44.63611310989737,
      22.318056554948686, 11.159028277474343, 5.579514138737172,
      2.789757069368586, 1.394878534684293, 0.6974392673421465,
      0.3487196336710732, 0.1743598168355366, 0.0871799084177683,
      0.04358995420888415, 0.021794977104442077, 0.010897488552221038,
      0.005448744276110519, 0.0027243721380552596
    ]
  }
}

Origo editing via WFS-T (example)

To enable editing in Origo, configure a WFS source (base endpoint) and mark the layer editable. Origo will send Transaction requests (WFS-T) to the source URL via POST.

Example WFS source (note: url is the base endpoint, not a GetCapabilities URL):

{
  "source": "Qtiler_WFS",
  "type": "WFS",
  "url": "http://localhost:3000/wfs?project=po",
  "workspace": "http://localhost:3000/qtiler/po",
  "projection": "EPSG:3006"
}

Example editable layer:

{
  "name": "PO_delar",
  "title": "PO_delar",
  "type": "WFS",
  "source": "Qtiler_WFS",
  "featureType": "PO_delar",
  "geometryName": "geometry",
  "editable": true,
  "attributes": [
    { "name": "GID", "type": "integer", "hidden": true },
    { "name": "NAMN", "type": "string" },
    { "name": "Status", "type": "string" },
    { "name": "Beskrivning", "type": "string" }
  ]
}
Server-side requirements: the datasource must allow writes (DB permissions/constraints). Depending on your deployment, WFS-T may require an admin session. Primary keys are usually auto-generated by the database.
Get the origin, resolutions, and extent from the layer/theme info dialog (ⓘ) in the dashboard. Copy the values from the "Layer Details" modal under WMTS URLs.

5 Best practices

  • Keep QGIS projects and themes organized—names map directly to WMTS paths.
  • Monitor disk usage; WMTS caches can grow fast. Clean up unused layers regularly.
  • Review logs (`logs/`) and UI status messages to catch render errors early.
  • Use dedicated Windows accounts and background services for production deployments.

Need to customize further? Update the repository README with team-specific notes, purchase Qtiler via mundogis.se, or email info@mundogis.se for more details.