2012年2月22日 星期三

pgRouting Java實做

血淚泣訴?!的把pgrouting建起來了~ 不過他只是幫你算一算兩點間路徑..還是要用程式把資訊都接起來才能用~ 囧/..

以下簡述一下導航的作業流程..
1. Input Parameter: 起終點坐標(WGS84)
2. 取得起終點的結點路段, 起點取source, 終點取target
3. 計算起終點路段的連結路徑
4. 整合路段資訊
5. Output: 回傳路線資訊

就不論防呆條件與物件化的撰寫~ 主要記錄有用到的相關sql語法..

2.a 取得起/終點最近的路段
select gid, st_distance('POINT(120.683513 24.142974)'::geography, the_geom) as dis from edges where the_geom && SetSRID(box2d(geomFromText('MULTIPOINT(120.683213 24.142674,120.683813 24.143274)')),4326) order by dis limit 1

利用box2d先縮減範圍再做計算比較快一點點..另外box2d有點蠢~ 要再給定SRID..Orz..

3.a 起點取source, 終點取target..丟進去算演算法

SELECT d.id, e.gid, e.name, e.length, asText(e.the_geom) FROM dijkstra_sp('edges', 77, 35) as d, edges as e where d.gid = e.gid order by d.id

記得要order by result的id..這樣路段的順序才會正確..

其實好像也沒什麼Orz..不過也是花了一兩天才把流程串起來的~ 就當個記錄吧..
另外在preparedStatement裡的?是沒辦法給定function的..所以就直接接成字串丟下去執行吧~~參數在前面做好一點的檢核判斷就好

沒有留言: