Skip to content

Example Architecture which applies the CQRS Pattern to geospatial data (Open Street Maps)

License

Notifications You must be signed in to change notification settings

noxz-dev/osm-cqrs

Repository files navigation

OSM-CQRS

The project OSM-CQRS implements an exemplary architecture how the Command Query Segregation Pattern (CQRS) can be applied to spatial data. Within the scope of this project, three read projections were implemented which, together with a frontend, enable the implementation of a simple map application. The project uses changesets provided by Open Street Maps which are transferred to the respective projections using our event processor (changeset watcher).

Folder Structure

  • Contains the scientific paper of this project (PDF, tex-file, images and listings)
  • The changeset watcher is the core of the pipeline, it takes care that new changes which are published as changesets on planet.osm.org are sent to the read projektions after respective pre-processing steps.
  • includes its own filter format to adapt changesets to the needs of the applications

Module: Search

  • Search service to be able to find houses an amenties from the frontend

  • build using elastic search and nodejs

Module: Routing

  • We need to get from one point to another. This module uses OSRM with our own event processing to build a routing table and provide an api to use in the frontend

Module: Renderer

  • The rendering module manages a Vector Tile Server and additional event processing pipeline to keep its data up to date in order to render it in the frontend in the shortest possible time.

Module: Frontend

  • Map application built with Vuejs which integrates all services to provide a sample map application from all processed data
  • The Docs folder contains diagrams general notes and research on the individual technologies used.
  • This Folder contains filter configurations for the change-set watcher
  • We tested our implementation on a server for one week. This folder contains the analyses and results.

Full Pipeline Setup

docker-compose -f docker-compose.full.yml up --build

Start nats

docker-compose up

Start nats and changeset watcher

docker-compose -f docker-compose.production.yml up --build

License

MIT License © 2022 Finn Beer, Jannes Neemann , Darius Alter

About

Example Architecture which applies the CQRS Pattern to geospatial data (Open Street Maps)

Resources

License

Stars

Watchers

Forks