use of org.opengis.observation.Phenomenon in project geotoolkit by Geomatys.
the class XmlObservationReader method getPhenomenons.
@Override
public Collection<Phenomenon> getPhenomenons(final Map<String, Object> hints) throws DataStoreException {
final Set<Phenomenon> phenomenons = new HashSet<>();
String version = (String) hints.get(SOS_VERSION);
Object identifierVal = hints.get(IDENTIFIER);
List<String> identifiers = new ArrayList<>();
if (identifierVal instanceof Collection) {
identifiers.addAll((Collection<? extends String>) identifierVal);
} else if (identifierVal instanceof String) {
identifiers.add((String) identifierVal);
}
for (Object xmlObject : xmlObjects) {
if (xmlObject instanceof ObservationCollection) {
final ObservationCollection collection = (ObservationCollection) xmlObject;
for (Observation obs : collection.getMember()) {
final AbstractObservation o = (AbstractObservation) obs;
final PhenomenonProperty phenProp = o.getPropertyObservedProperty();
final Phenomenon ph = OMUtils.getPhenomenon(phenProp);
if (ph instanceof org.geotoolkit.swe.xml.Phenomenon) {
org.geotoolkit.swe.xml.Phenomenon phe = (org.geotoolkit.swe.xml.Phenomenon) ph;
if (identifiers.isEmpty() || identifiers.contains(phe.getName().getCode())) {
phenomenons.add(ph);
}
}
}
} else if (xmlObject instanceof AbstractObservation) {
final AbstractObservation obs = (AbstractObservation) xmlObject;
final PhenomenonProperty phenProp = obs.getPropertyObservedProperty();
final Phenomenon ph = OMUtils.getPhenomenon(phenProp);
if (ph instanceof org.geotoolkit.swe.xml.Phenomenon) {
org.geotoolkit.swe.xml.Phenomenon phe = (org.geotoolkit.swe.xml.Phenomenon) ph;
if (identifiers.isEmpty() || identifiers.contains(phe.getName().getCode())) {
phenomenons.add(ph);
}
}
}
}
return phenomenons;
}
use of org.opengis.observation.Phenomenon in project geotoolkit by Geomatys.
the class AbstractObservationStore method getResults.
/**
* {@inheritDoc }
*/
@Override
public ExtractionResult getResults(final String affectedSensorId, final List<String> sensorIDs, Set<Phenomenon> phenomenons, final Set<org.opengis.observation.sampling.SamplingFeature> samplingFeatures) throws DataStoreException {
if (affectedSensorId != null) {
LOGGER.warning("This ObservationStore does not allow to override sensor ID");
}
final ExtractionResult result = new ExtractionResult();
result.spatialBound.initBoundary();
final List<Observation> observations = getAllObservations(sensorIDs);
for (Observation obs : observations) {
final AbstractObservation o = (AbstractObservation) obs;
final Process proc = o.getProcedure();
final ExtractionResult.ProcedureTree procedure = new ExtractionResult.ProcedureTree(proc.getHref(), proc.getName(), proc.getDescription(), "Component", "timeseries");
if (sensorIDs == null || sensorIDs.contains(procedure.id)) {
if (!result.procedures.contains(procedure)) {
result.procedures.add(procedure);
}
final PhenomenonProperty phenProp = o.getPropertyObservedProperty();
final List<String> fields = OMUtils.getPhenomenonsFields(phenProp);
for (String field : fields) {
if (!result.fields.contains(field)) {
result.fields.add(field);
}
}
final Phenomenon phen = OMUtils.getPhenomenon(phenProp);
if (!result.phenomenons.contains(phen)) {
result.phenomenons.add(phen);
}
result.spatialBound.appendLocation(o.getSamplingTime(), o.getFeatureOfInterest());
procedure.spatialBound.appendLocation(o.getSamplingTime(), o.getFeatureOfInterest());
procedure.spatialBound.getHistoricalLocations().putAll(getSensorLocations(o.getProcedure().getHref(), "2.0.0"));
result.observations.add(o);
}
}
return result;
}
Aggregations