Hi guys
Good to meet yall tonight.
Garalynn here are the datasets I used to make SF bike planner:
http://gispub02.sfgov.org/website/sfshare/catalog/dpt_bike_network.zip
http://gispub02.sfgov.org/website/sfshare/catalog/phys_contours_wgs.ziphttp://gispub02.sfgov.org/website/sfshare/catalog/stclines_streets.zip
http://gispub02.sfgov.org/website/sfshare/catalog/stintersections.zipImplementation notes w/ details on how those were converted for use by router:
http://docs.google.com/View?id=dhg5k4pt_69r88n8kc6
Here's the message I sent to MTC asking about datasets (they never replied):
http://groups.google.com/group/sf-bike-planner/browse_thread/thread/8286984253fe2eb2
John/Peter, I have added you as owners to the SVN repo since you guys expressed interest in leading technical side. Matt, Nick, I added you as contributors. Can you guys please send out zips of your code or (better yet) check it into svn so we can have a look?
SVN repo:
http://code.google.com/p/sf-bike-planner/source/checkout---
As far as starting to merge our UI/routing/backend layers, these are some relevant files on my end. They're fairly well commented. Peter these represent some 'interface' points where json response for API, integration of Matthew's UI stuff or bridging of John's postGIS layer to router could be done.
JS front end code (this is my UI layer):
http://code.google.com/p/sf-bike-planner/source/browse/branches/live/bikemap.js
Routing code (does the actual path planning, includes cost function):
http://code.google.com/p/sf-bike-planner/source/browse/branches/live/find_path.py
Data generation scripts (they take the shapefiles mentioned above and process them to generate final graph used for routing):
http://code.google.com/p/sf-bike-planner/source/browse/#svn/trunk/src
Top level script in that dir is
generate_data.pyNick, you mentioned you weren't sure about format of final data structure I use for routing. It's a Python dict of dict representing a directed graph:
dGraph[fromCNN][toCNN] = [{'STREET':sStreet, 'INCLINE':nIncline, 'TYPE':sType, 'CNN':sCNN}]
Node ids are centerline network nums. (just arbitrary ids really) and for each edge connection from node and to node, there is a edgeinfo struct containing the edge's street name, incline (+/-) , type ('bike route' or 'wide curb lane' or whatever) and CNN (another arbitrary id).
I read it the graph in from cPickle per request due to arcane web
hosting issues. The right thing to do would be cache it in memory of
course.
Here is Google's map spec for bike path data-- this seems reasonable to me if we wanted to converge on a base format:
http://www.google.com/support/mapcontentpartners/bin/answer.py?hl=en&answer=160414
sorry for all the scattered points, just wanted to get this out before it all slips my mind!
cheers
Amar