Support Website Contact Support Blog

Contour generation based off of a vertical datum

We use a DJI Phantom 3 Professional to get our pictures and our end goal is to generate fairly accurate contours to a .dxf file so we can easily open it in AutoCAD. I went through this workflow using your trial version. However, the contours that’s generated seems to be based off of the distance of a certain point on the terrain to the altitude of the drone but we want pix4d to give us the elevation of the terrain based on The North American Vertical Datum of 1988 or similar (orthometric height) is this a possibility ?

Dear Tumal,

Did you process from the .p4d file or did you create a project from scratch and import the image from the drone’s SD card?

There are actually some issues with the vertical GPS coordinates which can be fixed using ground control points (GCPs). Currently DJI drones like the Phantom 3 Pro get the elevation of the camera using an altimeter, which only takes into consideration the distance to the ground and not above a reference Earth surface. The Pix4Dcapture .p4d file adjusts the elevation but if you work with the images from the drone’s SD card this will be a problem.

To include GCPs and fix the altitude problem, you could get for instance 3-5 points from a Web Map Service server following:

First make sure to define the appropriate GCP coordinate system. The Daft Logic website takes the coordinates from Google Maps which refers to the mean sea level (MSL) egm96 to estimate the vertical coordinate.
Go to Project > GCP/Manual Tie Points Manager… > GCP Coordinate System > Edit… > choose WGS 84.
Then click Advanced Coordinate System > select MSL egm96.
Then insert/import the GCPs according:

In the rayCloud there will be a shift between the images and GCPs because the camera location was recorded above ground level (AGL). Meaning that the elevation is for instance 25 meters above the ground instead of 225 meters above the reference Earth’s surface. The GCPs are correct.

Therefore it is not possible to mark the GCPs with the rayCloud since the software cannot link the GCPs elevation to the model. When clicking a GCP no thumbnail is displayed in the right sidebar which makes the marking impossible.

Here is the procedure we suggest:

  1. In the GCP/Manual Tie Point Manager, compute the mean altitude of the GCPs based on the vertical coordinate. It does not have to be accurate. You could roughly estimate the elevation based on 3 GCPs evenly distributed.
  2. Export the image geolocation, in the Menu Bar click Project > Image Properties Editor… and in Images Geolocation section click To File…
  3. Open the exported geotaggs into a spreadsheet and add the mean altitude of the GCPs to the vertical coordinate of each image that was measured above ground level. Save the modifications.
  4. Still in the Image Properties Editor, import the modified file containing the new geotaggs using the From File… option.
  5. Reoptimize the model from the Menu Bar Process > Reoptimize.

You should now be able to mark your GCPs in the rayCloud following:

After reoptimizing with all the GCPs, the model should get the correct elevation.
Let us know if this is not the case or if you have a different issue.

Best regards,

This is awesome but what if I want my contour results in feet ?

The image, GCP, and output coordinate systems can be different there is no problem for Pix4Dmapper.
So you can have the GCP in WGS 84 and select a coordinate system in feet for the outputs.
Please have a look at this article:

Pix4Dmapper’s database contains coordinate systems in meters as well as in feet (International Foot or U.S. Survey Foot). Make sure that the ft unit is selected in order to see the list of the feet coordinate systems.


So I went through the steps exactly and re-optimized the model and generated the contours. Also I adjusted the output coordinates to generate everything in US survey foot. 

However, when you add the mean altitude of the GCPs to the vertical coordinate of each image, now its above ground level elevation + mean GCP elevation. 

So the topos are off, is there anyway we can use the AGL generated by the drone and create a decently accurate topo in relation to an accepted datum. 

Note that the drone actually measures the altitude taking the ground level where the drone took off as the reference.
For instance, if you flew from a rooftop then it is not exactly AGL. The altitude recorded by drone is above the rooftop instead of the ground.

But in the default basic case where you fly the drone from the ground, if you add the mean GCP elevation to the AGL elevation of the images you should come up with the true correct vertical coordinate of the images.

Just make sure that you defined the same coordinate system for the images as that of the GCPs.

What do you mean by the topos are off?


If you import GCPs recorded with EGM96 but in the GCP setup you did not set it as EGM96 but the output is set to EGM96, would this not be a problem?


Thanks in Advance

Hi Clarence,

It is essential to set the correct coordinate system and vertical reference otherwise the GCPs. If you measure the GCPs with respect to EGM96, you should make sure that option is selected before importing the points.