POSM Software Github
POSM is a suite of many different open source software components. This guide is intended to help familiarize you with each major component.
POSM Build Github
POSM Build is a collection of
bash scripts and configuration files that install all of the software found on the POSM. There are quite a few components to install, and the configuration is complex enough that we built a tool that does all of this work work for us in an automated way.
POSM Build can be run manually, but it also can be setup to run as a debian preseed on a USB installer. Manual installs are great for development and installing in the non-standard hardware (like AWS). The automated debian preseed allows you to boot to a USB installer and let the install roll without user input.
Further details that explain why we choose custom shell scripts over custom debian packages and other provisioning tools are availible in the POSM Docs.
Check out the POSM Build repo for step-by-step instructions for both the manual and automated POSM builds.
POSM Admin Github
POSM Admin is the administrator's console to the POSM. It is a NodeJS project that wraps and automates a collection of shell and NodeJS scripts that do the heavy lifting for provisining OpenStreetMap data to your POSM and OpenMapKit.
It allows you to do three things:
- Provision OSM data and MBTiles to the POSM for your Area of Interest.
- Depoly OSM XML and MBTiles to OpenMapKit for the area of a Field Papers atlas.
- Update the Render DB with the latest data in the API DB.
We have a customized HOT Export tool at http://export.posm.io that we use to package MBTiles basemaps and OpenStreetMap data for the POSM Admin tool.
For instructions on using POSM Admin, take a look at the Complete Deployment Walkthrough.
The OpenStreetMap website and API is the heart of the POSM project. We are using the same software stack as openstreetmap.org, except for a few small changes. We refer to the PostgreSQL database used by the Rails API and CGImap as the API DB, and this database adheres to the schema of the OSM website.
OpenStreetMap Website Github
The OpenStreetMap Website is the website you interact with when you go to openstreetmap.org. It is a Ruby on Rails application, and in addition to generating the front-end web site, it also provides the majority of the OSM Editing API v0.6.
POSM has made a few small changes:
- Turned off authentication, create a single user called POSM.
- Make the POSM basemap the default.
- Automated setup of default home position.
CGImap replaces a portion of the Ruby On Rails API. CGImap is a high performance FCGI API written in C++. We integrate it's endpoints via
fastcgi_pass directives in NGINX. The Rails app has some memory leak problems, and is not performant enough for the endpoints that are hit hard in a production environment. In particular, it serves the GET requests for the following endpoints:
- OSM XML for a bounding box
- nodes, ways, relations
- XML for specific OSM elements, including a comma delineated list of element IDs.
Tessera is a NodeJS tile server created by Seth Fitzsimmons. Tessera is easy to use, robust, and a commonly used tool at Stamen. We chose this tool instead of the traditional OpenStreetMap mod_tile. Tessera uses tilelive-mapnik to drive Mapnik and output the requested
.png raster tiles.
Tessera uses a second PostGIS database that is populated by
osm2pgsql. We refer to this database as the Render DB. This database is optimized for the Mapnik renderer, and it is periodically updated from the API DB.
POSM Carto Github
POSM Carto is the repo that tracks the Carto CSS style used to render the POSM basemap. It includes a
project.json that makes it easy to generate the Mapnik XML style needed to render the tiles. This cartography was designed by the American Red Cross GIS team and Alan McConchie at Stamen Design.
Field Papers Github
Field Papers is a web application that lets you print sections of an OpenStreetMap basemap on a piece of paper and then hand draw notes and features. When finished, you then take a photo of your notes and upload them to Field Papers. With some clever usage of computer vision (OpenCV), your photo is ortho-rectified as an overlay in JOSM or the iD Editor. This workflow enables you to then trace over your notes in an OSM editor.
The Field Papers on POSM is the same that you will find on fieldpapers.org, except that it is set up to use the POSM basemap as the default and be centered to the area of interest. Field Papers is a Ruby on Rails app with some Python and C++ components. It runs fully offline on the POSM.
The README on the Field Papers main repo gives more technical details about the underlying architecture of the project.
If you are unfamiliar with Field Papers, give it a try at: