clementinecomputing 4 лет назад
Родитель
Сommit
5f150b428d
3 измененных файлов с 105 добавлено и 0 удалено
  1. 15 0
      experimental/gtfs_example_read.py
  2. 86 0
      experimental/gtfs_example_write.py
  3. 4 0
      experimental/pb-compile

+ 15 - 0
experimental/gtfs_example_read.py

@@ -0,0 +1,15 @@
+#!/usr/bin/python3.6
+#
+
+from google.transit import gtfs_realtime_pb2
+import urllib.request
+
+feedurl = "https://realtimetcatbus.availtec.com/InfoPoint/GTFS-Realtime.ashx?&Type=VehiclePosition&servrid=0"
+
+feed = gtfs_realtime_pb2.FeedMessage()
+response = urllib.request.urlopen(feedurl)
+feed.ParseFromString(response.read())
+for entity in feed.entity:
+  if entity.HasField('vehicle'):
+    print("yep")
+    print(entity.vehicle)

+ 86 - 0
experimental/gtfs_example_write.py

@@ -0,0 +1,86 @@
+#!/usr/bin/python3.6
+#
+
+from google.transit import gtfs_realtime_pb2
+from google.transit import gtfs_realtime_pb2 as gtfspb
+import urllib.request
+import sys
+
+print("ok")
+
+print(gtfs_realtime_pb2)
+
+def gtfs_vehicle_position(vp = None):
+  if vp is None:
+    vp = gtfspb.VehiclePosition()
+
+  vp.trip.trip_id = "trip_ok"
+  vp.trip.route_id = "route_ok"
+  vp.trip.direction_id = 0
+  vp.trip.start_time = "start_time_ok"
+  vp.trip.start_date = "start_date_ok"
+  vp.trip.schedule_relationship = gtfspb.TripDescriptor.ScheduleRelationship.SCHEDULED
+
+
+  vp.stop_id = "x"
+  vp.current_stop_sequence = 3
+  vp.current_status = gtfspb.VehiclePosition.VehicleStopStatus.INCOMING_AT
+  vp.timestamp = 123
+  vp.congestion_level = gtfspb.VehiclePosition.CongestionLevel.UNKNOWN_CONGESTION_LEVEL
+  vp.occupancy_status = gtfspb.VehiclePosition.OccupancyStatus.NO_DATA_AVAILABLE
+  vp.occupancy_percentage = 0
+
+  vp.vehicle.id = "9999"
+  vp.vehicle.label = "label_ok"
+  vp.vehicle.license_plate = "unknown"
+
+  vp.position.latitude = 0
+  vp.position.longitude = 0
+  vp.position.bearing = 90
+  vp.position.odometer = 0
+  vp.position.speed = 0
+  #vp.position = p
+  return vp
+
+def gtfs_alert():
+  a = gtfspb.Alert()
+  return a
+
+def gtfs_trip_update():
+  u = gtfspb.TripUpdate()
+  return u
+
+def gtfs_feed_entity(f = None):
+  if f is None:
+    f = gtfspb.FeedEntity()
+  f.id = "ok"
+  gtfs_vehicle_position(f.vehicle)
+  return f
+
+def gtfs_feed_message(fm = None):
+  if fm is None:
+    fm = gtfspb.FeedMessage()
+  fm.header.gtfs_realtime_version = "2.0"
+  fm.header.timestamp = 0
+  for i in range(2):
+    gtfs_feed_entity(fm.entity.add())
+  return fm
+
+feedmsg = gtfs_realtime_pb2.FeedMessage()
+#vp = gtfs_realtime_pb2.VehiclePosition()
+vp = gtfs_vehicle_position()
+
+vp.stop_id = "ok"
+print(">>>\n", vp)
+
+fe = gtfs_feed_entity()
+print("feed entity>>>\n", fe)
+
+feedmsg = gtfs_feed_message()
+print("feed message>>>\n", feedmsg)
+
+
+fp = open("outpy.pb", "wb")
+fp.write(feedmsg.SerializeToString())
+fp.close()
+

+ 4 - 0
experimental/pb-compile

@@ -1 +1,5 @@
+#!/bin/bash
+
 protoc gtfs-realtime.proto --js_out=import_style=commonjs,binary:.
+mkdir -p gtfs_realtime_pb2
+protoc gtfs-realtime.proto  --python_out=gtfs_realtime_pb2