賴建智
1福建省國土測繪院,福建 廈門,361000
在經(jīng)濟社會高速發(fā)展的今天,人們的生活節(jié)奏越來越快,時間、效率成為社會公眾尤其是上班族普遍關注的話題。雖然城市交通基礎設施日漸完善,個人汽車也越來越普及,交通擁堵問題仍然是制約城市發(fā)展的重大問題之一[1]。共享單車是近幾年興起一種既簡單又方便的出行模式,用戶規(guī)模呈現(xiàn)了爆炸式的增長態(tài)勢[2]。共享單車的出現(xiàn)滿足了人們出行“最后一公里”的需求,減少了運輸成本,提高了城市的通行效率[3],同時也宣揚了一種低碳出行的生活方式,符合當今節(jié)能減排的發(fā)展要求。
然而,由于運營商粗放式投入、部分公民道德素質(zhì)缺失、政府監(jiān)管機制不到位等各方面的原因,當前共享單車隨意停放的現(xiàn)象較為普遍,不僅影響市容,也從一定程度上妨礙城市交通。因此,有必要通過測繪技術手段,全面摸清停放區(qū)情況,提供精準停放區(qū)位置坐標,為后續(xù)設置電子圍欄、實施定點停車提供數(shù)據(jù)支撐。本文以廈門市為例介紹共享單車停放區(qū)(下文簡稱“停放區(qū)”)編碼方法。
為方便公眾使用,停放區(qū)一般設置在道路兩側人行道或自行車專用道上,因此,按照道路名稱對停放區(qū)進行編碼符合停放區(qū)的分布情況,也方便進行查找和定位。為保證編碼的連貫性,對道路兩側的停放區(qū)分別進行編碼??傮w思路為:將道路抽象為折線,對道路兩側各停放區(qū)查找與其距離最近的道路節(jié)點,利用停放區(qū)所匹配的道路節(jié)點的序號即可確定停放區(qū)的先后順序,然后按照指定的編碼結構進行順序編碼。
ArcGIS系列產(chǎn)品在行業(yè)中具有重要的地位,是數(shù)據(jù)建庫管理的主要平臺[4],對于地理信息系統(tǒng)軟件而言,除了需要具有數(shù)據(jù)管理功能外,還要求能夠解進行空間分析解決一些復雜的問題[5],ArcGIS在地理信息系統(tǒng)中集空間數(shù)據(jù)模型的建立、編輯處理、分析應用于一體[6],方便快捷。本文以ArcGIS空間數(shù)據(jù)庫為數(shù)據(jù)存儲容器進行數(shù)據(jù)分析和處理,利用ArcGIS軟件進行相關的數(shù)據(jù)編輯和分析,實現(xiàn)對共享單車停放區(qū)的編碼。
本研究涉及到的基礎數(shù)據(jù)包括共享單車停放區(qū)測量數(shù)據(jù)和路網(wǎng)數(shù)據(jù)。對停放區(qū)測量數(shù)據(jù)進行構面,存儲于面狀圖層中,每個停放區(qū)對應一個面狀實體。路網(wǎng)數(shù)據(jù)為線狀圖層,包含道路名稱及道路寬度信息,可從已有城市基礎地理信息數(shù)據(jù)庫中提取,如果為面狀數(shù)據(jù)則需進行道路中心線提取。如果共享單車圖層和道路圖層空間參考不一致還需進行投影或投影變換,以保證后續(xù)空間分析操作的正確性。
城市道路中,同一條道路可能會被其他道路、交通附屬設施或其他地物分隔成多個路段,表現(xiàn)為道路名稱相同但空間上不連續(xù),如圖1(a)中的斗西路;或由于在矢量化時分段采集未合并從形成多個路段,表現(xiàn)為道路名稱相同且線首位端點相連,如圖1(a)中的廈禾路。為了保證后續(xù)處理中停放區(qū)沿道路方向編碼的關聯(lián)性和唯一性,需對相同的道路名進行合并。利用ArcGIS中的融合工具(Dissolve)將同一道路名的所有路段合并為單個空間對象,圖1(b)中視圖區(qū)域中,廈禾路3個路段融合為一條連續(xù)的道路線;斗西路2個路段融合為一條多部件(multipart)道路線,兩部分共用同一個ID為一個整體。
圖1 多路段道路融合Fig.1 Road of Multi-part Dissolve
周邊查找是一項地理空間分析功能,用于從大范圍的海量地理要素中檢索出局部的地理要素[7],其中,緩沖區(qū)查找是應用最普遍的一種周邊分析方法,用于在指定的距離內(nèi)查找特定對象[8],本文采用緩沖區(qū)分析方法確定停放區(qū)所屬最近的道路。對于線對象,ArcGIS中的緩沖區(qū)工具(Buffer)可以生成兩側或者任意一側的緩沖區(qū),本研究擬對道路兩側的停放區(qū)分開編碼,故分別生成兩側的緩沖區(qū)。由于不同道路寬度各不相同,同一條道路不同路段的寬度也不完全一致,緩沖區(qū)構建時以融合前的道路線為中心線,以“路段寬度×1/2+外擴距離”為動態(tài)緩沖寬度分別生成道路中心線兩側的緩沖區(qū),其中,外擴距離采用20 m固定值。將道路線矢量化前進方向左側的緩沖區(qū)標記為road_left,右側的緩沖區(qū)標記為road_right。道路兩側緩沖區(qū)生成后,對相同道路名同一側的緩沖區(qū)進行融合,得到的道路兩側緩沖區(qū)效果如圖2所示。從圖2中可以看出,大部分停放區(qū)已落入緩沖區(qū)范圍中。
圖2 道路緩沖區(qū)Fig.2 Road Buffers
疊加分析方法是GIS中常用的空間信息提取方法[9,10],利用ArcGIS中的疊加分析工具(如相交、空間連接等)可提取停放區(qū)所在緩沖區(qū)對應的道路名稱及位于道路的哪一側,若停放區(qū)同時落在多條道路的緩沖區(qū)中則提取其中一條道路名,如按道路等級提取等級最高的,或者以按距離提取距離最近的,本文采用后一種方法??臻g疊加分析后的部分停放區(qū)屬性信息如表1所示。
表1 道路‐停放區(qū)緩沖區(qū)分析結果Tab.1 Road-Parking Area Buffer Analysis Result
本研究對道路兩側的停放區(qū)分別進行編碼:左側停放區(qū)的編碼方式為“道路名稱-L-停放區(qū)序號”,右側停放區(qū)的編碼方式為“道路名稱-R-停放區(qū)序號”,同一條道路兩側的停放區(qū)序號均從1開始,沿道路方向遞增。下面以道路左側停放區(qū)編碼過程為例,借助ArcObject編程接口,設計編碼算法如下:
1)從§1.4中得到的停放區(qū)屬性表中檢索所有道路名稱,去重后存儲在道路名稱列表中。
2)遍歷道路名稱列表,每次取出一條道路,執(zhí)行后續(xù)步驟3)~步驟7)的處理過程。
3)根據(jù)道路名從融合的道路線圖層中提取當前道路的線幾何對象(Polyline),解析道路線上各個節(jié)點(Node)序號及對應的坐標并存儲在節(jié)點集合中。
4)從停放區(qū)圖層中讀取road_left為當前道路名的所有停放區(qū),計算各停放區(qū)質(zhì)心坐標,將各停放區(qū)ID及質(zhì)心坐標存儲在停放區(qū)集合中。
5)遍歷步驟4)生成的停放區(qū)集合中的各個停放區(qū),計算與步驟3)生成的道路節(jié)點集合中各個節(jié)點的距離,取距離最近道路節(jié)點的序號,與停放區(qū)ID構成“停放區(qū)ID-最近節(jié)點序號”關系序列。
6)對“停放區(qū)ID-最近節(jié)點序號”關系序列按最近節(jié)點序號進行排序,由于空間數(shù)據(jù)庫中線對象的節(jié)點是是沿著線繪制方向存儲的,利用最近節(jié)點序號即可確定各停放區(qū)的先后順序。
7)對排序后的停放區(qū)按“道路名稱-L-停放區(qū)序號”方式進行編碼,其中,停放區(qū)序號從1開始,按停放區(qū)先后順序依次遞增,編碼結果存入停放區(qū)屬性中。
8)結束當前道路停放區(qū)的編碼,轉(zhuǎn)到下一條道路,直至所有道路的停放區(qū)編碼完畢。
道路右側停放區(qū)編碼過程上述道路左側停放區(qū)編碼過程步驟相同,此處不再贅述。
ArcObject是整個ArcGIS的核心與基礎,利用它可以避開底層開發(fā)的復雜過程,快速搭建GIS的功能模塊[11]。在Visual Studio 2012環(huán)境下,利用以C#語言調(diào)用ArcObject相關接口,對§1.5中的算法進行編程實現(xiàn),編碼工具界面如圖3所示。
圖3 編碼工具界面Fig.3 Coding Tool Interface
編碼結果如圖4所示,從圖4(a)中可以看出,道路兩側的停放區(qū)已分開編碼,但停放區(qū)的序號并未全部沿道路線方向遞增,而是存在局部交錯。主要是由于道路線節(jié)點間距過大,導致停放區(qū)匹配最近道路節(jié)點時偏離較遠,以枋湖路右側的停放區(qū)為例,R-23停放區(qū)和R-22停放區(qū)最近的道路節(jié)點都為22號道路線節(jié)點,因此在算法步驟6)中對“停放區(qū)ID-最近節(jié)點序號”序列按最近節(jié)點序號排序時,無法確定兩個點的先后關系,最終按停放區(qū)在數(shù)據(jù)庫中檢索的順序確定先后順序,導致了編碼結果不符合預期效果。因此,在執(zhí)行停放區(qū)排序過程前,先利用ArcGIS中的增密工具(Densify)對道路線的節(jié)點進行內(nèi)插,可有效避免停放區(qū)匹配錯誤,如圖4所示。從圖4(b)中可以看到編碼局部交錯的問題已經(jīng)消除,證明該方法是有效可行的。
圖4 改進前后的停放區(qū)編碼效果圖Fig.4 Coding Result After Between Before Improvement
本文探索了一種共享單車停放區(qū)沿道路方向自動編碼的方法,借助ArcGIS地理處理工具及ArcObject編程接口對算法進行了實現(xiàn)。實驗結果表明,利用該方法可以對道路兩側的共享單車停放區(qū)分別沿道路方向自動編碼。與人工編碼方式相比本方法具有自動化程度高、編碼連續(xù)性好、不重不漏等優(yōu)點,同時便于查詢和檢索。