胡元亮,李智輝,李小華
(1.中山市欖建測繪工程有限公司,廣東 中山 528415)
元數(shù)據(jù)是能夠?qū)崿F(xiàn)不同基礎(chǔ)數(shù)據(jù)之間交換、管理和共享的數(shù)據(jù),即數(shù)據(jù)的數(shù)據(jù)[1]?;A(chǔ)地理信息元數(shù)據(jù)的規(guī)范有不同的版本,本文參考的是《基礎(chǔ)地理信息數(shù)據(jù)產(chǎn)品元數(shù)據(jù)》(CH/T 1007-2001),該行業(yè)標(biāo)準(zhǔn)規(guī)定了4D產(chǎn)品(數(shù)字柵格地圖DRG、數(shù)字正射影像圖DOM、數(shù)字高程模型DEM、數(shù)字線劃圖DLG)的元數(shù)據(jù)內(nèi)容、結(jié)構(gòu)和格式[2]。通過元數(shù)據(jù),用戶可以了解這些基礎(chǔ)數(shù)據(jù)的內(nèi)容、生產(chǎn)單位、周邊環(huán)境等情況[3]。在實(shí)踐中,元數(shù)據(jù)的生產(chǎn)還沒有統(tǒng)一的技術(shù)流程,因此如何快速高質(zhì)量地生產(chǎn)元數(shù)據(jù)就成為當(dāng)今地理信息的一個研究話題。本文討論了1∶500圖幅接合表到DLG元數(shù)據(jù)生產(chǎn)的問題,主要步驟有提取圖名并計(jì)算圖號、計(jì)算不同元數(shù)據(jù)值和元數(shù)據(jù)生成,結(jié)果主要是采用VBA或VB.NET的開發(fā)方法來完成,這些方法稍作改變也可以適用于1∶1 000和1∶2 000的DLG元數(shù)據(jù)生產(chǎn)。因中小比例尺地形圖分幅采用的是經(jīng)差和緯差劃分[4],它的分幅和編號方法與大比例尺不一致,所以這里主要闡述的是大比例尺DLG元數(shù)據(jù)的生產(chǎn)。
要實(shí)現(xiàn)DLG元數(shù)據(jù)的生產(chǎn),首先應(yīng)了解生產(chǎn)所需的數(shù)據(jù)來源及成果格式,這里元數(shù)據(jù)生產(chǎn)的來源是圖幅接合表。
圖幅接合表是標(biāo)明某一地區(qū)或分幅圖的各圖幅相關(guān)位置關(guān)系的略圖,一般由圖名、圖號和方格網(wǎng)組成[5]。在開發(fā)區(qū)1∶500數(shù)字化地形圖測繪的過程中,地形圖采用正方形分幅,大小是50 cm×50 cm,編號是在1∶2 000地形圖編號的基礎(chǔ)上附加一個子號(01~16)。1∶2 000圖幅編號是以其圖幅西南角的坐標(biāo)整公里數(shù)作為它的圖號,舍去X坐標(biāo)首位數(shù)字,X坐標(biāo)和Y坐標(biāo)各以3位字符表示,格式為:XXXYYY[6]。1∶500圖幅接合表如圖1所示,“××別墅”是一個圖名,對應(yīng)的圖號是“49651101”,其西南角的坐標(biāo)為“×496750.000,511000.000”。
圖1 1∶500圖幅接合表示意圖
元數(shù)據(jù)文件的數(shù)據(jù)標(biāo)志為Metadata,文件名后綴為.MAT,是一個純文本文件,分左右2邊,左邊是元數(shù)據(jù)項(xiàng),右邊是元數(shù)據(jù)值,2邊都沒有字節(jié)數(shù)限制,可以用記事本打開查看。每一圖幅對應(yīng)一個元數(shù)據(jù)文件,每一個DLG元數(shù)據(jù)都含有121個元數(shù)據(jù)項(xiàng)和元數(shù)據(jù)值,信息量有圖幅的圖名圖號、生產(chǎn)日期、接邊情況和數(shù)據(jù)源等,其中大部分元數(shù)據(jù)值是相同的,但圖名圖號、圖廓角點(diǎn)坐標(biāo)、接邊圖名稱、接邊情況等約20項(xiàng)是不相同的。
依上述圖分幅方法進(jìn)行理論計(jì)算,1 km2的1∶500地形圖含有16幅圖幅。在一些城市的基礎(chǔ)測繪招投標(biāo)中,十幾km2的地形圖測繪、入庫及元數(shù)據(jù)制作是常見的,有的還達(dá)到幾十上百km2,那么對應(yīng)的元數(shù)據(jù)文件個數(shù)便有幾百上千。
圖幅接合表是在CASS軟件中繪制的,里面圖名和圖號的屬性不具備相連關(guān)系,若手工將幾百個圖名和圖號對應(yīng)寫下來非常耗時(shí),這里采取的辦法是先在ArcGIS中提取圖名文本注記并計(jì)算其坐標(biāo),然后在Excel表格中根據(jù)坐標(biāo)與圖號之間的關(guān)系把圖名對應(yīng)的圖號計(jì)算出來。
在ArcGIS導(dǎo)入圖名之前要對CASS中的圖幅接合表進(jìn)行整理,將圖名圖號的高度統(tǒng)一變小,使其位置完全落在圖幅之中,刪除其他文本注記。修改完后,使用ArcGIS軟件導(dǎo)入文本注記并轉(zhuǎn)換成為shp文件,添加X字段和Y字段,然后自動計(jì)算圖名的X、Y坐標(biāo),替換圖名中的空格符,排序后刪除圖號和多余字段,最后將圖名文本注記的圖名、X坐標(biāo)、Y坐標(biāo)3個字段導(dǎo)出為Excel表格文件。
圖幅里面的坐標(biāo)與圖號存在一定的數(shù)學(xué)關(guān)系,因?yàn)锳rcGIS的X、Y坐標(biāo)是數(shù)學(xué)坐標(biāo),它與測量坐標(biāo)方向不一樣,所以圖號的前3位表示Y坐標(biāo)去除首位后的整公里數(shù),第4~6位表示X坐標(biāo)的整公里數(shù),最后2位與X、Y坐標(biāo)的后3位也存在一定關(guān)系(如表1所示)。
表1 圖號后2位與坐標(biāo)后3位的對應(yīng)關(guān)系表
令Z為圖號后2位,X為X3/250后取整,Y為Y3/250后取整,那么就有Z=X-4Y+13。在Excel表格中,可以將上述關(guān)系寫成VBA函數(shù)TuFu(),代碼如下:
Function TuFu(X As Long, Y As Long) As Long
Dim intX As Long, intY As Long, dX As Long, dY As Long, longY As Long
intX = Int(X / 1000)
dX = X - intX * 1000
longY = Y - Int(Y / 1000000) * 1000000
intY = Int(longY / 1000)
dY = longY - intY * 1000
TuFu = intY * 100000 + intX * 100 + 13 - Int(dY /250) * 4 + Int(dX / 250)
End Function
然后在表格中輸入該函數(shù)就可以計(jì)算出圖名對應(yīng)的圖號了。
根據(jù)上面的圖名圖號表將不相同的元數(shù)據(jù)值計(jì)算出來。必須計(jì)算的元數(shù)據(jù)值有:8個圖廓角點(diǎn)坐標(biāo)、8個接邊圖幅名稱和4個接邊狀況。這些都可以使用Excel里面的VBA開發(fā)一次性完成。
1)8個圖廓角點(diǎn)坐標(biāo)的計(jì)算。8個圖廓角點(diǎn)坐標(biāo)指的是所在圖幅西南、西北、東北、東南圖廓角點(diǎn)的X、Y坐標(biāo)。由圖幅的分幅和編號規(guī)則可知,這些角點(diǎn)坐標(biāo)都與圖號存在一定的數(shù)學(xué)關(guān)系。具體表述為:角點(diǎn)坐標(biāo)=公里數(shù)×1 000+圖號后2位對應(yīng)的附加數(shù)。角點(diǎn)X坐標(biāo)的公里數(shù)為當(dāng)?shù)豖坐標(biāo)省略的首位再添加圖號的前3位;角點(diǎn)Y坐標(biāo)的公里數(shù)是圖號的第4~6位;圖號后2位對應(yīng)的附加數(shù),如表2所示。
表2 圖號后2位對應(yīng)圖廓角點(diǎn)坐標(biāo)的附加數(shù)
2)8個接邊圖幅名稱的計(jì)算。8個接邊圖幅名稱是指圖幅接合表中8個方位的接邊圖幅名。先以本圖幅所在圖號算出接邊圖幅的圖號,接邊圖號之間也存在一定規(guī)律的加減關(guān)系;然后在VBA環(huán)境中采用Excel里面的VLOOKUP函數(shù),以圖號去匹配圖名,從而完成該步驟的工作。如果某一方位沒有接邊圖,按標(biāo)準(zhǔn)將其接邊圖幅名稱記錄為“無”。
3) 4個接邊狀況的計(jì)算。4個接邊狀況指的是西邊、北邊、東邊、南邊的接邊狀況,如果有接邊圖幅,則元數(shù)據(jù)值為“已接”,若無則接邊狀況寫“未接”。
至此,不同元數(shù)據(jù)值已計(jì)算完畢,這些元數(shù)據(jù)值再加上圖名和圖號共有22項(xiàng),再把它們導(dǎo)入Access數(shù)據(jù)庫,設(shè)定好22個字段名稱和數(shù)據(jù)類型,為下一步的元數(shù)據(jù)生成做好數(shù)據(jù)準(zhǔn)備。
元數(shù)據(jù)的生成采用VB.NET語言開發(fā),先是根據(jù)區(qū)域地形圖特征制作元數(shù)據(jù)模板,然后導(dǎo)入不同元數(shù)據(jù)值和模板并運(yùn)行程序生成MAT格式的元數(shù)據(jù)文件。
1)元數(shù)據(jù)模板制作,也是采用Access數(shù)據(jù)庫,添加2個字段:元數(shù)據(jù)項(xiàng)和元數(shù)據(jù)值。填好121個元數(shù)據(jù)項(xiàng)的內(nèi)容,元數(shù)據(jù)值除了圖名圖號和其他不相同的保持空值外,剩余的統(tǒng)一填上,如比例尺分母為500、所采用的大地基準(zhǔn)為1980西安坐標(biāo)系等。
2)元數(shù)據(jù)生成,是把上面的2個Access數(shù)據(jù)庫疊加后,一次性生成所有的元數(shù)據(jù)文件,程序運(yùn)行界面如圖2所示。具體操作是點(diǎn)擊按鈕“打開元數(shù)據(jù)屬性值”把22個不同屬性值的數(shù)據(jù)庫添加到第1個表格中,點(diǎn)擊按鈕“打開元數(shù)據(jù)模板”把模板添加到第2個表格中,然后點(diǎn)擊按鈕“生成元數(shù)據(jù)”便可以把所有元數(shù)據(jù)成果輸出到指定路徑下。
圖2 元數(shù)據(jù)生成程序界面
實(shí)踐證明,通過以上的開發(fā)思路和程序運(yùn)行,高效無誤地將1∶500圖幅接合表生成DLG元數(shù)據(jù),避免了人工操作帶來的錯誤,為某開發(fā)區(qū)的基礎(chǔ)測繪項(xiàng)目和以后的相關(guān)工作提供了技術(shù)支持。雖然文中只是提到1∶500圖幅接合表和DLG元數(shù)據(jù)標(biāo)準(zhǔn),但其中的技術(shù)稍作改動便可適用于其他大比例尺和其他類型元數(shù)據(jù)的制作。本文有一些規(guī)律是筆者在工作過程中總結(jié)出來的,例如根據(jù)圖名注記的坐標(biāo)計(jì)算圖號、圖幅輪廓角點(diǎn)坐標(biāo)的數(shù)據(jù)特征,這些規(guī)律在圖幅研究、地形圖坐標(biāo)特征探索等方面具有一定的借鑒作用[7]。
[1]張曉清. 基于元數(shù)據(jù)管理的環(huán)境地理信息系統(tǒng)的開發(fā)研究[J].現(xiàn)代測繪,2011(1):55-57
[2]CH/T 1007-2001.基礎(chǔ)地理信息數(shù)據(jù)產(chǎn)品元數(shù)據(jù)[S].
[3]李軼維,王武魁. GIS元數(shù)據(jù)標(biāo)準(zhǔn)綜述[J].科技信息,2011(5):22-24
[4]GB/T13989-92.國家基本比例尺地形圖分幅和編號[S].
[5]杜磊. 基于CASS 7.0圖幅接合表中文注記自動添加的實(shí)現(xiàn)方法[J].城市勘測,2011(3):151-153
[6]胡曉娟. 基于AutoCAD的大比例尺數(shù)字地形圖標(biāo)準(zhǔn)分幅裁剪方法研究[J].甘肅科技,2011(1):51-52
[7]趙雙飛,秦建新,張青年.南海市土地利用數(shù)據(jù)庫結(jié)構(gòu)和分層方案設(shè)計(jì)[J].國土資源科技管理,2004(1):66-68