Geographical objects have not just coordinates, but they usually carry a set of user characteristics. For example, any lighthouse’s info includes light stream characteristics and the shape of its base. If we consider marinas, it is necessary for them to give contact information and the types of vessels it can accept. Users can add or change this information, which raises an issue of asynchronous nature of such additions.
More than that, many users add or correct information while offline — changes reach the database with significant delay, only after connecting and data synchronizing. It leads to a conflict between editing and searching by an attribute value.
We decided to use PostgreSQL v9.4 as the basis. Its document-oriented capabilities are similar to specialized NoSQL solutions. Indexes will be considered while associating arbitrary object structures with GIS data due to the PostGIS extension. The platform will provide versioning and conflict resolution capabilities and will use a pessimistic strategy and manual data merging to cope with conflicting attribute changes.
BoatPilot platform is designed to automatically integrate incoming edits from trusted sources. It will include an interface for manual analysis and comparison of edits to determine the degree of trust based on the history of the source’s edits and social connections. The platform will be realized with Python-based REST interfaces and AngularJS-based WEB UI.