List of usage examples for org.joda.time.format DateTimeFormatter parseDateTime
public DateTime parseDateTime(String text)
From source file:org.jevis.commons.parsing.jsonParsing.JSONParsing.java
private DateTime getDateTime(String dateTime) { String input = dateTime;//ww w. j av a 2s.co m try { String pattern = _dateFormat; DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); return fmt.parseDateTime(input); } catch (Exception ex) { ex.printStackTrace(); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "Date not parsable: " + input); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "DateFormat: " + _dateFormat); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "DateIndex: " + _dateIndex); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "TimeFormat: " + _timeFormat); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "TimeIndex: " + _timeIndex); org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "Exception: " + ex); } if (_dateFormat == null) { org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.ALL, "No Datetime found"); return null; } else { org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.ALL, "Current Datetime"); return new DateTime(); } }
From source file:org.jevis.csvparser.CSVParser.java
License:Open Source License
private DateTime getDateTime(String[] line) { if (_dateFormat == null) { Logger.getLogger(this.getClass().getName()).log(Level.ALL, "No Datetime found"); return new DateTime(); }//from ww w . j a v a2s . c om String input = ""; try { String date = line[_dateIndex].trim(); String pattern = _dateFormat; input = date; if (_timeFormat != null && _timeIndex > -1) { String time = line[_timeIndex].trim(); pattern += " " + _timeFormat; input += " " + time; } // Logger.getLogger(this.getClass().getName()).log(Level.ALL, "complete time " + format); // Logger.getLogger(this.getClass().getName()).log(Level.ALL, "complete pattern " + pattern); DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); return fmt.parseDateTime(input); } catch (Exception ex) { Logger.getLogger(this.getClass().getName()).log(Level.WARN, "Date not parsable: " + input); Logger.getLogger(this.getClass().getName()).log(Level.WARN, "DateFormat: " + _dateFormat); Logger.getLogger(this.getClass().getName()).log(Level.WARN, "DateIndex: " + _dateIndex); Logger.getLogger(this.getClass().getName()).log(Level.WARN, "TimeFormat: " + _timeFormat); Logger.getLogger(this.getClass().getName()).log(Level.WARN, "TimeIndex: " + _timeIndex); Logger.getLogger(this.getClass().getName()).log(Level.WARN, "Exception: " + ex); return null; } }
From source file:org.jevis.jeconfig.csv.CSVColumnHeader.java
License:Open Source License
/** * Try to find an matching DateTime pattern for the given Date String. This * implemtaion is very basic.//from w w w.j av a 2 s . co m * * @param date * @return */ private String findDateTimePattern() { //SimpleObjectProperty<Node>> _valuePropertys String valueString = ""; int workaround = 0; Iterator it = _lines.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, CSVLine> pairs = (Map.Entry) it.next(); workaround++; if (workaround == 3) { valueString = pairs.getValue().getColumn(coloumNr); } else if (workaround > 3) { break; } } System.out.println("DateTime value: " + valueString); //Best formates are first in list String[] pattern = { "yyyy-MM-dd'T'HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss Z", "yyyy-MM-dd HH:mm:ss", "dd-MM-yyyy HH:mm:ss Z", "dd-MM-yyyy HH:mm:ss" }; DateTime minDate = new DateTime(1980, 1, 1, 1, 0, 0, 0); DateTime maxDate = DateTime.now().plusYears(2); for (int i = 0; i < pattern.length; i++) { try { DateTimeFormatter dtf = DateTimeFormat.forPattern(pattern[i]); DateTime parsedTime = dtf.parseDateTime(valueString); if (parsedTime.isAfter(minDate) && parsedTime.isBefore(maxDate)) { System.out.println("found patter: " + pattern[i]); return pattern[i]; } } catch (Exception ex) { // Ignore } } return "yyyy-MM-dd HH:mm:ss"; }
From source file:org.jevis.xmlparser.XMLParser.java
private void parseNode(Node currentNode, Node mainAttributeNode) throws JEVisException { for (DataPoint dp : _dataPoints) { try {/*from w w w . j a va 2 s . c om*/ // Long datapointID = dp.getID(); // String mappingIdentifier = DatabaseHelper.getObjectAsString(dp, mappingIdentifierType); Long target = dp.getTarget(); String valueIdentifier = dp.getValueIdentifier(); if (mainAttributeNode != null && !mainAttributeNode.getNodeValue().equals(valueIdentifier)) { continue; } boolean correct = false; //get Date Node dateNode = null; if (_dateElement != null) { for (int j = 0; j < currentNode.getChildNodes().getLength(); j++) { Node item = currentNode.getChildNodes().item(j); if (item.getNodeName().equals(_dateElement)) { dateNode = item; break; } } } else { dateNode = currentNode.cloneNode(true); } String dateString = null; if (_dateAttribute != null) { Node namedItem = dateNode.getAttributes().getNamedItem(_dateAttribute); dateString = namedItem.getNodeValue(); } else { dateString = dateNode.getTextContent(); } String pattern = _dateFormat; DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); DateTime dateTime = fmt.parseDateTime(dateString); // dpParser.parse(ic); // value = dpParser.getValue(); //get value Node valueNode = null; if (_valueElement != null) { for (int j = 0; j < currentNode.getChildNodes().getLength(); j++) { Node item = currentNode.getChildNodes().item(j); if (item.getNodeName().equals(_valueElement)) { valueNode = item; break; } } } else { valueNode = currentNode.cloneNode(true); } String valueString = null; if (_valueAtribute != null) { Node namedItem = valueNode.getAttributes().getNamedItem(_valueAtribute); valueString = namedItem.getNodeValue(); } else { valueString = valueNode.getTextContent(); } Double value = Double.parseDouble(valueString); correct = true; // if (dpParser.outOfBounce()) { // org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "Date for value out of bounce: " + dateTime); // org.apache.log4j.Logger.getLogger(this.getClass().getName()).log(org.apache.log4j.Level.WARN, "Value out of bounce: " + value); // } if (!correct) { continue; } _results.add(new Result(target, value, dateTime)); } catch (Exception ex) { Logger.getLogger(XMLParser.class.getName()).log(Level.ERROR, ex.getMessage()); } } }
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 w w w .ja v a2 s.com*/ 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.boussinesq.OmsBoussinesq_tempLoop.java
License:Open Source License
@Execute public void process() throws Exception { DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm").withZone(DateTimeZone.UTC); DateTime startcurrentDatetime = formatter.parseDateTime(StartDate); DateTime endcurrentDatetime = formatter.parseDateTime(EndDate); DateTime timeStep = formatter.parseDateTime(TimeStep); long diff = 0; diff = (endcurrentDatetime.getMillis() - startcurrentDatetime.getMillis()) / ((timeStep.getMillis())); for (int i = 0; i < diff; i++) { String pathToSlope = "/Users/giuseppeformetta/Desktop/testMesh/pitLW100.asc"; OmsRasterReader reader = new OmsRasterReader(); reader.file = pathToSlope;/* w w w .j ava 2 s . c o m*/ reader.fileNovalue = -9999.0; reader.geodataNovalue = Double.NaN; reader.process(); GridCoverage2D slopeCoverage = reader.outRaster; OmsBoussinesq b = new OmsBoussinesq(); ComputeBeqInput c = new ComputeBeqInput(); c.inDtm = slopeCoverage; c.pPath = "/Users/giuseppeformetta/Desktop/BEQ"; // in computebeqinput cambiare valueEtaInitialCondVtoAddtoDem cn una // mappa // if(i==0){ // dagli la mappa di condizioni iniziali (t=0) // c.valueEtaInitialCondVtoAddtoDem = 0.1; // }else{ // dagli la eta in output di b // c.valueEtaInitialCondVtoAddtoDem = b.e; // } c.valueCV = 10.0; c.valueMV = 0.3; c.valueEtaDricheletV = -9999; c.valuePorosityV = 0.4; c.valueSourceV = 0.1; c.process(); b.Mi = c.Mj; b.Ml = c.Ml; b.Mp = c.Mp; b.bedrockElevation = c.vBedrock; b.c = c.vC; b.d = c.vM; b.eta = c.vEtaInitialCondV; b.etaDrichelet = c.vEtaDrichelet; // DA CREARE b.euclideanDistance=c. b.hydrConductivity = c.vHydraulicCondictivity; // DA CREARE b.lengthSides=c. b.planArea = c.vPlanarArea; // DA CREARE b.NOVALUE= b.porosity = c.vPorosity; b.source = c.vSource; b.process(); // passare dalle eta in rcf alla eta sulla mappa, usando come // mappatura il file dei poligoni numerati } }
From source file:org.jgrasstools.hortonmachine.modules.hydrogeomorphology.insolation.OmsInsolation.java
License:Open Source License
@Execute public void process() throws Exception { // transform the checkNull(inElev, tStartDate, tEndDate); // extract some attributes of the map HashMap<String, Double> attribute = CoverageUtilities.getRegionParamsFromGridCoverage(inElev); double dx = attribute.get(CoverageUtilities.XRES); /*/*from www. ja va2 s. co m*/ * 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; 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()); /* * transform the start and end date in an int value (the day in the * year, from 1 to 365) */ DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd").withZone(DateTimeZone.UTC); DateTime currentDatetime = formatter.parseDateTime(tStartDate); int startDay = currentDatetime.getDayOfYear(); currentDatetime = formatter.parseDateTime(tEndDate); int endDay = currentDatetime.getDayOfYear(); CoverageUtilities.getRegionParamsFromGridCoverage(inElev); RenderedImage pitTmpRI = inElev.getRenderedImage(); int width = pitTmpRI.getWidth(); int height = pitTmpRI.getHeight(); WritableRaster pitWR = CoverageUtilities.replaceNovalue(pitTmpRI, -9999.0); pitTmpRI = null; WritableRaster insolationWR = CoverageUtilities.createDoubleWritableRaster(width, height, null, pitWR.getSampleModel(), 0.0); WritableRandomIter insolationIterator = RandomIterFactory.createWritable(insolationWR, null); WritableRaster gradientWR = normalVector(pitWR, dx); pm.beginTask(msg.message("insolation.calculating"), endDay - startDay); for (int i = startDay; i <= endDay; i++) { calcInsolation(lambda, pitWR, gradientWR, insolationWR, i, dx); pm.worked(i - startDay); } pm.done(); for (int y = 2; y < height - 2; y++) { for (int x = 2; x < width - 2; x++) { if (pitWR.getSampleDouble(x, y, 0) == -9999.0) { insolationIterator.setSample(x, y, 0, Double.NaN); } } } outIns = CoverageUtilities.buildCoverage("insolation", insolationWR, attribute, inElev.getCoordinateReferenceSystem()); }
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 ww w .j av a 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(); } } }
From source file:org.jgrasstools.lesto.modules.flightlines.FlightLinesIntensityNormalizer.java
License:Open Source License
@Execute public void process() throws Exception { checkNull(inLas, inFlightpoints, pDateTimePattern); int timeType = -1; if (pGpsTimeType.equals(FlightLinesExtractor.ADJUSTED_STANDARD_GPS_TIME)) { timeType = 1;//from ww w .j ava 2 s .c om } if (pGpsTimeType.equals(FlightLinesExtractor.WEEK_SECONDS_TIME)) { timeType = 0; } SimpleFeatureCollection flightPointsFC = OmsVectorReader.readVector(inFlightpoints); List<SimpleFeature> flightPointsList = FeatureUtilities.featureCollectionToList(flightPointsFC); SimpleFeatureType schema = flightPointsFC.getSchema(); String dateName = FeatureUtilities.findAttributeName(schema, "date"); String timeName = FeatureUtilities.findAttributeName(schema, "time"); String elevName = FeatureUtilities.findAttributeName(schema, "elev"); if (dateName == null || timeName == null || elevName == null) { throw new ModelsIllegalargumentException("The shapefile has to contain the fields date time and elev.", this); } pm.beginTask("Defining flight intervals and positions...", flightPointsList.size()); DateTimeFormatter formatter = DateTimeFormat.forPattern(pDateTimePattern).withZone(DateTimeZone.UTC); TreeMap<DateTime, Coordinate> date2pointsMap = new TreeMap<DateTime, Coordinate>(); TreeMap<Coordinate, DateTime> points2dateMap = new TreeMap<Coordinate, DateTime>(); for (int i = 0; i < flightPointsList.size(); i++) { SimpleFeature flightPoint = flightPointsList.get(i); Geometry g1 = (Geometry) flightPoint.getDefaultGeometry(); Coordinate c1 = g1.getCoordinate(); double elev1 = ((Number) flightPoint.getAttribute(elevName)).doubleValue(); c1.z = elev1; String date1 = flightPoint.getAttribute(dateName).toString(); String time1 = flightPoint.getAttribute(timeName).toString(); String dateTime1 = date1 + " " + time1; DateTime d1 = formatter.parseDateTime(dateTime1); date2pointsMap.put(d1, c1); points2dateMap.put(c1, d1); pm.worked(1); } pm.done(); pm.beginTask("Create time index...", flightPointsList.size() - 1); DateTime minDate = null; DateTime maxDate = null; long minLong = Long.MAX_VALUE; long maxLong = -Long.MAX_VALUE; STRtree tree = new STRtree(flightPointsList.size()); Set<Entry<DateTime, Coordinate>> pointsSet = date2pointsMap.entrySet(); Entry[] array = pointsSet.toArray(new Entry[0]); for (int i = 0; i < array.length - 1; i++) { DateTime d1 = (DateTime) array[i].getKey(); Coordinate c1 = (Coordinate) array[i].getValue(); DateTime d2 = (DateTime) array[i + 1].getKey(); Coordinate c2 = (Coordinate) array[i + 1].getValue(); long millis1 = d1.getMillis(); long millis2 = d2.getMillis(); Envelope timeEnv = new Envelope(millis1, millis2, millis1, millis2); tree.insert(timeEnv, new Coordinate[] { c1, c2 }); if (millis1 < minLong) { minLong = millis1; minDate = d1; } if (millis2 > maxLong) { maxLong = millis2; maxDate = d2; } pm.worked(1); } pm.done(); StringBuilder sb = new StringBuilder(); sb.append("Flight data interval: "); sb.append(minDate.toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS)); sb.append(" to "); sb.append(maxDate.toString(JGTConstants.dateTimeFormatterYYYYMMDDHHMMSS)); pm.message(sb.toString()); CoordinateReferenceSystem crs = null; File lasFile = new File(inLas); File outLasFile = new File(outLas); try (ALasReader reader = ALasReader.getReader(lasFile, crs); // ALasWriter writer = new LasWriter(outLasFile, crs);) { reader.setOverrideGpsTimeType(timeType); ILasHeader header = reader.getHeader(); int gpsTimeType = header.getGpsTimeType(); writer.setBounds(header); writer.open(); pm.beginTask("Interpolating flight points and normalizing...", (int) header.getRecordsCount()); while (reader.hasNextPoint()) { LasRecord r = reader.getNextPoint(); DateTime gpsTimeToDateTime = LasUtils.gpsTimeToDateTime(r.gpsTime, gpsTimeType); long gpsMillis = gpsTimeToDateTime.getMillis(); Coordinate lasCoordinate = new Coordinate(r.x, r.y, r.z); Envelope pEnv = new Envelope(new Coordinate(gpsMillis, gpsMillis)); List points = tree.query(pEnv); Coordinate[] flightCoords = (Coordinate[]) points.get(0); long d1 = points2dateMap.get(flightCoords[0]).getMillis(); long d2 = points2dateMap.get(flightCoords[1]).getMillis(); LineSegment line = new LineSegment(flightCoords[0], flightCoords[1]); double fraction = (gpsMillis - d1) / (d2 - d1); Coordinate interpolatedFlightPoint = line.pointAlong(fraction); // calculate interpolated elevation double distX = interpolatedFlightPoint.distance(flightCoords[0]); double dist12 = flightCoords[1].distance(flightCoords[0]); double interpolatedElev = distX / dist12 * (flightCoords[1].z - flightCoords[0].z) + flightCoords[0].z; interpolatedFlightPoint.z = interpolatedElev; double distanceFlightTerrain = GeometryUtilities.distance3d(lasCoordinate, interpolatedFlightPoint, null); short norm = (short) floor(r.intensity * pow(distanceFlightTerrain, 2.0) / pStdRange + 0.5); r.intensity = norm; writer.addPoint(r); pm.worked(1); } pm.done(); } }
From source file:org.jimcat.services.imagemanager.ImageUtil.java
License:Open Source License
/** * Parses the exif metadata of a given file. * //from w w w . j ava2s. co m * @param file * The input file, should be a jpeg file * @return An instance of ExifMetadata or null in case of any error */ public static ExifMetadata readExifMetadata(byte[] file) { try { Metadata metadata = new Metadata(); new ExifReader(new ByteArrayInputStream(file)).extract(metadata); Directory exif = metadata.getDirectory(ExifDirectory.class); if (!hasUsableExifData(exif)) { return null; } String manufacturer = exif.getString(ExifDirectory.TAG_MAKE); String model = exif.getString(ExifDirectory.TAG_MODEL); String dateTaken = exif.getString(ExifDirectory.TAG_DATETIME_ORIGINAL); String exposure = exif.getString(ExifDirectory.TAG_EXPOSURE_TIME); String aperture = exif.getString(ExifDirectory.TAG_FNUMBER); String focal = exif.getString(ExifDirectory.TAG_FOCAL_LENGTH); String flash = flashCodeToString(exif.getString(ExifDirectory.TAG_FLASH)); String iso = exif.getString(ExifDirectory.TAG_ISO_EQUIVALENT); DateTime dateTime = null; if (dateTaken != null) { try { DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy:MM:dd HH:mm:ss"); dateTime = fmt.parseDateTime(dateTaken); } catch (IllegalFieldValueException e) { // ok so we don't set the date } } return new ExifMetadata(manufacturer, model, dateTime, exposure, aperture, flash, focal, iso); } catch (JpegProcessingException e) { // if we can't process it we can do nothing about it to fix it } return null; }