/** * Get valid FOI identifiers for SOS 2.0 * * @param featureIDs FOI identifiers to test * @param version SOS version * * @return valid FOI identifiers */ public static Collection<String> getFeatureIDs(final Collection<String> featureIDs, final String version) { if (Sos2Constants.SERVICEVERSION.equals(version)) { return featureIDs.stream() .filter(featureID -> checkFeatureOfInterestIdentifierForSosV2(featureID, version)) .collect(toList()); } return featureIDs; }
public static URL getGetCapabilitiesKVPRequest(String serviceURL) throws MalformedURLException { return getGetCapabilitiesKVPRequest(new URL(serviceURL)); }
@Override public Set<String> getChildOfferings(final Set<String> offeringIdentifiers, final boolean fullHierarchy, final boolean includeSelves) { return getHierarchy(this.childOfferingsForOfferings, offeringIdentifiers, fullHierarchy, includeSelves); }
@Override protected void setOperationsMetadata(OwsOperation operation, String service, String version) throws OwsExceptionReport { addQueryableProcedureParameter(operation); //addPublishedProcedureParameter(operation); addPublishedObservablePropertyParameter(operation); addPublishedFeatureOfInterestParameter(operation, version); addOfferingParameter(operation); operation.addAnyParameterValue(ResultFilterConstants.METADATA_RESULT_FILTER); final Collection<String> featureIDs = SosHelper.getFeatureIDs(getCache().getFeaturesOfInterest(), version); SosEnvelope envelope = null; if (featureIDs != null && !featureIDs.isEmpty()) { envelope = getCache().getGlobalEnvelope(); } if (envelope != null && envelope.isSetEnvelope()) { operation.addRangeParameterValue(Sos2Constants.GetObservationParams.spatialFilter, SosHelper.getMinMaxFromEnvelope(envelope.getEnvelope())); } else { operation.addAnyParameterValue(Sos2Constants.GetObservationParams.spatialFilter); } }
protected OwsDomain getFeatureOfInterestParameter(String service, String version) { return getFeatureOfInterestParameter(service, version, SosHelper.getFeatureIDs(getCache().getFeaturesOfInterest(), version)); }
|| parameterValues.get(parameterValues.size() - 1).startsWith(getSrsNamePrefix())) { hasSrid = true; srid = SosHelper.parseSrsName(parameterValues.get(parameterValues.size() - 1));
private String createKvpDescribeSensorOrReturnIdentifier(String identifier, String format) throws CodedException { String href = identifier; if (getProcedureCreationContext().getBindingRepository().isBindingSupported(MediaTypes.APPLICATION_KVP)) { final String version = getProcedureCreationContext().getServiceOperatorRepository().getSupportedVersions(SosConstants.SOS) .contains(Sos2Constants.SERVICEVERSION) ? Sos2Constants.SERVICEVERSION : Sos1Constants.SERVICEVERSION; try { href = SosHelper.getDescribeSensorUrl(version, getProcedureCreationContext().getServiceURL(), identifier, format).toString(); } catch (MalformedURLException murle) { LOGGER.error("Error while encoding DescribeSensor URL!", murle); } } try { String version = getProcedureCreationContext().getServiceOperatorRepository().isVersionSupported(SosConstants.SOS, Sos2Constants.SERVICEVERSION) ? Sos2Constants.SERVICEVERSION : Sos1Constants.SERVICEVERSION; return SosHelper.getDescribeSensorUrl(version, getProcedureCreationContext().getServiceURL(), identifier, format).toString(); } catch (MalformedURLException murle) { LOGGER.error("Error while encoding DescribeSensor URL!", murle); return identifier; } }
public static MinMax<String> getMinMaxFromEnvelope(final ReferencedEnvelope envelope) { if (envelope.isSetEnvelope()) { if (envelope.isSetMinMaxZ()) { return new MinMax<String>().setMaximum(Joiner.on(' ').join(envelope.getEnvelope().getMaxX(), envelope.getEnvelope().getMaxY(), envelope.getMaxZ())) .setMinimum(Joiner.on(' ').join(envelope.getEnvelope().getMinX(), envelope.getEnvelope().getMinY(), envelope.getMinZ())); } else { return getMinMaxFromEnvelope(envelope.getEnvelope()); } } return new MinMax<String>(); }
private void collectAndUpdateOMObservationFromSOSCore(ObservationsSearchResponse observationsSearchResponse, ArrayList<ObservationType> xb_observationList) throws OwsExceptionReport { Map<String,String> inDocumentReferenceToFeatureId = new HashMap<String, String>(); for (ObservationData xb_obsData : observationsSearchResponse.getObservationDataArrayXB()) { SosHelper.checkFreeMemory(); OMObservationType xb_observation = xb_obsData.getOMObservation(); ObservationType xb_restObservation = createRestObservationFromOMObservation(ObservationType.Factory.newInstance(), xb_observation, inDocumentReferenceToFeatureId); xb_observationList.add(xb_restObservation); } }
protected OwsDomain getPublishedFeatureOfInterestParameter(String service, String version) { return getFeatureOfInterestParameter(service, version, SosHelper.getFeatureIDs(getCache().getPublishedFeatureOfInterest(), version)); }
|| parameterValues.get(parameterValues.size() - 1).startsWith(getSrsNamePrefix())) { hasSrid = true; srid = SosHelper.parseSrsName(parameterValues.get(parameterValues.size() - 1));
: Sos1Constants.SERVICEVERSION; String pdf = childProcedure.getDefaultElementEncoding(); component.setHref(SosHelper.getDescribeSensorUrl(version, getServiceURL(), childProcedure.getIdentifier(), pdf).toString()); } catch (MalformedURLException uee) {
private XmlObject createEnvelope(SosEnvelope sosEnvelope) { EnvelopeType envelopeType = EnvelopeType.Factory.newInstance(XmlOptionsHelper.getInstance().getXmlOptions()); MinMax<String> minmax = SosHelper.getMinMaxFromEnvelope(sosEnvelope); if (minmax.getMinimum() != null && !minmax.getMinimum().isEmpty()) { envelopeType.addNewLowerCorner().setStringValue(minmax.getMinimum()); } else { envelopeType.addNewLowerCorner().setNil(); } if (minmax.getMaximum() != null && !minmax.getMaximum().isEmpty()) { envelopeType.addNewUpperCorner().setStringValue(minmax.getMaximum()); } else { envelopeType.addNewUpperCorner().setNil(); } if (sosEnvelope.isSetSrid()) { envelopeType.setSrsName(ServiceConfiguration.getInstance().getSrsNamePrefix() + sosEnvelope.getSrid()); } return envelopeType; }
protected OmObservation createObservation(DataEntity<?> hObservation) throws OwsExceptionReport, ConverterException { long start = System.currentTimeMillis(); LOGGER.trace("Creating Observation..."); SosHelper.checkFreeMemory(); String procedureId = createProcedure(hObservation); String featureId = createFeatureOfInterest(hObservation);
public AbstractFeature createFeature(FeatureEntity f) throws OwsExceptionReport { final CodeWithAuthority identifier = getIdentifier(f); if (!SosHelper.checkFeatureOfInterestIdentifierForSosV2(f.getIdentifier(), getContext().getVersion())) { identifier.setValue(null); } final AbstractFeature absFeat = getFeatureType(identifier); addNameAndDescription(getContext().getRequestedLanguage(), f, absFeat); if (absFeat instanceof AbstractSamplingFeature) { AbstractSamplingFeature absSampFeat = (AbstractSamplingFeature) absFeat; absSampFeat.setGeometry(createGeometryFrom(f)); absSampFeat.setFeatureType(f.getFeatureType().getFormat()); absSampFeat.setUrl(f.getUrl()); if (f.isSetXml()) { absSampFeat.setXml(f.getXml()); } addParameter(absSampFeat, f); final Set<FeatureEntity> parentFeatures = f.getParents(); if (parentFeatures != null && !parentFeatures.isEmpty()) { final List<AbstractFeature> sampledFeatures = new ArrayList<AbstractFeature>(parentFeatures.size()); for (final AbstractFeatureEntity parentFeature : parentFeatures) { sampledFeatures.add(new HibernateFeatureVisitor(getContext()).visit(parentFeature)); } absSampFeat.setSampledFeatures(sampledFeatures); } } return absFeat; }
@Override public Set<String> getParentOfferings(final Set<String> offeringIdentifiers, final boolean fullHierarchy, final boolean includeSelves) { return getHierarchy(this.parentOfferingsForOfferings, offeringIdentifiers, fullHierarchy, includeSelves); }
private OwsDomain getSpatialFilterParameter(String service, String version) { Enum<?> name = Sos2Constants.GetObservationParams.spatialFilter; return getEnvelopeParameter(name, SosHelper.getFeatureIDs(getCache().getFeaturesOfInterest(), version)); }
private Geometry getGeometry4BBOX(EnvelopeDocument xbBbox) throws OwsExceptionReport { EnvelopeType xbEnvelope = xbBbox.getEnvelope(); // parse srid; if not set, throw exception! int srid = SosHelper.parseSrsName(xbEnvelope.getSrsName()); String lower = xbEnvelope.getLowerCorner().getStringValue(); String upper = xbEnvelope.getUpperCorner().getStringValue(); String geomWKT = String.format("MULTIPOINT(%s, %s)", lower, upper); return JTSHelper.createGeometryFromWKT(geomWKT, srid).getEnvelope(); }
: Sos1Constants.SERVICEVERSION; String pdf = childProcedure.getDefaultElementEncoding(); component.setHref(SosHelper.getDescribeSensorUrl(version, getServiceURL(), childProcedure.getIdentifier(), pdf).toString()); } catch (MalformedURLException uee) {
@Deprecated public static URL getGetCapabilitiesKVPRequest() throws MalformedURLException { return getGetCapabilitiesKVPRequest(ServiceConfiguration.getInstance().getServiceURL()); }