Browse Source

scripts and base images for generation of bus icons

* base pngs that can be used to build the bus icon images
  with route id and direction arrow
* python script to automate creation of bus icons from a routes
  file
* example routes.txt file
abram 4 years ago
parent
commit
4ec35337c1
38 changed files with 118 additions and 0 deletions
  1. BIN
      experimental/icon/_0.png
  2. BIN
      experimental/icon/bus.png
  3. BIN
      experimental/icon/bus_gray.png
  4. BIN
      experimental/icon/bus_gray_dir_base.png
  5. BIN
      experimental/icon/bus_gw_0.png
  6. BIN
      experimental/icon/bus_gw_135.png
  7. BIN
      experimental/icon/bus_gw_180.png
  8. BIN
      experimental/icon/bus_gw_225.png
  9. BIN
      experimental/icon/bus_gw_270.png
  10. BIN
      experimental/icon/bus_gw_315.png
  11. BIN
      experimental/icon/bus_gw_45.png
  12. BIN
      experimental/icon/bus_gw_90.png
  13. BIN
      experimental/icon/bus_gw_sq.png
  14. BIN
      experimental/icon/bus_gw_sq_inv.png
  15. BIN
      experimental/icon/bus_gw_stat.png
  16. BIN
      experimental/icon/extra/0.png
  17. BIN
      experimental/icon/extra/1.png
  18. BIN
      experimental/icon/extra/2.png
  19. BIN
      experimental/icon/extra/3.png
  20. BIN
      experimental/icon/extra/4.png
  21. BIN
      experimental/icon/extra/5.png
  22. BIN
      experimental/icon/extra/6.png
  23. BIN
      experimental/icon/extra/7.png
  24. BIN
      experimental/icon/extra/8.png
  25. BIN
      experimental/icon/extra/9.png
  26. BIN
      experimental/icon/extra/A.png
  27. BIN
      experimental/icon/extra/E.png
  28. BIN
      experimental/icon/extra/F.png
  29. BIN
      experimental/icon/extra/bub_left.png
  30. BIN
      experimental/icon/extra/bub_middle.png
  31. BIN
      experimental/icon/extra/bub_right.png
  32. BIN
      experimental/icon/extra/f.png
  33. BIN
      experimental/icon/foo.png
  34. 89 0
      experimental/icon/generate_bus_route_icons.py
  35. BIN
      experimental/icon/locator_sq.png
  36. BIN
      experimental/icon/locator_sq_inv.png
  37. 29 0
      experimental/icon/routes.txt
  38. BIN
      experimental/icon/scratch.png

BIN
experimental/icon/_0.png


BIN
experimental/icon/bus.png


BIN
experimental/icon/bus_gray.png


BIN
experimental/icon/bus_gray_dir_base.png


BIN
experimental/icon/bus_gw_0.png


BIN
experimental/icon/bus_gw_135.png


BIN
experimental/icon/bus_gw_180.png


BIN
experimental/icon/bus_gw_225.png


BIN
experimental/icon/bus_gw_270.png


BIN
experimental/icon/bus_gw_315.png


BIN
experimental/icon/bus_gw_45.png


BIN
experimental/icon/bus_gw_90.png


BIN
experimental/icon/bus_gw_sq.png


BIN
experimental/icon/bus_gw_sq_inv.png


BIN
experimental/icon/bus_gw_stat.png


BIN
experimental/icon/extra/0.png


BIN
experimental/icon/extra/1.png


BIN
experimental/icon/extra/2.png


BIN
experimental/icon/extra/3.png


BIN
experimental/icon/extra/4.png


BIN
experimental/icon/extra/5.png


BIN
experimental/icon/extra/6.png


BIN
experimental/icon/extra/7.png


BIN
experimental/icon/extra/8.png


BIN
experimental/icon/extra/9.png


BIN
experimental/icon/extra/A.png


BIN
experimental/icon/extra/E.png


BIN
experimental/icon/extra/F.png


BIN
experimental/icon/extra/bub_left.png


BIN
experimental/icon/extra/bub_middle.png


BIN
experimental/icon/extra/bub_right.png


BIN
experimental/icon/extra/f.png


BIN
experimental/icon/foo.png


+ 89 - 0
experimental/icon/generate_bus_route_icons.py

@@ -0,0 +1,89 @@
+#!/usr/bin/python3
+#
+
+import os, sys
+import csv
+import subprocess as sp
+
+#HEADING = ["0", "45", "90", "135", "180", "225", "270", "315", "stat"];
+HEADING = ["0", "45", "90", "135", "180", "225", "270", "315"]
+
+route_HDR = []
+route_info = []
+
+with open("routes.txt") as fp:
+  fpcsv = csv.reader(fp, delimiter=",", quotechar='"')
+  for row in fpcsv:
+    if len(route_HDR)==0:
+      route_HDR = row
+      continue
+    route_info.append(row);
+
+for route_row in route_info:
+  route_id = route_row[0]
+  for heading in HEADING:
+    print(route_id, heading)
+
+    bub_width = (len(heading)*4) + 2 + 2
+    bub_height = 9
+    bw2 = int(bub_width/2)
+    bub_offset = 0
+    left_overflow = bw2 - 6;
+    if (left_overflow < 0):
+      left_overflow = 0
+      bub_offset = 6 - 2 - 2
+
+    tot_width = 32 + 2*left_overflow
+    tot_height = 37+2
+
+    base_icon = "bus_gw_" + heading + ".png"
+    cmd = ["convert", "-page", str(tot_width) + "x" + str(tot_height) + "+" + str(left_overflow) + "+2", base_icon]
+    cmd.append("-page")
+    cmd.append("+" + str(bub_offset) + "+0")
+    cmd.append("extra/bub_left.png")
+
+    cur_offset = bub_offset + 2
+    for idx in range(len(route_id)):
+      cmd.append("-page")
+      cmd.append("+" + str(cur_offset) + "+0")
+      cmd.append("extra/bub_middle.png")
+      cur_offset+=1
+
+      cmd.append("-page")
+      cmd.append("+" + str(cur_offset) + "+0")
+      cmd.append("extra/bub_middle.png")
+      cur_offset+=1
+
+      cmd.append("-page")
+      cmd.append("+" + str(cur_offset) + "+0")
+      cmd.append("extra/bub_middle.png")
+      cur_offset+=1
+
+      cmd.append("-page")
+      cmd.append("+" + str(cur_offset) + "+0")
+      cmd.append("extra/bub_middle.png")
+      cur_offset+=1
+
+    cur_offset -=1
+
+    cmd.append("-page")
+    cmd.append("+" + str(cur_offset) + "+0")
+    cmd.append("extra/bub_right.png")
+
+    cur_offset = bub_offset + 2
+    for idx in range(len(route_id)):
+      p = cur_offset-1
+      cmd.append("-page")
+      cmd.append("+" + str(p) + "+2")
+      cmd.append("extra/" + route_id[idx] + ".png")
+      cur_offset += 4
+
+    cmd.append("-background")
+    cmd.append("none")
+    cmd.append("-flatten")
+    cmd.append("bus_route_icon/bus_gw_r" + route_id + "_" + heading + ".png")
+
+    print(" ".join(cmd));
+    sp.call(cmd)
+
+

BIN
experimental/icon/locator_sq.png


BIN
experimental/icon/locator_sq_inv.png


+ 29 - 0
experimental/icon/routes.txt

@@ -0,0 +1,29 @@
+route_id,agency_id,route_short_name,route_long_name,route_desc,route_type,route_url,route_color,route_text_color,route_sort_order
+10,0,"10","Route 10","Cornell - Commons",3,,211561,ffffff,1
+11,0,"11","Route 11","Ithaca College - Commons",3,,F36623,FFFFFF,12
+13,0,"13","Route 13","IHS - Northside - Commons",3,,00736C,FFFFFF,18
+14,0,"14","Route 14","West Hill - Hospital - Commons",3,,00AEAF,FFFFFF,20
+15,0,"15","Route 15","Southside Shopper",3,,FACE07,100001,28
+17,0,"17","Route 17","TCAT - Fall Creek - Commons",3,,AAA000,FFFFFF,30
+20,0,"20","Route 20","Enfield - Commons",3,,F5977A,FFFFFF,32
+21,0,"21","Route 21","Trumansburg - Commons",3,,ED1D26,FFFFFF,34
+30,0,"30","Route 30","Commons - Cornell - Shops at Ithaca Mall",3,,AB6339,FFFFFF,38
+32,0,"32","Route 32","Airport - Cornell - Commons",3,,615CA8,FFFFFF,42
+36,0,"36","Route 36","South Lansing - Cornell - Commons",3,,615CA8,FFFFFF,42
+37,0,"37","Route 37","North Lansing - Cornell - Commons",3,,005F22,FFFFFF,46
+40,0,"40","Route 40","Groton - Freeville- Cornell - Commons",3,,0077A4,FFFFFF,48
+43,0,"43","Route 43","TC3 - Varna - Cornell - Commons",3,,014964,FFFFFF,52
+51,0,"51","Route 51","Commons - Cornell - EHP - Eastern Height",3,,009955,FFFFFF,54
+52,0,"52","Route 52","Caroline - Brooktondale - Commons",3,,2D3194,FFFFFF,56
+53,0,"53","Route 53","Ellis Hollow - Commons",3,,9b9fd9,000000,57
+65,0,"65","Route 65","Danby",3,,F5999D,000000,60
+67,0,"67","Route 67","Newfield - Commons",3,,EB048E,FFFFFF,62
+77,0,"77","Route 77","Warren@ Farrel - Mall",3,,91288F,FFFFFF,72
+81,0,"81","Route 81","Cornell Daytime Campus Service",3,,f24040,ffffff,74
+82,0,"82","Route 82","Cornell Campus Service - East Hill Offic",3,,00A99E,FFFFFF,75
+83,0,"83","Route 83","Cornell North Campus Service",3,,c81919,ffffff,77
+90,0,"90","Route 90","Ithaca Commons - Cornell University",3,,7c0410,ffffff,80
+92,0,"92","Route 92","Cornell Campus Service-Nights",3,,550707,ffffff,82
+135,0,"135","Route 13S","Northside - Shopping - Commons",3,,1ba745,030202,19
+145,0,"145","Route 14S","West Hill - Shopping",3,,FF4EC5,FFFFFF,22
+314,0,"314","Route 31-41","31-41 combined",3,,9951e1,050505,40

BIN
experimental/icon/scratch.png