geo

module
v0.0.0-...-ae1d368 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 22, 2020 License: Apache-2.0

README

geo - a server for processing GPS tracking data

geo is a multipurpose tracking server with capabilities such as pub/sub, geofencing and storage of tracking data.

Running geo

To run a local version of Geo you can run the main.go under cmd/geo, or build and use geo as a binary.

Default configuration

Running geo without parameters it will run the geo server with sane defaults. It will populate an in-memory db with sqlite and expose the API on port 8877 along with the NATS streaming-server on 4222.

Running with flags

The binary geo also takes several flags which will configure the behaviour of the geo-server.

Components

Tria

Tria is the library which is responsible for handling GeoJSON data in which it triangulates and returns shapedata which in turn has several geo-functions for further use.

Server

The server exposes a set of REST APIs for interacting and manipulating collections, trackers, shapecollections and subscriptions. It uses Tria to provide several functionalities such as tracker subscriptions and geofencing. The server exposes the API on port 8877.

NATS

The server embeds a NATS streaming-server which is a eventbus available on port 4222.

Benchmarking

Go benchmarks

Several performance critical files contain test benchmarks to ensure that the functions are performant enough.

Directories

Path Synopsis
cmd
pkg
store
Package store defines the storage interface for the Geo server.
Package store defines the storage interface for the Geo server.
store/sqlitestore
Package sqlitestore is the SQLite implementation of the Store type.
Package sqlitestore is the SQLite implementation of the Store type.
sub

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL