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(defaulthttp://localhost:3000). - Optional: install the Windows Service via
node service\\install-service.js.
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.
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>
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.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" }
]
}
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.