What is a Server?
In this context a server is usually an unseen computer on a network with no keyboard or screen and which, upon a valid request, either provides information, changes, adds or deletes information, further processes information or passes requests to another server. Usually there is nothing more than information involved.
What is a Map Server?
In the context of everyday use a Map Server can be defined as a server that will reply with geographically relevant information presentable in the form of maps, according to specific external requests over a network, such as from a client web browser on a mobile phone.
Can a Map Server work by itself?
At a literal level, no. It needs lots of other servers, such as a web server, a database server and caching services. It also needs to be on a network to be of any practical use. We use the term Map Server to also mean a minimum set of additional services to make the Map Server functional to a client web browser.
What is a Portable Map Server?
We define this as a small, light, low powered device without a screen or keyboard that can be esaily carried without damage, that runs a map server and can adequately respond to an audience that might be expected to use such a server, such as a group of 10 people in the field within range of server by WiFi. We also expect the portable server to be functional when out of range of Internet connectivity.
How can mobile phones continue to use a portable server when out of Internet range?
By having the portable map server connected to the same WiFi Hotspot Network as other devices, such as mobile phone devices. Just because the Hotspot is out of Internet range does not mean the devices connected to the Hotpsot are out of range.
Our post on Wide Mobile Coverage SIMs in Australia has more information on how this works
Don’t phone apps do the same thing?
In appearance and for some purposes yes. In functional and fundamental terms no. If you know exactly where you are going, are certain you won’t need to change plans and all your information is sufficient, know which phone you are going to use, don’t care it might get damaged or have its screen scratched, are happy you won’t need to swap it for another or borrow another as battery runs out, don’t mind figuring out if you have got the right set of downloaded data, are happy every one else is in the same position as you and won’t need to update data in the field (such as no one has data or will generate data that needs to be shared) then you are lucky and in a unique position. You will not benefit from using a portable map server, whose responsibility can be that of one single person (instead of everyone being responsible for downloading to their own phone before going out of range), which can be plugged into a good car battery, forgotten about or not know that it even exists and hardly drain the car battery.
Will build scripts be made available?
Probably but not anytime soon.
While the finished product is robust the build process itself is very fragile, has multiple parts with multiple complex dependencies and requires software to be built from source.
To maintain efficiency and keep resource use low, a good example is the web server nginx. Nginx is built from source. This allows a built module to tell nginx there is no cached map tile for a particular request so nginx can then instead pass the request, through fastCGI, to the real map server. This way nginx can continue to do what it does best without passing or queuing every single request for a map to a waiting fastCGI process or worse still, spawn a CGI process for every request.
We have experienced the entire edifice crashing down with a single apparently trival name change in a small glue or shim piece of software. This was difficult to track down.
Learning to build the map server took a lot of trial and error. We are still learning what all the dependencies do and as we learn more we are able to make the build process less fragile and so more suitable for scripting.
Releasing a fragile build script now would result in a support nightmare for us as we would be expected to support it.
Also the preferred operating system, Debian, has just has a major release (Buster), as well as Rasbian (used in field trials). We would like to see things settle.
What are the goals of the Map Server Project
(Achieved) To build a reliable map server and associated software suitable for a portable server as defined above.
(Achieved) Allow map server data to be displayed as a basemap, allow basemap to be changed, allow additional vector data to be displayed and allow extent of a view to be changed
(Achieved) Allow GPS navigation with a track to be displayed when web page is in view
(Not Started) To convert the map server build process to a non fragile build script
(Not Started) Use a PWA (progressive web app) so there is still functionality when no portable map server is present and so an icon can be placed on home screen
- (Work In Progress) To allow a camera to be used within web page from which
- Colour effects can be added into image for live highlighting of camera imagery
- A photograph can be taken and saved as data
- GPS coordinates can be added as exif data
- (Work In Progress) Allow multiple types of data to be stored, downloaded, edited, generated, collected into a zip file and dispatched with additional comments. What this in effect means is that additional map data is controllable by the user, including what they do with the data. Data to include :
- Waypoints
- Routes
- Tracks directly from GPS or loaded and added to
- Arbitrary form data with form elements (what form requests) as a downloadable or settable resource
- Photographs and highlight settings for additional photographs
(Not Started) Allow live sharing of data as generated among several users, if requested by user.
(Not Started) Allow users to pass stored collected data back to the web server for storage and/or sharing with others
(Not Started) Use the new Geolocation Sensor interface when available to allow GPS data to be collected in background
(Not Started) Improve presentation and navigation of web site