From 295b788303bdedcc91019714f549a5712aa5d9ec Mon Sep 17 00:00:00 2001
From: "Egli Adrian (IT-SCI-API-PFI)" <adrian.egli@sbb.ch>
Date: Wed, 2 Oct 2019 14:16:35 +0200
Subject: [PATCH] added debug print

---
 flatland/envs/rail_generators.py | 24 +++++++++++++++++-------
 flatland/utils/graphics_pil.py   | 14 ++++++++++++--
 2 files changed, 29 insertions(+), 9 deletions(-)

diff --git a/flatland/envs/rail_generators.py b/flatland/envs/rail_generators.py
index 39a91bc4..d98b9644 100644
--- a/flatland/envs/rail_generators.py
+++ b/flatland/envs/rail_generators.py
@@ -547,6 +547,8 @@ def sparse_rail_generator(num_cities=5, grid_mode=False, max_inter_city_rails=4,
     """
     G = nx.DiGraph()
 
+    DEBUG_PRINT_TIMING = False
+
     def generator(width, height, num_agents, num_resets=0) -> RailGeneratorProduct:
 
         rail_trans = RailEnvTransitions()
@@ -581,19 +583,22 @@ def sparse_rail_generator(num_cities=5, grid_mode=False, max_inter_city_rails=4,
 
         # reduce nb_nodes, _num_cities, _num_intersections if less were generated in not_grid_mode
         nb_nodes = len(node_positions)
-        print("City position time", time.time() - node_time_start, "Seconds")
+        if DEBUG_PRINT_TIMING:
+            print("City position time", time.time() - node_time_start, "Seconds")
         # Set up connection points for all cities
         node_connection_time = time.time()
         inner_connection_points, outer_connection_points, connection_info, city_orientations = _generate_node_connection_points(
             node_positions, node_radius, max_inter_city_rails_allowed,
             rail_in_city)
-        print("Connection points", time.time() - node_connection_time)
+        if DEBUG_PRINT_TIMING:
+            print("Connection points", time.time() - node_connection_time)
 
         # Connect the cities through the connection points
         city_connection_time = time.time()
         inter_city_lines = _connect_cities(node_positions, outer_connection_points, connection_info, city_cells,
                                            rail_trans, grid_map)
-        print("City connection time", time.time() - city_connection_time)
+        if DEBUG_PRINT_TIMING:
+            print("City connection time", time.time() - city_connection_time)
         # Build inner cities
         city_build_time = time.time()
         through_tracks, free_tracks = _build_inner_cities(node_positions, inner_connection_points,
@@ -601,24 +606,29 @@ def sparse_rail_generator(num_cities=5, grid_mode=False, max_inter_city_rails=4,
                                                           node_radius,
                                                           rail_trans,
                                                           grid_map)
-        print("City build time", time.time() - city_build_time)
+        if DEBUG_PRINT_TIMING:
+            print("City build time", time.time() - city_build_time)
         # Populate cities
         train_station_time = time.time()
         train_stations, built_num_trainstation = _set_trainstation_positions(node_positions, node_radius, free_tracks,
                                                                              grid_map)
-        print("Trainstation placing time", time.time() - train_station_time)
+        if DEBUG_PRINT_TIMING:
+            print("Trainstation placing time", time.time() - train_station_time)
 
 
         # Fix all transition elements
         grid_fix_time = time.time()
         _fix_transitions(city_cells, inter_city_lines, grid_map)
-        print("Grid fix time", time.time() - grid_fix_time)
+        if DEBUG_PRINT_TIMING:
+            print("Grid fix time", time.time() - grid_fix_time)
 
         # Generate start target pairs
         schedule_time = time.time()
         agent_start_targets_nodes, num_agents = _generate_start_target_pairs(num_agents, nb_nodes, train_stations,
                                                                              city_orientations)
-        print("Schedule time", time.time() - schedule_time)
+        if DEBUG_PRINT_TIMING:
+            print("Schedule time", time.time() - schedule_time)
+
         return grid_map, {'agents_hints': {
             'num_agents': num_agents,
             'agent_start_targets_nodes': agent_start_targets_nodes,
diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py
index f3c7706e..ea43dbb9 100644
--- a/flatland/utils/graphics_pil.py
+++ b/flatland/utils/graphics_pil.py
@@ -8,6 +8,9 @@ from PIL import Image, ImageDraw, ImageTk, ImageFont
 from numpy import array
 from pkg_resources import resource_string as resource_bytes
 
+from flatland.core.grid.grid_utils import Vec2dOperations
+from flatland.core.transition_map import GridTransitionMap
+from flatland.envs.grid4_generators_utils import connect_nodes
 from flatland.utils.graphics_layer import GraphicsLayer
 
 
@@ -109,7 +112,11 @@ class PILGL(GraphicsLayer):
                     rebuild = True
 
         if rebuild:
+            # rebuild background_grid to control the visualisation of buildings, trees, mountains, lakes and river
             self.background_grid = np.zeros(shape=(self.width, self.height))
+
+
+            # build base distance map (distance to targets)
             for x in range(self.width):
                 for y in range(self.height):
                     distance = int(np.ceil(np.sqrt(self.width ** 2.0 + self.height ** 2.0)))
@@ -363,7 +370,10 @@ class PILSVG(PILGL):
         ]
 
         scenery_files_water = [
-            "Scenery_Water.svg"
+            "Scenery_Water.svg",
+            "Scenery_Water_left.svg",
+            "Scenery_Water_center.svg",
+            "Scenery_Water_right.svg"
         ]
 
         img_back_ground = self.pil_from_svg_file('svg', "Background_Light_green.svg")
@@ -641,7 +651,7 @@ class PILSVG(PILGL):
         pil_zug = self.pil_zug[(in_direction % 4, out_direction % 4, color_idx)]
         self.draw_image_row_col(pil_zug, (row, col), layer=PILGL.AGENT_LAYER)
         if rail_grid is not None:
-            if rail_grid[row,col] == 0.0:
+            if rail_grid[row, col] == 0.0:
                 self.draw_image_row_col(self.scenery_background_white, (row, col), layer=PILGL.RAIL_LAYER)
 
         if is_selected:
-- 
GitLab