丁亞杰,高小凈
(1.常州市測繪院,江蘇 常州 213003;2.常州輕工職業技術學院,江蘇 常州 213000)
歷史掃描地形圖糾正方法研究
丁亞杰1,高小凈2
(1.常州市測繪院,江蘇 常州 213003;2.常州輕工職業技術學院,江蘇 常州 213000)

歷史地形圖數字化存檔可有效保護歷史資料,但在實際使用時還需進行糾正、內圖廓裁切、拼接等處理。介紹了利用ArcMap軟件對歷史地形圖進行處理的方法,并利用VBA進行二次開發,實現批處理操作,效果較好,可極大提高生產效率。
歷史地形圖;糾正;ArcMap;VBA
歷史地形圖作為寶貴的資料,記載著城市的發展變遷,對城市的研究越來越重要。由于受當時成圖條件限制,歷史地形圖一般以聚酯薄膜圖紙形式生產并保存,查找利用比較麻煩。為保護歷史地形圖資料,需對圖紙進行掃描數字化,由于掃描后的圖像只具有圖像坐標,不具有地理坐標,給掃描地形圖的使用帶來了極大不便,在實際使用時還需要進行糾正、內圖廓裁切、拼接等工作。目前地形圖糾正軟件主要有MapGIS、ArcGIS、MicroStation等,這些軟件糾正功能基本相同,對于矩形分幅的城市大比例尺地形圖而言,采用內圖廓4角點進行仿射變換糾正即可滿足精度要求,這些軟件不足之處是無法進行批量處理。本文利用ArcGIS9.3對掃描地形圖進行糾正,并利用ArcGIS9.3 VBA進行二次開發,以實現對糾正后的地形圖自動進行內圖廓裁切、格式轉換、配賦地理坐標等工作。
地形圖上一般存在圖號、圖廓點、方里網等定位信息,由于地形圖圖幅號是按照一定的規則編制而成的,其中隱含了該地形圖的地面位置、范圍及比例尺等信息,由圖幅號可以求解出該地形圖內圖廓4角點的理論地面坐標,在掃描地形圖上定位出內圖廓點,就可建立起掃描地形圖像素坐標與地面坐標的對應關系,據此可以對地形圖進行糾正。
首先建立基準,即制作地形圖格網;再將掃描地形圖糾正到具有地理坐標對應的格網位置;然后對糾正后影像進行重采樣、內圖廓裁切,輸出柵格影像;最后,整理提交成果。
根據原始掃描地形圖比例尺及圖幅情況,在AutoCAD軟件中制作出相應的用于糾正地形圖的圖形結合表文件“1000接幅表.dwg”,分幅規格為500 m×400 m,依據圖號求解可獲得圖幅左上角坐標和右下角坐標,如“1649801”左上角坐標為(498 000,
3 518 000),右下角坐標為(498 500,3 517 600),如圖1所示。

圖1 地形圖分幅示意圖
將接幅表文件轉換為shp格式文件,加載至ArcMap中,點擊“Editor→Start Editing”,再點擊“Editor→Snapping”設置捕捉,選中“1000接幅表”的“Vetex”,在地形圖糾正時可捕捉到格網角點。
加載掃描地形圖文件,利用“Georeferencing”工具進行糾正,由于地形圖為規則矩形,可用內圖廓4角點對掃描地形圖進行糾正,采用一次多項式糾正即可,如圖2所示。
重采樣后,需要對糾正后的影像按內圖廓進行裁切, 點 擊“ArcToolbox→Data Management Tools→Raster→Raster Processing→Clip”,在Input Raster中選擇重采樣生成的“1649801.img”文件,將Rectangle中XY坐標值修改為格網坐標。在Output Raster Dataset中設置裁切后輸出文件,可直接輸出tif格式,如“D:掃描地形圖糾正裁切后1649801.tif”。

圖2 糾正工具條

圖3 重采樣設置
此外還需要輸出坐標定位文件,以便在其他軟件平臺下使用該地形圖數據。點擊“ArcToolbox→Data Management Tools→Raster→Raster Properties→Expot Raster World File”,選擇裁切后的“1649801.tif”,生成tfw定位文件,如圖4所示。需對其處理,使之標準化為圖5所示格式。

圖4 生成的tfw文件

圖5 處理后的tfw文件
因為掃描地形圖一般為灰度線劃圖,可對其進行二值化處理,將之變為位圖格式,這樣既可有效降低文件大小,又可與影像圖進行疊加查看。處理方法為:Photoshop軟件打開糾正后的地形圖,點擊菜單“圖像→模式→位圖”, 跳出對話框,方法選擇“50%閾值”,“確定”。圖像大小會由“19.1 MB”變成“2.4 MB”。在AutoCAD中,將掃描地形圖(位圖格式)疊加在影像圖上,設置掃描地形圖屬性項“Transparency”為“Yes”,即可進行對比查看,如圖6所示。

圖6 掃描地形圖與影像圖疊加顯示
3.1 設計思路
為了便于用程序實現批處理操作,對上面糾正方法進行改造。首先,創建一矩形格網(左下角坐標“1 000,1 000”,右上角坐標“1 500,1 400”),將所有掃描地形圖都糾正到該位置;其次,用該范圍對所有糾正后的地形圖進行批量內圖廓裁切;再次,根據圖幅號為每幅圖配賦相應的tfw文件;最后,利用Photoshop對tif進行批處理,將之由灰度圖變為位圖格式。
這樣手工操作的就只有糾正操作,并且糾正操作因為不需要再去尋找圖號對應的實際位置,也能較大幅度地減少糾正操作所用時間。糾正流程如圖7所示。

圖7 糾正流程圖
3.2 VBA程序
1)批處理進行內圖廓裁切主要程序代碼:
Dim GP As IGeoProcessor
Set GP = New GeoProcessor
GP.OverwriteOutput = True '輸出時覆蓋同名文件
Dim pDocument As IMxDocument
Dim pMap As IMap
Set pDocument = ThisDocument
Set pMap = pDocument.FocusMap
Dim VA As IVariantArray
FileName = Dir(ImgPath & "")
While FileName <> ""
If Right(FileName, 3) = "img" Then
inputFile = ImgPath & "" & FileName
outputFile = ClipOkPath & "" & Left(FileName, Len(FileName) - 4) & ".tif"
Set VA = New VarArray
VA.Add inputFile '輸入的柵格文件
VA.Add "1000 1000 1500 1400"
VA.Add outputFile '輸出的柵格文件
VA.Add TkShpFile
VA.Add 255
VA.Add ClippingGeometry
GP.Execute "Clip_management", VA, Nothing '執行裁切操作
pMap.ClearLayers
End If
FileName = Dir()
Wend
2)批處理依據圖幅號生成tfw文件主要程序代碼:
FileName = Dir(path & "")
While FileName <> ""
tuhao = Left(FileName, Len(FileName) - 4)
'根據圖號得到左上角點坐標
coords = GetCoordsByDXT1000Tuhao(tuhao)
x = coords(0) :y = coords(1)
TfwFileName = outpath & "" & tuhao & ".tfw" '生成tfw文件
Open TfwFileName For Output As #1
Print #1, "0.1":Print #1, "0.0":Print #1, "0.0":Print #1, "-0.1"
Print #1, Format(x, "0.0"):Print #1, Format(y, "0.0")
Close #1
FileName = Dir()
Wend
3.3 Photoshop批處理方法
創建動作 “灰度圖改位圖”,動作內容如上所述“灰度線劃圖”變為“位圖”格式的操作。執行批處理動作,“文件→自動→批處理”,選擇動作“灰度圖改位圖”,設置源“文件夾”,勾選“覆蓋動作中的‘打開’命令”前的復選框。設置目標“文件夾”,勾選“覆蓋動作中的‘存儲為’命令”前的復選框。點擊“確定”按鈕即可執行批處理動作。
生產實踐中發現,本文方法糾正后的影像與原圖符合較好,能夠滿足要求,可極大提高生產效率,能為同類歷史地形影像糾正問題的解決提供思路。
[1] 祝國瑞.地圖學[M].武漢∶武漢大學出版社,2004
[2] 胡毓鉅,龔劍文.地圖投影[M].武漢∶武漢測繪科技大學出版社,1997
[3] 孫開敏,陳艷,李德仁.地形圖數字化柵格影像的變形幾何糾正關鍵算法研究[J].測繪信息與工程,2005,30(3)∶40-41
[4] 薄正權.歷史地形圖的糾正與拼接方法的研究[J].城市勘測,2011(6)∶130-132
[5] 張鵬強,翟翊,林群超.大比例尺地形圖掃描數字化影像變形糾正方法與實踐[J].測繪學院學報,2001(4)∶280-282
[6] 凱爾比.Photoshop CS3數碼照片專業處理技術[M].北京∶人民郵電出版社,2008
[7] 李鳳華.AutoCAD 2002/2000 VBA開發指南[M].北京∶清華大學出版社,2001
P283
B
1672-4623(2016)01-0094-03
10.3969/j.issn.1672-4623.2016.01.028
丁亞杰,工程師,注冊測繪師,主要從事攝影測量與地理信息方面的研究。
2014-03-31。