# hausdorff

The `hausdorff` command is used to compute the Hausdorff distance between two point clouds. In this context, the Hausdorff distance is the greatest of all Euclidean distances from a point in one point cloud to the closest point in the other point cloud.

More formally, for two non-empty subsets \(X\) and \(Y\), the Hausdorff distance \(d_H(X,Y)\) is

\[d_H(X,Y) = \operatorname*{max} \big\{ \operatorname*{sup}_{x \in X} \operatorname*{inf}_{y \in Y} d(x,y), \operatorname*{sup}_{y \in Y} \operatorname*{inf}_{x \in X} d(x,y)\big\}\]

where \(\operatorname*{sup}\) and \(\operatorname*{inf}\) are the supremum and infimum respectively.

    $ pdal hausdorff <source> <candidate>

    --source arg     Source filename
    --candidate arg  Candidate filename

The algorithm makes no distinction between source and candidate files (i.e., they can be transposed with no affect on the computed distance).

The command returns 0 along with a JSON-formatted message summarizing the PDAL version, source and candidate filenames, and the Hausdorff distance. Identical point clouds will return a Hausdorff distance of 0.

    $ pdal hausdorff source.las candidate.las
    {
      "filenames":
      [
        "\/path\/to\/source.las",
        "\/path\/to\/candidate.las"
      ],
      "hausdorff": 1.303648726,
      "pdal_version": "1.3.0 (git-version: 191301)"
    }

Note

The `hausdorff` is computed for XYZ coordinates only and as such says nothing about differences in other dimensions or metadata.