Skip to content

CamMap/CamMapCesium

Repository files navigation

Thales Mapping Project




pipeline status   coverage report   coverage report

An application to show and interact with the view frustum of geolocated images or videos on a 3D map.

About

CamMap is an an application that links real life cameras and locators with a 3D map representation. The software can be used for locating targets, tracking points of interest and any other activity related to utilising real life cameras and a software calculation.

Features

  • Positioning real life cameras on a 3D map viewport
  • Updating location and camera parameters in real-time
  • Tracking objects and calculating their exact placement
  • Locating targets positioned in software
  • Quick deployment with flexible configuration features
  • Direct Sophie lite camera integration (when built with additions) [WIP]

Usage

  • Import real life cameras through the add section of the sidepanel, either with cutom parameters or a config object
  • Forward custom video feed, or use a placeholder image, to select the desired targets for calculating and displying their position on map. Simply click on the image canvas, to draw a line of sight
  • Use settings to connect to a terrain server for a 3D terrain data
  • Add a custom tracking point with latitude and longtitude via a sidepanel, to be shown and positioned on canvas, whenever cameras will have it in sight

Screenshot

Technologies

- Typescript
- Cesium
- Karma (for testing)

(All open source)

Running Instructions

Prerequisites

To run, make sure you have node(npm) > 6.0.0 (https://nodejs.org/en/), the most recent(LTS) one will work well.
First install all dependencies by running the following command in project root directory:

npm install

Running just the server

To run the project with support for debugging and hot-reloading use:

npm run start

That starts a server on localhost:8080.

Running with additions

You can also start the main server with supportive services by using provided docker configuration. This will start the fake geodata provider and a terrain server.

npm run full

To stop use Ctrl+C and then

npm run fullstop

Building locally

This produces a build which must be served by a server (which serves index.html).

npm run build

This is the base application which can recieve geolocation connections and use 3D terrain servers. For a 3D terrain server, see Cesium Terrain Server. For the 3D tilesets to serve, see Terrain Tilesets. For geolocation streaming data, see Test Geodata Providers.

Using config file

When the server (with or without additions) is running, you can use the config files to simplify loading your camera/location/data presets. There are two ways of doing so, uploading the .json config file in the app or using the so-called itty-bitty shorthand.

Uploading .json config

To upload json config, when the app is running select the setting tab and then use the Load Configuration file option.

Itty-Bitty shorthand

You can quickly preload your config when starting an app, by putting base64 encoded version of it into the GET request url. To do that, base64 encode the contents of the json config file and then paste it into the query parameters of the app url.
Example: http://localhost:8080/?config=BASE64_ENCODED_STRING
Example config files are provided in /example/config folder

Deploying

To use production build of the server without having to work with source code, you can use the provided example docker-compose files, to craft your own deployment.

Examples are provided in /example/deployment folder.

In short, to use the docker-compose file you must have have docker installed and running on your system. After that run the following command from the folder containing your config file.

docker-compose -f COMPOSE_FILE_NAME up

COMPOSE_FILE_NAME is the .yml docker-compose file
To stop and remove the conatiner use

docker-compose -f COMPOSE_FILE_NAME down

The containers from this project are published at Dockerhub