NodeODM is a standard API specification for processing aerial images with engines such as ODM
 
 
 
 
 
 
Go to file
Piero Toffanin 77de93476e
Update ISSUE_TEMPLATE.md
2019-07-25 10:19:21 -04:00
.github Update FUNDING.yml 2019-06-09 20:11:31 -04:00
data Modified gitignore 2016-07-05 13:07:47 -05:00
docs Documentation fix 2019-07-03 11:54:23 -04:00
helpers Exposed rerun parameter 2018-01-18 10:54:09 -05:00
libs clone, keep process env vars 2019-07-15 15:02:59 -04:00
public Merge branch 'master' of https://github.com/OpenDroneMap/NodeODM 2019-06-05 11:46:04 -04:00
scripts Replace PotreeConverter with entwine 2019-06-08 14:13:17 -04:00
services clone, keep process env vars 2019-07-15 15:02:59 -04:00
tests Added new options for tests, updated version 2019-06-25 14:18:01 -04:00
tmp Modified gitignore 2016-07-05 13:07:47 -05:00
.dockerignore ZIP Uploads 2017-04-07 22:05:20 -06:00
.gitignore Added SimpleTokenAuth, NoTokenRequiredAuth for token authentication, API definition change 2018-06-25 11:40:57 -04:00
.jshintrc Support to load configuration from .json file 2016-08-02 11:07:54 -05:00
.travis.yml Removed unused language declaration in travis.yml 2017-03-30 13:55:30 -04:00
Dockerfile Replace PotreeConverter with entwine 2019-06-08 14:13:17 -04:00
Gruntfile.js Test mode, bug fixing, automatic linting 2016-09-25 18:35:44 -04:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md 2019-07-25 10:19:21 -04:00
LICENSE Initial commit 2016-07-02 14:20:17 -05:00
README.md Replace PotreeConverter with entwine 2019-06-08 14:13:17 -04:00
config-default.json Fixed default config 2018-12-05 20:40:08 -05:00
config.js --test_seconds option 2019-05-28 09:26:17 -04:00
index.js Documentation fix 2019-07-03 11:54:23 -04:00
package.json Added new options for tests, updated version 2019-06-25 14:18:01 -04:00
processes.json Support to load configuration from .json file 2016-08-02 11:07:54 -05:00

README.md

NodeODM

Build Status

NodeODM is a Node.js App and REST API to access aerial image processing engines such as ODM. It exposes an API which is used by clients such as WebODM, CloudODM and PyODM.

Alt text

Getting Started

We recommend that you setup NodeODM using Docker.

  • From the Docker Quickstart Terminal (Windows / OSX) or from the command line (Linux) type:
docker run -p 3000:3000 opendronemap/nodeodm
  • If you're on Windows/OSX, find the IP of your Docker machine by running this command from your Docker Quickstart Terminal:
docker-machine ip

Linux users can connect to 127.0.0.1.

  • Open a Web Browser to http://<yourDockerMachineIp>:3000
  • Load some images
  • Press "Start Task"
  • Go for a walk :)

If the computer running NodeODM is using an old or 32bit CPU, you need to compile OpenDroneMap from sources and setup NodeODM natively. You cannot use docker. Docker images work with CPUs with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support or higher. Seeing a Illegal instruction error while processing images is an indication that your CPU is too old.

API Docs

See the API documentation page.

Run Tasks from the Command Line

You can use CloudODM to run tasks with NodeODM from the command line.

Using an External Hard Drive

If you want to store results on a separate drive, map the /var/www/data folder to the location of your drive:

docker run -p 3000:3000 -v /mnt/external_hd:/var/www/data opendronemap/nodeodm

This can be also used to access the computation results directly from the file system.

Run it Natively

If you are already running ODM on Ubuntu natively you can follow these steps:

  1. Install Entwine: https://entwine.io/quickstart.html#installation

  2. Install node.js and npm dependencies:

sudo curl --silent --location https://deb.nodesource.com/setup_6.x | sudo bash -
sudo apt-get install -y nodejs python-gdal
git clone https://github.com/OpenDroneMap/NodeODM
cd NodeODM
npm install
  1. Start NodeODM
node index.js

You may need to specify your ODM project path to start the server:

node index.js --odm_path /home/username/OpenDroneMap

If you want to start node ODM on a different port you can do the following:

node index.js --port 8000 --odm_path /home/username/OpenDroneMap

For other command line options you can run:

node index.js --help

You can also specify configuration values via a JSON file:

node index.js --config config.default.json

Command line arguments always take precedence over the configuration file.

Run it using PM2

The app can also be run as a background process using the pm2 process manager, which can also assist you with system startup scripts and process monitoring.

To install pm2, run (using sudo if required):

npm install pm2 -g

The app can then be started using

pm2 start processes.json

To have pm2 started on OS startup run

pm2 save
pm2 startup

and then run the command as per the instructions that prints out. If that command errors then you may have to specify the system (note that systemd should be used on CentOS 7). Note that if the process is not running as root (recommended) you will need to change /etc/init.d/pm2-init.sh to set export PM2_HOME="/path/to/user/home/.pm2", as per these instructions

You can monitor the process using pm2 status.

Test Mode

If you want to make a contribution, but don't want to setup OpenDroneMap, or perhaps you are working on a Windows machine, or if you want to run automated tests, you can turn test mode on:

node index.js --test

While in test mode all calls to OpenDroneMap's code will be simulated (see the /tests directory for the mock data that is returned).

Test Images

You can find some test drone images here.

What if I need more functionality?

NodeODM is meant to be a lightweight API. If you are looking for a more comprehensive solution to drone mapping, check out WebODM, which uses NodeODM for processing.

Contributing

Make a pull request for small contributions. For big contributions, please open a discussion first. Please use ES6 syntax while writing new Javascript code so that we can keep the code base uniform.

Roadmap

See the list of wanted features.