GDAL
gdalalg_raster_aspect.h
1/******************************************************************************
2 *
3 * Project: GDAL
4 * Purpose: "aspect" step of "raster pipeline"
5 * Author: Even Rouault <even dot rouault at spatialys.com>
6 *
7 ******************************************************************************
8 * Copyright (c) 2025, Even Rouault <even dot rouault at spatialys.com>
9 *
10 * SPDX-License-Identifier: MIT
11 ****************************************************************************/
12
13#ifndef GDALALG_RASTER_ASPECT_INCLUDED
14#define GDALALG_RASTER_ASPECT_INCLUDED
15
16#include "gdalalg_raster_pipeline.h"
17
18#include <limits>
19
21
22/************************************************************************/
23/* GDALRasterAspectAlgorithm */
24/************************************************************************/
25
26class GDALRasterAspectAlgorithm /* non final */
27 : public GDALRasterPipelineStepAlgorithm
28{
29 public:
30 static constexpr const char *NAME = "aspect";
31 static constexpr const char *DESCRIPTION = "Generate an aspect map";
32 static constexpr const char *HELP_URL = "/programs/gdal_raster_aspect.html";
33
34 explicit GDALRasterAspectAlgorithm(bool standaloneStep = false);
35
36 private:
37 bool RunStep(GDALPipelineStepRunContext &ctxt) override;
38
39 int m_band = 1;
40 std::string m_convention = "azimuth";
41 std::string m_gradientAlg = "Horn";
42 bool m_zeroForFlat = false;
43 bool m_noEdges = false;
44};
45
46/************************************************************************/
47/* GDALRasterAspectAlgorithmStandalone */
48/************************************************************************/
49
50class GDALRasterAspectAlgorithmStandalone final
51 : public GDALRasterAspectAlgorithm
52{
53 public:
54 GDALRasterAspectAlgorithmStandalone()
55 : GDALRasterAspectAlgorithm(/* standaloneStep = */ true)
56 {
57 }
58
59 ~GDALRasterAspectAlgorithmStandalone() override;
60};
61
63
64#endif /* GDALALG_RASTER_ASPECT_INCLUDED */