GitPedia

Tile map service

Tile server for .NET8 with MBTiles, Filesystem, GeoTIFF, HTTP sources and XYZ, TMS, WMTS, WMS endpoints (protocols support) and various output formats

From apdevelop·Updated June 13, 2026·View on GitHub·

Simple and lightweight implementation of tile server basic features for .NET 8 platform. Provides access to tiles stored in several source types and serving them using various protocols. The project is written primarily in C#, distributed under the MIT License license, first published in 2021. Key topics include: geotiff, geotiffs, gis, mbtiles, mvt.

Tile Map Service for .NET 8

Simple and lightweight implementation of tile server basic features for .NET 8 platform. Provides access to tiles stored in several source types and serving them using various protocols.

Demo page

Demo page

Features

  • Supported tile sources:
Source typeEPSG:3857EPSG:4326Notes
Local file systemEach tile in separate file in Z/X/Y.ext folder structure
MBTiles (SQLite)MBTiles 1.3 Specification
GeoTIFF local fileGeoTIFF basic support with EPSG:3857 or EPSG:4326 source image SRS only
XYZ tile serviceXYZ with local cache for EPSG:3857 SRS
TMS tile serviceTMS with local cache for EPSG:3857 SRS
WMTS tile serviceWMTS with local cache for EPSG:3857 SRS
WMS serviceWMS, versions 1.1.1 and 1.3.0, cache for EPSG:3857 SRS
PostGIS databaseMapbox Vector Tiles from geometry column with EPSG:3857 SRS only
  • Supported protocols (service endpoints) for serving tiles:
EndpointEPSG:3857EPSG:4326Endpoint UrlFormatsNotes
XYZ (Tiled web map)/xyzpng, jpeg, webp, mvtCan be REST style url (/{z}/{x}/{y}.ext) or url with parameters (&x={x}&y={y}&z={z})
TMS (Tile Map Service)/tmspng, jpeg, webp, mvt
WMTS (Web Map Tile Service)/wmtspng, jpeg, webp, mvtSupport both RESTful and KVP GetTile url syntax
WMS (Web Map Service)/wmspng, jpeg, tiff (geotiff)WMS versions 1.1.1 and 1.3.0
  • Coordinate system / tile grid support: Web Mercator / Spherical Mercator / EPSG:3857, basic support for geodetic EPSG:4326.
  • Tile image formats: raster (PNG, JPEG, WEBP) 256×256 pixels tiles, basic support of TIFF output and PBF / MVT (vector tiles).
  • Local cache for tiles from external tile services sources (modified mbtiles format database file, EPSG:3857 only), with blank tiles detection support.
  • Configuration in JSON file.
  • Reading sources configuration using /api endpoint (local requests only).

Using

Configuration file

Tile sources are defined in appsettings.json configuration file.

Running framework-dependent deployment

Check if .NET 8 runtime is installed on target system:

dotnet --info

The Microsoft.AspNetCore.App 8.0.0 (or later versions) should present in list.

Run the application using command:

dotnet tms.dll

After start, it will listen on default TCP port 5000 (using in-process Kestrel web server)
and tile service with demo page will be available on http://localhost:5000/ address; to enable remote calls allow connections to this port in firewall settings.

Further improvements on Linux

Some improvements can be made for better using this application in real environment:

  • Install nginx and configure it as reverse proxy server for Kestrel server.
  • Configure application to run as a service, using systemd service manager.

TODOs

  • .NET10 support.
  • Use modern C# language features and code style.
  • Support for more formats (image formats, vector tiles) and coordinate systems (tile grids).
  • Flexible settings of tile sources.
  • Configuration Web API / Web UI with authentication.
  • WMS client in Web UI.
  • Compare with reference implementations (servers and clients).
  • Using metatiles for better tiles quality.
  • Include test dataset(s) created from free data.
  • Extended diagnostics, error handling and logging.
  • Performance tests.
  • Live demo.

Some MBTiles sample datasets

All external tile sources (services) in the provided appsettings.json file are only for development / testing, not for production use.

References

Contributors

Showing top 1 contributor by commit count.

View all contributors on GitHub →

This article is auto-generated from apdevelop/tile-map-service via the GitHub API.Last fetched: 6/22/2026