本文整理匯總了Python中graphserver.ext.gtfs.gtfsdb.GTFSDatabase.execute方法的典型用法代碼示例。如果您正苦於以下問題:Python GTFSDatabase.execute方法的具體用法?Python GTFSDatabase.execute怎麽用?Python GTFSDatabase.execute使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類graphserver.ext.gtfs.gtfsdb.GTFSDatabase
的用法示例。
在下文中一共展示了GTFSDatabase.execute方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: main
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
def main():
usage = """usage: python dedupe.py <graphdb_filename>"""
parser = OptionParser(usage=usage)
(options, args) = parser.parse_args()
if len(args) != 1:
parser.print_help()
exit(-1)
graphdb_filename = args[0]
gtfsdb = GTFSDatabase( graphdb_filename )
query = """
SELECT count(*), monday, tuesday, wednesday, thursday, friday, saturday, sunday, start_date, end_date
FROM calendar
GROUP BY monday, tuesday, wednesday, thursday, friday, saturday, sunday, start_date, end_date"""
duped_periods = gtfsdb.execute( query )
equivilants = []
for count, m,t,w,th,f,s,su,start_date,end_date in duped_periods:
# no need to check for dupes if there's only one
if count==1:
continue
#print count, m, t, w, th, f, s, su, start_date, end_date
# get service_ids for this dow/start_date/end_date combination
service_ids = [x[0] for x in list( gtfsdb.execute( "SELECT service_id FROM calendar where monday=? and tuesday=? and wednesday=? and thursday=? and friday=? and saturday=? and sunday=? and start_date=? and end_date=?", (m,t,w,th,f,s,su,start_date,end_date) ) ) ]
# group by service periods with the same set of exceptions
exception_set_grouper = {}
for service_id in service_ids:
exception_set = list(gtfsdb.execute( "SELECT date, exception_type FROM calendar_dates WHERE service_id=?", (service_id,) ) )
exception_set.sort()
exception_set = tuple(exception_set)
exception_set_grouper[exception_set] = exception_set_grouper.get(exception_set,[])
exception_set_grouper[exception_set].append( service_id )
# extend list of equivilants
for i, exception_set_group in enumerate( exception_set_grouper.values() ):
equivilants.append( ("%d%d%d%d%d%d%d-%s-%s-%d"%(m,t,w,th,f,s,su,start_date,end_date,i), exception_set_group) )
for new_name, old_names in equivilants:
for old_name in old_names:
print old_name, new_name
c = gtfsdb.conn.cursor()
c.execute( "UPDATE calendar SET service_id=? WHERE service_id=?", (new_name, old_name) )
c.execute( "UPDATE calendar_dates SET service_id=? WHERE service_id=?", (new_name, old_name) )
c.execute( "UPDATE trips SET service_id=? WHERE service_id=?", (new_name, old_name) )
gtfsdb.conn.commit()
c.close()
示例2: __init__
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
class AlightEvent:
def __init__(self, gtfsdb_filename, timezone_name="America/Los_Angeles"):
self.gtfsdb = GTFSDatabase( gtfsdb_filename )
self.timezone_name = timezone_name
@staticmethod
def applies_to(vertex1, edge, vertex2):
return edge is not None and isinstance(edge.payload, graphserver.core.TripAlight)
def __call__(self, vertex1, edge, vertex2, context):
event_time = vertex1.state.time
stop_id = vertex2.label.split("-")[-1]
stop_desc = list( self.gtfsdb.execute( "SELECT stop_name FROM stops WHERE stop_id = ?", (stop_id,) ) )[0][0]
lat, lon = list( self.gtfsdb.execute( "SELECT stop_lat, stop_lon FROM stops WHERE stop_id = ?", (stop_id,) ) )[0]
what = "Alight"
where = stop_desc
when = str(TimeHelpers.unix_to_localtime( event_time, self.timezone_name ))
geom = (lon,lat)
return NarrativeEvent(what, where, when, geom)
示例3: main
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
def main():
gtfsdb = GTFSDatabase( "data/washingtondc.gtfsdb" )
osmdb = OSMDB( "data/washingtondc.osmdb" )
ll,bb,rr,tt = list(gtfsdb.execute( "SELECT min(stop_lon), min(stop_lat), max(stop_lon), max(stop_lat) FROM stops" ))[0]
from prender import processing
mr = processing.MapRenderer()
mr.start(ll,bb,rr,tt,4000) #left,bottom,right,top,width
mr.smooth()
mr.strokeWeight(0.000001)
mr.background(255,255,255)
mr.stroke(128,128,128)
render_osmdb(osmdb, mr)
mr.stroke(0,0,0)
render_gtfsdb(gtfsdb, mr)
mr.saveLocal("map.png")
mr.stop()
示例4: WalkOptions
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
wo = WalkOptions()
wo.max_walk = 2000
wo.walking_overage = 0.0
wo.walking_speed = 1.0 # trimet uses 0.03 miles / 1 minute - but it uses straight line distance as well
wo.transfer_penalty = 60 * 10
wo.walking_reluctance = 1.5
wo.max_transfers = 5
wo.transfer_slack = 60 * 4
wo_transit = wo
print "Fetching grid from OSMDB..."
grid = list(osmdb.execute("SELECT x, y, vertex FROM grid"))
max_x, max_y = osmdb.execute("SELECT max(x), max(y) FROM grid").next()
print "Finding unique GTFS station linking points..."
stop_vertices = [e[0] for e in gtfsdb.execute("SELECT DISTINCT osm_vertex FROM osm_links")]
#test
#stop_vertices = stop_vertices[:10]
def save_image(spt, fname) :
print "saving grid image..."
im = Image.new("L", (max_x, max_y))
for (x, y, vertex) in grid :
v = spt.get_vertex('osm-%s'%vertex)
if v != None :
c = ((v.best_state.time - t0) / (120. * 60)) * 255
im.putpixel((x, max_y - y - 1), 255 - c)
# be careful that img dir exists
im.save('img/%s.png' % (fname))
示例5: distance
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
# equirectangular / sinusoidal projection
def distance (lat1, lon1, lat2, lon2) :
avg_lat = (lat1 + lat2) / 2
xscale = math.cos(math.radians(avg_lat))
return distance (lat1, lon1, lat2, lon2, xscale)
def distance (lat1, lon1, lat2, lon2, xscale) :
dlon = lon2 - lon1
dlat = lat2 - lat1
dlon *= xscale
d2 = dlon * dlon + dlat * dlat
return math.sqrt(d2) * 111111.111
stops = {}
for sid, sname, lat, lon, routes in db.execute(all_query) :
stops[sid] = {'name': sname, 'lat': lat, 'lon': lon, 'routes': set(routes.split(','))}
# can also compare squared distances in scaled meters
transfers = []
n_processed = 0
for sid, param in stops.items():
if verbose :
print sid, sname
xscale = math.cos(math.radians(param['lat']))
range_lon = range_lat * xscale
routes = copy(param['routes'])
# print xscale, range_lat, range_lon
for sid2, sname2, lat2, lon2 in db.execute(near_query, {'range_lat': range_lat, 'range_lon': range_lon, 'lat': param['lat'], 'lon': param['lon']}):
if sid == sid2:
continue
示例6: len
# 需要導入模塊: from graphserver.ext.gtfs.gtfsdb import GTFSDatabase [as 別名]
# 或者: from graphserver.ext.gtfs.gtfsdb.GTFSDatabase import execute [as 別名]
import sys, struct
# requires graphserver to be installed
from graphserver.ext.gtfs.gtfsdb import GTFSDatabase
if len(sys.argv) != 2:
print "usage: datecheck.py inputfile.gtfsdb"
exit(1)
else:
gtfsdb_file = sys.argv[1]
try:
with open(gtfsdb_file) as f:
db = GTFSDatabase(gtfsdb_file)
except IOError as e:
print "gtfsdb file %s cannot be opened" % gtfsdb_file
exit(1)
# check that all routes gs reports running are actually running on each day
for line in sys.stdin.readlines():
trip_id, fromid, fromtime, toid, totime = line.split()
if trip_id == "walk":
continue
service_id = list(db.execute("select service_id from trips where trip_id = ?", (trip_id,)))[0][0]
print trip_id, "___", service_id
# and date > 20130415 and date < 20130420
for line in db.execute(
"select date from calendar_dates where service_id = ? and date = 20130417 order by date", (service_id,)
):
print line[0]