Georeferencing

Georeferencing process results in locating a piece of the landscape visible in the photo in the corresponding geographic destination on the real-world map.

Georeferencing

Most software designed for photogrammetric workflows has a built-in geolocation step. The same is true for OpenDroneMap. In any case, to make geospatial localization of [aerial] photos, GPS data (Global Positioning System) is required. Most modern professional cameras record GPS coordinates automatically in the images, usually with an accuracy of 10-30 feet (3-9 meters) [source]. While such a result is sufficient for most ordinary purposes, your research may be more precision demanding. For example, consider the case where the target area is even smaller than the geolocation threshold. The novel, more accurate geolocation systems, such as VPS (Visual Positioning System) or CPS (Camera Positioning Standard), are now being developed [learn more] and will probably supplant GPS technology in the future. By this time, though, the best patch for improving georeferencing process is still to use a high-accuracy GPS point reference, which will minimize the error.

Georeferencing options in OpenDroneMap

The user has some level of control over the ODM settings for the photo georeferencing stage. By default, ODM tries to use the GPS information embedded in the images automatically while recording the mission. If this is the case, you don’t need to add any additional option for geolocation to be performed.

1. Force the use of geolocation from images’ EXIF metadata

--force-gps --use-exif \

Use --force-gps and --use-exif flags when you have a GCP data file in the project file structure but want to force the use of the GPS data stored in the image metadata.

That is especially useful when the original imagery is not geotagged, but you have GPS data in separate text files. In such a case, you can add this information to the image EXIF metadata using ExifTool software. Follow the instructions in the tutorial “Keep EXIF GEO metadata” (section: add EXIF tags from a text file using exiftool) to accomplish this step.

2. Force the use of GPS data (e.g., RTK) from a text file

--geo geo.txt \

Regardless of whether your imagery is geotagged, once you have alternative GPS information stored in a text file, you can force direct use of it with the option --geo geo.txt. This is especially useful when you have more accurate geolocation data such as RTK (Real-Time Kinematic positioning) that corrects some of the common errors in current satellite navigation (GNSS) systems.

WARNING:
Keep in mind that the format of the text file containing the GPS data is strictly defined!

If the geo.txt file is somewhere outside of your project's workdir or you have several GPS files, then provide the absolute path to the one you want.
geo.txt (file content below) [see details in the ODM Documentation: GPS data]

+proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs   # header
DJI_0028.JPG   -91.9942096   46.8425252   198.609          # GPS data
DJI_0032.JPG   -91.9938293   46.8424584   198.609          # GPS data
  • The first line should contain the name of the projection used for the geo-coordinates, in one of the following formats:
* PROJ string:   +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
*   EPSG code:   EPSG:4326
*   WGS84 UTM:   WGS84 UTM 16N
  • Subsequent lines are the GPS information for a given image (the first 3 columns are obligatory):
     col-1 col-2 col-3  col-4              col-5          col-6             col-7                    col-8                    col-9      col-10
     _____ _____ _____ ______ _________________  ______________  ________________  _______________________  _______________________  ___________
image_name geo_x geo_y [geo_z] [omega (degrees)] [phi (degrees)] [kappa (degrees)] [horz accuracy (meters)] [vert accuracy (meters)] [extras...]

3. Force fixed value of GPS Dilution of Precision (use along with variant 1 or 2)

--gps-accuracy 10.0 \

If you know the estimated error of GPS location determined by the camera in use, consider setting it as a value of the --gps-accuracy value option. The value is a positive float in meters and will be used as a GPS Dilution of Precision for all images. The default is 10 meters.

WARNING:
If you use high-precision GPS (RTK), this value will be set automatically. You can manually set it in case the reconstruction fails. Lowering the value can help control bowling effects over large areas.

3. Force the use of GCP-based georeferencing

Ground Control Points (GCPs) are clearly visible objects which can be easily identified in several images. Using the precise GPS position of these ground points is a good reference that improves significantly the accuracy of the project’s geolocation. Ground control points can be any steady structure existing in the mission area, otherwise can be set using targets placed on the ground. Learn more about recommended practices for GCPs in ODM workflow from the OpenDronMap Documentation: Ground Control Points.

If you have a file with GCPs detected on the image collection, force georeferencing using it by option --gcp gcp_list.txt.

--gcp gcp_list.txt \
WARNING:
Keep in mind that the format of the text file containing the GCP data is strictly defined!

If the gcp_list.txt file is somewhere outside of your project's workdir or you have several GCP files, then provide the absolute path to the one you want.


Detect each ground control point in at least 5-10 photos!

gcp_list.txt (file content below) [see details in the ODM Documentation: GCPs]

EPSG:4326
-116.74998   43.06477   2090.14   1559.41645   1372.84669   DJI_0177.JPG   100
-116.74998   43.06477   2090.14   1491.01638   2471.85207   DJI_0355.JPG   100
-116.74998   43.06477   2090.14   1524.14196   2214.43593   DJI_0178.JPG   100
-116.74998   43.06477   2090.14   1142.59915   1739.80028   DJI_0152.JPG   100
-116.74998   43.06477   2090.14   1207.88116   1863.28946   DJI_0329.JPG   100
-116.75048   43.06475   2088.22   1737.22646   1763.28507   DJI_0172.JPG   101
-116.75048   43.06475   2088.22   1660.24277   2912.50267   DJI_0350.JPG   101
-116.75048   43.06475   2088.22   1736.70576   1411.55810   DJI_0171.JPG   101
-116.75048   43.06475   2088.22   989.578526   1391.94185   DJI_0157.JPG   101
-116.75048   43.06475   2088.22   877.826253   2459.65369   DJI_0335.JPG   101
  • The first line should contain the name of the projection used for the geo-coordinates, in one of the following formats:
* PROJ string:   +proj=utm +zone=11 +ellps=WGS84 +datum=WGS84 +units=m +no_defs
*   EPSG code:   EPSG:4326
*   WGS84 UTM:   WGS84 UTM 16N
  • Subsequent lines are the GPS information for a given image (the first 6 columns are obligatory):
col-1 col-2 col-3 col4 col5    col-6     col-7     col-8    col-9
_____ _____ _____ ____ ____ __________ __________ ________ ________
geo_x geo_y geo_z im_x im_y image_name [gcp_name] [extra1] [extra2]

Software for manual detection of GCPs

Section in development…

Use any software for tagging GCPs, e.g., the GCP Editor Pro is a good match for the ODM. Download source code from the GitHub.

Automatic detection of ARUco targets

Section in development…


Further Reading


Homepage Section Index Previous