List of usage examples for org.joda.time DateTime plusHours
public DateTime plusHours(int hours)
From source file:org.epics.archiverappliance.common.TimeUtils.java
public static Timestamp plusHours(Timestamp ts, int hours) { DateTime dateTime = new DateTime(ts.getTime(), DateTimeZone.UTC); DateTime retval = dateTime.plusHours(hours); Timestamp retts = new Timestamp(retval.getMillis()); retts.setNanos(ts.getNanos());/*from w ww .ja v a 2 s. c o m*/ return retts; }
From source file:org.epics.archiverappliance.common.TimeUtils.java
/** * Given an epoch seconds and a granularity, this method gives you the first second in the next partition as epoch seconds. * @param epochSeconds/* ww w .ja v a 2 s .com*/ * @param granularity * @return */ public static long getNextPartitionFirstSecond(long epochSeconds, PartitionGranularity granularity) { DateTime dateTime = new DateTime(epochSeconds * 1000, DateTimeZone.UTC); DateTime nextPartitionFirstSecond = null; switch (granularity) { case PARTITION_YEAR: nextPartitionFirstSecond = dateTime.plusYears(1).withMonthOfYear(1).withDayOfMonth(1).withHourOfDay(0) .withMinuteOfHour(0).withSecondOfMinute(0); return nextPartitionFirstSecond.getMillis() / 1000; case PARTITION_MONTH: nextPartitionFirstSecond = dateTime.plusMonths(1).withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0) .withSecondOfMinute(0); return nextPartitionFirstSecond.getMillis() / 1000; case PARTITION_DAY: nextPartitionFirstSecond = dateTime.plusDays(1).withHourOfDay(0).withMinuteOfHour(0) .withSecondOfMinute(0); return nextPartitionFirstSecond.getMillis() / 1000; case PARTITION_HOUR: nextPartitionFirstSecond = dateTime.plusHours(1).withMinuteOfHour(0).withSecondOfMinute(0); return nextPartitionFirstSecond.getMillis() / 1000; case PARTITION_5MIN: case PARTITION_15MIN: case PARTITION_30MIN: int approxMinutesPerChunk = granularity.getApproxMinutesPerChunk(); DateTime nextPartForMin = dateTime.plusMinutes(approxMinutesPerChunk); int startOfPartitionForMin = (nextPartForMin.getMinuteOfHour() / approxMinutesPerChunk) * approxMinutesPerChunk; nextPartitionFirstSecond = nextPartForMin.withMinuteOfHour(startOfPartitionForMin) .withSecondOfMinute(0); return nextPartitionFirstSecond.getMillis() / 1000; default: throw new UnsupportedOperationException("Invalid Partition type " + granularity); } }
From source file:org.fenixedu.academic.domain.WrittenEvaluation.java
License:Open Source License
protected List<EvaluationEventBean> getAllEvents(String description, Registration registration) { List<EvaluationEventBean> result = new ArrayList<EvaluationEventBean>(); String url = CoreConfiguration.getConfiguration().applicationUrl(); Set<ExecutionCourse> executionCourses = new HashSet<ExecutionCourse>(); executionCourses.addAll(this.getAttendingExecutionCoursesFor(registration)); if (this.getEnrollmentBeginDayDateYearMonthDay() != null) { DateTime enrollmentBegin = convertTimes(this.getEnrollmentBeginDayDateYearMonthDay(), this.getEnrollmentBeginTimeDateHourMinuteSecond()); DateTime enrollmentEnd = convertTimes(this.getEnrollmentEndDayDateYearMonthDay(), this.getEnrollmentEndTimeDateHourMinuteSecond()); result.add(new EvaluationEventBean("Inicio das inscries para " + description, enrollmentBegin, enrollmentBegin.plusHours(1), false, null, url + "/login", null, executionCourses)); result.add(//from w w w. j a v a2 s . co m new EvaluationEventBean("Fim das inscries para " + description, enrollmentEnd.minusHours(1), enrollmentEnd, false, null, url + "/login", null, executionCourses)); } Set<Space> rooms = new HashSet<>(); if (registration.getRoomFor(this) != null) { rooms.add(registration.getRoomFor(this)); } else { for (WrittenEvaluationSpaceOccupation weSpaceOcupation : this .getWrittenEvaluationSpaceOccupationsSet()) { rooms.add(weSpaceOcupation.getRoom()); } } WrittenEvaluationEnrolment writtenEvaluationEnrolment = getWrittenEvaluationEnrolmentFor(registration); Space assignedRoom = null; if (writtenEvaluationEnrolment != null) { assignedRoom = writtenEvaluationEnrolment.getRoom(); } result.add(new EvaluationEventBean(description, this.getBeginningDateTime(), this.getEndDateTime(), false, assignedRoom, rooms, executionCourses.iterator().next().getSiteUrl(), null, executionCourses)); return result; }
From source file:org.fenixedu.academic.service.services.administrativeOffice.enrolment.MultiSemesterEnrolmentReporter.java
License:Open Source License
public void report(final int year, final int month, final int day, final int hour) { final DateTime enrolmentStartTime = new DateTime(year, month, day, hour, 0, 0, 0); final ExecutionSemester semester = ExecutionSemester.readByDateTime(enrolmentStartTime); final DateTime endTimeToReport = enrolmentStartTime.plusHours(hoursToReport); if (semester.getSemester().intValue() == semesterToReport) { semester.getCurriculumLineLogsSet().stream() .filter(l -> l instanceof EnrolmentLog) .filter(l -> !l.getDateDateTime().isBefore(enrolmentStartTime) && !l.getDateDateTime().isAfter(endTimeToReport)) .sorted((l1, l2) -> l1.getDateDateTime().compareTo(l2.getDateDateTime())) .forEach(l -> process(semester, enrolmentStartTime, l)); semester.getAssociatedExecutionCoursesSet().stream() .flatMap(ec -> ec.getCourseLoadsSet().stream()) .flatMap(cl -> cl.getShiftsSet().stream()) .flatMap(s -> s.getShiftEnrolmentsSet().stream()) .map(se -> se.getCreatedOn()) .filter(dt -> !dt.isBefore(enrolmentStartTime) && !dt.isAfter(endTimeToReport)) .map(dt -> new Interval(enrolmentStartTime, dt).toDuration().getStandardSeconds()) .forEach(seconds -> add(semester, seconds, new int[] { 0, 0, 1 })); }// w w w.j a v a 2s .c o m }
From source file:org.fenixedu.learning.api.EventsResource.java
License:Open Source License
private static Collection<ScheduleEventBean> projectEvents(Project project, ExecutionCourse executionCourse, Interval interval) {//from w w w.ja v a 2 s . c o m DateTime projectStart = project.getProjectBeginDateTime(); DateTime projectEnd = project.getProjectEndDateTime(); Set<ScheduleEventBean> events = new HashSet<>(); if (interval.contains(projectStart)) { events.add(new ScheduleEventBean(executionCourse.getPrettyAcronym(), project.getEvaluationType().toString(), project.getPresentationName(), projectStart, projectStart.plusHours(1), null, executionCourse.getSiteUrl(), colorForType(project.getEvaluationType()), null, null)); } if (interval.contains(projectEnd)) { events.add(new ScheduleEventBean(executionCourse.getPrettyAcronym(), project.getEvaluationType().toString(), project.getPresentationName(), projectEnd.minusHours(1), projectEnd, null, executionCourse.getSiteUrl(), colorForType(project.getEvaluationType()), null, null)); } return events; }
From source file:org.hbird.business.navigation.processors.TimeRangeCalulator.java
License:Apache License
@Handler public PredictionRequest<?> calculate(PredictionRequest<?> request) { PredictionConfigurationBase config = request.getConfiguration(); int period = config.getPredictionPeriod(); long startTime = request.getStartTime(); DateTime start = new DateTime(startTime, DateTimeZone.UTC).withMinuteOfHour(0).withSecondOfMinute(0) .withMillisOfSecond(0);/* www .j a va 2 s . c o m*/ DateTime end = start.plusHours(period); LOG.info("Prediction period {}h; from {} to {}", new Object[] { period, start.toString(Dates.ISO_8601_DATE_FORMATTER), end.toString(Dates.ISO_8601_DATE_FORMATTER) }); request.setStartTime(start.getMillis()); request.setEndTime(end.getMillis()); return request; }
From source file:org.jasig.portal.events.aggr.PortalEventPurgerImpl.java
License:Apache License
@AggrEventsTransactional public EventProcessingResult doPurgeRawEvents() { if (!this.clusterLockService.isLockOwner(PURGE_RAW_EVENTS_LOCK_NAME)) { throw new IllegalStateException("The cluster lock " + PURGE_RAW_EVENTS_LOCK_NAME + " must be owned by the current thread and server"); }/* w w w . j ava 2s . co m*/ final IEventAggregatorStatus eventPurgerStatus = eventAggregationManagementDao .getEventAggregatorStatus(ProcessingType.PURGING, true); //Update status with current server name final String serverName = this.portalInfoProvider.getUniqueServerName(); eventPurgerStatus.setServerName(serverName); eventPurgerStatus.setLastStart(new DateTime()); //Determine date of most recently aggregated data final IEventAggregatorStatus eventAggregatorStatus = eventAggregationManagementDao .getEventAggregatorStatus(ProcessingType.AGGREGATION, false); if (eventAggregatorStatus == null || eventAggregatorStatus.getLastEventDate() == null) { //Nothing has been aggregated, skip purging eventPurgerStatus.setLastEnd(new DateTime()); eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus); return new EventProcessingResult(0, null, null, true); } boolean complete = true; //Calculate purge end date from most recent aggregation minus the purge delay final DateTime lastAggregated = eventAggregatorStatus.getLastEventDate(); DateTime purgeEnd = lastAggregated.minus(this.purgeDelay); //Determine the DateTime of the oldest event DateTime oldestEventDate = eventPurgerStatus.getLastEventDate(); if (oldestEventDate == null) { oldestEventDate = this.portalEventDao.getOldestPortalEventTimestamp(); } //Make sure purgeEnd is no more than 1 hour after the oldest event date to limit delete scope final DateTime purgeEndLimit = oldestEventDate.plusHours(1); if (purgeEndLimit.isBefore(purgeEnd)) { purgeEnd = purgeEndLimit; complete = false; } final Thread currentThread = Thread.currentThread(); final String currentName = currentThread.getName(); final int events; try { currentThread.setName(currentName + "-" + purgeEnd); //Purge events logger.debug("Starting purge of events before {}", purgeEnd); events = portalEventDao.deletePortalEventsBefore(purgeEnd); } finally { currentThread.setName(currentName); } //Update the status object and store it purgeEnd = purgeEnd.minusMillis(100); //decrement by 100ms since deletePortalEventsBefore uses lessThan and not lessThanEqualTo eventPurgerStatus.setLastEventDate(purgeEnd); eventPurgerStatus.setLastEnd(new DateTime()); eventAggregationManagementDao.updateEventAggregatorStatus(eventPurgerStatus); return new EventProcessingResult(events, oldestEventDate, purgeEnd, complete); }
From source file:org.jasig.portlet.blackboardvcportlet.service.SessionForm.java
License:Apache License
public SessionForm(ServerConfiguration serverConfiguration) { this.newSession = true; this.needToSendInitialEmail = true; final DateTime startTime = DateTime.now().plusHours(1).hourOfDay().roundFloorCopy(); this.setStartTime(startTime); this.setEndTime(startTime.plusHours(1)); this.boundaryTime = serverConfiguration.getBoundaryTime(); this.maxCameras = serverConfiguration.getMaxAvailableCameras(); this.maxTalkers = serverConfiguration.getMaxAvailableTalkers(); this.raiseHandOnEnter = serverConfiguration.isRaiseHandOnEnter(); }
From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.adige.SnowMelting.java
License:Open Source License
@Execute public void process() throws Exception { // transform the if (init2) {/*from www .j av a2s. c om*/ outMeasured = new double[pDimMeas]; init2 = false; if (pDoReadMeas) { // outSimulated=new double[pDimMeas+1]; // outMeasured = new double[pDimMeas]; int dim = pDimMeas; double[] portate = new double[dim]; int cont_portate = 0; // System.out.println("SONOENTRATO"); // lettura portate// try { String str = new String(); str = pPathtoMeas; FileInputStream fstream = new FileInputStream(str); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; double aa = 0; while ((strLine = br.readLine()) != null) { aa = Double.parseDouble(strLine); portate[cont_portate] = aa; // System.out.println(aa); cont_portate += 1; } in.close(); } catch (Exception e) { // System.err.println("Errore: " + e.getMessage()); } outMeasured = portate; pDoReadMeas = false; } } /* * The models use only one value of the latitude. So I have decided to * set it to the center of the raster. Extract the CRS of the * GridCoverage and transform the value of a WGS84 latitude. */ CoordinateReferenceSystem sourceCRS = inDem.getCoordinateReferenceSystem2D(); int numPointToCompute = 0; GridGeometry2D inRainGridGeo = null; if (doRaster == false) { pointsToComputeId2Coordinates = getCoordinate(numPointToCompute, inStations, fStationsid); numPointToCompute = pointsToComputeId2Coordinates.size(); } else if (doRaster == true) { if (inRainGrid != null) { inRainGridGeo = inRainGrid.getGridGeometry(); } pointsToComputeId2Coordinates = getCoordinate(inRainGridGeo); numPointToCompute = pointsToComputeId2Coordinates.size(); } Set<Integer> pointsToInterpolateIdSet = pointsToComputeId2Coordinates.keySet(); Iterator<Integer> idIterator = pointsToInterpolateIdSet.iterator(); int j = 0; xStation = new double[numPointToCompute]; yStation = new double[numPointToCompute]; idStation = new int[numPointToCompute]; colnumvetVect = new int[numPointToCompute]; rownumvetVect = new int[numPointToCompute]; lambdaVect = new double[numPointToCompute]; CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; while (idIterator.hasNext()) { int id = idIterator.next(); idStation[j] = id; Coordinate coordinate = (Coordinate) pointsToComputeId2Coordinates.get(id); xStation[j] = coordinate.x; yStation[j] = coordinate.y; double srcPts[] = new double[] { (xStation[j]), (yStation[j]) }; Coordinate source = new Coordinate(srcPts[0], srcPts[1]); Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) }; CrsUtilities.reproject(sourceCRS, targetCRS, so); // the latitude value lambdaVect[j] = Math.toRadians(so[0].getY()); j += 1; } MathTransform transf = inDem.getGridGeometry().getCRSToGrid2D(); for (int i = 0; i < xStation.length; i++) { DirectPosition point = new DirectPosition2D(sourceCRS, xStation[i], yStation[i]); DirectPosition gridPoint = transf.transform(point, null); colnumvetVect[i] = (int) gridPoint.getCoordinate()[0]; rownumvetVect[i] = (int) gridPoint.getCoordinate()[1]; // System.out.println(idStation[i] + " " // + gridPoint.getCoordinate()[0] + " " // + gridPoint.getCoordinate()[1]); } double minimofeb = 0; double minimomar = 0; double minimoapr = 0; double minimomagg = 0; double minimogiu = 0; double dx = 0; DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC); DateTime startcurrentDatetime = formatter.parseDateTime(tStartDate); DateTime endcurrentDatetime = formatter.parseDateTime(tEndDate); long diff = 0; if (doDaily == false) { diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60); } if (doDaily) { diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60 * 24); } DateTime array[] = new DateTime[(int) diff]; if (doDaily == false) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusHours(i); } } if (doDaily) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusDays(i); } } if (doOneTime) { attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inSkyview); dx = attribute.get(CoverageUtilities.XRES); double srcPts[] = new double[] { attribute.get(CoverageUtilities.EAST), attribute.get(CoverageUtilities.SOUTH) }; // CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; Coordinate source = new Coordinate(srcPts[0], srcPts[1]); Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) }; CrsUtilities.reproject(sourceCRS, targetCRS, so); // the latitude value lambda = Math.toRadians(so[0].getY()); CoverageUtilities.getRegionParamsFromGridCoverage(inSkyview); if (pMode == 0) { RenderedImage insFebTmpRI = inInsFeb.getRenderedImage(); width = insFebTmpRI.getWidth(); height = insFebTmpRI.getHeight(); insFebWR = CoverageUtilities.replaceNovalue(insFebTmpRI, -9999.0); RenderedImage insJanTmpRI = inInsJan.getRenderedImage(); width = insJanTmpRI.getWidth(); height = insJanTmpRI.getHeight(); insJanWR = CoverageUtilities.replaceNovalue(insJanTmpRI, -9999.0); RenderedImage insMarTmpRI = inInsMar.getRenderedImage(); insMarWR = CoverageUtilities.replaceNovalue(insMarTmpRI, -9999.0); insMarTmpRI = null; RenderedImage insAprTmpRI = inInsApr.getRenderedImage(); insAprWR = CoverageUtilities.replaceNovalue(insAprTmpRI, -9999.0); insAprTmpRI = null; RenderedImage insMayTmpRI = inInsMay.getRenderedImage(); insMayWR = CoverageUtilities.replaceNovalue(insMayTmpRI, -9999.0); insMayTmpRI = null; RenderedImage insJuneTmpRI = inInsJun.getRenderedImage(); insJunWR = CoverageUtilities.replaceNovalue(insJuneTmpRI, -9999.0); insJuneTmpRI = null; minimofeb = findminumum(insFebWR, hoursToFeb); minimomar = findminumum(insMarWR, hoursToMar); minimoapr = findminumum(insAprWR, hoursToApr); minimomagg = findminumum(insMayWR, hoursToMay); minimogiu = findminumum(insJunWR, hoursToJune); } RenderedImage drmri = inDem.getRenderedImage(); demwr = CoverageUtilities.replaceNovalue(drmri, -9999.0); drmri = null; RenderedImage SkyTmpRI = inSkyview.getRenderedImage(); skyviewfactorWR = CoverageUtilities.renderedImage2WritableRaster(SkyTmpRI, true); inCondIniL = new HashMap<Integer, double[]>(); inCondIniI = new HashMap<Integer, double[]>(); outSWEData = new HashMap<Integer, double[]>(); outFreezingData = new HashMap<Integer, double[]>(); doOneTime = false; } folder = null; P_listOfFiles = null; T_listOfFiles = null; if (doRaster == true) { folder = new File(pathRainfMaps); P_listOfFiles = folder.listFiles(); for (int i = 0; i < P_listOfFiles.length; i++) { System.out.println(P_listOfFiles[i]); } folder = new File(pathTempMaps); T_listOfFiles = folder.listFiles(); for (int i = 0; i < T_listOfFiles.length; i++) { System.out.println(T_listOfFiles[i]); } } OmsTimeSeriesIteratorReader reader_temp = new OmsTimeSeriesIteratorReader(); OmsTimeSeriesIteratorReader reader_solar = new OmsTimeSeriesIteratorReader(); OmsTimeSeriesIteratorReader reader_rainf = new OmsTimeSeriesIteratorReader(); OmsTimeSeriesIteratorWriter writer = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer2 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer3 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer4 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer5 = new OmsTimeSeriesIteratorWriter(); if (doRaster == false) { if (!((pathTemp == null))) { reader_temp.file = pathTemp; reader_temp.idfield = "ID"; reader_temp.tStart = tStartDate; reader_temp.tEnd = tEndDate; reader_temp.fileNovalue = "-9999"; reader_temp.tTimestep = inTimestep; } if (!((pathToSolarRad == null))) { reader_solar.file = pathToSolarRad; reader_solar.idfield = "ID"; reader_solar.tStart = tStartDate; reader_solar.tEnd = tEndDate; reader_solar.fileNovalue = "-9999"; reader_solar.tTimestep = inTimestep; } if (!(pathRainf == null)) { reader_rainf.file = pathRainf; reader_rainf.idfield = "ID"; reader_rainf.tStart = tStartDate; reader_rainf.tEnd = tEndDate; reader_rainf.fileNovalue = "-9999"; reader_rainf.tTimestep = inTimestep; } if (pathToMelting != null) { writer.file = pathToMelting; writer.tStart = tStartDate; writer.tTimestep = inTimestep; } if (pathToSwe != null) { writer2.file = pathToSwe; writer2.tStart = tStartDate; writer2.tTimestep = inTimestep; } if (pathToFreezing != null) { writer3.file = pathToFreezing; writer3.tStart = tStartDate; writer3.tTimestep = inTimestep; } if (pathToSolidWater != null) { writer4.file = pathToSolidWater; writer4.tStart = tStartDate; writer4.tTimestep = inTimestep; } if (pathToLiquidWater != null) { writer5.file = pathToLiquidWater; writer5.tStart = tStartDate; writer5.tTimestep = inTimestep; } if (numSitesWhereCalibrate != 1) { outSWEVECTOR = new double[array.length * numSitesWhereCalibrate]; outMELTINGVECTOR = new double[array.length * numSitesWhereCalibrate]; } else { outSWEVECTOR = new double[array.length]; outMELTINGVECTOR = new double[array.length]; } conta = 0; } outMELTINGVECTOR_forMaps = new double[numPointToCompute]; outSWEVECTOR_forMaps = new double[numPointToCompute]; for (int i = 0; i < array.length; i++) { outSWE = new HashMap<Integer, double[]>(); outMeltingData = new HashMap<Integer, double[]>(); // System.out.println(" data=" + array[i]); DateTime currentime = array[i]; if (doRaster == false) { if (!(pathTemp == null)) { reader_temp.nextRecord(); temp_values = reader_temp.outData; } if (!(pathRainf == null)) { reader_rainf.nextRecord(); rain_values = reader_rainf.outData; } if (!(pathToSolarRad == null)) { reader_solar.nextRecord(); solar_values = reader_solar.outData; } } int month = currentime.getMonthOfYear(); switch (month) { case 1: calcMelting(insJanWR, demwr, dx, currentime, hoursToJan, minimofeb, i); break; case 10: calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i); break; case 11: calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i); break; case 12: calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i); break; case 2: calcMelting(insFebWR, demwr, dx, currentime, hoursToFeb, minimofeb, i); break; case 3: calcMelting(insMarWR, demwr, dx, currentime, hoursToMar, minimomar, i); break; case 4: calcMelting(insAprWR, demwr, dx, currentime, hoursToApr, minimoapr, i); break; case 5: calcMelting(insMayWR, demwr, dx, currentime, hoursToMay, minimomagg, i); break; case 6: calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i); break; case 7: calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i); break; case 8: calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i); break; case 9: calcMelting(insJunWR, demwr, dx, currentime, hoursToJune, minimogiu, i); break; default: break; } // // calcInsolation(lambda, pitWR, gradientWR, insolationWR, // staoWR, // diffuseWR, dx, currentime); if (doRaster == false) { if (pathToMelting != null) { writer.inData = outMeltingData; writer.writeNextLine(); } if (pathToSolidWater != null) { writer4.inData = inCondIniI; writer4.writeNextLine(); } if (pathToLiquidWater != null) { writer5.inData = inCondIniL; writer5.writeNextLine(); } if (pathToSwe != null) { writer2.inData = outSWEData; writer2.writeNextLine(); } if (pathToFreezing != null) { writer3.inData = outFreezingData; writer3.writeNextLine(); } } else if (doRaster) { storeResult(outSWEVECTOR_forMaps, outMELTINGVECTOR_forMaps, pointsToComputeId2Coordinates); // } } // pm.worked(i - startDay); } if (pathToMelting != null) { writer.close(); } if (pathToSwe != null) { writer2.close(); } if (pathToFreezing != null) { writer3.close(); } if (pathToSolidWater != null) { writer4.close(); } if (pathToLiquidWater != null) { writer5.close(); } outSwevector = outSWEVECTOR; }
From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.lwrb.OmsLongwaveRadiationBalance.java
License:Open Source License
@Execute public void process() throws Exception { // transform the if (init) {//from w ww. j a va 2 s.c o m outSimulated = new double[pDimMeas]; outMeasured = new double[pDimMeas]; init = false; } if (init2) { init2 = false; if (pDoReadMeas) { // outSimulated=new double[pDimMeas+1]; // outMeasured = new double[pDimMeas]; int dim = pDimMeas; double[] portate = new double[dim]; int cont_portate = 0; // System.out.println("SONOENTRATO"); // lettura portate// try { String str = new String(); str = pPathtoMeas; FileInputStream fstream = new FileInputStream(str); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); String strLine; double aa = 0; while ((strLine = br.readLine()) != null) { aa = Double.parseDouble(strLine); portate[cont_portate] = aa; // System.out.println(aa); cont_portate += 1; } in.close(); } catch (Exception e) { // System.err.println("Errore: " + e.getMessage()); } outMeasured = portate; pDoReadMeas = false; } } // extract some attributes of the map attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); double dx = attribute.get(CoverageUtilities.XRES); /* * The models use only one value of the latitude. So I have decided to * set it to the center of the raster. Extract the CRS of the * GridCoverage and transform the value of a WGS84 latitude. */ CoordinateReferenceSystem sourceCRS = inElev.getCoordinateReferenceSystem2D(); CoordinateReferenceSystem targetCRS = DefaultGeographicCRS.WGS84; DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC); DateTime startcurrentDatetime = formatter.parseDateTime(tStartDate); DateTime endcurrentDatetime = formatter.parseDateTime(tEndDate); long diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / (1000 * 60 * 60); DateTime array[] = new DateTime[(int) diff]; if (doDaily == false) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusHours(i); } } if (doDaily == true) { for (int i = 0; i < array.length; i++) { array[i] = startcurrentDatetime.plusDays(i); } } if (workWithRaster == false) { List<Double> xStationList = new ArrayList<Double>(); List<Double> yStationList = new ArrayList<Double>(); List<Double> zStationList = new ArrayList<Double>(); List<Double> iddList = new ArrayList<Double>(); List<Double> albedoList = new ArrayList<Double>(); /* * counter for the number of station with measured value !=0. */ /* * Store the station coordinates and measured data in the array. */ FeatureIterator<SimpleFeature> stationsIter = inStations.features(); try { while (stationsIter.hasNext()) { SimpleFeature feature = stationsIter.next(); double zzz = 0; int id = ((Number) feature.getAttribute(fStationsid)).intValue(); if (fStationsAlb != null) { double albedo = ((Number) feature.getAttribute(fStationsAlb)).doubleValue(); albedoList.add(albedo); } Coordinate coordinate = ((Geometry) feature.getDefaultGeometry()).getCentroid().getCoordinate(); xStationList.add(coordinate.x); yStationList.add(coordinate.y); zStationList.add(zzz); iddList.add((double) id); } } finally { stationsIter.close(); } int nStaz = xStationList.size(); /* * The coordinates of the station points plus in last position a * place for the coordinate of the point to interpolate. */ xStation = new double[nStaz]; yStation = new double[nStaz]; zStation = new double[nStaz]; idStation = new int[nStaz]; colnumvetVect = new int[nStaz]; rownumvetVect = new int[nStaz]; albedoStation = new double[nStaz]; if (nStaz != 0) { for (int i = 0; i < nStaz; i++) { double xTmp = xStationList.get(i); double yTmp = yStationList.get(i); double zTmp = zStationList.get(i); int idTmp = iddList.get(i).intValue(); xStation[i] = xTmp; yStation[i] = yTmp; zStation[i] = zTmp; idStation[i] = idTmp; if (albedoList.size() != 0l) { albedoStation[i] = albedoList.get(i); } else { if (!isNovalue(pAlphag)) { albedoStation[i] = pAlphag; } else { albedoStation[i] = 0.5; } } } } MathTransform transf = inElev.getGridGeometry().getCRSToGrid2D(); for (int i = 0; i < xStation.length; i++) { DirectPosition point = new DirectPosition2D(sourceCRS, xStation[i], yStation[i]); DirectPosition gridPoint = transf.transform(point, null); colnumvetVect[i] = (int) gridPoint.getCoordinate()[0]; rownumvetVect[i] = (int) gridPoint.getCoordinate()[1]; System.out.println( idStation[i] + " " + gridPoint.getCoordinate()[0] + " " + gridPoint.getCoordinate()[1]); } } double srcPts[] = new double[] { attribute.get(CoverageUtilities.EAST), attribute.get(CoverageUtilities.SOUTH) }; Coordinate source = new Coordinate(srcPts[0], srcPts[1]); Point[] so = new Point[] { GeometryUtilities.gf().createPoint(source) }; CrsUtilities.reproject(sourceCRS, targetCRS, so); // the latitude value lambda = Math.toRadians(so[0].getY()); CoverageUtilities.getRegionParamsFromGridCoverage(inElev); RenderedImage pitTmpRI = inElev.getRenderedImage(); width = pitTmpRI.getWidth(); height = pitTmpRI.getHeight(); pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0); pitTmpRI = null; WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster staoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster diffuseWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRaster gradientWR = normalVector(pitWR, dx); // vetgio = new double[array.length]; if (workWithRaster) { resultstaoWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); resultinsWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); resultdiffWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); for (int i = 0; i < array.length; i++) { DateTime currentime = array[i]; calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime); // pm.worked(i - startDay); } } if (workWithRaster == false) { OmsTimeSeriesIteratorReader reader_temp = new OmsTimeSeriesIteratorReader(); if (!((inPathToTemp == null))) { reader_temp.file = inPathToTemp; reader_temp.idfield = "ID"; reader_temp.tStart = tStartDate; reader_temp.tEnd = tEndDate; reader_temp.fileNovalue = "-9999"; reader_temp.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_umi = new OmsTimeSeriesIteratorReader(); if (!(inPathToHumidity == null)) { reader_umi.file = inPathToHumidity; reader_umi.idfield = "ID"; reader_umi.tStart = tStartDate; reader_umi.tEnd = tEndDate; reader_umi.fileNovalue = "-9999"; reader_umi.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_soiltemp = new OmsTimeSeriesIteratorReader(); if (!(inPathToSoilTemp == null)) { reader_soiltemp.file = inPathToSoilTemp; reader_soiltemp.idfield = "ID"; reader_soiltemp.tStart = tStartDate; reader_soiltemp.tEnd = tEndDate; reader_soiltemp.fileNovalue = "-9999"; reader_soiltemp.tTimestep = inTimestep; } OmsTimeSeriesIteratorReader reader_clear = new OmsTimeSeriesIteratorReader(); if (!(inPathToClearness == null)) { reader_clear.file = inPathToClearness; reader_clear.idfield = "ID"; reader_clear.tStart = tStartDate; reader_clear.tEnd = tEndDate; reader_clear.fileNovalue = "-9999"; reader_clear.tTimestep = inTimestep; } OmsTimeSeriesIteratorWriter writer4 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer5 = new OmsTimeSeriesIteratorWriter(); OmsTimeSeriesIteratorWriter writer6 = new OmsTimeSeriesIteratorWriter(); writer4.file = pathToLongwaveDownwelling; writer5.file = pathToLongwaveUpwelling; writer6.file = pathToLongwave; writer4.tStart = tStartDate; writer5.tStart = tStartDate; writer6.tStart = tStartDate; writer4.tTimestep = inTimestep; writer5.tTimestep = inTimestep; writer6.tTimestep = inTimestep; for (int i = 0; i < array.length; i++) { outHMlongwaveDownwelling = new HashMap<Integer, double[]>(); outHMlongwaveUpwelling = new HashMap<Integer, double[]>(); outHMlongwave = new HashMap<Integer, double[]>(); System.out.println(" data=" + array[i]); DateTime currentime = array[i]; if (!(inPathToTemp == null)) { reader_temp.nextRecord(); tempvalues = reader_temp.outData; } if (!(inPathToClearness == null)) { reader_clear.nextRecord(); clearindexvalue = reader_clear.outData; } if (!(inPathToHumidity == null)) { reader_umi.nextRecord(); umivalues = reader_umi.outData; } if (!(inPathToSoilTemp == null)) { reader_soiltemp.nextRecord(); soiltempvalues = reader_soiltemp.outData; } calcInsolation(lambda, pitWR, gradientWR, insolationWR, staoWR, diffuseWR, dx, currentime); writer4.inData = outHMlongwaveDownwelling; writer4.writeNextLine(); writer5.inData = outHMlongwaveUpwelling; writer5.writeNextLine(); writer6.inData = outHMlongwave; writer6.writeNextLine(); // pm.worked(i - startDay); } if (pathToLongwaveDownwelling != null) { writer4.close(); } if (pathToLongwaveUpwelling != null) { writer5.close(); } if (pathToLongwave != null) { writer6.close(); } } }