Skip to main content

Server

image

A server to manage and share aerial data assets (aerial images, orthophotos, elevation models, point clouds, textured models, panoramas, etc.).

You can run DroneDB Server to organize aerial data, share it with others or even build custom applications on top of its API.

You provide the files, DroneDB Server handles the rest: on-demand dynamic tiling, creating thumbnails, parsing geolocation data, streaming meshes, handling metadata, geoprojecting images and many other functions.

DroneDB Server organizes your data in a straightforward filesystem structure. There's no databases, unique identifiers or other complex layers. You can always access your data from the filesystem.

Backing up your DroneDB Server is as simple as copying the entire storage folder. You can even toss away DroneDB server and you will still be able to access your data in an organized manner.

Getting Started

Linux/macOS

  • First install docker. It's the only requirement.

Download ddb-server.sh and run from a command prompt:

chmod +x ddb-server.sh
./ddb-server.sh

Windows

Coming soon!

Set Storage Path

By default DroneDB Server will store all data in a storage/ folder. You can change that by passing a path:

./ddb-server.sh /path/to/storage

See ./ddb-server.sh --help for other options.

Run in SingleDB mode

DroneDB Server can operate in two modes:

  • Full: organizations and datasets will be saved in the storage path. This is the default.
  • Single: if storage path is a directory containing existing files, the directory will be indexed and published by the server. A single projects organization will exist and a single dataset will be available. This can be useful to quickly share folders with others, or to manage your aerial data locally.

For example, if you have a folder with results from ODM, you can run:

./ddb-server.sh /data/drone/sunset-park

DroneDB Server will automatically index/sync the specified folder and serve it on http://localhost:5000/r/projects/sunset-park

image

STAC Endpoints

You can access the server's public STAC Catalog from the /stac endpoint (e.g. http://localhost:5000/stac ). All public datasets will be included in the STAC Catalog.

Each dataset also exposes a STAC collection at /orgs/:org/ds/:ds/stac.

You can browse the Catalog using the STAC Browser.

Under the Hood

We mentioned earlier that DroneDB Server organizes your data in a straightforward filesystem structure. What happens when we launch the server on an existing folder, or create a new dataset?

A DroneDB dataset is simply a folder, plus a .ddb subfolder. The .ddb subfolder is created for you by DroneDB Server if it doesn't exist already. You can download the ddb command line client to manually manage DroneDB datasets. In fact, DroneDB Server is simply a RESTful API that exposes the functions of the command line client (plus a nice GUI).

Taking as an example our /data/drone/sunset-park folder, we can make changes or queries to our dataset directly from the command line:

cd sunset-park
ddb info . --format json
--> [{"depth":2,"mtime":1652890808,"path":"file:///data/drone/sunset-park/.","properties":{"entries":494,"public":false},"size":957197402,"type":7}]

If we want to remove a directory from the index, for example, we can run:

ddb rm opensfm
D opensfm
D opensfm/reconstruction.json
D opensfm/tracks.csv
D opensfm/profile.log
...

Note the folder has been removed from the index only (it still exists in the filesystem). This is on purpose.

The GUI in DroneDB Server knows to look for a "name" metadata field when assigning a friendly name to a dataset. Let's set one:

ddb meta set name "A cool name"
Data: A cool name
Id: ca1e0909-0cbe-4f31-b484-8ce331e7bfc4
Mtime: 1652892452

Refreshing the GUI now shows:

image

During the process of indexing the files, DroneDB Server has taken care of generating special build files whenever appropriate:

ls .ddb/build
3b670cd7053359fdd2b8765c6fbee5ff513d0becec4a237ef152df5c05c54bd0
7f7316050748ce97c2c2b85ce2bccce247e4e6b9f86d559e75264d1a63421137
b13d44e180f010cc33154afbe837f0bed3985be76555efd0fc149a091709c9a0
...

Each folder is named after the SHA256 of the file that was built.

For example, the point cloud odm_georeferenced_model.laz file has a SHA256 of b13d44e180f010cc33154afbe837f0bed3985be76555efd0fc149a091709c9a0 and an EPT tileset has automatically been generated:

ls .ddb/build/b13d44e180f010cc33154afbe837f0bed3985be76555efd0fc149a091709c9a0
ept

This allows efficient streaming of point clouds over the GUI (and other programs such as QGIS):

image

DroneDB Server can build Cloud Optimized GeoTIFFs (for orthophotos, elevation models), EPT (for point clouds), Nexus (for streaming meshes). It does the heavy-lifting, so you don't have to.

See other commands.

What if you want to remove any trace of DroneDB from your data? Simply delete all .ddb folders. That's it! DroneDB never mutates the input data and keeps the same filesystem structure you choose.

Updating

To update the software run:

./ddb-server.sh update

Getting Help

Commercial support is available. Get in touch.