GDAL
gdalalg_vector_sort.h
1/******************************************************************************
2*
3 * Project: GDAL
4 * Purpose: "gdal vector sort"
5 * Author: Daniel Baston
6 *
7 ******************************************************************************
8 * Copyright (c) 2025, ISciences LLC
9 *
10 * SPDX-License-Identifier: MIT
11 ****************************************************************************/
12
13#ifndef GDALALG_VECTOR_SORT_INCLUDED
14#define GDALALG_VECTOR_SORT_INCLUDED
15
16#include "gdalalg_vector_pipeline.h"
17#include "cpl_progress.h"
18
19#include <string>
20
22
23/************************************************************************/
24/* GDALVectorSortAlgorithm */
25/************************************************************************/
26
27class GDALVectorSortAlgorithm : public GDALVectorPipelineStepAlgorithm
28{
29 public:
30 static constexpr const char *NAME = "sort";
31 static constexpr const char *DESCRIPTION =
32 "Spatially order the features in a layer";
33 static constexpr const char *HELP_URL = "/programs/gdal_vector_sort.html";
34
35 explicit GDALVectorSortAlgorithm(bool standaloneStep = false);
36
37 bool IsNativelyStreamingCompatible() const override
38 {
39 return false;
40 }
41
42 private:
43 bool RunStep(GDALPipelineStepRunContext &ctxt) override;
44
45 std::string m_geomField{};
46 std::string m_sortMethod{"hilbert"};
47 bool m_useTempfile{false};
48};
49
50/************************************************************************/
51/* GDALVectorSortAlgorithmStandalone */
52/************************************************************************/
53
54class GDALVectorSortAlgorithmStandalone final : public GDALVectorSortAlgorithm
55{
56 public:
57 GDALVectorSortAlgorithmStandalone()
58 : GDALVectorSortAlgorithm(/* standaloneStep = */ true)
59 {
60 }
61
62 ~GDALVectorSortAlgorithmStandalone() override;
63};
64
66
67#endif /* GDALALG_VECTOR_SORT_INCLUDED */