複製鏈接
請複製以下鏈接發送給好友

自動批處理

鎖定
批處理(Batch),也稱為批處理腳本。批處理就是對某對象進行批量的處理,通常被認為是一種簡化的腳本語言,它應用於DOS和Windows系統中。自動批處理即不需程序員操縱而主動直接操作的批處理過程,主要應用於批量處理大量數據、文件。
中文名
自動批處理
外文名
AUTOEXEC BAT
批處理
對某對象進行批量的處理
簡    介
不用人力而主動操作的批處理過程
應    用
處理大量數據文件時
應用學科
計算機科學
測繪科學
控制科學

自動批處理簡介

批處理(Batch),也稱為批處理腳本。批處理就是對某對象進行批量的處理,通常被認為是一種簡化的腳本語言,它應用於DOS和Windows系統中。自動批處理即不需程序員操縱而主動直接操作的批處理過程,主要應用於批量處理大量數據、文件。

自動批處理研究背景

當數據量巨大且所需操作繁瑣時,採用逐個文件人工處理,從技術層面看不成問題,但由於數據量龐大,數據組織目錄層次深,採用人工處理,不僅工作量大,而且容易漏轉換或文件被再次誤轉換,存在質量隱患,因此必須採用自動批處理。 [1] 

自動批處理關鍵技術

項目的關鍵問題是要解決數據處理的唯一性問題,即既不漏處理,也不重複處理。由於數據源龐大,難以採用人工的方法進行分析,歸納、歸類處理,而且最怕的是漏轉換,多次轉換。因此,需要採用一種有效的方法對所關心的問題,給定規則或條件,進行數據探測。數據探測就是對數據對象進行遍列,實質是對數據源的目錄與文件進行遍列。對於有限深度的數據源或深度已知的數據源,可以採用for(),do{}while()等常規編程手段,給定探測深度,對數據源進行挖掘。但本項目由於數據的龐大和複雜性,顯然常規手段難以達到目的。根據數據源的特點,考慮採用遞歸技術,使轉換程序具備自動批量功能。
在程序設計中,遞歸在算法的描述中被經常採用,很多問題可以用遞歸算法求解。例如,有些問題的定義形式本身就是遞歸的,如階乘函數;有些數據結構,如二叉樹、廣義表等,由於結構本身固有的遞歸特性,所以對它們的操作可以遞歸進行;還有一類,雖然問題本身沒有明顯的遞歸結構,但用遞歸技術求解比其他方法更容易,如最經典的漢諾塔問題和八皇后問題等。另外,由於遞歸算法省略了程序設計中的許多細節操作,簡化了程序設計過程,使得在求解許多複雜問題時,採用遞歸算法比不用遞歸算法要簡單得多,並且程序結構清晰、易讀,正確性容易驗證,這給用户編制程序和調試程序帶來很大方便。
所謂遞歸,就是指用自身的結構來描述自身,以實現層次數據結構的查詢和訪問。遞歸算法常用於遞歸調用方面,即子過程或函數自己調用自己。
遞歸調用必須是有限的,有限才有意義。所以必須設置相關的控制條件,使其成為有限。這可以通過條件語句(If語句)來實現,即只有在設定的條件成立時遞歸才繼續,否則終止遞歸。可見,構成遞歸必須滿足以下條件:
(1)有明確的結束遞歸的邊界條件(又稱終止條件)以及結束時的邊界值;
(2)過程的描述中包含其本身,即能用遞歸形式表示,且遞歸向終止條件發展。遞歸算法求解問題的基本思想是:對於較為複雜的問題,把原問題分解成若干個相對簡單且類同的子問題,這樣原問題就可遞推得到求解。
當一個問題存在上述構成遞歸的條件時,該問題便可以利用遞歸算法進行處理。具體是:
當所求解問題難於直接求解時,首先,把問題分解成若干個難度較小、較容易求解的子問題,子問題與原問題具有類同的結構。如果子問題能夠直接求解,則解之;如果子問題仍不能直接求解,將每個子問題再分解成若干個更簡單的子問題,直到分解出的子問題能夠很容易地求解或解為已知,這是實現遞歸的模板。然後,設計遞歸出口(即結束遞歸的邊界條件),在滿足出口條件時,遞歸函數不能再調用自己,必須返回一個確定的值。將這兩個方面的問題分析好之後,就可以在子程序體中定義遞歸調用了。
在通常情況下,遞歸調用都是要受到條件控制的,而且在被調用的過程中,會對調用條件進行有規律的修改,直到滿足邊界條件,返回邊界值,結束遞歸;然後按照原來的路徑逐層返回,求出原問題的解。由此可知,遞歸算法設計的關鍵在於遞歸描述和遞歸終止條件。
遞歸算法的執行過程是不斷地自調用,直到到達遞歸出口才結束。然後,遞歸算法開始按最後調用的過程最先返回的次序逐層返回,返回到最外層的調用語句時遞歸算法執行過程結束。可見,遞歸的實現過程包含了“調用”和“返回”兩個階段。 [1] 

自動批處理主要技術問題

要實現項目數據的自動批處理,除基於遞歸技術編程開發外,尚需解決以下主要技術問題。

自動批處理轉換對象座標取位不一致

對於測繪數據而言,在不含帶號的情況下,X為6個整數位,Y為7個整數位。由於種種原因,數據源中的座標數據取位相當凌亂,既有在統一座標系的前提下的不同取位數據,也有獨立座標系座標的數據,個別的是經過座標旋轉過的數據。如果按自身文件的座標值直接插入拼接處理,顯然不合適。
解決方法:
(1)首先利用已有的基礎地理信息數據,諸如1:1萬地圖數據和水利、地名數據等,建立簡易且有效的地理信息框架檢核數據庫。
(2)採用遞歸技術遍列數據源,對於座標取值不足位(X為6個整數位,Y為7個整數位)的數據,先補足其整數位,判斷補位後的座標取值範圍是否合理,若不合理,重新補位直至合理。然後利用“地理信息框架檢核數據庫”的數據對諸如公路、地名、水系等框架數據進行比較檢核。若檢核獲通過,將數據文件的相關信息記入“數據處理日誌數據庫”,信息包括:原文件的名稱、路徑、數據座標的取位情況,座標補位數值,從原文件中獲取的座標系統信息,測圖時間、測圖單位等,同時獲取並記錄該數據文件的所覆蓋範圍的座標串。
(3)對於經上述步驟處理與檢核,不符合要求的文件,暫時將其作為獨立座標系,單獨人工處理:由熟悉本地地理情況的人員分析判斷個案處理,或查詢其他的文檔記載後分析處理。經驗證,除少量數據需要人工處理外,絕大部分文件通過上述的前兩個步驟正確處理到位。 [1] 

自動批處理歷史數據與最新數據問題

採用遞歸技術遍列數據源,建立數據源的數據文件信息數據庫,通過拓撲分析:
(1)區域內只有唯一一套數據時,該數據被認為是當前最新的測圖數據;
(2)當區域內有兩套或以上數據交集時,按測圖年份取最近測的地形圖作為當前的測圖數據,其他數據作為歷史數據,建立到歷史數據庫中。 [1] 

自動批處理座標轉換

原理是:首先獲取描述實體位置信息的定位點座標,然後根據嚴密的座標轉換公式計算出轉換後的座標值;最後通過修改實體定位點的座標為轉換後的座標值。每一類實體均要單獨處理,常見地形圖中包含的實體主要有:點(Point)、文本(Text)、直線(Line)、多線(MLine)、多段線(Polyline)、樣條曲線(Spline)、弧(Arc)、圓(Circle)、橢圓或橢圓弧(Ellipse)、塊(Block)、圖案填充(Hatch)等。之所以每一類實體要單獨處理,是因為每類實體有不同的位置定義,例如文本是由位置點(position)定位的;弧是由弧心點(center)、半徑(radius)、起始角(startAngle)、終止角(endAngle)定位的等。 [1] 

自動批處理佈局及視口的處理

對於某些規劃圖,圖面信息記錄在佈局中,因此需要對佈局進行轉換。對於這種情況,程序處理過程是:首先獲取模型空間圖元座標信息進行轉換,然後獲取所有佈局空間圖元座標信息進行轉換,由於佈局空間圖元是與視口(Viewport)關聯的,因此只需對視口進行座標轉換即可,對於視口來説,有兩個中心座標,一個是視口的中心點(視口在佈局中的中心點座標),另一個是當前視口中視圖的中心點(視口中視圖在模型空間的中心點),當模型空間圖元座標轉換後,佈局空間視口中的視圖中心點座標也應該相應做轉換,所以轉換此座標即可轉換該視口。 [1] 

自動批處理基於ObjectARX座標轉換程序開發

由於ObjectARX使用了C++方法,並以動態鏈接庫的形式被調用,因此執行速度快,安全性好。與其他幾種開發工具相比,其獨有的對AutoCAD內部數據結構的直接使用和擴展,使它的功能得到了極大的增強,而且ObjectARX庫包含了各種工具,用户可以利用這些工具來使用AutoCAD的開放結構,並且可以直接訪問AutoCAD數據庫、圖形系統和用户自定義命令。 [1] 

自動批處理自動批處理文件

自動批處理文件(AUTOCJTEXE.BAT)與系統配置文件(COIFG.)是存在於系統SSY盤根目錄下的兩個文件。在O啓動過程DOS中,系統要在根目錄尋找CONIFG.SYS並執行它,DOS啓動後,緊接着也要在根目錄下尋找AUTOEXEC.BAI,並執行。
為了防止他人進入系統查看或更改自動批處理文件和系統配置文件,可將這兩個文件改名。通常,微機上的這兩個文件是在根目錄下才起作用,通過工具PC5(PC.Tools5.0)可將其改名。 [2] 
參考資料
  • 1.    汪建光. 空間數據自動批處理技術研究[C]// 2009全國測繪科技信息交流會暨首屆測繪博客徵文頒獎論文集. 2009.
  • 2.    楊應全. 自動批處理文件有關使用技巧[J]. 中文信息, 1997(6):49-50.