Your maps, on your own servers.
MapSystem publishes your data in PostGIS, Oracle, SQL Server, GeoPackage or GeoTIFF as WMS, WMTS, WFS, WCS and OGC API services. It runs inside your own network, and your data never leaves it.
GetMap · altlik:acik, turkiye:rolyef, turkiye:goller · EPSG:3857
Türkiye, layer by layer
81 provinces, 973 districts, the main road and rail network, rivers, lakes and a shaded relief built from a 90-metre elevation model. All served by one server and drawn by one styling engine.

Publish a layer once, every client reads it
QGIS, ArcGIS, MapLibre, OpenLayers or your own application: each connects through its own protocol. A layer is defined once and appears in every service under the same name and with the same style.
WMS
1.3.0Server-rendered map images. On-the-fly styling with SLD, CQL filters, time and elevation dimensions, GetFeatureInfo.
/turkiye/wms?REQUEST=GetMap&LAYERS=iller&CRS=EPSG:5254
WMTS
1.0.0Cached tile service. Seamless meta-tile rendering; besides WebMercatorQuad, a tile grid in any EPSG system such as TUREF or UTM.
/turkiye/wmts?REQUEST=GetCapabilities
WFS and WFS-T
2.0.0Attribute and geometry queries with GeoJSON, GML 3.2, CSV and KML output. Authorised users can Insert, Update and Delete.
/turkiye/wfs?REQUEST=GetFeature&TYPENAMES=ilceler&COUNT=50
WCS
2.0.1Raster data with its raw values as GeoTIFF. Subsetting, scaling and output in another coordinate reference system.
/turkiye/wcs?REQUEST=GetCoverage&COVERAGEID=turkiye__yukseklik
OGC API
Features · Tiles · Maps · Styles · RecordsThe modern, JSON-based API family. OpenAPI 3.0 definition, paging, bbox filtering and MVT vector tiles.
/turkiye/ogc/collections/iller/items?limit=100
Processing
WPS 2.0.0 · OGC API ProcessesBuffer, intersection, union, difference, convex hull, area, length, reprojection and more: 15 built-in geoprocesses.
/ogc/processes/buffer/execution
CSW and INSPIRE
CSW 2.0.2Layer metadata catalogue, ISO 19139 output and INSPIRE extended capabilities. Default styles for all 34 INSPIRE themes.
/turkiye/csw?REQUEST=GetRecords
PMTiles
exportWrite a vector layer to a single-file tile archive and serve it from a static web server or offline devices.
POST /api/tilecache/pmtiles
Standards support you can test
We ran five test suites with TEAM Engine, the OGC's official test engine, against MapSystem 1.0. No test fails.
The suites were run in our own test environment. These results are not an official OGC certification.
| Test suite | Passed | Failed | Result |
|---|---|---|---|
| WFS 2.0 | 319 | 0 | Passed |
| OGC API Features | 252 | 0 | Passed |
| WMS 1.3.0 | 247 | 0 | Passed |
| WMTS 1.0 | 40 | 0 | Passed |
| OGC API Tiles | 14 | 0 | Passed |
Measured on the same machine, with the same data
The same PostGIS table of about 3 million points, the same tile list and the same load. The server we compared against is a widely used, Java-based open-source OGC map server, measured in three versions: an older stable release, the current stable release and a preview of its next major release.
Bars are scaled to MapSystem within each row; the number on the right is how many times faster. Raster tiles, 8 concurrent clients (cached serving: 32).
All results: three versions, latency and error rate
| Scenario | MapSystem | Older stable | Current stable | Next release (preview) |
|---|---|---|---|---|
| Serving cached tiles | 6,740 p95 8 ms | 2,920 p95 18 ms | 2,662 p95 22 ms | 3,224 p95 18 ms |
| Dense points, zoom 7, uncached | 66.8 p95 361 ms | 1.1 p95 17,069 ms · 12.5% errors | 3.1 p95 5,381 ms · 12.5% errors | 3.0 p95 5,564 ms · 12.5% errors |
| Stress: every z6–z8 tile, uncached | 96.0 p95 394 ms | 2.7 p95 28,556 ms · 9.5% errors | 7.3 p95 9,386 ms · 9.5% errors | 6.9 p95 10,045 ms · 9.5% errors |
| Mid zoom, zoom 10, uncached | 320 p95 104 ms | 54.6 p95 556 ms · 1.8% errors | 130 p95 213 ms · 1.8% errors | 130 p95 225 ms · 1.8% errors |
| Vector tiles (MVT), zoom 7, uncached * | 74.7 p95 209 ms | 2.5 p95 5,193 ms · 12.5% errors | 3.2 p95 3,981 ms | 3.6 p95 3,673 ms |
| Vector tiles (MVT), zoom 10, uncached * | 862 p95 33 ms | 122 p95 100 ms · 1.8% errors | 138 p95 76 ms | 124 p95 96 ms |
Values are requests served per second (higher is better), with the 95th-percentile latency and, where any, the error rate below. * For vector tiles, the reference server's MVT tile cache could only be enabled on the older stable release; the other two versions were measured by rendering the same area on demand (WMS GetMap).
Where the gap comes from. The large difference at low zoom comes from the thinned-out overview pyramid MapSystem builds in advance for dense point layers. The reference server has no vector equivalent and scans the data again for every request. That is a design difference and should be kept in mind when reading the results. From zoom 11 up, both servers read straight from the source.
Conditions. Measured in June 2026 with a pre-1.0 build of MapSystem, both servers running in Docker on the same workstation. Before every uncached scenario both servers were restarted with an empty cache. Load generated with k6. Results are from a single run; uncached figures vary from run to run, while direction and magnitude stay consistent.
Run it yourself. The benchmark kit (Docker Compose, k6 scripts, sample data) is in the tools/bench folder of the source repository. Configure the server you want to compare against and run the same test on your own hardware.
Run it without the command line
Connect a data source, publish a layer, design its style visually. Tile cache, cluster and user management live in the same interface.

The interface works on phones too.
Runs where your data lives
MapSystem connects to your database instead of copying the data. Start with one server; when load grows, install the same package on new servers and add them to the cluster.
Data sources
An SQL query can be published directly as a layer. Connection credentials are stored encrypted.
Cluster and performance
- Catalogue, sessions and tile cache shared through Redis
- Leader election and automatic placement of layers on nodes
- Meta-tile rendering, cache seeding and per-layer latency metrics
- Rendering on the GPU when available, otherwise on the CPU
Security and operations
- Admin and Editor roles, permissions per workspace
- Draft layers are never exposed by any service
- Every administrative action is written to an audit log
- Backup and restore from the interface, Prometheus metrics
Open code, GPL licence
MapSystem is open-source software released under the GNU GPL v3. You can read the source, build it on your own servers, change it and extend it. There is no licence fee.
Install with one command, scale out with one more
On Ubuntu 22.04 or 24.04 you can use the scripts below. They download the package, verify its SHA-256 checksum and install the .NET runtime and the service. All of them are also in the git repository.
Single server
curl -fsSL https://mapsystem.com.tr/indir/kur.sh | sudo bash
When it finishes, open the server address in a browser. The first login is admin / admin; change the password right away.
First node of a cluster
curl -fsSL https://mapsystem.com.tr/indir/kur.sh | sudo bash -s -- --kume
At the end it generates the cluster's join key and prints it. Other nodes join the cluster with this key; keep it like a password.
Adding a node
curl -fsSL https://mapsystem.com.tr/indir/node-ekle.sh | sudo bash -s -- \
--kume http://192.168.0.105 --anahtar <join-key>
--kume is the address of any node in the cluster and --anahtar is the join key generated by the first node. You do not choose the key; if you lost it, sudo mapsystem-deploy --anahtar on any cluster node prints it. The script installs the same version as the cluster, and the node shows up on the Cluster screen within seconds.
For servers without internet access, download the package and run sudo ./kur.sh --paket mapsystem-1.0.3-linux-x64.tar.gz. Full guide: Installation. The script options (--kume = cluster, --anahtar = key) are in Turkish.
See MapSystem with your own data
Talk to our team about installation, data migration and training. We can prepare a demo that runs on your organisation's data.