Webodm Installer Free


WebODM is a free, user-friendly, extendable application and API for drone image processing. It generates georeferenced maps, point clouds and textured 3D models from aerial images.


WebODM can be linked to one or more processing nodes running node-OpenDroneMap. The default configuration already includes a 'node-odm-1' processing node which runs on the same machine as WebODM, just to help you get started. As you become more familiar with WebODM, you might want to install processing nodes on separate machines. WebODM, being free and open-source, enables something powerful which is not possible in other drone mapping softwares like Pix4D. It is the ability to process any number of tasks simultaneously. Let us explore how we can utilize this powerful aspect of WebODM. The ODM software is the brain of WebODM. ODM provides the processing pipeline. Thanks @Lot; I did try looking at WebODM but I even found this to be quite a convoluted process to get running.I've just volunteered as a tester for a new Windows one-click install for WebODM, so I'll take a look this week and feed back on this thread. May 11, 2020 They do offer an installer for the low price of $57, but they also make all the source code available for free. I’ve run this through Windows Subsystem for linux 2 and Desktop docker. I’ve run this through Windows Subsystem for linux 2 and Desktop docker.

Developers can leverage this API to extend the functionality of WebODM or integrate it with existing software like QGIS or AutoCAD.

How To Process Images

In this tutorial we’ll explore how to process an orthophoto from a set of aerial images using Python. To do that we’ll need to:

  • Authenticate
  • Create a Project. Projects are a way to group together related Task items
  • Upload some images to create a Task
  • Check for Task progress. Photogrammetry can take a long time, so results could take a few minutes to a few hours to be processed.
  • Download the resulting orthophoto.
Most of the examples in this document use requests. Make sure it’s installed before running any code:
The source code for this example is available on GitHub.

First, we authenticate with WebODM. A token is returned when authentication is successful.

Then we need to create a Project. We pass our token via the Authorization header. If we forget to pass this header, the system will not authenticate us and will refuse to process the request. We also assign a name to our project.

We can then create a Task. The only required parameter is a list of multiple, multipart-encoded images. Processing will start automaticallyas soon as a Processing Node is available. It is possible to specify additional options by passing an options value, which is a JSON-encoded list of name/value pairs. Several other options are available. See the Task - Processing Options reference for more information.

We periodically check for the Task status using a loop.

Our orthophoto is ready to be downloaded. A variety of other assets, including a dense 3D point cloud and a textured model are also available.

Congratulations! You just processed some images.


Authentication Basics

Get authentication token:

Use authentication token:

Use authentication token via querystring (less secure):

POST /api/token-auth/


To access the API, you need to provide a valid username and password. You can create users from WebODM’s Administration page.

If authentication is successful, you will be issued a token. All API calls should include the following header:

Authorization: JWT your_token

The token expires after a set amount of time. See Token Expiration for more information.

Since applications sometimes do not allow headers to be modified, you can also authenticate by appending the jwt querystring parameter to a protected URL. This is less secure, so pass the token via header if possible.

Token Expiration

The token expires after a predefined amount of time. The expiration time is dependent on WebODM’s settings. You will need to request another token when a token expires.

You know that a token has expired if any API call returns a 403 status code with the JSON body {'detail': 'Signature has expired.'}.


Example project:

A Project is a collection of Task items.

idintUnique identifier
tasksint[]List of task IDs associated with this project
created_atstringCreation date and time
namestringName of the project
descriptionstringA more in-depth description
permissionsstring[]List of actions that the current user is allowed to perform. See Permissions Values

Create a project

POST /api/projects/

name*“”Name of the project
description“”A more in-depth description

Update a project

PATCH /api/projects/{id}/

Parameters are the same as above.

Delete a project

DELETE /api/projects/{id}/

Upon deletion, all Task items associated with the Project are deleted also. The operation is irreversible.

Get single project

GET /api/projects/{id}/

Get list of projects

Project list:

GET /api/projects/

page1Page number
id“”Filter by id
name“”Filter by name
description“”Filter by description
created_at“”Filter by created_at
ordering“”Ordering field to sort results by

Example: Filtering by name

GET /api/projects/?name=hello

Retrieves projects that have a name of “hello”.

Example: Sorting

GET /api/projects/?ordering=-id

Sort by project ID, descending order.

Only projects visible to the current user are returned.


Example task:

A Task is the basic processing unit of WebODM. To compute an orthophoto, point cloud and textured model from a set of images, you need to create a Task.

idintUnique identifier
projectintProject ID the task belongs to
processing_nodeintThe ID of the Processing Node this task has been assigned to, or null if no Processing Node has been assigned.
processing_node_namestringThe name of the processing node below, or null if no Processing Node has been assigned.
images_countintNumber of images
can_rerun_fromstring[]List of possible “rerun-from” options that this task could restart from, given its currently assigned processing node. If this is an empty list, the task can only be restarted from the start of the pipeline.
available_assetsstring[]List of assets available for download
uuidstringUnique identifier assigned by a Processing Node once processing has started.
namestringUser defined name for the task
processing_timeintMilliseconds that have elapsed since the start of processing, or -1 if no information is available. Useful for displaying a time status report to the user.
auto_processing_nodebooleanWhether WebODM should automatically assign the next available Processing Node to process this Task. A user can set this to false to manually choose a Processing Node.
statusintOne of Status Codes, or null if no status is available.
last_errorstringThe last error message reported by a Processing Node in case of processing failure.
optionsJSON[]JSON-encoded list of name/value pairs, where each pair represents a command line option to be passed to a Processing Node.
created_atstringCreation date and time.
pending_actionintOne of Pending Actions, or null if no pending action is set.
upload_progressfloatValue between 0 and 1 indicating the upload progress of this task’s files to the processing node.
resize_progressfloatValue between 0 and 1 indicating the resize progress of this task’s images.
running_progressfloatValue between 0 and 1 indicating the running progress (estimated) of this task.
Tasks inherit the permission settings from the Project they belong to.

Create a task

POST /api/projects/{project_id}/tasks/

images[]*“”List of multipart-encoded images (2 minimum)
processing_nodenullThe ID of the Processing Node this Task should be assigned to. If not specified, and auto_processing_node is true, a Processing Node will be automatically assigned.
name“”User defined name for the task
auto_processing_nodetrueWhether WebODM should automatically assign the next available Processing Node to process this Task.
options“[]”JSON-encoded list of name/value pairs, where each pair represents a command line option to be passed to a Processing Node.

You assign a Task to a Project by passing the proper project_id path in the URL.

Update a task

PATCH /api/projects/{project_id}/tasks/{task_id}/

Parameters are the same as above.


Import Task

POST /api/projects/{project_id}/tasks/import

Import task that have been processed by another WebODM instance (or via webodm.net or NodeODM)

nameImported TaskUser defined name for the task.
filename*/“”File with assets. Must be a zip.
url/*“”URL to zipped zipped assets.

You have to provide either filename or url parameter (but not both) in order to import created assets.

Remember to set proper Content-type for the request depending on how the assets are uploaded:


Get list of tasks

Task list:

GET /api/projects/{project_id}/tasks/

Retrieves all Task items associated with project_id.

Download assets

GET /api/projects/{project_id}/tasks/{task_id}/download/{asset}

After a task has been successfully processed, the user can download several assets from this URL. Not all assets are always available. For example if GPS information is missing from the input images, the orthophoto.tif asset will be missing. You can check the available_assets property of a Task to see which assets are available for download.

all.zipArchive (.zip) containing all assets, including an orthophoto, TMS tiles, a textured 3D model and point cloud in various formats.
orthophoto.tifGeoTIFF orthophoto.
orthophoto.pngPNG orthophoto.
orthophoto.mbtilesOrthophoto MBTiles archive.
textured_model.zipArchive containing the textured 3D model
georeferenced_model.lasPoint cloud in .LAS format.
georeferenced_model.plyPoint cloud in .PLY format.
georeferenced_model.csvPoint cloud in .CSV format.

Download assets (raw path)

GET /api/projects/{project_id}/tasks/{task_id}/assets/{path}

After a task has been successfully processed, its assets are stored in a directory on the file system. This API call allows direct access to the files in that directory (by default: WebODM/app/media/project/{project_id}/task/{task_id}/assets). This can be useful to those applications that want to stream a Potree dataset, or render a textured 3D model on the fly.

These paths could change in future versions of WebODM. If the asset you need can be reached via /api/projects/{project_id}/tasks/download/{asset}, use that instead.

Retrieve console output

Console output example:

GET /api/projects/{project_id}/tasks/{task_id}/output/

As a Task is being processed, processing nodes will return an output string that can be used for debugging and informative purposes. Output is only available after processing has started.

line0Only display the output starting from a certain line number. This can be useful to display output in realtime to the user by keeping track of the number of lines that have been displayed to the user so far and thus avoiding to download all output at every request.

Cancel task

POST /api/projects/{project_id}/tasks/{task_id}/cancel/

Stop processing a Task. Canceled tasks can be restarted.

Remove task

POST /api/projects/{project_id}/tasks/{task_id}/remove/

All assets associated with it will be destroyed also. If the Task is currently being processed, processing will stop.

Restart task

POST /api/projects/{project_id}/tasks/{task_id}/restart/

If a Task has been canceled or has failed processing, or has completed but the user decided to change processing options, it can be restarted. If the Processing Node assigned to the Task has not changed, processing will happen more quickly compared to creating a new Task, since the Processing Node remembers the uuid of the Task and will attempt to reuse previous results from the computation pipeline.

Orthophoto TMS layer

GET /api/projects/{project_id}/tasks/{task_id}/orthophoto/tiles.json

GET /api/projects/{project_id}/tasks/{task_id}/orthophoto/tiles/{Z}/{X}/{Y}.png

After a task has been successfully processed, a TMS layer is made available for inclusion in programs such as Leaflet or Cesium.

If you use Leaflet, you’ll need to pass the authentication token via querystring: /api/projects/{project_id}/tasks/{task_id}/tiles/{Z}/{X}/{Y}.png?jwt=your_token

Surface Model TMS layer

GET /api/projects/{project_id}/tasks/{task_id}/dsm/tiles.json

GET /api/projects/{project_id}/tasks/{task_id}/dsm/tiles/{Z}/{X}/{Y}.png

Terrain Model TMS layer

GET /api/projects/{project_id}/tasks/{task_id}/dtm/tiles.json

GET /api/projects/{project_id}/tasks/{task_id}/dtm/tiles/{Z}/{X}/{Y}.png

Pending Actions

In some circumstances, a Task can have a pending action that requires some amount of time to be performed.

Pending ActionCodeDescription
CANCEL1Task is being canceled
REMOVE2Task is being removed
RESTART3Task is being restarted

Status Codes

QUEUED10Task’s files have been uploaded to a Processing Node and are waiting to be processed.
RUNNING20Task is currently being processed.
FAILED30Task has failed for some reason (not enough images, out of memory, Piero forgot to close a parenthesis, etc.)
COMPLETED40Task has completed. Assets are be ready to be downloaded.
CANCELED50Task was manually canceled by the user.

Processing Node

Example processing node:

Processing nodes are associated with zero or more tasks andtake care of processing input images. Processing nodes are computers or virtual machines running NodeODM or any other API compatible with it.

idintUnique Identifier
onlineboolWhether the processing node could be reached in the last 5 minutes
hostnamestringHostname/IP address
api_versionstringVersion of NodeODM currently running
engine_versionstringVersion of processing engine currently being used
enginestringLowercase identifier of processing engine
last_refreshedstringDate and time this node was last seen online. This value is typically refreshed every 15-30 seconds and is used to decide whether a node is offline or not
queue_countintNumber of Task items currently being processed/queued on this node.
max_imagesintOptional maximum number of images this processing node can accept. null indicates no limit.
labelstringLabel for the node
available_optionsJSON[]JSON-encoded list of options that this node is capable of handling. See Available Options for more information

Available Options

helpDescription of the option
nameName that identifies the option. This is the value you pass in the name key/value pair when creating a set of options for a new Task
typePossible values are int, float, string, bool
valueDefault value if the option is not specified
domainRestriction of the range of values that this option allows. Examples are float, negative integer, percent, float: 0 <= x <= 10, etc. for all possible values, check NodeODM’s odmOptions.js code

Add a processing node

POST /api/processingnodes/

hostname*“”Hostname/IP address

All other fields are automatically populated, and shouldn’t generally be specified.

Update a processing node

PATCH /api/processingnodes/

Parameters are the same as above.

Delete a processing node

DELETE /api/processingnodes/

Upon deletion, all Task items associated with the node will continue to exist. You might get errors (duh!) if you delete a processing node in the middle of processing a Task.

Get list of processing nodes

GET /api/processingnodes/

id“”Filter by id
hostname“”Filter by hostname
port“”Filter by port
api_version“”Filter by API version
queue_count“”Filter by queue count
max_images“”Filter by max images
engine_version“”Filter by engine version
engine“”Filter by engine identifier
ordering“”Ordering field to sort results by
has_available_options“”Return only processing nodes that have a valid set of processing options (check that the available_options field is populated). Either true or false.

Example: Show only nodes that have a valid set of options

GET /api/processingnodes/?has_available_options=true

Example: Sorting

GET /api/processingnodes/?ordering=-hostname

Sort by hostname, descending order.

Only processing nodes visible to the current user are returned. If you added a processing node, but your non-admin users can’t see it, make sure that they have been assigned the proper permissions. Administration – Processing Nodes – Select Node – Object Permissions – Add User/Group and check CAN VIEW PROCESSING NODE.

Processing Options

Processing options example:

GET /api/processingnodes/options/

Display the common options available among all online processing nodes. This is calculated by intersecting the available_options field of all online processing nodes visible to the current user.

Use this list of options to check whether a particular option is supported by all online processing nodes. If you use the automatic processing node assignment feature for processing tasks, this is the list you want to display to the user for choosing the options to use during processing.

While WebODM is capable of handling processing nodes running different versions of NodeODM, we don’t recommend doing so. When all processing nodes use the same NodeODM version, the output of this API call will be identical to the available_options field of any node.


WebODM comes with a standard model level permission system. You cancheck whether users are logged-in and have privileges to act on thingsmodel-wise (can a user add a project? can a user view projects?).

On top of that, WebODM features a powerful row level permission system. You can specify exactly which things a user has or has not access to, delete, change, etc.

Changes to the permissions of objects can be handled via the Administration page of WebODM.

We are planning to make it easier for users and developers to handle permissions via an API. This is a work in progress.

Permission Values

deleteThe object can be deleted
changeThe object can be edited
addA related object can be added to the object (a task can be added to the project)
viewThe object can be viewed (read-only)


Example User

This API can only be used by admin users.

idintUnique identifier
last_loginstringLast login date and time
is_superuserboolIf user is superuser then true
usernamestringUser name
first_namestringUser first name
last_namestringUser last name
emailstringUser email
is_staffboolIf user is staff then true
is_activeboolIf user is active then true
date_joinedstringJoin date and time
groupsint[]List of groups to which the user belongs
user_permissionsint[]List of permissions to which the user has

Create a user

POST /api/admin/users/

is_superuserfalseIf user is superuser then true
username“”User name
first_name“”User first name
last_name*“”User last name
email“”User email
is_stafffalseIf user is staff then true
is_activefalseIf user is active then true
groupsint[][]List of groups to which the user belongs
user_permissionsint[][]List of permissions to which the user has

Update a user

PUT /api/admin/users/{id}/

Parameters are the same as above.

Delete a user

DELETE /api/admin/users/{id}/

Get a user

GET /api/admin/users/{id}/

Get list of users

GET /api/admin/users/

email“”User email

Example: Filtering by email

GET /api/admin/users/[email protected]

Retrieves projects that have a email of “[email protected]”.


Example Group

This API can only be used by admin users.

idintUnique identifier
namestringGroup name
permissionsint[]List of permissions to which the group belongs

Create a group

POST /api/admin/groups/

name*“”Group name
permissionsint[][]List of permissions to which the group belongs

Update a group

PUT /api/admin/groups/{id}/

Parameters are the same as above.

Delete a group

DELETE /api/admin/groups/{id}/

Get a group

GET /api/admin/groups/{id}/

Get list of group

GET /api/admin/groups/

name“”Group name

Example: Filtering by email

GET /api/admin/groups/?name=Xyz

Retrieves projects that have a name of “Xyz”.

Handling Errors

All API calls use the status codes as described in the Django REST Framework’s Status Code Guide, but generally you only need to check for success status codes (200 or 204), handle the special case of Token Expiration (403) and report an error otherwise.

Error Status Codes

This is not an exhaustive list, but common error codes are listed below.

Status CodeDescription
403Forbidden (token expired?)
400Malformed request
404Not found

For security reasons, sometimes an operation which should return 403 returns 404 to avoid disclosing IDs and other information to attackers.

Development Quickstart

  1. Make a fork of the WebODM repository
  2. Clone your repository in a directory
  3. Create a new branch: git checkout -b branchname.
  4. Setup a development environment either with docker or natively.
  5. Commit the changes: git commit -a -m 'describe your changes'
  6. Push the changes to your repository: git push origin branchname
  7. Create a pull request

We don’t have many rules. Follow the guidelines indicated in the Contributing document, be nice to others and you’ll do great! :)

Setup a Development Environment

There are two ways to setup a development environment. The easiest one is to use docker.

Once you have a development environment, read about the project overview and get hacking!

Docker Setup

Follow the Getting Started instructions, then run:

./webodm.sh start --dev

That’s it! You can modify any of the files, including SASS and React.js files. Changes will be reflected in the running WebODM instance automatically.

Native Setup

If you can follow the instructions to run WebODM natively, you should be able to make changes to the code directly.

Run Unit Tests

We think testing is a necessary part of delivering robust software. We try to achieve complete test coverage for backend code and at a minimum robust smoke testing for frontend code.

To run the unit tests, simply type:

./webodm.sh test

Apply Changes In Production

Once you’re done making changes, if you start WebODM in production mode (without the --dev flag), you will notice that your changes are missing. This is because webodm.sh uses the opendronemap/webodm_webapp docker image to launch WebODM, which doesn’t have your changes. To apply the changes, you need to rebuild the docker image locally:

docker build -t opendronemap/webodm_webapp .

You can also modify the docker-compose.yml file to point to a different image.

Project Overview


The backend is based mainly on Django and Django REST Framework.

We don’t use much of Django’s templating system, except for the Administration and Processing Nodes sections. Instead we use Django to expose an API, which we then tie to a React.js app.

Directories of interest are listed as follow:

/appMain application, includes the UI components, API, tests and backend logic.
/nodeodmApplication that bridges the communication between WebODM and NodeODM. Includes its own unit tests and models.
/webodmDjango’s main project directory. Setting files are here.


We use a React.js app (ES6 syntax) and SCSS for various UI components such as the dashboard. We use webpack to build intermediate components into a static bundle.

Directories of interest are listed as follow:

/app/templates/appLocation of Django templates. While we don’t use them a lot, we use them for a few pages and as a glue to bootstrap the React code.
/app/static/app/jsLocation of Javascript files for all UI components.
/app/static/app/js/componentsWe try to separate components for reusability into various React components. Each component is stored here.
/app/static/app/js/cssEach component should have its own SCSS file. Those files are stored here.

/app/static/app/js/main.jsx is the entry point for the UI. If you wonder how we tie Django and React.js together, this is the file to look at to begin your search.


We use Slate to generate our documentation. See their project’s wiki for information about making changes to the documentation.

Documentation can be changed by modifying the files in /slate/source/includes.

3D Insider is ad supported and earns money from clicks, commissions from sales, and other ways.
DJI has just released the Mavic Air 2. See all of the specs here.

Aerial mapping is one of the fastest rising commercial applications of drone technology. Drones allow mapping professionals to survey large areas at a fraction of the time, cost, and effort that it would take for more old-fashioned methods, such as ground-based surveying.

There are a few technologies that drone mapping professionals use to transform data collected by drones into fully realized maps and models. The most basic of these methods is photogrammetry. What is photogrammetry is why is it so widely used? In this article, we take a look at the best paid and free software platforms that you could use to help you get started with drone-based mapping using photogrammetry.

What is photogrammetry and what are its benefits?

Photogrammetry is a method by which a series of overlapping images are stitched together to generate a 3D model. This works in the same way that our eyes perceive depth – by combining separate images, we can deduce the physical dimensions of features and objects within our view.

In drone-based mapping using photogrammetry, drones capture several overlapping images of a survey as areas it flies above. Depending on the size of the survey area, a drone could capture up to several hundred aerial images. This process is typically automated and aided by special survey planning software. All a drone pilot needs to do is to define the survey area or the flight path for the drone, and the drone will carry out the survey on its own.

Each aerial image that a drone captures is “geotagged” or associated to a specific point along a geodetic coordinate system. This is made possible by a drone’s onboard GPS module. The geotags of each image are instrumental in the stitching phase, where shots of each feature taken from different perspectives need to be matched with each other. This can be a very resource-demanding process depending on how many images were captured in the survey and the resolution of the images.

The main advantage of photogrammetry is that it doesn’t require any sophisticated technology. In fact, most camera drones available today are already equipped with the necessary components to carry out a photogrammetry survey. At a minimum, a drone only needs to have a high-resolution camera and GPS capabilities. While it’s possible to enhance the quality of a photogrammetry survey with add-ons such as an RTK module and a ground station, these aren’t strictly required.

Naturally, drones designed for photogrammetry surveys are also cheaper. Some drones cost less than $2000, such as the DJI Mavic 2 Pro and the DJI Phantom 4 Pro, that are already well-equipped to do photogrammetry surveys. On the other hands, sensors for LiDAR mapping can easily cost more than five times this amount.

PART 107 Made Easy

  • 161 Question and Answer Study Guide
  • 105 pages of illustrated content
  • Covers all parts of the Part 107 test
  • $97 of value for free

Things to look for in choosing photogrammetry software

1. End-to-end solutions

Some photogrammetry software packages offer capabilities that will help you not just in processing the data you’ve collected from the field, but also in planning and executing the survey. This is typically done by packaging the software with a mobile app counterpart.

Using the mobile app, you can direct your drone to survey a prescribed area or fly along a pre-determined flight path. The mobile app also takes care of real-time data collection.

Working within a single software platform ensures that you don’t encounter issues with data incompatibility. After all, the last thing you’d want to happen is to find out that your data isn’t compatible with your data processing software.

2. Cloud-based processing

Photogrammetry processing software needs to work with a large number of high-resolution images. This could take several hours to finish if you do it on a standard desktop PC or laptop. To bypass the usual hardware limitations, some photogrammetry software take advantage of the concept of cloud-based processing.

In this method, aerial photos taken from the field are uploaded to a cloud-based server and are processed remotely. The computers used for processing these images are much more powerful compared to the usual ones found in homes and offices. Processed data, whether it be in the form of orthomosaic maps, 3D models, or point clouds, are then relayed back to the user.

This innovation has made photogrammetry accessible to more people, even those who don’t have high-end and sophisticated computers. If you want your photogrammetry projects to be finished as quickly as possible, we recommend looking for software that offer cloud-based data processing.

3. Ease of use

Webodm Installation On Windows 10

What’s the point of a sophisticated, feature-rich software platform if you can’t figure out how to use it? Not all drone mapping professionals are software experts, and they won’t always have time to learn about some complicated software. Some software developers have proven that it’s possible to design a software that is beginner-friendly but does not compromise on technical capabilities

The top 3 best PAID photogrammetry software

1. Pix4D

Pix4D is so widely used and has been so deeply ingrained into the practices of many professional drone mapping communities that modern mapping drones and sensors are being designed specifically to be compatible with it. The development team behind Pix4D has more than a decade of experience in the industry. During that time, they have augmented their original software with specialized modules and a wider scope of compatibility with popular drone brand names such as eBee and DJI.

For photogrammetry, the module you would be interested in Pix4DMapper. It offers cloud-based processing and exports the output in a variety of formats including point clouds, 3D textured mesh, or orthomosaic maps. Pix4DMapper doesn’t just work with RGB images. It is a comprehensive photogrammetry software which can also be used to process thermal images, multispectral images, and 360-degree camera images.

Pix4D also has its own drone flight planning app, called Pix4DCapture. This mobile app is compatible with a wide range of drones. Through the app, you can easily define the flight plan and parameters of your survey, including the flight altitude of your drone and the degree of image overlap you are targeting. The app even allows you to check the quality of the aerial images that your drone has your capture while you’re still on-site, which avoids tedious and bothersome rework. Pix4DCapture automatically uploads aerial images to a cloud server where they’re immediately available for processing.

Ease-of-use isn’t exactly the strong suit of the Pix4D platform, as indicated by feedback from many of its users. However, in terms of quality and reliability, it’s pretty hard to find a comparable alternative.

2. DroneDeploy

If you’re looking for photogrammetry software that is more designed for entry-level drone mapping, then DroneDeploy is probably your best bet. With an intuitive interface and a basic set of features, DroneDeploy is probably one of the easiest to learn out of all photogrammetry software available today. It has been developed with a focus on compatibility with DJI drones but has also started to work with other popular drone brands.

DroneDeploy has both a flight planning mobile app and a data processing platform. The flight planning app can be used to capture aerial photos, videos, panoramas, and images to be used specifically for mapping. You can use the app to quickly establish survey areas, collaborate with your team through shared maps, make area and volume measurements, and save flight parameters for repeat missions.

The data processing app runs on the cloud, creating maps and models from the aerial images captured by your drone. You can also add features to the app by downloading 3rd party apps from DroneDeploy’s marketplace. These apps, such as Birds.ai and EZ3D, have specialized functions that complement the capability of DroneDeploy’s data processing platform. You can even get insurance for your flight mission directly from the DroneDeploy app.

With more focus on accessibility, DroneDeploy is something we can highly recommend for beginners to photogrammetry. If you’re still unsure about making this investment, the good news is that you can take a 30-day free trial.

3. Agisoft Metashape

AgiSoft Metashape is an all-around photogrammetry software that can process not just aerial images for mapping but also close-range images. It has been used for GIS applications, game development, and visual effects. As it’s a software made for photogrammetry processing, it does not come with any flight planning app.

If you can look beyond the lack of flight planning capabilities, you will see that AgiSoft offers some of the best photogrammetry processing features. It can work with images captured by fisheye cameras, multispectral cameras, and thermal cameras. It also offers a wide range of output files including point clouds, 3D models, orthomosaic maps, and digital elevation models.

Another nice feature of AgiSoft is that you can write custom Python scripts for batch processing of large projects. This is a great time-saving feature when you need to process the same parameters for several data sets. Of course, all this data processing is done on the cloud, leveraging the combined power of multiple network nodes to processing of a large amount of data.

One thing you need to know about AgiSoft is that it clearly looks like it wasn’t designed for beginners. This software takes some getting used to, even for users who have had experience in drone mapping. If you feel that you can get over this learning curve, and if the absence of a flight planning app is not a big deal for you, then the AgiSoft software platform should be worth your consideration.

The top 3 best FREE photogrammetry software


COLMAP is an open source software that you can download for free from GitHub. You can choose to either download the source code or executable files for Windows, Mac, or Linux OS. Much like any other photogrammetry software, COLMAP is capable of reconstructing 3D models from a series of images captured by single or multiple camera setups.

Webodm Installer Free Download

COLMAP does have one major limitation, though. Although it can do image alignment and construct a 3D mesh out the images, you cannot play around with the 3D mesh using COLMAP. To do that, you’ll have to turn to other software such as openMVS, another open source program that can be downloaded from GitHub.

Since COLMAP is a free open source software, it does not have a fancy GUI like most other pad software do. Instead, you’ll be doing most of your work by entering directions on a command line. This could be a huge turn-off for beginners, especially for those with no coding experience. You can check out COLMAP’s detailed tutorial on their website and give it a spin to see if it will appeal to you. The software is free, anyway, so there’s no reason why you shouldn’t at least give it a try.

2. WebODM

WebODM, another free open source software, was developed by OpenDroneMap and has been around since 2017. Thanks to a community of developers, WebODM has been updated so many times since then and is now one of the most feature-rich open source mapping software out there. The source code can be downloaded for free from GitHub, although this means you’ll have to install it manually. If this sounds like something you don’t want to bother with, then you can also download an auto-installer. There’s a catch, though – the installer isn’t free.

Looking beyond this little hiccup, WebODM is actually one of the most powerful open source mapping software. It’s capable of all the usual features such georeferencing of ground control points, volume and area calculations, and the generation of point clouds, 3D models, orthomosaics, and digital elevation models. The modeling parameters of WebODM are highly configurable, which means you might have to play around with them before you can get a good model out of your data.

As with COLMAP, WebODM isn’t’ exactly beginner-friendly. While it’s possible to get the same quality of the model in WebODM as you’ll get in Pix4D or DroneDeploy, it typically takes a lot of time adjusting the modeling parameters to get a satisfactory result. The principle of ‘you get what you pay for’ applies here – you may save cash in terms of the acquisition of software, but you’re likely to spend an equivalent amount of time learning the software and getting good results out of it.

3. MeshRoom

MeshRoom, which was developed on the AliceVision framework, is another – SURPRISE – open source software. However, this one was designed to be a bit more user-friendly, a feature which not come unnoticed. First off, you don’t need to download the source code and compile it yourself. You can download binaries of MeshRoom for free. With installation taken care of, you can easily move on to using the software for processing your data.

In contrast to other open source photogrammetry software, MeshRoom has a nice, easy to understand graphical interface. You can drag source images to your workspace, adjust modeling parameters, and see a progress bar representing the modeling process. The generated 3D model shows up in the same workspace. This streamlined workflow makes it much easier to tweak your settings and see how they affect the quality of your model.

Another feature that makes MeshRoom easy to use is the ability to customize your workflow by simply adding pre-defined nodes to it. Each of these nodes have pre-programmed functions which you can also customize to your needs.

The downside of using a software with a nice GUI like MeshRoom when processing aerial images from a drone survey is that the whole modeling process is going to be really slow. If you have hundreds of aerial images, you can expect to wait several hours for your model to finish. This depends on your hardware, of course. However, just be ready to stand back and do more productive stuff while your model is being constructed.

Webodm Installer Free

Final thoughts

Webodm Installer Free Download

In drone mapping, having the right drone is only the first half of the equation that leads to success. Once you’ve gathered all the geotagged aerial images from the field, you’ll need to have a good photogrammetry processing software to create your model. The good news is that there are a lot of them available out there. The bad news is that the best ones are usually pretty expensive.

While there are both paid and free solutions, just keep in mind that settling for a free software will always come with its disadvantages. You very rarely get the same quality of models in free software as you would get from paid software. If you manage to do it, it would probably be through many hours of figuring out the best modeling parameters for your data.

Open source software certainly has its appeal, though. If you’re into coding and you like tinkering with 3D modeling parameters, then you might get a kick out of using open source software. If that doesn’t sound like your thing, there’s no shame in choosing the paid software alternative.

Related Posts

 cleardn.ajkernilphamari.co © 2021