kopia lustrzana https://github.com/OpenDroneMap/docs
690 wiersze
68 KiB
HTML
690 wiersze
68 KiB
HTML
<!DOCTYPE html>
|
||
<html class="writer-html5" lang="en" >
|
||
<head>
|
||
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>High Precision Workflows — OpenDroneMap 3.5.4 documentation</title>
|
||
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
||
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
|
||
<link rel="shortcut icon" href="../_static/favicon.ico"/>
|
||
<!--[if lt IE 9]>
|
||
<script src="../_static/js/html5shiv.min.js"></script>
|
||
<![endif]-->
|
||
|
||
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
|
||
<script src="../_static/jquery.js"></script>
|
||
<script src="../_static/underscore.js"></script>
|
||
<script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
|
||
<script src="../_static/doctools.js"></script>
|
||
<script src="../_static/sphinx_highlight.js"></script>
|
||
<script src="../_static/js/theme.js"></script>
|
||
<link rel="index" title="Index" href="../genindex/" />
|
||
<link rel="search" title="Search" href="../search/" />
|
||
<link rel="next" title="Multispectral and Thermal" href="../multispectral/" />
|
||
<link rel="prev" title="OpenDroneMap Outputs" href="../outputs/" />
|
||
</head>
|
||
|
||
<body class="wy-body-for-nav">
|
||
<div class="wy-grid-for-nav">
|
||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||
<div class="wy-side-scroll">
|
||
<div class="wy-side-nav-search" >
|
||
<a href="../" class="icon icon-home"> OpenDroneMap
|
||
</a>
|
||
<div class="version">
|
||
3.5.4
|
||
</div>
|
||
<div role="search">
|
||
<form id="rtd-search-form" class="wy-form" action="../search/" method="get">
|
||
<input type="text" name="q" placeholder="Search docs" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
</div>
|
||
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
||
<ul>
|
||
<li class="toctree-l1"><a class="reference internal" href="../installation/">Installation and Getting Started</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/#quickstart">Quickstart</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/#hardware-recommendations">Hardware Recommendations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/#installation">Installation</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../installation/#windows">Windows</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-1-check-virtualization-support">Step 1. Check Virtualization Support</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-2-install-requirements">Step 2. Install Requirements</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-3-check-memory-and-cpu-allocation">Step 3. Check Memory and CPU Allocation</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-4-download-webodm">Step 4. Download WebODM</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-4-launch-webodm">Step 4. Launch WebODM</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../installation/#macos">macOS</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#id1">Step 1. Check Virtualization Support</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#id2">Step 2. Install Requirements</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#id3">Step 3. Check Memory and CPU Allocation</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-4-download-and-launch-webodm">Step 4. Download and Launch WebODM</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../installation/#linux">Linux</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-1-install-requirements">Step 1. Install Requirements</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-2-check-additional-requirements">Step 2. Check Additional Requirements</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../installation/#step-3-download-and-launch-webodm">Step 3. Download and Launch WebODM</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/#basic-commands-and-troubleshooting">Basic Commands and Troubleshooting</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../installation/#hello-webodm">Hello, WebODM!</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../installation/#running-on-more-than-one-machine">Running on more than one machine</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="../tutorials/">Tutorials</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#creating-high-quality-orthophotos">Creating High Quality Orthophotos</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#creating-digital-elevation-models">Creating Digital Elevation Models</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#using-potree-3d-viewer-module-on-webodm">Using Potree 3D viewer module on WebODM</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#cameras">Cameras</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#textured-model">Textured model</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#appearance">Appearance</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#point-budget">Point budget</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#field-of-view">Field of view</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#eye-dome-lighting">Eye Dome-lighting</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#background">Background</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#other">Other</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#tools">Tools</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#measurement">Measurement</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#clipping">Clipping</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#navigation">Navigation</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#scene">Scene</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#measuring-stockpile-volume">Measuring stockpile volume</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#fieldwork-planning">Fieldwork planning</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#flight-pattern">Flight pattern</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#flight-height">Flight height</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#gcps">GCPs</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#processing-parameters">Processing parameters</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#measuring">Measuring</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#expected-accuracy">Expected accuracy</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#using-docker">Using Docker</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#listing-docker-machines">Listing Docker Machines</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#accessing-logs-on-the-instance">Accessing logs on the instance</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#command-line-access-to-instances">Command line access to instances</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#cleaning-up-after-docker">Cleaning up after Docker</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#using-odm-from-low-bandwidth-location">Using ODM from low-bandwidth location</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#what-is-this-and-who-is-it-for">What is this and who is it for?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#steps">Steps</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#install">Install</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#prep-data-and-project">Prep data and project</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#resize-droplet-pull-pin-run-away">Resize droplet, pull pin, run away</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#after-it-finishes-assuming-you-survive-that-long">After it finishes (assuming you survive that long)</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../tutorials/#advanced">Advanced</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#calibrating-the-camera">Calibrating the Camera</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#using-image-masks">Using Image Masks</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#using-singularity">Using Singularity</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#build-singularity-image-from-docker-image">Build Singularity image from Docker image</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#using-singularity-sif-image">Using Singularity SIF image</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#clusterodm-nodeodm-slurm-with-singularity-on-hpc">ClusterODM, NodeODM, SLURM, with Singularity on HPC</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../tutorials/#development-and-testing-of-odm">Development and testing of ODM</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#fork-and-clone-repository">Fork and clone repository</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#set-up-local-nodeodm-docker-instance">Set up local NodeODM docker instance</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#modify-code">Modify code</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#connect-to-nodeodm-instance">Connect to NodeODM instance</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../tutorials/#install-and-use-changes">Install and use changes</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../arguments/">Options and Flags</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/3d-tiles/">3d-tiles</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/align/">align</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/auto-boundary/">auto-boundary</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/auto-boundary/#what-is-auto-boundary">What Is Auto-Boundary?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/auto-boundary/#when-is-auto-boundary-helpful">When Is Auto-Boundary Helpful?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/auto-boundary/#why-would-one-use-auto-boundary">Why would one use auto-boundary?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/auto-boundary/#example-images">Example Images</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/auto-boundary/#true-auto-boundary">True: <code class="docutils literal notranslate"><span class="pre">--auto-boundary</span></code></a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/auto-boundary/#false-null">False: <code class="docutils literal notranslate"><span class="pre">null</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/auto-boundary-distance/">auto-boundary-distance</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/bg-removal/">bg-removal</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/boundary/">boundary</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/boundary/#what-is-boundary-geojson">What is Boundary [GeoJSON]?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/boundary/#when-is-boundary-geojson-appropriate">When is Boundary [GeoJSON] appropriate?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/boundary/#why-would-one-use-boundary-geojson">Why would one use Boundary [GeoJSON]?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/boundary/#how-would-one-create-boundary-geojson">How would one create Boundary [GeoJSON]?</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#geojson-io">GeoJSON.io</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#qgis">QGIS</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/boundary/#example-images">Example Images</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#true-boundary-geojson-point-cloud">True: <code class="docutils literal notranslate"><span class="pre">--boundary</span> <span class="pre">[GeoJSON]</span></code> - Point Cloud</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#true-boundary-geojson-orthophoto">True: <code class="docutils literal notranslate"><span class="pre">--boundary</span> <span class="pre">[GeoJSON]</span></code> - Orthophoto</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#true-boundary-geojson-digital-elevation-model">True: <code class="docutils literal notranslate"><span class="pre">--boundary</span> <span class="pre">[GeoJSON]</span></code> - Digital Elevation Model</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#true-boundary-geojson-3d-model-textured-mesh">True: <code class="docutils literal notranslate"><span class="pre">--boundary</span> <span class="pre">[GeoJSON]</span></code> - 3D Model/Textured Mesh</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/boundary/#false-null">False: <code class="docutils literal notranslate"><span class="pre">null</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/build-overviews/">build-overviews</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/build-overviews/#what-are-overviews">What Are Overviews?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/build-overviews/#when-are-overviews-appropriate">When are Overviews appropriate?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/build-overviews/#why-would-one-use-overviews">Why would one use Overviews?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/build-overviews/#example-images">Example Images</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/build-overviews/#true-build-overviews">True: <code class="docutils literal notranslate"><span class="pre">--build-overviews</span></code></a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/build-overviews/#false-null">False: <code class="docutils literal notranslate"><span class="pre">null</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/camera-lens/">camera-lens</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/camera-lens/#what-are-camera-lens-models">What Are Camera Lens Models?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/camera-lens/#when-are-manual-selections-appropriate">When are manual selections appropriate?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/camera-lens/#why-would-one-use-a-particular-camera-lens-model">Why would one use a particular Camera Lens Model?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/camera-lens/#example-images">Example Images</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/camera-lens/#auto-rectilinear-data"><code class="docutils literal notranslate"><span class="pre">auto</span></code> : Rectilinear Data</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/camera-lens/#brown-rectilinear-data"><code class="docutils literal notranslate"><span class="pre">brown</span></code> : Rectilinear Data</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/camera-lens/#fisheye-rectilinear-data"><code class="docutils literal notranslate"><span class="pre">fisheye</span></code> : Rectilinear Data</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/camera-lens/#perspective-rectilinear-data"><code class="docutils literal notranslate"><span class="pre">perspective</span></code> : Rectilinear Data</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/camera-lens/#spherical-rectilinear-data"><code class="docutils literal notranslate"><span class="pre">spherical</span></code> : Rectilinear Data</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/cameras/">cameras</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/cog/">cog</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/cog/#what-are-cloud-optimized-geotiffs-cogs">What Are Cloud Optimized GeoTIFFs (COGs)?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/cog/#when-are-cogs-appropriate">When are COGs appropriate?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/cog/#why-would-one-use-cogs">Why would one use COGs?</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../arguments/cog/#example-images">Example Images</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/cog/#true-cog">True: <code class="docutils literal notranslate"><span class="pre">--cog</span></code></a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="../arguments/cog/#false-null">False: <code class="docutils literal notranslate"><span class="pre">null</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/copy-to/">copy-to</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/crop/">crop</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/debug/">debug</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dem-decimation/">dem-decimation</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dem-euclidean-map/">dem-euclidean-map</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dem-gapfill-steps/">dem-gapfill-steps</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dem-resolution/">dem-resolution</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/depthmap-resolution/">depthmap-resolution</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dsm/">dsm</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/dtm/">dtm</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/end-with/">end-with</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/fast-orthophoto/">fast-orthophoto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/feature-quality/">feature-quality</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/feature-type/">feature-type</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/force-gps/">force-gps</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/gcp/">gcp</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/geo/">geo</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/gltf/">gltf</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/gps-accuracy/">gps-accuracy</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/help/">help</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/ignore-gsd/">ignore-gsd</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/matcher-neighbors/">matcher-neighbors</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/matcher-order/">matcher-order</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/matcher-type/">matcher-type</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/max-concurrency/">max-concurrency</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/merge/">merge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/mesh-octree-depth/">mesh-octree-depth</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/mesh-size/">mesh-size</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/min-num-features/">min-num-features</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/name/">name</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/no-gpu/">no-gpu</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/optimize-disk-space/">optimize-disk-space</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-compression/">orthophoto-compression</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-cutline/">orthophoto-cutline</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-kmz/">orthophoto-kmz</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-no-tiled/">orthophoto-no-tiled</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-png/">orthophoto-png</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/orthophoto-resolution/">orthophoto-resolution</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-classify/">pc-classify</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-copc/">pc-copc</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-csv/">pc-csv</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-ept/">pc-ept</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-filter/">pc-filter</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-geometric/">pc-geometric</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-las/">pc-las</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-quality/">pc-quality</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-rectify/">pc-rectify</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-sample/">pc-sample</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-skip-geometric/">pc-skip-geometric</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/pc-tile/">pc-tile</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/primary-band/">primary-band</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/project-path/">project-path</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/radiometric-calibration/">radiometric-calibration</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/rerun/">rerun</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/rerun-all/">rerun-all</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/rerun-from/">rerun-from</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/resize-to/">resize-to</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/rolling-shutter/">rolling-shutter</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/rolling-shutter-readout/">rolling-shutter-readout</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/sfm-algorithm/">sfm-algorithm</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/sfm-no-partial/">sfm-no-partial</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/skip-3dmodel/">skip-3dmodel</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/skip-band-alignment/">skip-band-alignment</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/skip-orthophoto/">skip-orthophoto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/skip-report/">skip-report</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/sky-removal/">sky-removal</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/sm-cluster/">sm-cluster</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/sm-no-align/">sm-no-align</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/smrf-scalar/">smrf-scalar</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/smrf-slope/">smrf-slope</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/smrf-threshold/">smrf-threshold</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/smrf-window/">smrf-window</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/split/">split</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/split-image-groups/">split-image-groups</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/split-overlap/">split-overlap</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-data-term/">texturing-data-term</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-keep-unseen-faces/">texturing-keep-unseen-faces</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-outlier-removal-type/">texturing-outlier-removal-type</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-single-material/">texturing-single-material</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-skip-global-seam-leveling/">texturing-skip-global-seam-leveling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-skip-local-seam-leveling/">texturing-skip-local-seam-leveling</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/texturing-tone-mapping/">texturing-tone-mapping</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/tiles/">tiles</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/time/">time</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/use-3dmesh/">use-3dmesh</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/use-exif/">use-exif</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/use-fixed-camera-params/">use-fixed-camera-params</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/use-hybrid-bundle-adjustment/">use-hybrid-bundle-adjustment</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/verbose/">verbose</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/version/">version</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/video-limit/">video-limit</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../arguments/video-resolution/">video-resolution</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../flowchart/">Flowchart with options</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../outputs/">OpenDroneMap Outputs</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#point-cloud">Point Cloud</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#d-textured-model">3D Textured Model</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#orthophoto">Orthophoto</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#dtm-dsm">DTM/DSM</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#logs">Logs</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../outputs/#list-of-all-outputs">List of all outputs</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="#">High Precision Workflows</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#map-accuracy">Map accuracy</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#what-to-expect">What to expect</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#aspects-impacting-map-accuracy">Aspects impacting map accuracy</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#references">References</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#ground-control-points">Ground Control Points</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#overview">Overview</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#recommended-practices-for-gcp-setting">Recommended practices for GCP setting</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#gcp-file-format">GCP file format</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#user-interfaces">User Interfaces</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="#id1">POSM GCPi</a></li>
|
||
<li class="toctree-l4"><a class="reference internal" href="#id2">GCP Editor Pro</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#id3">References</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#image-geolocation-files">Image Geolocation Files</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#improving-relative-accuracy">Improving relative accuracy</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="#multi-temporal-datasets">Multi-temporal Datasets</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="#aligning-large-datasets">Aligning Large Datasets</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../multispectral/">Multispectral and Thermal</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../multispectral/#multispectral-support">Multispectral Support</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../multispectral/#supported-sensors">Supported Sensors</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../multispectral/#creating-orthophotos-from-multispectral-data">Creating Orthophotos from Multispectral Data</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../multispectral/#workflows-for-non-supported-sensors">Workflows for Non-supported Sensors</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../multispectral/#thermal-support">Thermal Support</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../multispectral/#hardware">Hardware</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../multispectral/#usage">Usage</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../large/">Large Datasets</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../large/#local-split-merge">Local Split-Merge</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../large/#distributed-split-merge">Distributed Split-Merge</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#getting-started-with-distributed-split-merge">Getting Started with Distributed Split-Merge</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#understanding-the-cluster">Understanding the Cluster</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#accessing-the-logs">Accessing the Logs</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#autoscaling-clusterodm">Autoscaling ClusterODM</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../large/#limitations">Limitations</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../large/#estimating-data-collection-effort">Estimating data collection effort</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#data-collection-effort-full-3d">Data collection effort, full 3D</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../large/#data-collection-effort-2d-and-2-5d-products">Data collection effort, 2D and 2.5D products</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../large/#acknowledgments">Acknowledgments</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../flying/">Flying Tips</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../flying/#data-collection-effort-full-3d">Data collection effort, full 3D</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../flying/#data-collection-effort-2d-and-2-5d-products">Data collection effort, 2D and 2.5D products</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../flying/#other-resources-on-flying">Other resources on flying</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../contributing/">How to Contribute and Request Features</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../contributing/#how-to-request-features">How To Request Features</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../contributing/#how-to-contribute">How To Contribute</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../contributing/#community-forum">Community Forum</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../contributing/#reporting-bugs">Reporting Bugs</a><ul>
|
||
<li class="toctree-l4"><a class="reference internal" href="../contributing/#template-for-submitting-bug-reports">Template For Submitting Bug Reports</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../contributing/#pull-requests">Pull Requests</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="../faq/">Frequently Asked Questions and Additional Resources</a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="../faq/#frequently-asked-questions">Frequently Asked Questions</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../faq/#data-processing">Data Processing</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../faq/#licensing">Licensing</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../faq/#memory-issues">Memory issues</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l2"><a class="reference internal" href="../faq/#additional-references">Additional References</a><ul>
|
||
<li class="toctree-l3"><a class="reference internal" href="../faq/#for-users">For Users</a></li>
|
||
<li class="toctree-l3"><a class="reference internal" href="../faq/#for-developers">For Developers</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||
<a href="../">OpenDroneMap</a>
|
||
</nav>
|
||
|
||
<div class="wy-nav-content">
|
||
<div class="rst-content">
|
||
<div role="navigation" aria-label="Page navigation">
|
||
<ul class="wy-breadcrumbs">
|
||
<li><a href="../" class="icon icon-home"></a></li>
|
||
<li class="breadcrumb-item active">High Precision Workflows</li>
|
||
<li class="wy-breadcrumbs-aside">
|
||
<a href="../_sources/map-accuracy.rst.txt" rel="nofollow"> View page source</a>
|
||
</li>
|
||
</ul>
|
||
<hr/>
|
||
</div>
|
||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||
<div itemprop="articleBody">
|
||
|
||
<section id="high-precision-workflows">
|
||
<h1>High Precision Workflows<a class="headerlink" href="#high-precision-workflows" title="Permalink to this heading"></a></h1>
|
||
<section id="map-accuracy">
|
||
<h2>Map accuracy<a class="headerlink" href="#map-accuracy" title="Permalink to this heading"></a></h2>
|
||
<p>Accuracy can be defined as the degree or closeness to which the information on a map matches the values in the real world. Therefore, when we refer to accuracy, we are talking about quality of data and about number of errors contained in a certain dataset (Pascual 2011).</p>
|
||
<p><strong>Relative or Local accuracy</strong></p>
|
||
<p>Local or relative accuracy can be defined as the degree to which de distances between two points on a map correspond to the actually distances between those points in the real world.</p>
|
||
<p>Relative accuracy is independent of the location of the map in the world, so a map can have a high relative accuracy (in size and shape) but its position in the world can be shifted (Figure 1).</p>
|
||
<figure class="align-center">
|
||
<img alt="Model showing high relative accuracy" src="../_images/rel_accuracy.png" />
|
||
</figure>
|
||
<p><em>Figure 1. Model showing high relative accuracy but misplaced according to its real world position</em></p>
|
||
<p><strong>Absolute or global Accuracy</strong></p>
|
||
<p>Absolute accuracy is the accuracy of the reconstruction in relation to its true position on the planet (Pix4D 2019). Figure 2 shows a relative and absolute accurate model, as the points are correctly placed according to its real world position.</p>
|
||
<figure class="align-center">
|
||
<img alt="Model showing high absolute accuracy" src="../_images/abs_accuracy.png" />
|
||
</figure>
|
||
<p><em>Figure 2. Model showing high relative and absolute accuracy. Placed correctly according to its real world position</em></p>
|
||
<p><strong>An Accuracy level for each project</strong></p>
|
||
<p>Each project has specific accuracy needs to be met. For instance assessing the progress in a construction site or measuring an area affected by a fire does not require the use of GCP, since absolute accuracy will not impact the decision making process. In the other hand, there are tasks on which accuracy is critical, for example project compliance evaluations and land title surveying, which require a higher relative and absolute accuracy.</p>
|
||
<section id="what-to-expect">
|
||
<h3>What to expect<a class="headerlink" href="#what-to-expect" title="Permalink to this heading"></a></h3>
|
||
<p>In general terms, one can expect the relative accuracy to be in the order of 1 to 3 times the average GSD for the dataset. And as for the absolute accuracy, one must consider that it is dependent of the GPS unit mounted in the UAV but the horizontal accuracy of a standard GPS is usually in the range of 2 to 6 meters and the vertical accuracy between 3 to 4 times the horizontal accuracy.</p>
|
||
<p>When using GCP, absolute accuracy can be improved to 2.5 times GSD for the horizontal accuracy and 4 times the GSD for the vertical accuracy (Madawalagama 2016).</p>
|
||
<p>At a GSD of 1cm, the accuracy is to that of the RTK GNSS, and is within 1:200 scales according to NSDI & FGDC mapping accuracy standards during sub-optimal conditions (Barry 2013).</p>
|
||
</section>
|
||
<section id="aspects-impacting-map-accuracy">
|
||
<h3>Aspects impacting map accuracy<a class="headerlink" href="#aspects-impacting-map-accuracy" title="Permalink to this heading"></a></h3>
|
||
<p><strong>Weather</strong></p>
|
||
<p>Weather conditions have direct impact in the photogrammetry results, so it is important to consider cloud coverage, wind speed, humidity, sun’s altitude and other factors influencing the UAV stability and terrain illumination.</p>
|
||
<p><strong>Cameras</strong></p>
|
||
<p>Bigger and better sensors produce less noise and more clearly focused images. Also consider that rolling shutter cameras produce distorted images when the UAV is moving, so global or mechanical shutter cameras are advised for mapping jobs.</p>
|
||
<p><strong>Flight altitude</strong></p>
|
||
<p>The higher the flight altitude, the larger the image footprint and GSD. The resulting larger GSD the accuracy will be decreased as there will be less detail in the recognizable features. When a smaller GSD is required an altitude of 3 to 4 times the height of the highest point is recommended.</p>
|
||
<p><strong>Flight speed</strong></p>
|
||
<p>Flight speed have special effect in cameras equipped with rolling shutter, while those equipped with global or mechanical shutter tends to reduce this effect. UAV equipped with RTK positioning systems are also affected with the speed, but with hover at each photo taken, you can get very good accuracy. If instead you are moving during each photo take, the accuracy is going to be limited by two factors: the speed at which you are moving multiplied by the 1 second increments of RTK (Mather 2020).</p>
|
||
</section>
|
||
<section id="references">
|
||
<h3>References<a class="headerlink" href="#references" title="Permalink to this heading"></a></h3>
|
||
<p>Barry, P., & Coakley, R. «Accuracy of UAV photogrammetry compared with Network RTK GPS.» Baseline Surveys. 2013. <a class="reference external" href="http://uav.ie/PDF/Accuracy_UAV_compare_RTK_GPS.pdf">http://uav.ie/PDF/Accuracy_UAV_compare_RTK_GPS.pdf</a> (accessed 10 13, 2020).</p>
|
||
<p>Drone Deploy. How Do I Use Ground Control Points?: A guide to using ground control points with drone mapping software. 5 8, 2017. <a class="reference external" href="https://www.dronedeploy.com/blog/what-are-ground-control-points-gcps/">https://www.dronedeploy.com/blog/what-are-ground-control-points-gcps/</a> (accessed 7 9, 2020).</p>
|
||
<p>Madawalagama, S.L., Munasinghe, N., Dampegama, S.D.P.J. and Samarakoon, L. «Low-cost aerial mapping with consumer grade.» 37th Asian Conference on Remote Sensing. Colombo, Sri Lanka, 2016.</p>
|
||
<p>Mather, Stephen. OpenDroneMap. 30 de Marzo de 2020. <a class="reference external" href="https://community.opendronemap.org/t/the-accuracy-of-webodm-using-rtk-uavs/3937">https://community.opendronemap.org/t/the-accuracy-of-webodm-using-rtk-uavs/3937</a> (accessed 10 12, 2020).</p>
|
||
<p>Pascual, Manuel S. GIS Lounge: GIS Data: A Look at Accuracy, Precision, and Types of Errors. 11 6, 2011. <a class="reference external" href="https://www.gislounge.com/gis-data-a-look-at-accuracy-precision-and-types-of-errors/">https://www.gislounge.com/gis-data-a-look-at-accuracy-precision-and-types-of-errors/</a> (accessed 07 09, 2020).</p>
|
||
<p>Pix4D. «What is accuracy in an aerial mapping project?» Pix4D. 25 de 05 de 2019. <a class="reference external" href="https://www.pix4d.com/blog/accuracy-aerial-mapping">https://www.pix4d.com/blog/accuracy-aerial-mapping</a> (accessed 10 13, 2020).</p>
|
||
</section>
|
||
</section>
|
||
<section id="ground-control-points">
|
||
<h2>Ground Control Points<a class="headerlink" href="#ground-control-points" title="Permalink to this heading"></a></h2>
|
||
<section id="overview">
|
||
<h3>Overview<a class="headerlink" href="#overview" title="Permalink to this heading"></a></h3>
|
||
<p>Ground control points are useful for correcting distortions in the data and referencing the data to know coordinate systems.</p>
|
||
<p>A Ground Control Point (GCP) is a position measurement made on the ground, typically using a high precision GPS. (Toffanin 2019)</p>
|
||
<p>Ground control points can be set existing structures like pavement corners, lines on a parking lot or contrasting color floor tiles, otherwise can be set using targets placed on the ground.</p>
|
||
<p>Targets can be purchased or build with an ample variety of materials ranging from bucket lids to floor tiles.</p>
|
||
<section id="recommended-practices-for-gcp-setting">
|
||
<h4>Recommended practices for GCP setting<a class="headerlink" href="#recommended-practices-for-gcp-setting" title="Permalink to this heading"></a></h4>
|
||
<p>Keep ground control points visible for all camera locations. Consider the expected ground sampling distance, illumination, vegetation, buildings and all the existing obstacles.</p>
|
||
<p>Procure an evenly horizontal distribution of the GCPs within the project, covering high and low elevations. A minimum of 5 GCP works for most of the jobs, and for larger projects 8 – 10 are sufficient. Locate some points near the corners and others in the center, considering that GCP spacing should be larger than the image footprint so that you can’t see more than one GCP in a single image.</p>
|
||
<p>In order to ensure each GCP are found in at least 5 images, separate the points 10 to 30 meters from the perimeter of the project. This distance is dependent of the overlapping, so increasing overlapping should reduce the required distance from the perimeter.</p>
|
||
</section>
|
||
<section id="gcp-file-format">
|
||
<h4>GCP file format<a class="headerlink" href="#gcp-file-format" title="Permalink to this heading"></a></h4>
|
||
<p>The format of the GCP file is simple.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>The first line should contain the name of the projection used for the geo coordinates. This can be specified either as a PROJ string (e.g. <code class="docutils literal notranslate"><span class="pre">+proj=utm</span> <span class="pre">+zone=10</span> <span class="pre">+ellps=WGS84</span> <span class="pre">+datum=WGS84</span> <span class="pre">+units=m</span> <span class="pre">+no_defs</span></code>), EPSG code (e.g. <code class="docutils literal notranslate"><span class="pre">EPSG:4326</span></code>) or as a <code class="docutils literal notranslate"><span class="pre">WGS84</span> <span class="pre">UTM</span> <span class="pre"><zone>[N|S]</span></code> value (eg. <code class="docutils literal notranslate"><span class="pre">WGS84</span> <span class="pre">UTM</span> <span class="pre">16N</span></code>)</p></li>
|
||
<li><p>Subsequent lines are the X, Y & Z coordinates, your associated pixels, the image filename and optional extra fields, separated by tabs or spaces:</p></li>
|
||
<li><p>Avoid setting elevation values to “NaN” to indicate no value. This can cause processing failures. Instead use 0.0</p></li>
|
||
<li><p>Similarly decreasing the no. of digits after the decimal place for <cite>geo_x</cite> and <cite>geo_y</cite> can also reduce processing failures.</p></li>
|
||
<li><p>The 7th column (optional) typically contains the label of the GCP.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<p>GCP file format:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o"><</span><span class="n">projection</span><span class="o">></span>
|
||
<span class="n">geo_x</span> <span class="n">geo_y</span> <span class="n">geo_z</span> <span class="n">im_x</span> <span class="n">im_y</span> <span class="n">image_name</span> <span class="p">[</span><span class="n">gcp_name</span><span class="p">]</span> <span class="p">[</span><span class="n">extra1</span><span class="p">]</span> <span class="p">[</span><span class="n">extra2</span><span class="p">]</span>
|
||
<span class="o">...</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+</span><span class="n">proj</span><span class="o">=</span><span class="n">utm</span> <span class="o">+</span><span class="n">zone</span><span class="o">=</span><span class="mi">10</span> <span class="o">+</span><span class="n">ellps</span><span class="o">=</span><span class="n">WGS84</span> <span class="o">+</span><span class="n">datum</span><span class="o">=</span><span class="n">WGS84</span> <span class="o">+</span><span class="n">units</span><span class="o">=</span><span class="n">m</span> <span class="o">+</span><span class="n">no_defs</span>
|
||
<span class="mf">544256.7</span> <span class="mf">5320919.9</span> <span class="mi">5</span> <span class="mi">3044</span> <span class="mi">2622</span> <span class="n">IMG_0525</span><span class="o">.</span><span class="n">jpg</span>
|
||
<span class="mf">544157.7</span> <span class="mf">5320899.2</span> <span class="mi">5</span> <span class="mi">4193</span> <span class="mi">1552</span> <span class="n">IMG_0585</span><span class="o">.</span><span class="n">jpg</span>
|
||
<span class="mf">544033.4</span> <span class="mf">5320876.0</span> <span class="mi">5</span> <span class="mi">1606</span> <span class="mi">2763</span> <span class="n">IMG_0690</span><span class="o">.</span><span class="n">jpg</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>If you supply a GCP file called <code class="docutils literal notranslate"><span class="pre">gcp_list.txt</span></code> then ODM will automatically detect it. If it has another name you can specify using <code class="docutils literal notranslate"><span class="pre">--gcp</span> <span class="pre"><path></span></code>. If you have a gcp file and want to do georeferencing with exif instead, then you can specify <code class="docutils literal notranslate"><span class="pre">--use-exif</span></code>. If you have high precision GPS measurements in your images (RTK) and want to use that information along with a gcp file, you can specify <code class="docutils literal notranslate"><span class="pre">--force-gps</span></code>.</p>
|
||
<p><a class="reference external" href="http://diydrones.com/profiles/blogs/ground-control-points-gcps-for-aerial-photography">This post has some information about placing Ground Control Targets before a flight</a>, but if you already have images, you can find your own points in the images post facto. It’s important that you find high-contrast objects that are found in <strong>at least</strong> 3 photos, and that you find a minimum of 5 objects.</p>
|
||
<p>Sharp corners are good picks for GCPs. You should also place/find the GCPs evenly around your survey area.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">gcp_list.txt</span></code> file must be created in the base of your project folder.</p>
|
||
<p>For good results your file should have a minimum of 15 lines after the header (5 points with 3 images to each point).</p>
|
||
</section>
|
||
</section>
|
||
<section id="user-interfaces">
|
||
<h3>User Interfaces<a class="headerlink" href="#user-interfaces" title="Permalink to this heading"></a></h3>
|
||
<p>You can use one of two user interfaces for creating GCP files:</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p><a class="reference external" href="https://github.com/posm/posm-gcpi">POSM GCPi</a></p></li>
|
||
<li><p><a class="reference external" href="https://github.com/uav4geo/GCPEditorPro">GCP Editor Pro</a></p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<section id="id1">
|
||
<h4>POSM GCPi<a class="headerlink" href="#id1" title="Permalink to this heading"></a></h4>
|
||
<p>The POSM GCPi is loaded by default on WebODM. An example is available at <a class="reference external" href="http://demo.webodm.org/plugins/posm-gcpi/">the WebODM Demo</a>. To use this with known ground control XYZ values, one would do the following:</p>
|
||
<p>Create a GCP list that only includes gcp name (this is the label that will be seen in the GCP interface), x, y, and z, with a header with a proj4 string of your GCPs (make sure they are in a planar coordinate system, such as UTM. It should look something like this:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">+</span><span class="n">proj</span><span class="o">=</span><span class="n">utm</span> <span class="o">+</span><span class="n">zone</span><span class="o">=</span><span class="mi">37</span> <span class="o">+</span><span class="n">south</span> <span class="o">+</span><span class="n">ellps</span><span class="o">=</span><span class="n">WGS84</span> <span class="o">+</span><span class="n">datum</span><span class="o">=</span><span class="n">WGS84</span> <span class="o">+</span><span class="n">units</span><span class="o">=</span><span class="n">m</span> <span class="o">+</span><span class="n">no_defs</span>
|
||
<span class="n">gcp01</span> <span class="mf">529356.250827686</span> <span class="mf">9251137.5643209</span> <span class="mf">8.465</span>
|
||
<span class="n">gcp02</span> <span class="mf">530203.125367657</span> <span class="mf">9250140.80991621</span> <span class="mf">15.781</span>
|
||
<span class="n">gcp03</span> <span class="mf">530292.136003818</span> <span class="mf">9250745.02372435</span> <span class="mf">11.977</span>
|
||
<span class="n">gcp04</span> <span class="mf">530203.125367657</span> <span class="mf">9250140.80991621</span> <span class="mf">15.781</span>
|
||
<span class="n">gcp05</span> <span class="mf">530292.136003818</span> <span class="mf">9250745.02372435</span> <span class="mf">11.977</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Then one can load this GCP list into the interface, load the images, and place each of the GCPs in the image.</p>
|
||
</section>
|
||
<section id="id2">
|
||
<h4>GCP Editor Pro<a class="headerlink" href="#id2" title="Permalink to this heading"></a></h4>
|
||
<p>This app needs to be installed separately or can be loaded as a WebODM plugin from <a class="reference external" href="https://github.com/uav4geo/GCPEditorPro">https://github.com/uav4geo/GCPEditorPro</a></p>
|
||
<p>Create a CSV file that includes the gcp name, northing, easting and elevation.</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">GCP</span> <span class="n">Label</span><span class="p">,</span><span class="n">Northing</span><span class="p">,</span><span class="n">Easting</span><span class="p">,</span><span class="n">Elevation</span>
|
||
<span class="n">gcp01</span><span class="p">,</span><span class="mf">529356.250827686</span><span class="p">,</span><span class="mf">9251137.5643209</span><span class="p">,</span><span class="mf">8.465</span>
|
||
<span class="n">gcp02</span><span class="p">,</span><span class="mf">530203.125367657</span><span class="p">,</span><span class="mf">9250140.80991621</span><span class="p">,</span><span class="mf">15.781</span>
|
||
<span class="o">...</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Then import the CSV from the main screen and type <code class="docutils literal notranslate"><span class="pre">+proj=utm</span> <span class="pre">+zone=37</span> <span class="pre">+south</span> <span class="pre">+ellps=WGS84</span> <span class="pre">+datum=WGS84</span> <span class="pre">+units=m</span> <span class="pre">+no_defs</span></code> in the <code class="docutils literal notranslate"><span class="pre">EPSG/PROJ</span></code> box.</p>
|
||
<p>The following screen will display a map from where to select the GCPs to tag and import the respective images.</p>
|
||
</section>
|
||
</section>
|
||
<section id="id3">
|
||
<h3>References<a class="headerlink" href="#id3" title="Permalink to this heading"></a></h3>
|
||
<p>Toffanin, Piero. <a class="reference external" href="https://odmbook.com/">Open Drone Map: The Missing Guide.</a> MasseranoLabs LLC, 2019.</p>
|
||
</section>
|
||
</section>
|
||
<section id="image-geolocation-files">
|
||
<h2>Image Geolocation Files<a class="headerlink" href="#image-geolocation-files" title="Permalink to this heading"></a></h2>
|
||
<p>By default ODM will use the GPS information embedded in the images, if it is available. Sometimes images do not contain GPS information, or a user wishes to override the information with more accurate data (such as RTK).</p>
|
||
<p>Starting from ODM <code class="docutils literal notranslate"><span class="pre">2.0</span></code> people can supply an image geolocation file (geo) for this purpose.</p>
|
||
<p>The format of the image geolocation file is simple.</p>
|
||
<blockquote>
|
||
<div><ul class="simple">
|
||
<li><p>The first line should contain the name of the projection used for the geo coordinates. This can be specified either as a PROJ string (e.g. <code class="docutils literal notranslate"><span class="pre">+proj=utm</span> <span class="pre">+zone=10</span> <span class="pre">+ellps=WGS84</span> <span class="pre">+datum=WGS84</span> <span class="pre">+units=m</span> <span class="pre">+no_defs</span></code>), EPSG code (e.g. <code class="docutils literal notranslate"><span class="pre">EPSG:4326</span></code>) or as a <code class="docutils literal notranslate"><span class="pre">WGS84</span> <span class="pre">UTM</span> <span class="pre"><zone>[N|S]</span></code> value (eg. <code class="docutils literal notranslate"><span class="pre">WGS84</span> <span class="pre">UTM</span> <span class="pre">16N</span></code>)</p></li>
|
||
<li><p>Subsequent lines are the image filename, X, Y & Z (optional) coordinates, the camera angles (optional, currently used only for radiometric calibration) and the horizontal/vertical accuracy (optional):</p></li>
|
||
<li><p>Camera angles can be set to <code class="docutils literal notranslate"><span class="pre">0</span></code> if they are not available.</p></li>
|
||
<li><p>The 10th column (optional) can contain extra fields, such as a label.</p></li>
|
||
</ul>
|
||
</div></blockquote>
|
||
<p>File format:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o"><</span><span class="n">projection</span><span class="o">></span>
|
||
<span class="n">image_name</span> <span class="n">geo_x</span> <span class="n">geo_y</span> <span class="p">[</span><span class="n">geo_z</span><span class="p">]</span> <span class="p">[</span><span class="n">yaw</span> <span class="p">(</span><span class="n">degrees</span><span class="p">)]</span> <span class="p">[</span><span class="n">pitch</span> <span class="p">(</span><span class="n">degrees</span><span class="p">)]</span> <span class="p">[</span><span class="n">roll</span> <span class="p">(</span><span class="n">degrees</span><span class="p">)]</span> <span class="p">[</span><span class="n">horz</span> <span class="n">accuracy</span> <span class="p">(</span><span class="n">meters</span><span class="p">)]</span> <span class="p">[</span><span class="n">vert</span> <span class="n">accuracy</span> <span class="p">(</span><span class="n">meters</span><span class="p">)]</span> <span class="p">[</span><span class="n">extras</span><span class="o">...</span><span class="p">]</span>
|
||
<span class="o">...</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">EPSG</span><span class="p">:</span><span class="mi">4326</span>
|
||
<span class="n">DJI_0028</span><span class="o">.</span><span class="n">JPG</span> <span class="o">-</span><span class="mf">91.9942096111111</span> <span class="mf">46.84252125</span> <span class="mf">198.609</span>
|
||
<span class="n">DJI_0032</span><span class="o">.</span><span class="n">JPG</span> <span class="o">-</span><span class="mf">91.9938293055556</span> <span class="mf">46.8424584444444</span> <span class="mf">198.609</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>If you supply a file called <code class="docutils literal notranslate"><span class="pre">geo.txt</span></code> then ODM will automatically detect it. If it has another name you can specify using <code class="docutils literal notranslate"><span class="pre">--geo</span> <span class="pre"><path></span></code>.</p>
|
||
<p>The <code class="docutils literal notranslate"><span class="pre">geo.txt</span></code> file must be created in the base of your project folder or when using WebODM, uploaded with the raw jpg or tif input files.</p>
|
||
</section>
|
||
<section id="improving-relative-accuracy">
|
||
<h2>Improving relative accuracy<a class="headerlink" href="#improving-relative-accuracy" title="Permalink to this heading"></a></h2>
|
||
<p>Georeferencing by default is done using GPS (GNSS) or GCPs (if provided).</p>
|
||
<p>Starting from ODM <code class="docutils literal notranslate"><span class="pre">3.0.2</span></code> people can supply a reference alignment file to georeference the program outputs. The reconstruction will be initially performed using GPS/GCPs and will subsequently be aligned to the reference model via a linear scaling/rotation/shift operation.</p>
|
||
<p>If you supply a file called <code class="docutils literal notranslate"><span class="pre">align.laz</span></code>, <code class="docutils literal notranslate"><span class="pre">align.las</span></code> or <code class="docutils literal notranslate"><span class="pre">align.tif</span></code> (single band GeoTIFF DEM) then ODM will automatically detect it and attempt to align outputs to this reference model. If it has another name you can specify using <code class="docutils literal notranslate"><span class="pre">--align</span> <span class="pre"><path></span></code>.</p>
|
||
<p>The alignment file must be created in the base of your project folder. The base folder is usually where you have stored your images. If you are using WebODM or NodeODM, then upload the align file with your images. If resizing your images in WebODM, use an <code class="docutils literal notranslate"><span class="pre">align.laz</span></code> or <code class="docutils literal notranslate"><span class="pre">align.las</span></code> file instead of a tif.</p>
|
||
<section id="multi-temporal-datasets">
|
||
<h3>Multi-temporal Datasets<a class="headerlink" href="#multi-temporal-datasets" title="Permalink to this heading"></a></h3>
|
||
<p>When previously mapped sites need revisited, OpenDroneMap can align multiple versions of a dataset through time by using a prior point cloud or digital elevation model. As the prior point cloud <a class="reference external" href="https://community.opendronemap.org/t/tips-to-increase-same-site-temporal-consistency/22161/7">seems to provide better results</a>, that is the approach we will review here.</p>
|
||
<p><strong>Workflow for multi-temporal datasets:</strong></p>
|
||
<ol class="arabic">
|
||
<li><p>Process your original data. This step doesn’t require a ground control point file, but use one if absolute accuracy is a project requirement</p></li>
|
||
<li><p>Download the Point Cloud from your first processed dataset as an LAZ file type (default). Rename the point cloud to align.laz</p></li>
|
||
<li><p>Include that LAZ file with each of your subsequent processing. If you are using command line ODM, include it in the images directory. If uploading, simply upload with your raw images for processing</p></li>
|
||
<li><p>Check your log. It should include a line near the top that indicates it has set align to a path value, something like this:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">Initializing</span> <span class="n">ODM</span> <span class="mf">3.5.3</span> <span class="o">-</span> <span class="n">Tue</span> <span class="n">Oct</span> <span class="mi">15</span> <span class="mi">05</span><span class="p">:</span><span class="mi">01</span><span class="p">:</span><span class="mi">43</span> <span class="mi">2024</span>
|
||
<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="o">==============</span>
|
||
<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="mi">3</span><span class="n">d_tiles</span><span class="p">:</span> <span class="kc">False</span>
|
||
<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">align</span><span class="p">:</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">data</span><span class="o">/</span><span class="n">bc14fa2c</span><span class="o">-</span><span class="n">ba5c</span><span class="o">-</span><span class="mi">4</span><span class="n">b85</span><span class="o">-</span><span class="mi">99</span><span class="n">b0</span><span class="o">-</span><span class="mi">0</span><span class="n">b7ff715b210</span><span class="o">/</span><span class="n">gcp</span><span class="o">/</span><span class="n">align</span><span class="o">.</span><span class="n">laz</span>
|
||
<span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">auto_boundary</span><span class="p">:</span> <span class="kc">True</span>
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
<p><strong>Output example for aligned datasets:</strong></p>
|
||
<figure class="align-center">
|
||
<img alt="Animated gif comparing two separately processed, but aligned digital surface models." src="../_images/align_pc.gif" />
|
||
</figure>
|
||
<p>Animated gif comparing two separately processed, but aligned digital surface models.</p>
|
||
</section>
|
||
<section id="aligning-large-datasets">
|
||
<h3>Aligning Large Datasets<a class="headerlink" href="#aligning-large-datasets" title="Permalink to this heading"></a></h3>
|
||
<p>When attempting to process very large datasets it may very well be the case that one needs to devide a large set of images into smaller more manageable chunks for ease of processing.This process however, may introduce some uncertainty with respect to the alignment of all the processed outputs.To make sure that all point clouds and terrain/suface models are seamlessly alighn in preparation for merging we follow the simple techniques outlined below.</p>
|
||
<p><strong>Workflow for aligning large datasets:</strong></p>
|
||
<p>#.Split the full compliment of images into manageable chunks. E.g. If you have flown and collected a total of 1000 images but you know your processor cannot handle all these images at once, you may want to devide these images into four sets of submodels with 250 images each.
|
||
#.Process the first dataset with theDigital Surface Model (DSM) option enabled.
|
||
#.Download the DSM from first dataseta in its raw-tiff format and rename it to ‘align.tif’
|
||
#.Load the second dataset together with the align.tif
|
||
#.Process the second dataset (including the align.tif file)
|
||
#.Repeat until all submodels have been processed.</p>
|
||
<p><a class="reference external" href="https://github.com/opendronemap/docs#how-to-make-your-first-contribution">Learn to edit</a> and help improve <a class="reference external" href="https://github.com/OpenDroneMap/docs/blob/publish/source/map-accuracy.rst">this page</a>!</p>
|
||
</section>
|
||
</section>
|
||
</section>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
|
||
<a href="../outputs/" class="btn btn-neutral float-left" title="OpenDroneMap Outputs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
|
||
<a href="../multispectral/" class="btn btn-neutral float-right" title="Multispectral and Thermal" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||
</div>
|
||
|
||
<hr/>
|
||
|
||
<div role="contentinfo">
|
||
<p>© Copyright 2020, OpenDroneMap.</p>
|
||
</div>
|
||
|
||
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
||
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
||
|
||
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</div>
|
||
<script>
|
||
jQuery(function () {
|
||
SphinxRtdTheme.Navigation.enable(true);
|
||
});
|
||
</script>
|
||
|
||
</body>
|
||
</html> |