(湖南省第三測繪院,湖南 長沙 410118)
隨著各級政府對基礎建設加大投入,越來越多的鐵路、公路、管線等線性工程開始進行規(guī)劃、設計、建設、使用,地形圖作為各項工作的基礎,貫穿線性工程的整個生命周期。線性工程使用的地形圖呈條帶狀,為區(qū)別于其他地形圖,一般稱之為帶狀地形圖。
帶狀地形圖形狀不規(guī)則,呈條帶狀展開,如果使用常規(guī)的矩形分幅或梯形圖幅,圖幅內勢必存在大量空白區(qū)域,浪費嚴重,圖幅數(shù)量巨大,管理不便。
為解決常規(guī)分幅帶來的問題,各位研究者提出了多種解決方案,并且在AutoCAD、ArcGIS等軟件平臺進行了實踐。
舒玲霞等[1]采用線性回歸的方法對線性工程中心線進行分析,將帶狀地形圖按A3幅面進行分幅,能充分利用圖紙,且布局較為美觀。楊善文等[2]采用矢量數(shù)據(jù)結構中的Spaghetti結構與拓撲數(shù)據(jù)結構相結合的數(shù)據(jù)結構來表達矢量數(shù)據(jù)模型,對帶狀地形圖進行分幅。黨濤等[3]研究了在ArcGIS下采用C#語言進行帶狀地形圖分幅。
目前已有的分幅方法主要考慮充分利用圖紙,未對圖件管理和使用進行充分研究,分幅后圖幅數(shù)量多,相鄰圖幅首尾中心線指向不一,拼接麻煩,使用不便。
筆者采用C++語言,基于AutoCAD2007軟件平臺,使用ObjectARX開發(fā)了帶狀地形圖分幅軟件,采用連續(xù)排版方式,將帶狀地形圖打印在長度不限的單張圖紙,采用手風琴式折疊,折疊后寬度為210 mm,與普通A4紙一致,便于保存歸檔。使用時可方便地展開至所需要的任意區(qū)域,沿分幅圖框線對折即可完成拼接。
軟件主要流程:
(1)獲取線路中心線,采用固定寬度緩沖的方式獲得地形圖范圍。(2)計算包含帶狀地形圖的最小矩形。如果最小矩形的寬度小于圖紙寬度,則輸出為單一圖框圖紙,跳過(3)(4)(5)步驟。(3)以線路中心線第一條折線作為起始邊,確定第一個圖幅的梯形圖框范圍。(4)確定下一圖幅范圍,直到終點,圖幅范圍數(shù)據(jù)包括起終點的中心線位置,起終點分幅裁切線的方向。(5)計算各圖框外接矩形需要的總長度,確定各分幅圖框在總圖中的目標位置。(6)按分幅裁切線分割圖形,并移動至總圖中的目標位置,繪制梯形圖幅圖框。(7)添加矩形圖廓,矩形圖廓圖框包含全部梯形圖幅。(8)加入折疊標志,從矩形圖幅起點開始,每210 mm(圖上距離)在矩形圖框的兩條長邊添加3 mm長的短線,作為折疊標記。(9)加入封面、封底。封面主要包括線路名稱、線路起點里程、線路終點里程、圖形比例尺等信息。封底主要包括圖例和必要的備注信息。
軟件設計了多個數(shù)據(jù)結構和輔助函數(shù),以下說明部分數(shù)據(jù)結構和輔助函數(shù)。
用于保存梯形圖框信息的數(shù)據(jù)結構如下:
class CTrapezoidFrame
{
public:
CTrapezoidFrame():drct(0),startAngle(0),endAngle(0){};
AcGePoint3d startPt;//中線的起點
AcGePoint3d endPt;//中線的終點
double drct;//中線的方向
double startAngle;//起點邊的方向
double endAngle;//終點邊的方向
AcGePoint3d extStartPt;//外接矩形中線起點
AcGePoint3d extEndPt;//外接矩形中線終點
double extStartLen;//外接矩形的中線起點至圖框中線起點的距離
double extEndLen;//外接矩形的中線終點至圖框中線終點的距離
};
基于同名坐標點構建轉換矩陣的輔助函數(shù):
AcGeMatrix3d GetFourParamsXform(
AcGePoint3d &srcPt1,//原始點1
AcGePoint3d &srcPt2,//原始點2
AcGePoint3d &destPt1,//目標點1
AcGePoint3d &destPt2//目標點2
)
要實現(xiàn)連續(xù)橫排的圖紙在對折后完整接邊,圖幅之間的分割線方向必須是線路中心線的垂直方向,如果是線段的折點處,則分割線的方向必須是折點的角平分線方向。
為提高搜索效率,圖幅分割點按線路中心線逐折點搜索,如果相鄰折點間距離大于500 m,則以500 m為步進逐步搜索,在各搜索點形成分割線。
為減少軟件計算時間,以線路中心線外擴固定距離形成的邊線構成圖形范圍,圖幅分割線與邊線求交點,如果交點與圖框中線的距離超過內圖框寬度的一半,則視為圖形超出圖框,確定前一個點為圖幅間分割點,該處垂線或角平分線為分割線。
在長直線路段如果第一幅圖的圖幅中線方向與直線段不平行,直線段將被進行多次裁切,形成的圖幅數(shù)量多,因此需要對較長圖幅進行優(yōu)化。
從長直路段第二幅圖開始,搜索到本圖幅的末尾分割點時,記錄本圖幅和上一圖幅的長度之和,作為已有最大長度的參考值。將本圖幅起始分割點逐節(jié)點往回撤,計算回撤后本圖幅的末尾分割點,計算此時本圖幅和上一圖幅的長度之和,如果長度大于已有最大長度,則將該長度作為已有最大長度的參考值,直到找出最大值,以最大值所在的起始分割點和末尾分割點作為本圖幅的范圍,并修改上一圖幅的末尾分割點。
下面以某帶狀地形圖為例進行效果演示,圖1為原始帶狀地形圖,圖2為添加梯形圖框后的示意圖,圖3為分幅成果示意圖。
圖1 原始帶狀地形圖
圖2 繪制梯形圖框
圖3 分幅成果圖
筆者所在單位利用本軟件對湖南境內數(shù)千公里鐵路進行了分幅處理,解決了帶狀圖連續(xù)分幅圖幅接邊拼接問題,并通過優(yōu)化,使分幅后圖紙總長度最短,取得了良好的經(jīng)濟效果。