Source code for pydov.search.grondwaterfilter

# -*- coding: utf-8 -*-
"""Module containing the search classes to retrieve DOV groundwater screen
 data."""
from owslib.fes2 import And, Not, PropertyIsNull

from ..types.grondwaterfilter import GrondwaterFilter
from .abstract import AbstractSearch


[docs] class GrondwaterFilterSearch(AbstractSearch): """Search class to retrieve information about groundwater screens (GrondwaterFilter). """ def __init__(self, objecttype=GrondwaterFilter): """Initialisation. Parameters ---------- objecttype : subclass of pydov.types.abstract.AbstractDovType Reference to a class representing the GrondwaterFilter type. Optional: defaults to the GrondwaterFilter type containing the fields described in the documentation. """ super(GrondwaterFilterSearch, self).__init__('gw_meetnetten:meetnetten', objecttype)
[docs] def search(self, location=None, query=None, sort_by=None, return_fields=None, max_features=None): """Search for objects of this type. Provide `location` and/or `query` and/or `max_features`. When `return_fields` is None, all fields are returned. Excludes 'empty' filters (i.e. Putten without Filters) by extending the `query` with a not-null check on pkey_filter. Parameters ---------- location : pydov.util.location.AbstractLocationFilter or \ owslib.fes2.BinaryLogicOpType<AbstractLocationFilter> or \ owslib.fes2.UnaryLogicOpType<AbstractLocationFilter> Location filter limiting the features to retrieve. Can either be a single instance of a subclass of AbstractLocationFilter, or a combination using And, Or, Not of AbstractLocationFilters. query : owslib.fes2.OgcExpression OGC filter expression to use for searching. This can contain any combination of filter elements defined in owslib.fes2. The query should use the fields provided in `get_fields()`. Note that not all fields are currently supported as a search parameter. sort_by : owslib.fes2.SortBy, optional List of properties to sort by. return_fields : list<str> or tuple<str> or set<str> A list of fields to be returned in the output data. This should be a subset of the fields provided in `get_fields()`. Note that not all fields are currently supported as return fields. max_features : int Limit the maximum number of features to request. Returns ------- pandas.core.frame.DataFrame DataFrame containing the output of the search query. Raises ------ pydov.util.errors.InvalidSearchParameterError When not one of `location` or `query` or `max_features` is provided. pydov.util.errors.InvalidFieldError When at least one of the fields in `return_fields` is unknown. When a field that is only accessible as return field is used as a query parameter. When a field that can only be used as a query parameter is used as a return field. AttributeError When the argument supplied as return_fields is not a list, tuple or set. NotImplementedError This is an abstract method that should be implemented in a subclass. """ self._pre_search_validation(location, query, sort_by, return_fields, max_features) exclude_empty_filters = Not([PropertyIsNull( propertyname='pkey_filter')]) if query is not None: query = And([query, exclude_empty_filters]) else: query = exclude_empty_filters return super().search( location=location, query=query, sort_by=sort_by, return_fields=return_fields, max_features=max_features)