陸向珍,楊麗霞
(1.甘肅省基礎地理信息中心,甘肅 蘭州 730000)
解決城市交通問題,關(guān)鍵是要樹立城市公共交通在城市交通體系中的主導地位,大力優(yōu)先發(fā)展城市的公共交通[1,2]。據(jù)統(tǒng)計, 每20輛自行車或4輛小汽車所占用的道路面積與1 輛公共汽車所占的面積一樣, 而后者的載客量分別是每輛自行車、小汽車的100倍和30~40倍[1,3]。城市公共交通具有客運量大、相對投資小、占有資源少、效率高、污染相對較少、人均占有道路少等優(yōu)點。
城市公交是各大城市市民及外來人員出行的首選交通工具,面對錯綜復雜的交通網(wǎng)絡,如何選擇最優(yōu)的乘車線路顯得尤為必要。因此,大力發(fā)展和建設公交查詢系統(tǒng)或者推行基于網(wǎng)絡電子地圖的公交查詢服務顯得越來越重要。
在我國城市的公交運行中,公交線路有3種情況:①上下行路線,其往返路線的站點不完全相同;②往返路線, 所經(jīng)站點完全相同;③環(huán)行路線,公交車輛沿著線路環(huán)繞行駛。假設公交線路有n( n≥100)條,在n條線路中,公交票價劃分為單一票價與分段計價2種,單一票價統(tǒng)一為1元,分段計價的票價為:0~20站1元,21~40站2元,40站以上3元[4]。
公交換乘查詢就是要快速、準確地搜索網(wǎng)絡上2點之間的最優(yōu)乘車路徑。現(xiàn)有的很多公交換乘算法都是將公交站點、公交線路的地理位置作為屬性字段存到關(guān)系數(shù)據(jù)庫或文件中,然后采用最短路徑算法、矩陣算法、鏈表查詢甚至使用“圖論”和空間網(wǎng)路數(shù)據(jù)庫相結(jié)合的方法等計算[5,6]。在這些算法中,有的計算復雜、效率低下;有的沒有綜合考慮上下行路線、環(huán)形路線、最優(yōu)換乘點選擇、實際線路情況等問題,與實際情況不相符?;谝陨显?,本文采用XML、XSD文件描述和公交站點、公交路線數(shù)據(jù)相結(jié)合的方式實現(xiàn)公交換乘,如圖1所示。
1)獲取最新公交線路信息。在蘭州公交集團網(wǎng)站(http://www.lzbus.com)上獲取最新的公交站點信息,將信息按具體線路保存成一個獨立的txt文檔,文檔名稱以公交線路名命名,文檔內(nèi)容為具體某一公交線路的公交站點,各站點之間用逗號隔開。如12路車,存為“12.txt”,經(jīng)過的所有站點用逗號隔開,如圖2所示。
2)公交站點入庫。編寫程序,將獲取的公交路線及站點信息批量入庫,并同時去重,形成公交站點表。由于一個站點經(jīng)過多路公交車,如培黎廣場站,經(jīng)過15路、103路、121路等公交車,讀取15.txt、72.txt、103.txt、121.txt時培黎廣場站都會被寫進公交站點表里,這樣公交站點表里就有4個站。公交站點表里的站點都是唯一的,所以要將重復站點去重,最后形成的站點表如圖3所示。
3)獲取公交站點XY坐標。利用百度地圖開放API編寫代碼,調(diào)用百度地圖上的蘭州公交車路線,獲取每個公交車站點的坐標,關(guān)鍵代碼如下:
-----獲取所需公交路線列表,如1~7路公交路線-----
… …
-----獲取列表中具體公交線路并在地圖上顯示-----
function searchBusline(){
var busline = new BMap.BusLineSearch(map,{
renderOptions:{map:map,panel:"results"},
onGetBusListComplete: function(result){
if(result) {var fstLine = result.getBusListItem(0);//獲取第一個公交列表顯示到map上
busline.getBusLine(fstLine); }
}
});
-----獲取具體站點坐標-----
map.enableScrollWheelZoom();
map.addEventListener("click", function(e){
document.getElementById("info").innerHTML =e.point.lng + ", " + e.point.lat;
運行界面如圖4所示。
4)公交站點空間化。點擊具體某路公交車線路,可獲取每個公交車站點的X、Y坐標。獲得全部公交線路的站點坐標后,在ArcMap里用X、Y字段將屬性坐標空間化,定義空間參考系和投影,疊置蘭州市地理地圖做底圖,鏈接公交線路。
5)拓撲檢查。首先在catolog中創(chuàng)建一個拓撲類;然后在ArcMap中打開拓撲層,進入編輯狀態(tài)。在創(chuàng)建過程中,拓撲規(guī)則點都在線上point must be covered by line(即公交站點要在公交線上),不在線路上的公交站點會在圖上顯示出來。選擇Snap(捕捉)、Trim(修剪)、Extend(延伸)3個工具,對拓撲檢查出來的問題進行修正,保證每一個公交站點都在公交線路上,如圖5所示。
拓撲查錯后,確定線路的上下行。如1路車,“蘭州車站—蘭州西站”,如果“蘭州車站—蘭州西站”是上行路線,那么“蘭州西站—蘭州車站”就是下行路線。上下行路線重合,方向相反,在ArcMap里設置路線的上下行[7]。
將公交點數(shù)據(jù)(lzBusPoint.shp)、公交線路數(shù)據(jù)(lzBusLine.shp)基于Geo MapWorld進行公交模型建模,實現(xiàn)公交線路查詢、公交換乘查詢,關(guān)鍵代碼如下[7,8]:
-----公交線路查詢 -----
function(features){
var busStationInfo = getBusStationInfoByBusLine(feat ures[0]);
document.getElementById("queryLineResult").innerHTML = "
查詢到10路公交車經(jīng)過的站點:" +busStationInfo.slice(0, busStationInfo.length - 1);};
公交線路查詢運行結(jié)果如圖6所示,公交換乘查詢運行結(jié)果如圖7所示。
[1]劉娜.優(yōu)先發(fā)展城市公共交通的必要性與措施[J].河北工程技術(shù)高等??茖W校學報,2009,3(1):21-23
[2]公共交通連接世界 城市通卡走向國際[EB/OL].http://www.holichip.com/NewsDetail.aspx?i=166, 2013-06-28
[3]陳林菁.公交優(yōu)先!現(xiàn)代城市交通的選擇[J].城市道橋與防洪,2001 (4):52-53
[4]錢萌,彭張節(jié),程樹林,等.基于綜合評價指數(shù)的城市公交線路選擇優(yōu)化模型[J].吉林大學學報:信息科學版,2008,l26 (2):180-185
[5]付仲良,張文元,孟慶祥.基于GIS的公交數(shù)據(jù)模型研究及換乘算法實現(xiàn)[J].測繪通報,2010(7):15-18
[6]翁敏,毋河海,杜清運,等.基于公交網(wǎng)絡模型的最優(yōu)出行路徑選擇的研究[J].武漢大學學報:信息科學版,2004,29 (6):500-503
[7]武大吉奧信息技術(shù)有限公司. GeoGlobe4.5_公交換乘數(shù)據(jù)要求[S].2011
[8]武大吉奧信息技術(shù)有限公司.C01 Geo MapWorld SDK開發(fā)指南[S].2011