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.
- 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]
- 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
(All open source)
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
To run the project with support for debugging and hot-reloading use:
npm run start
That starts a server on localhost:8080.
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
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.
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
.
To upload json config, when the app is running select the setting tab and then use the Load Configuration file
option.
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
- 1cam_fixed: just a static camera
- 1cam_terrain: a static camera with a default 3d terrain server (Works with example docker config)
- 2cam_1geodata: utilises both 3d terrain server and Test Geodata Providers (Works with debug docker config)
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