鄧意媛 陳松林
摘? 要:針對空間數(shù)據(jù)下發(fā)過程中需快速定位到所在圖幅編號的需求,通過分析1∶5萬地形圖新舊圖幅編號組成,并根據(jù)新舊圖幅號生成及轉(zhuǎn)換算法,在.NET Framework框架下運(yùn)用ArcEngine實(shí)現(xiàn)了1∶5萬地形圖分幅圖框的自動生成,并附帶對應(yīng)的新舊圖幅編號屬性信息,極大方便了日常工作中相關(guān)數(shù)據(jù)的整理及下發(fā),提高了工作效率。
關(guān)鍵詞:1∶5萬;圖幅編號;標(biāo)準(zhǔn)分幅;自動生成;ArcEngine
中圖分類號:P208? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? 文章編號:1672-5603(2022)01-76-05
Automatical Generation 1∶50 000 Topographic Map Frame of Standard Subdivision Based on ArcEngine
DENG Yiyuan CHEN Songlin
(Third Surveying and Mapping Institute of Hunan Province, Changsha Hunan 410114)
Abstract: In response to the need to quickly locate the map frame number in the process of spatial data distribution, the composition of the new and old frame numbers of 1∶50,000 topographical map and applies the generation and conversion algorithm were analyzed. The ArcEngine under the NET framework was used to realize the automatic generation of the 1∶50000 sheet-systems of topographical map frame. The corresponding attribute information of the new and old map numbers was also attached, it greatly facilitates the sorting and distribution of relevant data in daily work and improves work efficiency.
Keywords: 1∶50 000; map number; standard subdivision; automatical generaion; ArcEngine
地形圖標(biāo)準(zhǔn)分幅在土地利用規(guī)劃、土地勘測定界、地質(zhì)災(zāi)害調(diào)查等工作中有極其重要的用途,經(jīng)常需要根據(jù)行政區(qū)劃、坐標(biāo)范圍進(jìn)行分幅界定,一般比例尺為1∶1萬或1∶5萬[1]。地形圖分幅圖框可通過MapGIS、ArcGIS等軟件通過一定步驟獲得,但生成的圖框往往不帶對應(yīng)的圖幅編號,需進(jìn)一步計(jì)算并錄入圖幅編號屬性信息,若涉及舊圖幅號之間的對比,還得進(jìn)行轉(zhuǎn)換。不少學(xué)者開展了地圖自動分幅及新舊圖幅號計(jì)算轉(zhuǎn)換的研究,有新舊圖幅號轉(zhuǎn)換計(jì)算方法[2],有通過Excel、VB[3-4]實(shí)現(xiàn),也有基于ArcEngine的自動分幅圖制作[5-7],都在一定程度上解決了實(shí)際需求,給工作帶來了便利。但未實(shí)現(xiàn)分幅圖框的新舊圖幅號屬性信息掛接,不利于相關(guān)工作的開展,特別是土地利用總體規(guī)劃[8]、勘測定界、地質(zhì)災(zāi)害調(diào)查等工作中涉及圖幅編號的數(shù)據(jù)庫建設(shè)以及借閱資料檔案館中保存的老圖幅編號的地形圖。
1∶5萬地形圖是我國各行各業(yè)的基本用圖。該比例尺地形圖通常用于一定范圍內(nèi)較詳細(xì)的研究和地形評價(jià),供多個(gè)國民經(jīng)濟(jì)部門勘察、規(guī)劃、設(shè)計(jì)、科學(xué)研究、教學(xué)等使用,同時(shí)也是軍隊(duì)的戰(zhàn)術(shù)用圖,供軍隊(duì)實(shí)地勘察、訓(xùn)練、圖上作業(yè)、編寫兵要、國防工程的規(guī)劃和設(shè)計(jì)等軍事活動使用,更是編寫更小比例尺地形圖或?qū)n}圖的基礎(chǔ)資料。通過開展1∶5萬地形圖分幅圖框自動生成及對應(yīng)新舊圖幅編號屬性掛接的研究,可為其他比例尺的自動分幅提供參考。
1? 1∶5萬地形圖分幅及新舊圖幅編號組成
地形圖舊分幅與編號是按1993年以前的標(biāo)準(zhǔn)產(chǎn)生的,對于1993年3月以后測繪和更新的地形圖采用的分幅和編號則稱為新分幅與編號[2]。我國基本比例尺地形圖均以1∶100萬地形圖為基礎(chǔ),按規(guī)定的經(jīng)差和緯差劃分圖幅,其中1∶5萬地形圖與其他比例尺的分幅經(jīng)緯差、行列數(shù)和圖幅數(shù)量關(guān)系見表1所示。1∶100萬地形圖的分幅采用國際1∶100萬地圖的分幅標(biāo)準(zhǔn)[9],從地球赤道起,向兩極每4°為一行,依次以字母A,B,C,…,V表示;從西經(jīng)180°起,向東每6°為一列,依次以數(shù)字l,2,3,…,60表示。按我國領(lǐng)土經(jīng)緯度的起始坐標(biāo),1∶100萬地形圖的行號范圍為A~N,列號范圍為43~53。
1.1? 1∶5萬地形圖舊圖幅編號組成
舊圖幅編號中,1∶100萬地形圖的編號是由該圖幅所在的行號(字符碼)和列號(數(shù)字碼)組成,規(guī)定行號在前,列號在后,二者之間劃一短線,如長沙在1∶100萬地形圖上大部分區(qū)域處于第H行第49列,故編號為H-49,也有部分區(qū)域處在H-50、G-49;1∶10萬地形圖的編號則是把一幅1∶100萬地形圖分為144幅,用1,2,…,144表示,即“1∶100萬圖幅號—序號碼”,如H-50-5。
1∶5萬地形圖的編號是將一幅1∶10萬地形圖分為4幅,用字母A,B,C,D表示,即“1∶10萬圖幅號—字母碼”,如H-50-5-A,H50-144-B??梢钥闯觯f圖幅編號的長短不一,難于標(biāo)準(zhǔn)化處理。
1.2? 1∶5萬地形圖新圖幅編號組成
新圖幅編號與舊圖幅編號的方法基本一致,只是表現(xiàn)形式不一樣,去掉了字符碼、數(shù)字碼兩兩之間的短線,如長沙在1∶100萬地形圖上的圖幅編號為H50。1∶50萬至1∶5 000地形圖圖幅編號均是以1∶100萬地形圖圖幅編號為基準(zhǔn)的10位代碼組成,如圖2所示。
新圖幅編號的前3位為1∶100萬地形圖的圖幅編號;第4位為比例尺代碼,新地形圖幾種比例尺的代碼見表2所示;第5~7位為圖幅橫行號從上到下排列,以3位數(shù)字碼表示,如001,002,… ;第8~10位為圖幅縱列號從左到右排列,也以3位數(shù)字碼表示,如001,002,…。從表1可知,1∶5萬地形圖是將每幅1∶100萬地形圖劃分為24行24列,總共576幅,因此1∶5萬地形圖的圖幅編號即為“1∶100萬圖幅號”+“E”+“001,002,…,024”+“001,002,…,024”。如長沙的H49E023020、H49E022021。
2? 1∶5萬標(biāo)準(zhǔn)圖幅編號計(jì)算及分幅圖框的自動生成
通過ArcGIS支持的開源數(shù)據(jù)格式Shapefile文件為載體,保存自動生成的圖框,Shapefile文件則是將空間數(shù)據(jù)與屬性數(shù)據(jù)進(jìn)行分別保存,并通過索引文件將二者聯(lián)系起來。圖框的屬性結(jié)構(gòu)主要包括舊圖幅號和新圖幅號2個(gè)字段,結(jié)構(gòu)信息如表3所示。圖框要素的生成有2種方式:第一,根據(jù)指定的左上、左下、右上、右下4個(gè)頂點(diǎn)坐標(biāo)來確定空間范圍;第二,根據(jù)已有的要素文件范圍來確定,如行政區(qū)劃范圍。自動生成圖框的流程如圖3所示。
2.1 1∶5萬新圖幅編號計(jì)算方法
首先,需要計(jì)算出1∶100 000地形圖圖幅編號的行號a,列號b。然后再計(jì)算1∶100 000地形圖圖幅號后的1∶5萬圖幅號的行號c,列號d。計(jì)算公式如下:
2.2 1∶5萬新舊圖幅編號的相互轉(zhuǎn)換計(jì)算
新舊圖幅編號的轉(zhuǎn)換既有新圖號向舊圖號的轉(zhuǎn)換,也有舊圖號向新圖號的轉(zhuǎn)換。因1∶100萬地形圖新舊圖幅號的含義和數(shù)值是完全相同的,只是表現(xiàn)形式不一樣,所以在轉(zhuǎn)換1∶5萬新舊圖幅號時(shí)只需轉(zhuǎn)換1∶100萬圖幅號以后的代碼即可。
第一,根據(jù)新圖幅號計(jì)算舊圖幅號,因1:5萬舊圖幅號組成結(jié)構(gòu)是“1∶10萬舊圖幅號-字母碼”,因此先計(jì)算1∶10萬舊圖幅序號i,再計(jì)算1∶5萬舊圖幅編號j(值對應(yīng)關(guān)系為:1-A;2-B;3-C;4-D),公式如下:
式中:H為新圖幅中的行號,L為新圖幅號中的列號。如根據(jù)新圖號H49E023021,可知行號為23,列號為21,代入計(jì)算可得老圖幅號為H-49-143-A。
第二,根據(jù)舊圖幅號計(jì)算新圖幅號,利用1∶5萬舊圖幅號中1∶10萬舊圖幅序號i和本身編號j(值對應(yīng)關(guān)系為:A-1;B-2;C-3;D-4)來換算得到新圖幅的行號H,列號L,公式如下:
如根據(jù)舊圖號H-49-142-D,可知i為142,j為4,代入計(jì)算可得新圖幅號為H49E024020。
2.3 基于ArcEngine程序自動生成分幅圖框
從圖3可知,實(shí)現(xiàn)1∶5萬地形圖標(biāo)準(zhǔn)分幅圖框的自動生成,首先要獲取到圖框生成的空間范圍,可根據(jù)指定的要素文件范圍(如行政區(qū)劃)或者是給定的上下緯度(l_top、l_bottom)、左右經(jīng)度(l_left、l_right)來確定,然后根據(jù)經(jīng)緯度坐標(biāo)計(jì)算1∶5萬地形圖新圖幅編號Ww_num,見代碼1。
代碼1:計(jì)算新圖幅編號
double x = (l_left + l_right +) / 2;? double y = (l_top + l_bottom +) / 2;
int Bw_H = (int)(y / 4) + 1;? int Bw_L = (int)(x / 6) + 31;
double x5 = x - ((int)(x / 6)) * 6;? double y5 = y - ((int)(y / 4)) * 4;
int H = (int)(24 - Math.Ceiling(y5 * 6));? int L = (int)Math.Ceiling(x5 / 0.25);
int Ww_H = H + 1;? int Ww_L = L;
string Ww_num = (char)( Bw_H + 64).ToString();
Ww_num += String.Format(“{0:#00}”, Bw_L);
Ww_num += “E”;
Ww_num += String.Format(“{0:#000}”, Ww_H);
Ww_num += String.Format(“{0:#000}”, Ww_L);
其次,通過ArcEngine創(chuàng)建圖框要素并為其掛接計(jì)算好的新舊圖幅號屬性。用到的ArcEngine類庫主要有DataSourcesFile,Geodatabase,Geometry,Carto和ADF等。單個(gè)圖幅框的生成思路如下:(1)根據(jù)頂點(diǎn)經(jīng)緯度坐標(biāo)通過IPolygon接口確定圖框的空間范圍,用接口IFeatureLayer建立要素圖層,IFeatureClass獲取要素類對象,IFeatureCursor得到存儲要素對象的位置,CreateFeatureBuffer()方法創(chuàng)建IFeatureBuffer對象,set_Value“NewTFH索引”,“新圖幅號值”方法得到IFeatureBuffer對象值,(2)利用IFeatureCursor對象的方法InsertFeature(IFeatureBuffer對象值)保存信息到圖框要素的屬性表中,見代碼2。
代碼2:圖框生成并掛接圖幅編號
IFeatureLayer tkLayer;? ?IPolygon tkPolygon;
IFeatureClass tkFeatureClass = tkLayer.FeatureClass;
IFeatureBuffer featureBuffer = tkFeatureClass.CreateFeatureBuffer();
IFeatureCursor featureCursor = tkFeatureClass.Insert(true);
int NewTFHIndex = tkFeatureClass.Fields.FindField(“NewTFH”);
int OldTFHIndex = tkFeatureClass.Fields.FindField(“OldTFH “);
featureBuffer.set_Value(NewTFHIndex, ”新圖幅號值”);
featureBuffer.set_Value(OldTFHIndex, ”舊圖幅號值”);
featureBuffer.Shape = tkPolygon;
featureCursor.InsertFeature(featureBuffer);
最后,根據(jù)指定的空間范圍,代入1∶5萬標(biāo)準(zhǔn)分幅的經(jīng)差及緯差計(jì)算得到可生成的圖框數(shù)量,獲取到包含每個(gè)分幅圖框的坐標(biāo)列表,最終循環(huán)生成所有的圖框要素。
3 應(yīng)用與結(jié)果
遵循上述的技術(shù)流程,設(shè)計(jì)了1∶5萬標(biāo)準(zhǔn)分幅圖框生成工具圖形界面,根據(jù)指定的圖框生成范圍,將自動生成該空間范圍的1∶5萬標(biāo)準(zhǔn)分幅圖框,通過鼠標(biāo)右鍵可點(diǎn)擊查詢當(dāng)前圖框新舊圖幅號信息。如圖4所示。
通過實(shí)際應(yīng)用,1∶5萬標(biāo)準(zhǔn)分幅圖框生成工具生成的圖框新舊圖幅號準(zhǔn)確、迅速,極大方便了日常工作中數(shù)據(jù)的分發(fā)及分幅圖件資料的整理,也可應(yīng)用到各行業(yè)1∶5萬分幅專題地圖的產(chǎn)出[10]。
參考文獻(xiàn)/References
[1] 李海泉, 楊曉鋒, 梁爽, 等. 標(biāo)準(zhǔn)分幅土地利用現(xiàn)狀圖編制軟件的設(shè)計(jì)與實(shí)現(xiàn)[J]. 測繪與空間地理信息, 2017, 40(10): 146-148.
[2] 梁林峰. 國家基本比例尺地形圖新舊圖幅號轉(zhuǎn)換計(jì)算方法[J]. 內(nèi)蒙古林業(yè)調(diào)查設(shè)計(jì), 2015, 38(4): 99-102.
[3] 譚緒泉, 楊志軍. 利用Excel實(shí)現(xiàn)批量計(jì)算不同比例尺下的標(biāo)準(zhǔn)分幅圖幅號[J]. 山東林業(yè)科技, 2014, 44(2): 95-97.
[4] 艾光輝, 賀冬梅, 張永仁. 用VB實(shí)現(xiàn)國家基本比例尺地形圖新舊圖幅號的轉(zhuǎn)換[J]. 江西測繪, 2009(2): 43-45.
[5] 莫奇京. 基于ARCENGINE的林業(yè)地圖自動分幅輸出系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D]. 南寧: 廣西大學(xué), 2015.
[6] 劉靜波, 王偉, 李欣, 等. 基于ArcEngine的地圖自動分幅實(shí)現(xiàn)[J]. 海洋測繪, 2013, 33(6): 45-48.
[7] 王文德. 基于ArcGIS Engine的標(biāo)準(zhǔn)地圖分幅圖制作與輸出[J]. 城市地理, 2015(8): 158-160.
[8] 鄧意媛. MapGIS10 Objects在土地利用總體規(guī)劃數(shù)據(jù)庫更新中的應(yīng)用[J]. 國土資源導(dǎo)刊, 2021, 18(3): 87-91.
[9] 中華人民共和國國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局,中國國家標(biāo)準(zhǔn)化管理委員會.GB/T 13989—2012. 國家基本比例尺地圖分幅和編號[S].北京:中國標(biāo)準(zhǔn)出版社,2012.
[10] 康承旭, 唐紅亮, 田優(yōu)平. 基于ArcGIS和SketchUp建模產(chǎn)出地震應(yīng)急三維專題圖[J]. 科學(xué)技術(shù)與工程, 2019, 19(19): 12-17.