JavaDoc for the graph creation
This commit is contained in:
parent
5bac5787df
commit
92382857d2
5 changed files with 25 additions and 13 deletions
2
pom.xml
2
pom.xml
|
@ -62,7 +62,7 @@
|
||||||
<manifest>
|
<manifest>
|
||||||
<addClasspath>true</addClasspath>
|
<addClasspath>true</addClasspath>
|
||||||
<classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
|
<classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
|
||||||
<mainClass>fr.u_paris.gla.project.itinerary.Main</mainClass>
|
<mainClass>fr.u_paris.gla.project.itinerary.ItineraryCalculator</mainClass>
|
||||||
</manifest>
|
</manifest>
|
||||||
</archive>
|
</archive>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package fr.u_paris.gla.project.itinerary;
|
package fr.u_paris.gla.project.itinerary;
|
||||||
|
|
||||||
public class Connection{
|
public class Connection{
|
||||||
|
// Destination of the connection between the two stops
|
||||||
private final Stop stop;
|
private final Stop stop;
|
||||||
|
|
||||||
|
// The line used for this connection
|
||||||
private final String lineName;
|
private final String lineName;
|
||||||
|
|
||||||
private final double distance;
|
private final double distance;
|
||||||
|
|
|
@ -22,7 +22,6 @@ public class Graph{
|
||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Map<Stop, Set<Connection>> getConnections() {
|
public Map<Stop, Set<Connection>> getConnections() {
|
||||||
return connections;
|
return connections;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import java.util.*;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
public class Main{
|
public class ItineraryCalculator {
|
||||||
private static final Logger LOGGER = Logger
|
private static final Logger LOGGER = Logger
|
||||||
.getLogger(IDFMNetworkExtractor.class.getName());
|
.getLogger(IDFMNetworkExtractor.class.getName());
|
||||||
|
|
||||||
|
@ -36,9 +36,8 @@ public class Main{
|
||||||
|
|
||||||
private static final int IDFM_TRACE_DISTANCE_INDEX = 7;
|
private static final int IDFM_TRACE_DISTANCE_INDEX = 7;
|
||||||
|
|
||||||
private static final double MARGE_ERREUR = 1.;
|
private static final double ERROR_MARGIN = 1.;
|
||||||
|
|
||||||
// Parser helper values
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the coordinates from a String to a double array:
|
* Returns the coordinates from a String to a double array:
|
||||||
|
@ -51,13 +50,23 @@ public class Main{
|
||||||
return new double[] {Double.parseDouble(stringCoords[0]), Double.parseDouble(stringCoords[1])};
|
return new double[] {Double.parseDouble(stringCoords[0]), Double.parseDouble(stringCoords[1])};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Searchs for a stop with the same name and GPS coordinates in the graph, and creates it if non existant
|
||||||
|
* @param nodes a graph of the stops
|
||||||
|
* @param tmp list of the created stops
|
||||||
|
* @param name the name of the stop
|
||||||
|
* @param gps the coordinate of the stop
|
||||||
|
* @param lineId the line the stop is on
|
||||||
|
* @return the Stop object
|
||||||
|
*/
|
||||||
private static Stop getOrCreateStop(HashSet<Stop> nodes, HashMap<String, ArrayList<Stop>> tmp, String name, String gps, String lineId) {
|
private static Stop getOrCreateStop(HashSet<Stop> nodes, HashMap<String, ArrayList<Stop>> tmp, String name, String gps, String lineId) {
|
||||||
ArrayList<Stop> stopList = tmp.get(name);
|
ArrayList<Stop> stopList = tmp.get(name);
|
||||||
|
// First we search by name, and then compare the coordinates since multiple stations can have the same name. A margin of error is necessary since stops can have multiple GPS coordinates
|
||||||
if (stopList != null) {
|
if (stopList != null) {
|
||||||
for(Stop stop : stopList) {
|
for(Stop stop : stopList) {
|
||||||
double[] coords = getCoords(gps);
|
double[] coords = getCoords(gps);
|
||||||
double dist = GPS.distance(coords[0], coords[1], stop.getLatitude(), stop.getLongitude());
|
double dist = GPS.distance(coords[0], coords[1], stop.getLatitude(), stop.getLongitude());
|
||||||
if(dist < MARGE_ERREUR) {
|
if(dist < ERROR_MARGIN) {
|
||||||
stop.addLine(lineId);
|
stop.addLine(lineId);
|
||||||
return stop;
|
return stop;
|
||||||
}
|
}
|
||||||
|
@ -73,8 +82,13 @@ public class Main{
|
||||||
return newStop;
|
return newStop;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int lineNB = 0;
|
/**
|
||||||
|
* Adds into the graph the connection between two stops, parsed from a CSV line
|
||||||
|
* @param line the current line we want to parse
|
||||||
|
* @param nodes the graph of stops
|
||||||
|
* @param tmp list of the created stops
|
||||||
|
* @param connections
|
||||||
|
*/
|
||||||
private static void addLine(String[] line, HashSet<Stop> nodes, HashMap<String, ArrayList<Stop>> tmp, HashMap<Stop, Set<Connection>> connections) {
|
private static void addLine(String[] line, HashSet<Stop> nodes, HashMap<String, ArrayList<Stop>> tmp, HashMap<Stop, Set<Connection>> connections) {
|
||||||
Stop fromStop = getOrCreateStop(nodes, tmp, line[IDFM_TRACE_FROM_INDEX], line[IDFM_TRACE_FROM_GPS_INDEX], line[IDFM_TRACE_ID_INDEX]);
|
Stop fromStop = getOrCreateStop(nodes, tmp, line[IDFM_TRACE_FROM_INDEX], line[IDFM_TRACE_FROM_GPS_INDEX], line[IDFM_TRACE_ID_INDEX]);
|
||||||
Stop toStop = getOrCreateStop(nodes, tmp, line[IDFM_TRACE_TO_INDEX], line[IDFM_TRACE_TO_GPS_INDEX], line[IDFM_TRACE_ID_INDEX]);
|
Stop toStop = getOrCreateStop(nodes, tmp, line[IDFM_TRACE_TO_INDEX], line[IDFM_TRACE_TO_GPS_INDEX], line[IDFM_TRACE_ID_INDEX]);
|
||||||
|
@ -87,11 +101,6 @@ public class Main{
|
||||||
connections.computeIfAbsent(fromStop, k -> new HashSet<>()).add(connection);
|
connections.computeIfAbsent(fromStop, k -> new HashSet<>()).add(connection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void find(Graph graph){
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args){
|
public static void main(String[] args){
|
||||||
if (args.length != 0) {
|
if (args.length != 0) {
|
||||||
LOGGER.severe("Invalid command line. Target file names are in the main file for now.");
|
LOGGER.severe("Invalid command line. Target file names are in the main file for now.");
|
|
@ -4,10 +4,12 @@ import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class Stop implements GraphNode {
|
public class Stop implements GraphNode {
|
||||||
|
// The total number of stops
|
||||||
private static int counter = 0;
|
private static int counter = 0;
|
||||||
|
|
||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
|
// The set of all the lines the stop is on
|
||||||
private final Set<String> lines;
|
private final Set<String> lines;
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
Reference in a new issue