Example usage for org.joda.time.format DateTimeFormatter parseDateTime

List of usage examples for org.joda.time.format DateTimeFormatter parseDateTime

Introduction

In this page you can find the example usage for org.joda.time.format DateTimeFormatter parseDateTime.

Prototype

public DateTime parseDateTime(String text) 

Source Link

Document

Parses a date-time from the given text, returning a new DateTime.

Usage

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;
}