void mtstring::atlocation(const double& rX, const double& rY, MString& rValues) const { rValues.SetDefined(false); if(IsDefined() && IsValidLocation(rX, rY)) { rValues.SetDefined(true); Rectangle<3> boundingBox; bbox(boundingBox); Instant minimumTime = boundingBox.MinD(2); Instant maximumTime = boundingBox.MaxD(2); datetime::DateTime duration = m_Grid.GetDuration(); rValues.StartBulkLoad(); for(Instant currentTime = minimumTime; currentTime < maximumTime; currentTime += duration) { CcString value; atlocation(rX, rY, currentTime.ToDouble(), value); if(value.IsDefined()) { Interval<Instant> interval(currentTime, currentTime + duration, true, false); rValues.Add(UString(interval, value, value)); } } rValues.EndBulkLoad(); if(rValues.IsEmpty()) { rValues.SetDefined(false); } } }