Module pygw.query.vector.vector_aggregation_query_builder

Source code
#
# Copyright (c) 2013-2022 Contributors to the Eclipse Foundation

#
# See the NOTICE file distributed with this work for additional information regarding copyright
# ownership. All rights reserved. This program and the accompanying materials are made available
# under the terms of the Apache License, Version 2.0 which accompanies this distribution and is
# available at http://www.apache.org/licenses/LICENSE-2.0.txt
# ===============================================================================================

from pygw.config import geowave_pkg
from ...base.envelope import EnvelopeTransformer
from ...base.interval import IntervalTransformer

from ...base.type_conversions import StringArrayType
from ..aggregation_query_builder import AggregationQueryBuilder
from .vector_query_constraints_factory import VectorQueryConstraintsFactory


class VectorAggregationQueryBuilder(AggregationQueryBuilder):
    """
    A builder for creating aggregation queries for vector data.
    """

    def __init__(self):
        j_agg_qbuilder = geowave_pkg.core.geotime.store.query.api.VectorAggregationQueryBuilder.newBuilder()
        super().__init__(j_agg_qbuilder)

    def constraints_factory(self):
        """
        Creates a constraints factory for vector queries.  The vector query constraint factory
        provides additional constraints specific to vector data.

        Returns:
            A `pygw.query.vector.VectorQueryConstraintsFactory`.
        """
        return VectorQueryConstraintsFactory(self._java_ref.constraintsFactory())

    def bbox_of_results(self, *type_names):
        """
        Convenience method for getting a bounding box of the results of a query. It uses the default geometry for a
        feature type which is also the indexed geometry.

        Args:
            type_names (str): The type names to get the bounding box of.
        Returns:
            This query builder.
        """
        self._java_transformer = EnvelopeTransformer()
        if type_names is None:
            self._java_ref.bboxOfResults()
        else:
            self._java_ref.bboxOfResults(StringArrayType().to_java(type_names))
        return self

    def bbox_of_results_for_geometry_field(self, type_name, geometry_field_name):
        """
        Convenience method for getting a bounding box of the results of a query.  This can be particularly useful if you
        want to calculate the bbox on a different field than the default/indexed Geometry.

        Args:
            type_name (str): The type to aggregate.
            geometry_field_name (str): The geometry field to get the bounding box of.
        Returns:
            This query builder.
        """
        self._java_transformer = EnvelopeTransformer()
        self._java_ref.bboxOfResultsForGeometryField(type_name, geometry_field_name)
        return self

    def time_range_of_results(self, *type_names):
        """
        Convenience method for getting a time range of the results of a query.  This uses inferred or hinted
        temporal attribute names.

        Args:
            type_names (str): The type names to get the time range of.
        Returns:
            This query builder.
        """
        self._java_transformer = IntervalTransformer()
        self._java_ref.timeRangeOfResults(StringArrayType().to_java(type_names))
        return self

    def time_range_of_results_for_time_field(self, type_name, time_field_name):
        """
        Convenience method for getting a time range of the results of a query.  This can be particularly useful if you
        want to calculate the time range on a specific time field.

        Args:
            type_name (str): The type to aggregate.
            time_field_name (str): The time field to get the range of.
        Returns:
            This query builder.
        """
        self._java_transformer = IntervalTransformer()
        self._java_ref.timeRangeOfResultsForTimeField(type_name, time_field_name)
        return self

    def min(self, type_name, numeric_field_name):
        """
        Convenience method for getting the minimum value of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the minimum value of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_min_agg = geowave_pkg.core.store.query.aggregate.FieldMinAggregation(j_field_parameter)
        return self.aggregate(type_name, j_min_agg)

    def max(self, type_name, numeric_field_name):
        """
        Convenience method for getting the maximum value of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the maximum value of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_max_agg = geowave_pkg.core.store.query.aggregate.FieldMaxAggregation(j_field_parameter)
        return self.aggregate(type_name, j_max_agg)

    def sum(self, type_name, numeric_field_name):
        """
        Convenience method for getting the sum of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the sum of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_sum_agg = geowave_pkg.core.store.query.aggregate.FieldSumAggregation(j_field_parameter)
        return self.aggregate(type_name, j_sum_agg)

Classes

class VectorAggregationQueryBuilder

A builder for creating aggregation queries for vector data.

Source code
class VectorAggregationQueryBuilder(AggregationQueryBuilder):
    """
    A builder for creating aggregation queries for vector data.
    """

    def __init__(self):
        j_agg_qbuilder = geowave_pkg.core.geotime.store.query.api.VectorAggregationQueryBuilder.newBuilder()
        super().__init__(j_agg_qbuilder)

    def constraints_factory(self):
        """
        Creates a constraints factory for vector queries.  The vector query constraint factory
        provides additional constraints specific to vector data.

        Returns:
            A `pygw.query.vector.VectorQueryConstraintsFactory`.
        """
        return VectorQueryConstraintsFactory(self._java_ref.constraintsFactory())

    def bbox_of_results(self, *type_names):
        """
        Convenience method for getting a bounding box of the results of a query. It uses the default geometry for a
        feature type which is also the indexed geometry.

        Args:
            type_names (str): The type names to get the bounding box of.
        Returns:
            This query builder.
        """
        self._java_transformer = EnvelopeTransformer()
        if type_names is None:
            self._java_ref.bboxOfResults()
        else:
            self._java_ref.bboxOfResults(StringArrayType().to_java(type_names))
        return self

    def bbox_of_results_for_geometry_field(self, type_name, geometry_field_name):
        """
        Convenience method for getting a bounding box of the results of a query.  This can be particularly useful if you
        want to calculate the bbox on a different field than the default/indexed Geometry.

        Args:
            type_name (str): The type to aggregate.
            geometry_field_name (str): The geometry field to get the bounding box of.
        Returns:
            This query builder.
        """
        self._java_transformer = EnvelopeTransformer()
        self._java_ref.bboxOfResultsForGeometryField(type_name, geometry_field_name)
        return self

    def time_range_of_results(self, *type_names):
        """
        Convenience method for getting a time range of the results of a query.  This uses inferred or hinted
        temporal attribute names.

        Args:
            type_names (str): The type names to get the time range of.
        Returns:
            This query builder.
        """
        self._java_transformer = IntervalTransformer()
        self._java_ref.timeRangeOfResults(StringArrayType().to_java(type_names))
        return self

    def time_range_of_results_for_time_field(self, type_name, time_field_name):
        """
        Convenience method for getting a time range of the results of a query.  This can be particularly useful if you
        want to calculate the time range on a specific time field.

        Args:
            type_name (str): The type to aggregate.
            time_field_name (str): The time field to get the range of.
        Returns:
            This query builder.
        """
        self._java_transformer = IntervalTransformer()
        self._java_ref.timeRangeOfResultsForTimeField(type_name, time_field_name)
        return self

    def min(self, type_name, numeric_field_name):
        """
        Convenience method for getting the minimum value of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the minimum value of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_min_agg = geowave_pkg.core.store.query.aggregate.FieldMinAggregation(j_field_parameter)
        return self.aggregate(type_name, j_min_agg)

    def max(self, type_name, numeric_field_name):
        """
        Convenience method for getting the maximum value of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the maximum value of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_max_agg = geowave_pkg.core.store.query.aggregate.FieldMaxAggregation(j_field_parameter)
        return self.aggregate(type_name, j_max_agg)

    def sum(self, type_name, numeric_field_name):
        """
        Convenience method for getting the sum of a numeric field from the results of a query.

        Args:
            type_name (str): The type to aggregate.
            numeric_field_name (str): The numeric field to get the sum of.
        Returns:
            This query builder.
        """
        j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
        j_sum_agg = geowave_pkg.core.store.query.aggregate.FieldSumAggregation(j_field_parameter)
        return self.aggregate(type_name, j_sum_agg)

Ancestors

Methods

def bbox_of_results(self, *type_names)

Convenience method for getting a bounding box of the results of a query. It uses the default geometry for a feature type which is also the indexed geometry.

Args

type_names : str
The type names to get the bounding box of.

Returns

This query builder.

Source code
def bbox_of_results(self, *type_names):
    """
    Convenience method for getting a bounding box of the results of a query. It uses the default geometry for a
    feature type which is also the indexed geometry.

    Args:
        type_names (str): The type names to get the bounding box of.
    Returns:
        This query builder.
    """
    self._java_transformer = EnvelopeTransformer()
    if type_names is None:
        self._java_ref.bboxOfResults()
    else:
        self._java_ref.bboxOfResults(StringArrayType().to_java(type_names))
    return self
def bbox_of_results_for_geometry_field(self, type_name, geometry_field_name)

Convenience method for getting a bounding box of the results of a query. This can be particularly useful if you want to calculate the bbox on a different field than the default/indexed Geometry.

Args

type_name : str
The type to aggregate.
geometry_field_name : str
The geometry field to get the bounding box of.

Returns

This query builder.

Source code
def bbox_of_results_for_geometry_field(self, type_name, geometry_field_name):
    """
    Convenience method for getting a bounding box of the results of a query.  This can be particularly useful if you
    want to calculate the bbox on a different field than the default/indexed Geometry.

    Args:
        type_name (str): The type to aggregate.
        geometry_field_name (str): The geometry field to get the bounding box of.
    Returns:
        This query builder.
    """
    self._java_transformer = EnvelopeTransformer()
    self._java_ref.bboxOfResultsForGeometryField(type_name, geometry_field_name)
    return self
def constraints_factory(self)

Creates a constraints factory for vector queries. The vector query constraint factory provides additional constraints specific to vector data.

Returns

A pygw.query.vector.VectorQueryConstraintsFactory.

Source code
def constraints_factory(self):
    """
    Creates a constraints factory for vector queries.  The vector query constraint factory
    provides additional constraints specific to vector data.

    Returns:
        A `pygw.query.vector.VectorQueryConstraintsFactory`.
    """
    return VectorQueryConstraintsFactory(self._java_ref.constraintsFactory())
def max(self, type_name, numeric_field_name)

Convenience method for getting the maximum value of a numeric field from the results of a query.

Args

type_name : str
The type to aggregate.
numeric_field_name : str
The numeric field to get the maximum value of.

Returns

This query builder.

Source code
def max(self, type_name, numeric_field_name):
    """
    Convenience method for getting the maximum value of a numeric field from the results of a query.

    Args:
        type_name (str): The type to aggregate.
        numeric_field_name (str): The numeric field to get the maximum value of.
    Returns:
        This query builder.
    """
    j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
    j_max_agg = geowave_pkg.core.store.query.aggregate.FieldMaxAggregation(j_field_parameter)
    return self.aggregate(type_name, j_max_agg)
def min(self, type_name, numeric_field_name)

Convenience method for getting the minimum value of a numeric field from the results of a query.

Args

type_name : str
The type to aggregate.
numeric_field_name : str
The numeric field to get the minimum value of.

Returns

This query builder.

Source code
def min(self, type_name, numeric_field_name):
    """
    Convenience method for getting the minimum value of a numeric field from the results of a query.

    Args:
        type_name (str): The type to aggregate.
        numeric_field_name (str): The numeric field to get the minimum value of.
    Returns:
        This query builder.
    """
    j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
    j_min_agg = geowave_pkg.core.store.query.aggregate.FieldMinAggregation(j_field_parameter)
    return self.aggregate(type_name, j_min_agg)
def sum(self, type_name, numeric_field_name)

Convenience method for getting the sum of a numeric field from the results of a query.

Args

type_name : str
The type to aggregate.
numeric_field_name : str
The numeric field to get the sum of.

Returns

This query builder.

Source code
def sum(self, type_name, numeric_field_name):
    """
    Convenience method for getting the sum of a numeric field from the results of a query.

    Args:
        type_name (str): The type to aggregate.
        numeric_field_name (str): The numeric field to get the sum of.
    Returns:
        This query builder.
    """
    j_field_parameter = geowave_pkg.core.store.query.aggregate.FieldNameParam(numeric_field_name)
    j_sum_agg = geowave_pkg.core.store.query.aggregate.FieldSumAggregation(j_field_parameter)
    return self.aggregate(type_name, j_sum_agg)
def time_range_of_results(self, *type_names)

Convenience method for getting a time range of the results of a query. This uses inferred or hinted temporal attribute names.

Args

type_names : str
The type names to get the time range of.

Returns

This query builder.

Source code
def time_range_of_results(self, *type_names):
    """
    Convenience method for getting a time range of the results of a query.  This uses inferred or hinted
    temporal attribute names.

    Args:
        type_names (str): The type names to get the time range of.
    Returns:
        This query builder.
    """
    self._java_transformer = IntervalTransformer()
    self._java_ref.timeRangeOfResults(StringArrayType().to_java(type_names))
    return self
def time_range_of_results_for_time_field(self, type_name, time_field_name)

Convenience method for getting a time range of the results of a query. This can be particularly useful if you want to calculate the time range on a specific time field.

Args

type_name : str
The type to aggregate.
time_field_name : str
The time field to get the range of.

Returns

This query builder.

Source code
def time_range_of_results_for_time_field(self, type_name, time_field_name):
    """
    Convenience method for getting a time range of the results of a query.  This can be particularly useful if you
    want to calculate the time range on a specific time field.

    Args:
        type_name (str): The type to aggregate.
        time_field_name (str): The time field to get the range of.
    Returns:
        This query builder.
    """
    self._java_transformer = IntervalTransformer()
    self._java_ref.timeRangeOfResultsForTimeField(type_name, time_field_name)
    return self

Inherited members