It’s so exciting and time consuming to launch new software that sometimes one forgets to actually tell the story behind it.
Well, today I write the first official post about DroneDB.
DroneDB wants to improve the state of the art of aerial data management and sharing. Its design and ideas come primarily from my experience as a maintainer on the OpenDroneMap project and from various input we’ve been receiving from early adopters.
First of all, we’re not the first ones attempting to do this. Several projects have tackled the challenge of creating a platform for managing aerial data assets. But none of them fit our wishlist:
- Free and open source (not just open data)
- Vendor-agnostic (e.g. I can run the software on a Raspberry Pi, as well as on a multi-computer cloud cluster)
- Offline-first (I should be able to run the software entirely offline, sync to a network remote later)
- Structure-free (I should be able to organize data in a manner that makes sense to me or my organization)
DroneDB achieves all of these points.
At the core the design, we introduce the concept of a DroneDB database (or dataset). This is just a normal folder containing any files and folders you desire, plus, an index. The index can be initialized using the ddb application via ddb init. Any file and folder can be added/removed to the index via ddb add and ddb rm commands. We have several commands that allow you to manage the index.
When aerial data files such as images, orthophotos, panoramas, textured models or point clouds are added an index, DroneDB extracts useful information from them (geolocation, flight paths, timestamps, footprints, etc.). It’s also capable of generating intermediate files when necessary. For example, when a point cloud is added to the index, a ddb build command generates a corresponding EPT dataset for the point cloud, so that it can be efficiently streamed over computer networks. We do the same for streaming meshes (textured OBJs).
Metadata can be added to any file or directory within the index. A dataset, all of its files, folders and associated metadata can be cloned from a DroneDB Server and modified offline, then synced back with the server using a ddb push command.
There’s no layers or obscure data structures. The index is saved within a .ddb folder at the root of a DroneDB dataset. Removing DroneDB is as simple as removing the .ddb folder at the root of your datasets.
Every resource in DroneDB is identified by a unique URI with the format:
But enough with the chatter; just go and try it. Register for a free account. Try to self-host a server. Or get in touch and let us know what you think could be useful to you!
– Piero Toffanin