TileLess a proof of concept project

What is this?

TileLess is an attempt to investigate a path for a responsive offline map with capacity for a lot of data.
It aims at:
- being fast (enough)
- structured data storage for future processing and analyzing
- possible to keep detailed country scale maps on a device

At this stage it does not in any way aim at being easy to set up

What works now?

What can be renderered

Polygons can be rendered colored with rgba value. The polygon can also have an outline with any linewidth. Linestrings can be rendered with any linewidth. The line can also have "outline" in any width.

Identify

Yes, now simple identify functionality is implemented. Right now only for polygons, but it is quite a small step to att it for lines and points too. The table "info" in the project db defines what shall be shown with identify. If the layer has no entry in identify-table the polygon will just be marked without any information. You can test identify in the Bboston19.tileless map below. The layer Foss4G have som info that should show. Then press the "Layers"-button and select Foss3G layer in the right row of boxes. It works as radio-buttoons but with ugly graphics. Then close layers menu and press info button. It shall then be fully green and you can click any Foss4G object in the map to get the info.

Transformation

Data can be transformed between different UTM-zones. But there is no support for handling data at wrong side on equator yet. I am not even sure that the client works south of equator as it is now. But it should be fairly easy to solve if it doesn't work out of the box. Any feedback is welcome.

GPS?

The client supports rendering a gps-point as a green circle. The Android demo renders gps-point from android location service. It doesn't support tracking, but that is a small step to implement. Both runtime tracking and storing track in db is easy to implement.

Syncronizing

No, there is still no sync-functionality. But everything needed is there. If data is stored with modification date and unique id, syncronisation is as easy as a simple sql query. But there is of course a lot of decissions to make about transport format and how to handle deleted rows and so on.

How large maps can be handled?

Data is stored and indexd in Sqlite. Very large maps can be handled.
The geometries are stored as twkb. Polygons holds triangulation. All geometries also have spatial index, which uses space.
But it is quite compressed. If 1 m precision is enough most maps are stored with a little bit over 2 bytes per coordinate (1 for x and 1 for y).
If 1 m precision is used and the points in the geometry is closer than 63 meters from each other in x and y, 1 byte per x and y is enough. For polygons approx 3 more bytes are used for triangle information. So 5-8 bytes in average per coordiante for polygons.
And then the spatial index needs some bytes per geometry to store bounding boxes and tree information.
Example: Whole Sweden as 1:50000 map (and 1:1000000 as overview) showing type of area, roads, rivers, altitude lines and texts needs approx 2 GB.
The same for Norway needs approx 2.4 GB (Maybe more detailed than Swedish official map).

Below are some demo-maps

I will write som blog posts describing what is happening behind the scenes.

As the title suggests, this is just a proof of concept. But it shows possibilities.

Links

sources: https://github.com/TilelessMap/TilelessMap
I haven't investigated how to share the android project but that will come. It is more or less just the demo project of sdl (http://libsdl.org)

Apk for android
Remember that testing the apk is on your own risk. I have tested it on a Sony Z5 and Cat b15:

Download apk for Android

Map data

Some more descriptons if you want to test the Android version:
Go to this page from your Android phone.

Download the tileless apk file above and install it.

Download one or many maps from Map data. It will land in your Download folder.
Start the app and choose a file to open.

The Licence is GPL v2, sources is found on github

Some news

2017-08-09 All maps collected in Map data

2017-08-05 Identify now works more or less.

2017-07-07 Added first version of layer selector, so layers can be switched on and of. Also added first part of identify. It identifies polygons and highlights them, but no presentation of attribute data yet. Those changes makes apk and databases incompatible with older versions

2017-06-12 Support for wide outline on polygons and some new maps old maps and old clients might not be compatible with new maps and client. Download both client and mapdata again and it should work

2017-06-03 Added support for gps and reprojection between UTM-zones.

2017-05-28 Added support for both map units and pixel units for line width.

2017-05-27 Added support for outline on wide linestrings. Z-ordering of styles in the same layer is also in place

2017-05-26 Changed name of project databases rfom sqlite to tileless. That is to make them easier to identify on Android. Only project databases is renamed. So database with map data without project information are still sqlite.

any feedback velcome at "nicklas dot aven at jordogskog dot no"

Last update: 2017-06-12

Screen shots