/** * Supports multi-polygons and multiple temporal bounds. Creates all matchings between polygon and * temporal bounds. * * @param startTime * @param endTime * @param queryGeometry * @return */ private static Constraints createSpatialTemporalConstraints( final TemporalConstraints temporalConstraints, final Geometry queryGeometry) { final Constraints geoConstraints = GeometryUtils.basicConstraintsFromGeometry(queryGeometry); final Constraints timeConstraints = createConstraints(temporalConstraints, false); return geoConstraints.merge(timeConstraints); }
/** * Supports multi-polygons and multiple temporal bounds. Creates all matchings between polygon and * temporal bounds. * * @param startTime * @param endTime * @param queryGeometry * @return */ private static Constraints createSpatialTemporalConstraints( final Interval[] intervals, final Geometry queryGeometry) { final Constraints geoConstraints = GeometryUtils.basicConstraintsFromGeometry(queryGeometry); final Constraints timeConstraints = createConstraints(intervals, false); return geoConstraints.merge(timeConstraints); }
/** * Compose a time constraints. When the provided constraints do not fulfill the indexed * dimensions, compose constraints from statistics. * * @param featureType * @param timeDescriptors * @param statsMap * @param timeBoundsSet * @return */ public static Constraints composeTimeConstraints( final SimpleFeatureType featureType, final TimeDescriptors timeDescriptors, final Map<StatisticsId, InternalDataStatistics<SimpleFeature, ?, ?>> statsMap, final TemporalConstraintsSet timeBoundsSet) { final TemporalConstraints timeBounds = TimeUtils.getTemporalConstraintsForDescriptors(timeDescriptors, timeBoundsSet); return (timeBounds != null) && !timeBounds.isEmpty() ? ExplicitSpatialTemporalQuery.createConstraints(timeBounds, false) : new Constraints(getTimeConstraintsFromIndex(timeDescriptors, statsMap)); }
return ExplicitSpatialTemporalQuery.createConstraints( startRange.asTemporalRange().union(endRange.asTemporalRange()), true); } else if (endRange != null) { return ExplicitSpatialTemporalQuery.createConstraints(endRange.asTemporalRange(), true); } else if (startRange != null) { return ExplicitSpatialTemporalQuery.createConstraints(startRange.asTemporalRange(), true); timeDescriptors.getTime().getLocalName()).build().getId())); if (timeStat != null) { return ExplicitSpatialTemporalQuery.createConstraints(timeStat.asTemporalRange(), true);
/** * If composed constraints matched statistics constraints, are empty or null, then return empty * constraint set. * * @param featureType * @param timeDescriptors * @param statsMap * @param timeBoundsSet * @return */ public static Constraints composeTimeBoundedConstraints( final SimpleFeatureType featureType, final TimeDescriptors timeDescriptors, final Map<StatisticsId, InternalDataStatistics<SimpleFeature, ?, ?>> statsMap, final TemporalConstraintsSet timeBoundsSet) { if ((timeBoundsSet == null) || timeBoundsSet.isEmpty() || !timeDescriptors.hasTime()) { return new Constraints(); } final TemporalConstraints boundsTemporalConstraints = TimeUtils.getTemporalConstraintsForDescriptors(timeDescriptors, timeBoundsSet); if (boundsTemporalConstraints.isEmpty()) { return new Constraints(); } final Constraints indexTimeConstraints = new Constraints(QueryIndexHelper.getTimeConstraintsFromIndex(timeDescriptors, statsMap)); final Constraints boundsTimeConstraints = ExplicitSpatialTemporalQuery.createConstraints(boundsTemporalConstraints, false); return (boundsTimeConstraints.matches(indexTimeConstraints)) ? new Constraints() : boundsTimeConstraints; }
ExplicitSpatialTemporalQuery.createConstraints(temporalConstraints, false); constraints = geoConstraints.getConstraints().merge(timeConstraints);