diff options
| author | AlexSm <[email protected]> | 2024-01-04 15:09:05 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-01-04 15:09:05 +0100 |
| commit | dab291146f6cd7d35684e3a1150e5bb1c412982c (patch) | |
| tree | 36ef35f6cacb6432845a4a33f940c95871036b32 /contrib/clickhouse/src/Functions/polygonArea.cpp | |
| parent | 63660ad5e7512029fd0218e7a636580695a24e1f (diff) | |
Library import 5, delete go dependencies (#832)
* Library import 5, delete go dependencies
* Fix yt client
Diffstat (limited to 'contrib/clickhouse/src/Functions/polygonArea.cpp')
| -rw-r--r-- | contrib/clickhouse/src/Functions/polygonArea.cpp | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/contrib/clickhouse/src/Functions/polygonArea.cpp b/contrib/clickhouse/src/Functions/polygonArea.cpp deleted file mode 100644 index e49a4eb9fb3..00000000000 --- a/contrib/clickhouse/src/Functions/polygonArea.cpp +++ /dev/null @@ -1,110 +0,0 @@ -#include <Functions/FunctionFactory.h> -#include <Functions/geometryConverters.h> - -#include <boost/geometry.hpp> -#include <boost/geometry/geometries/point_xy.hpp> -#include <boost/geometry/geometries/polygon.hpp> - -#include <Common/logger_useful.h> - -#include <Columns/ColumnArray.h> -#include <Columns/ColumnTuple.h> -#include <Columns/ColumnsNumber.h> -#include <DataTypes/DataTypeArray.h> -#include <DataTypes/DataTypeTuple.h> -#include <DataTypes/DataTypeCustomGeo.h> -#include <DataTypes/DataTypesNumber.h> - -#include <memory> -#include <string> - -namespace DB -{ - -namespace ErrorCodes -{ - extern const int ILLEGAL_TYPE_OF_ARGUMENT; -} - -template <typename Point> -class FunctionPolygonArea : public IFunction -{ -public: - static inline const char * name; - - explicit FunctionPolygonArea() = default; - - static FunctionPtr create(ContextPtr) - { - return std::make_shared<FunctionPolygonArea>(); - } - - String getName() const override - { - return name; - } - - bool isVariadic() const override - { - return false; - } - - size_t getNumberOfArguments() const override - { - return 1; - } - - DataTypePtr getReturnTypeImpl(const DataTypes &) const override - { - return std::make_shared<DataTypeFloat64>(); - } - - bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & /*arguments*/) const override { return true; } - - ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & /*result_type*/, size_t input_rows_count) const override - { - auto res_column = ColumnFloat64::create(); - auto & res_data = res_column->getData(); - res_data.reserve(input_rows_count); - - callOnGeometryDataType<Point>(arguments[0].type, [&] (const auto & type) - { - using TypeConverter = std::decay_t<decltype(type)>; - using Converter = typename TypeConverter::Type; - - if constexpr (std::is_same_v<ColumnToPointsConverter<Point>, Converter>) - throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT, "The argument of function {} must not be Point", getName()); - else - { - auto geometries = Converter::convert(arguments[0].column->convertToFullColumnIfConst()); - - for (size_t i = 0; i < input_rows_count; ++i) - res_data.emplace_back(boost::geometry::area(geometries[i])); - } - } - ); - - return res_column; - } - - bool useDefaultImplementationForConstants() const override - { - return true; - } -}; - -template <> -const char * FunctionPolygonArea<CartesianPoint>::name = "polygonAreaCartesian"; - -template <> -const char * FunctionPolygonArea<SphericalPoint>::name = "polygonAreaSpherical"; - - -REGISTER_FUNCTION(PolygonArea) -{ - factory.registerFunction<FunctionPolygonArea<CartesianPoint>>(); - factory.registerFunction<FunctionPolygonArea<SphericalPoint>>(); -} - - -} |
