Skip to content
Snippets Groups Projects
Commit 621d21ec authored by theiled00's avatar theiled00
Browse files

Integrate with metric builder

parent 344ea4ed
Branches
No related tags found
1 merge request!20Integrate with metric builder
FROM eclipse-temurin:17-jdk-alpine FROM eclipse-temurin:19-jdk-alpine
ADD target/*-jar-with-dependencies.jar app.jar ADD target/*-jar-with-dependencies.jar app.jar
COPY src/main/resources/config.properties /data/configuration/config.properties
# Add the cron job # Add the cron job
# Calculate the map each day at 00:00 # Calculate the map each day at 00:00
# For testing: set it to * * * * * to run it each minute # For testing: set it to * * * * * to run it each minute
RUN echo "0 0 * * * java -jar /app.jar" >> /var/spool/cron/crontabs/root RUN echo "0 0 * * * java -jar -Xmx10g /app.jar" >> /var/spool/cron/crontabs/root
# Start the cron deamon # Start the cron deamon
CMD crond -f CMD crond -f
\ No newline at end of file
...@@ -24,11 +24,6 @@ ...@@ -24,11 +24,6 @@
<version>4.11</version> <version>4.11</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.21.12</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
...@@ -42,7 +37,7 @@ ...@@ -42,7 +37,7 @@
<dependency> <dependency>
<groupId>de.fuberlin.navigator</groupId> <groupId>de.fuberlin.navigator</groupId>
<artifactId>proto</artifactId> <artifactId>proto</artifactId>
<version>1.00.003</version> <version>1.00.05</version>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -2,6 +2,7 @@ package map.builder; ...@@ -2,6 +2,7 @@ package map.builder;
import java.io.IOException; import java.io.IOException;
import map.builder.utilities.Config;
import org.json.JSONArray; import org.json.JSONArray;
import de.fuberlin.navigator.protos.map_builder.RoadNetwork; import de.fuberlin.navigator.protos.map_builder.RoadNetwork;
...@@ -10,8 +11,13 @@ import map.builder.osm.OSMParser; ...@@ -10,8 +11,13 @@ import map.builder.osm.OSMParser;
import map.builder.utilities.BoundingBox; import map.builder.utilities.BoundingBox;
import map.builder.utilities.FileHandler; import map.builder.utilities.FileHandler;
import static map.builder.utilities.Config.ROAD_NETWORK_OUTPUT_PATH;
public class App { public class App {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
System.out.println("Map builder started!");
Config.load();
RoadNetwork.Builder roadNetworkBuilder = RoadNetwork.newBuilder(); RoadNetwork.Builder roadNetworkBuilder = RoadNetwork.newBuilder();
OSMParser parser = new OSMParser(roadNetworkBuilder); OSMParser parser = new OSMParser(roadNetworkBuilder);
...@@ -23,19 +29,11 @@ public class App { ...@@ -23,19 +29,11 @@ public class App {
float maxLon = 14.330334220133722f; float maxLon = 14.330334220133722f;
*/ */
// smaller BBox inside Cottbus, better for the debug tool // BBox around central and south Brandenburg
float minLat = 51.764092326645475f; float minLat = 51.968768f;
float minLon = 14.310615062713623f; float minLon = 12.144459f;
float maxLat = 51.766591637718435f; float maxLat = 52.674160f;
float maxLon = 14.314413070678711f; float maxLon = 15.016778f;
// BBox around Cottbus
/*
float minLat = 51.714692361306376f;
float minLon = 14.26197052001953f;
float maxLat = 51.79290380494767f;
float maxLon = 14.415779113769531f;
*/
BoundingBox bbox = new BoundingBox(minLat, minLon, maxLat, maxLon); BoundingBox bbox = new BoundingBox(minLat, minLon, maxLat, maxLon);
...@@ -43,13 +41,15 @@ public class App { ...@@ -43,13 +41,15 @@ public class App {
JSONArray roads = OSMFetcher.fetchNodesAndWays(bbox); JSONArray roads = OSMFetcher.fetchNodesAndWays(bbox);
OSMFetcher.dumpJsonData(roads, "test_data.json"); OSMFetcher.dumpJsonData(roads, "test_data.json");
System.out.println("Starting to parse.");
parser.parseTurnRestrictions(restrictions); parser.parseTurnRestrictions(restrictions);
parser.parseRoads(roads); parser.parseRoads(roads);
System.out.println("Parsed road network.");
RoadNetwork roadNetwork = roadNetworkBuilder.build(); RoadNetwork roadNetwork = roadNetworkBuilder.build();
System.out.println("Turn restrictions count: " + roadNetwork.getTurnRestrictionsCount()); System.out.println("Turn restrictions count: " + roadNetwork.getTurnRestrictionsCount());
System.out.println("Nodes count: " + roadNetwork.getNodesCount()); System.out.println("Nodes count: " + roadNetwork.getNodesCount());
System.out.println("Segments count: " + roadNetwork.getSegmentsCount()); System.out.println("Segments count: " + roadNetwork.getSegmentsCount());
FileHandler.saveToFile(roadNetwork, "./roadnetwork_sample.proto"); FileHandler.saveToFile(roadNetwork, ROAD_NETWORK_OUTPUT_PATH);
} }
} }
...@@ -24,11 +24,19 @@ public class OSMFetcher { ...@@ -24,11 +24,19 @@ public class OSMFetcher {
} }
public static JSONArray fetchTurnRestrictions(BoundingBox boundingBox) throws IOException { public static JSONArray fetchTurnRestrictions(BoundingBox boundingBox) throws IOException {
return OSMFetcher.runQueryForBBox(OSMFetcher.relationQuery, boundingBox); System.out.println("Start to fetch turn restrictions.");
JSONArray jsonArray = OSMFetcher.runQueryForBBox(OSMFetcher.relationQuery, boundingBox);
System.out.println("Turn restrictions fetched.");
return jsonArray;
} }
public static JSONArray fetchNodesAndWays(BoundingBox boundingBox) throws IOException { public static JSONArray fetchNodesAndWays(BoundingBox boundingBox) throws IOException {
return OSMFetcher.runQueryForBBox(OSMFetcher.nodeQuery, boundingBox); System.out.println("Start to fetch nodes and ways.");
JSONArray jsonArray = OSMFetcher.runQueryForBBox(OSMFetcher.nodeQuery, boundingBox);
System.out.println("Nodes and ways fetched.");
return jsonArray;
} }
private static JSONArray runQueryForBBox(String query, BoundingBox bbox) throws IOException { private static JSONArray runQueryForBBox(String query, BoundingBox bbox) throws IOException {
......
...@@ -85,10 +85,12 @@ public class OSMParser { ...@@ -85,10 +85,12 @@ public class OSMParser {
boolean oneWay = this.isOneWay(element); boolean oneWay = this.isOneWay(element);
int maxSpeed = SegmentUtils.getMaxSpeed(element); int maxSpeed = SegmentUtils.getMaxSpeed(element);
/*
System.out.printf("Max speed: %d \n", maxSpeed); System.out.printf("Max speed: %d \n", maxSpeed);
System.out.printf("Way id: %d, Start node id : %d, End node id: %d \n", osmId, startNodeId, endNodeId); System.out.printf("Way id: %d, Start node id : %d, End node id: %d \n", osmId, startNodeId, endNodeId);
*/
long internalId = this.roadNetworkBuilder.getSegmentsCount(); int internalId = this.roadNetworkBuilder.getSegmentsCount();
Segment segment = Segment.newBuilder() Segment segment = Segment.newBuilder()
.setOsmId(osmId) .setOsmId(osmId)
......
package map.builder.utilities;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
public class Config {
private Config() {
}
private static Properties props = new Properties();
public static String ROAD_NETWORK_OUTPUT_PATH = "roadnetwork.proto";
public static void load() {
//The config is used for running the application in a Docker container
String configFilePath = "/data/configuration/config.properties";
try (FileInputStream is = new FileInputStream(configFilePath)){
props.load(is);
ROAD_NETWORK_OUTPUT_PATH = props.getProperty("ROAD_NETWORK_OUTPUT_PATH", ROAD_NETWORK_OUTPUT_PATH);
System.out.println("Config loaded.");
} catch (FileNotFoundException e) {
// Either way the Docker image was build wrong or this is not
// run in a Docker environment
System.out.println("No config file found. Using default settings!");
} catch (IOException e) {
// Something else went wrong, but we will
// not let this escalate
e.printStackTrace();
}
}
}
# Standard config for Docker
ROAD_NETWORK_OUTPUT_PATH = /data/road_network/roadnetwork.proto
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment