Skip to content

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

License

Notifications You must be signed in to change notification settings

apdevelop/tile-map-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tile Map Service for .NET 5 / .NET 8

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

Demo page

Demo page

Features

  • Supported tile sources:
Source type EPSG:3857 EPSG:4326 Notes
Local file system Each tile in separate file in Z/X/Y.ext folder structure
MBTiles (SQLite) MBTiles 1.3 Specification
GeoTIFF local file GeoTIFF basic support with EPSG:3857 or EPSG:4326 source image SRS only
XYZ tile service XYZ with local cache for EPSG:3857 SRS
TMS tile service TMS with local cache for EPSG:3857 SRS
WMTS tile service WMTS with local cache for EPSG:3857 SRS
WMS service WMS, versions 1.1.1 and 1.3.0, cache for EPSG:3857 SRS
PostGIS database Mapbox Vector Tiles from geometry column with EPSG:3857 SRS only
  • Supported protocols (service endpoints) for serving tiles:
Endpoint EPSG:3857 EPSG:4326 Endpoint Url Formats Notes
XYZ (Tiled web map) /xyz png, jpeg, webp, mvt Can be REST style url (/{z}/{x}/{y}.ext) or url with parameters (&x={x}&y={y}&z={z})
TMS (Tile Map Service) /tms png, jpeg, webp, mvt
WMTS (Web Map Tile Service) /wmts png, jpeg, webp, mvt Support both RESTful and KVP GetTile url syntax
WMS (Web Map Service) /wms png, 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).

Technologies

There are two separate solutions and corresponding projects, sharing the same source code files:

Property .NET 5 .NET 8
SDK .NET 5.0 .NET 8.0
MS Visual Studio 2019 2022 (17.8.3)
Status Legacy Active

Using

Configuration file

Tile sources are defined in appsettings.json configuration file.

Running framework-dependent deployment

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

dotnet --info

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

There is known issue for .NET 5 and libssl 3.x compatibility on Linux systems, use .NET 8 in this case.

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

  • 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