Bonjour à tous,
SVP je suis en un cas très urgent;
J'ai besoin de ce truc dans mon pfe et il n'ya plus de temps.
Je veux calculer pour chaque mmsi la deviation calculée entre deux dates successives comme calculé ds la suite de ce msg.
SVP aidez moi
Je serai très reconnaissante pour votre soutien
pour in seul mmsi:
import java.io.*;
import java.util.*;
import java.sql.*;
import java.lang.*;
public class test0 {
private static ArrayList CapBuffer;
private static ArrayList VitesseBuffer;
public static void main(String[] args) throws Exception {
Connection connexion;
Statement statement;
ResultSet rs;
Class.forName("org.postgresql.Driver");
String dbUrl = "jdbc:postgresql://localhost:5432/DW?user=sa&password=P@ssw0rd";
connexion = DriverManager.getConnection(dbUrl);
statement = connexion.createStatement();
CapBuffer = new ArrayList();
VitesseBuffer = new ArrayList();
rs = statement
.executeQuery("select * from position where mmsipos=210030000 and date_part('year',position.date)=2008 and date_part('month',position.date)=05 and date_part('day',position.date)=23");
int numligne = 0;
while (rs.next()) {
System.out.println("Cap = " + rs.getLong("cap"));
System.out.println(" Vitesse = " + rs.getFloat("vitesse"));
CapBuffer.add(rs.getLong("cap"));
VitesseBuffer.add(rs.getFloat("vitesse"));
++numligne;
}
System.out.println(numligne);
int i = -1;
ResultSet srs = statement.executeQuery("select * from position where mmsipos=210030000 and date_part('year',position.date)=2008 and date_part('month',position.date)=05 and date_part('day',position.date)=23 ");
while (srs.next()) {
i++;
if (i < numligne - 1) {
int mmsipos = srs.getInt("mmsipos");
double cap1 = Double.valueOf((String) CapBuffer.get(i)
.toString());
double cap2 = Double.valueOf((String) CapBuffer.get(i + 1)
.toString());
double vitesse1 = Double.valueOf((String) VitesseBuffer.get(i)
.toString());
double vitesse2 = Double.valueOf((String) VitesseBuffer.get(
i + 1).toString());
double deviation_cap = cap2 - cap1;
double deviation_vitesse = vitesse2 - vitesse1;
if (deviation_vitesse != 0){
double deviation = deviation_cap / deviation_vitesse;
if (deviation < 30) {
System.out.println(i + " ; " + mmsipos + " ; " + deviation + " ; "
+ "Vitesse constante" + "\n");
}
}
}
}
}
}
le fichier de données contient l'échantillon suivant:
mmsi;cap;vitesse
210030000;132;17.3
210030000;131;16.8
210030000;133;16.7
210161000;277;20.5
210161000;277;20.2
210161000;277;20.4
210161000;277;19.8
210161000;277;20
210161000;277;20