MapSystem
Open-source geospatial server

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.

Open source, GNU GPL v3 872 OGC conformance tests, 0 failures English and Turkish interface Single-package install on Linux
Shaded relief map of Türkiye with lakes and reservoirs in blue. MapSystem WMS output.
27° E 30° E 33° E 36° E 39° E 42° E 45° E 36° N 39° N 42° N 39° N
Every map on this page is MapSystem's own WMS output. GetMap · altlik:acik, turkiye:rolyef, turkiye:goller · EPSG:3857
Sample workspace: Türkiye

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.

Türkiye turkiye

Open standards

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.0

Server-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.0

Cached 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.0

Attribute 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.1

Raster 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 · Records

The 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 Processes

Buffer, intersection, union, difference, convex hull, area, length, reprojection and more: 15 built-in geoprocesses.

/ogc/processes/buffer/execution

CSW and INSPIRE

CSW 2.0.2

Layer metadata catalogue, ISO 19139 output and INSPIRE extended capabilities. Default styles for all 34 INSPIRE themes.

/turkiye/csw?REQUEST=GetRecords

PMTiles

export

Write a vector layer to a single-file tile archive and serve it from a static web server or offline devices.

POST /api/tilecache/pmtiles
OGC conformance tests

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 suitePassedFailedResult
WFS 2.03190Passed
OGC API Features2520Passed
WMS 1.3.02470Passed
WMTS 1.0400Passed
OGC API Tiles140Passed
Performance

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.

Tile requests served per second, against the current stable release MapSystem Reference server
Dense points, zoom 7, uncached
66.8
3.1
22×
Stress: every z6–z8 tile, uncached
96.0
7.3
13×
Mid zoom, zoom 10, uncached
320
130
2.5×
Serving cached tiles
6,740
2,662
2.5×

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
ScenarioMapSystemOlder stableCurrent stableNext release (preview)
Serving cached tiles6,740
p95 8 ms
2,920
p95 18 ms
2,662
p95 22 ms
3,224
p95 18 ms
Dense points, zoom 7, uncached66.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, uncached96.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, uncached320
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.

Administration

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.

MapSystem map screen on a phone, provinces of Türkiye coloured by region.

The interface works on phones too.

On premises

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

PostGISOracle SpatialSQL Server GeoPackageShapefileGeoTIFF / COG COG over HTTP and S3Remote WFS / WMS

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 source

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.

Installation

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.

Contact E-Sistem