本文引用格式:.面向批量制圖的ArcPy自動化腳本工具[J].自動化與信息工程,2025,46(3):37-42.WEI Jinwang. ArcPy-based automated script tool for batch mapping[J]. Automation amp; Information Engineering,2025,46(3):37-42.
關(guān)鍵詞:自動化制圖;ArcPy;ArcGIS;宗地圖;批量制圖中圖分類號:TP391.72 文獻標志碼:A 文章編號:1674-2605(2025)03-0006-06DOI: 10.12475/aie.20250306 開放獲取
ArcPy-based Automated Script Tool for Batch Mapping
WEI Jinwang
(Land Information Technology Co., Ltd., Xiamen, Xiamen 361021, China)
Abstract: In cadastral survey projects,cadastral parcelmaps need tobe prepared for each parcel. Traditional manual mapping methodsaretimeconsuming,labor-intensive,anderror-prone.Thisstudydevelopsanautomatedmappingsripttoolbasedonthe ArcGIS platform usingPythonand the ArcPysite package,enablingbatch automationofcadastralparcel mapproduction.The tool automaticallylocatesparcelfeatures,adjustsmapscale,controlslayerdisplayextent,andflsinparcelatributeinforation. Experimentalresultsdemonstratethatthetool ehances mapping eficiencyandaccuracyreduces humanerors,andoffers customizabilityand flexibility,making it applicable to batch production of other thematic maps.
Keywords: automated mapping; ArcPy; ArcGIS; parcel map; batch mapping
0 引言
宗地圖作為土地管理和城市規(guī)劃的基礎(chǔ)地理信息產(chǎn)品,對確保土地權(quán)屬和土地利用的準確性至關(guān)重要。在地籍調(diào)查項目中,要求對每宗地編制宗地圖,體現(xiàn)其權(quán)屬、界址、位置、面積、用途等信息。然而,傳統(tǒng)的人工制圖方法存在效率低、易出錯和圖件標準不一致等問題。因此,研究自動化制圖技術(shù),提升制圖的效率與準確性,具有重要的實際意義。
近些年,學者們提出了多種自動化制圖方法。文獻[1]利用要素操作引擎(feature manipulate engine,F(xiàn)ME)實現(xiàn)了土地利用現(xiàn)狀數(shù)據(jù)自動預處理、圖面自動整飾和分幅地圖自動輸出等功能。文獻[2-3]運用ArcGIS軟件平臺的Python腳本語言,實現(xiàn)了土地利用總體規(guī)劃圖數(shù)據(jù)庫、農(nóng)經(jīng)權(quán)成果圖等的批量輸出。文獻[4-6運用ArcGIS軟件平臺的數(shù)據(jù)驅(qū)動頁面功能實現(xiàn)了專題地圖的批量制作。但上述方法操作較為繁瑣,依賴軟件自帶功能,無法控制各個圖層的顯示范圍,適用于較為單一的制圖場景,靈活性相對較差。
在宗地圖制作方面,文獻[7-9]運用VisualLISP或VBA腳本語言,實現(xiàn)了宗地圖的自動批處理;文獻[10-11]基于EPS平臺進行二次開發(fā),實現(xiàn)了宗地圖的自動化制作;文獻[12-13]利用ArcEngine組件研發(fā)宗地圖自動化制作軟件,提高了宗地圖的制作效率。但上述方法僅局限于宗地圖的制作,不適用于其他專題地圖(如地籍圖、土地利用現(xiàn)狀圖、永久基本農(nóng)田保護圖等)的自動化制作。
本文以宗地圖制作為例,利用Python語言結(jié)合ArcPy站點包,開發(fā)基于ArcGIS軟件平臺的自動化制圖腳本工具,以實現(xiàn)制圖流程的自動化,以及各類專題地圖的批量制作
1宗地圖構(gòu)成要素及人工制作流程
1.1 宗地圖構(gòu)成要素
宗地圖的數(shù)據(jù)主要來源于地籍調(diào)查數(shù)據(jù),包括調(diào)查區(qū)域的地形底圖和相關(guān)的矢量圖層。其中,矢量圖層主要包括注記、界址點、界址線、宗地層等,結(jié)構(gòu)如圖1所示。
日Layers田 注記日回 界址點? 日界址線田 ? 宗地層田 ? 地形底圖
宗地圖的構(gòu)成要素分為屬性信息和空間信息。其中,屬性信息主要來源于宗地層的屬性表,包括宗地代碼、土地權(quán)利人、所在圖幅號、宗地面積等字段,這些字段命名需規(guī)范,數(shù)據(jù)精度需保持一致,從而為自動化出圖提供保障;空間信息主要描述宗地的界址、位置和形狀等空間分布特征,由界址點、界址線、宗地層等相關(guān)圖層疊加地形底圖來描述。
宗地圖一般以一個宗地矢量要素為中心、疊加地形底圖和宗地屬性信息進行制作,并標注出圖比例尺。宗地圖的樣式如圖2所示。
1.2 宗地圖人工制作流程
首先,在ArcGIS軟件平臺中制作宗地圖的出圖模板,定位待出圖宗地的矢量要素,調(diào)整出圖比例尺,確定出圖范圍;
然后,人工提取宗地層的屬性信息,填入出圖模板中;并進行注記、壓蓋、檢查、圖面整飾等操作;
接著,將調(diào)整好的宗地圖模板另存為本宗地的ArcMap制圖工程,并導出JPEG格式的宗地圖;
最后,依次對宗地層中的每一宗地要素重復上述步驟,匯總后即可完成全部宗地圖的制作。
宗地圖的人工制作流程如圖3所示。
2宗地圖自動化制作流程
本文根據(jù)宗地圖的人工制作流程抽象形成其自動化制作流程。宗地圖的自動化制作流程僅需先制作宗地圖模板,再執(zhí)行ArcPy編寫的腳本工具,即可自動生成宗地圖的ArcMap制圖工程。在完成必要的注記、壓蓋、檢查、圖面整飾等操作后,再利用腳本工具自動導出JPEG格式的宗地圖。宗地圖的自動化制作流程如圖4所示。
宗地圖的自動化制作包含3個關(guān)鍵步驟:1)自動確定宗地矢量要素的定位和出圖比例尺;2)控制僅顯示本宗地的界址點、界址線要素;3)自動填寫宗地屬性信息。
2.1 宗地要素定位
首先,利用ArcPy站點包數(shù)據(jù)訪問模塊提供的SearchCursor方法,以迭代方式搜索游標,遍歷宗地層屬性,依次讀取宗地層的每條記錄;
然后,設(shè)置數(shù)據(jù)框的顯示范圍為本宗地的外接矩形范圍,將本宗地居中顯示,便于后續(xù)的制圖操作;
最后,調(diào)整出圖比例尺,對當前出圖比例尺的數(shù)
值向上取整,根據(jù)需求設(shè)置為500的整數(shù)倍,以使宗地圖的整體更加美觀。
2.2 圖層顯示控制
利用ArcPy站點包制圖模塊中Layer對象的definitionQuery屬性,通過定義SQL查詢語句,控制各圖層的顯示范圍。設(shè)置界址點、界址線圖層的定義查詢語句,即可屏蔽本宗地之外的界址點、界址線等要素,從而僅顯示與本宗地相關(guān)的要素。
2.3 宗地屬性填寫
利用ArcPy站點包制圖模塊中TextElement對象的name和text屬性,通過元素名稱找出相應的文本元素,并修改其文本內(nèi)容,實現(xiàn)宗地屬性信息的自動填寫。
3自動化制圖腳本工具
3.1批量生成制圖工程
利用Python語言結(jié)合ArcPy站點包提供的函數(shù),編寫基于ArcGIS軟件平臺的自動化制圖腳本工具。
首先,定義4個輸入?yún)?shù),即制圖圖層、定義語句字段、需定義顯示的圖層、需更新的文本元素等;然后,編寫代碼實現(xiàn)圖層要素的定位與顯示控制;最后,實現(xiàn)宗地屬性自動填寫與保存功能。自動化制圖腳本工具界面如圖5所示。
批量制圖的主要代碼如下:
腳本1批量制圖
輸入:mainfeature:制圖圖層;queryfield:定義語句字段;controllayer:需定義顯示的圖層;textelements:需更新的文本元素;#文本元素的參數(shù)細化for content in textelements.split(\";\"):#文本元素名稱(假設(shè)為A、B、C、D)textnames.append(content.split(' 1=1 )[0])#涉及更新的文本內(nèi)容texts.append(content.split( ?=\" [1]#文本標注字段(假設(shè)為[宗地號]、[權(quán)利人]、[圖幅號]、[面積])fields.append(content. split (\"[\")[1].split (\"]\") [0])fields.append(queryfield)end
# mxd 為當前工程模板 mxd←-arcpy.mapping.MapDocument (\"CURRENT\") #遍歷制圖圖層中的要素 for row in arcpy.da.SearchCursor (mainfeature,fields): #遍歷需定義顯示的圖層 for layer in controllayer.split(\";\"): for lyr in arcpy. mapping. ListLayers (mxd, layer): queryvalue $$ row[len(row)-1] #賦予圖層定義語句 lyr.definitionQuery $$ queryfield +\"=\"+ queryvalue
+ end end #縮放至要素范圍并居中顯示 df←arcpy.mapping.ListDataFrames (mxd) [0] df.extent-row[0].extent #自動修改比例尺為500的整數(shù)倍 df.scale $$ int(df.scale/500+1)*500 #遍歷工程中的文本元素 for elm inarcpy.mapping.List Layout Elements
(mxd,\"TEXT_ELEMENT\"): for textname in textnames: if elm.name textname: i←-textnames.index(textname) fieldvalue $$ row[i+1] #自動修改文本元素內(nèi)容 elm.text←—texts[i].replace(\"[\"+fields[i +1 1 +\"J\"
fieldvalue). replace (\"+\",\"\") end end #設(shè)置工程命名路徑 mxdname -os :path.split (mxd.filePath) (204
queryvalue + \".mxd\" #另存為mxd工程 mxd.saveACopy(mxdname) end
3.2 批量導出圖片
通過遍歷MXD工程文件,設(shè)置圖片輸出分辨率,利用ArcPy站點包制圖模塊中的ExportToJPEG函數(shù),批量導出JPEG格式的宗地圖。批量導圖工具界面如圖6所示。
批量導出JPEG格式的宗地圖主要代碼如下:
4實驗分析
本文實驗環(huán)境為普通商用臺式計算機,其硬件配置為IntelCorei7-4790CPU,主頻 3.60GHz ,8.00GBDDR3內(nèi)存;軟件版本采用ArcGIS10.2.2。
為驗證面向批量制圖的ArcPy自動化腳本工具的有效性,本文選取157個宗地進行批量制圖,并與某技術(shù)人員運用ArcGIS軟件平臺采用傳統(tǒng)人工制圖方法進行對比,實驗結(jié)果如表1所示。
由表1可知,本文開發(fā)的面向批量制圖的ArcPy自動化腳本工具在制作大量宗地圖時,效率高于人工制圖方法,且宗地屬性填寫準確無誤,但部分宗地圖需進行注記、壓蓋處理。
5結(jié)論
本文以宗地圖制作為例,開發(fā)了面向批量制圖的ArcPy自動化腳本工具,提高了制圖效率,保障了制圖的規(guī)范性、統(tǒng)一性和準確性,有效減少人為錯誤;具有高度可定制性和靈活性,適用于各類專題地圖的批量制作,如根據(jù)標準分幅制作地籍圖,根據(jù)項自用地紅線制作土地利用現(xiàn)狀圖,根據(jù)行政村范圍制作永久基本農(nóng)田保護圖等。但該工具若用于宗地圖之外的其他專題地圖制作,需考慮ArcMap制圖工程模板的設(shè)計,如自動填寫更新的相關(guān)屬性標注應設(shè)置為文本元素,并賦予相應的元素名稱。該工具仍存在一定的缺陷,如注記、壓蓋、檢查及圖面整飾等操作尚未完全實現(xiàn)自動化等,對此可進行進一步的深入研究。
°leddash Theauthor(s) 2024.This isan open access article under the CC BY-NC-ND 4.0 License (https://creativecommons.org/licenses/ by-nc-nd/4.0/)
參考文獻
[1]鄧飛,陳字同,鄭代揚.基于FME的數(shù)據(jù)庫自動制圖技術(shù)探索與實踐[J].國土資源信息化,2013,76(4):66-68;28.
[2]王君萍,張金鐘,黃功文.Python在鄉(xiāng)級土地利用總體規(guī)劃圖批量制圖中的應用[J].測繪標準化,2018,34(3):50-52.
[3]劉常弘,吳丹健.特定比例尺下利用Pythonamp;Arcgis快速制作地塊分布圖方法研究[J].江西測繪,2017,113(3):8-10:30.
[4]侯輝嬌子.基于ArcGIS的村莊地圖快速批量制作方法研究[J].測繪與空間地理信息,2018,41(1):149-151;155.
[5]林金寶.基于ArcPy的ArcGIS數(shù)據(jù)驅(qū)動制圖及批量出圖以耕地質(zhì)量等別評定制圖為例[J].閩西職業(yè)技術(shù)學院學報,2021,23(3):104-108.
[6]雷泓晏,邵龍,李能.基于Python腳本編程的分幅土地利用現(xiàn)狀圖制作[J].測繪與空間地理信息,2021,44(11):162-164;168.
[7]喻守剛,余青容,李志鵬,等.基于VBA技術(shù)的宗地圖自動批處理方法[J].測繪與空間地理信息,2020,43(9):171-174.
[8]周松,王夏.VisualLISP在地籍測量中的應用[J].測繪,2017,40(6):274-276.
[9]胡紹輝,陳海英,魏葉敏.AutoCAD2004平臺下農(nóng)村宅基地宗地圖批量生產(chǎn)軟件的研發(fā)[J].測繪通報,2016(9):83-86;107.
[10]張春有,王金月,王劍輝.EPS腳本二次開發(fā)在“房地一體”中的應用[J].測繪標準化,2022,38(3):116-120.
[11]李更爾.基于EPS的宗地圖測繪一體化軟件設(shè)計與開發(fā)[J].地理信息世界,2017,24(4):118-120:125.
[12]劉暢.宗地圖自動化制作軟件的設(shè)計與研發(fā)[J].測繪與空間地理信息,2020,43(6):132-134.
[13]張玲玉,梁明,羅燕,等.宗地圖的自適應制圖與度量方法研究[J].地理信息世界,2019,26(6):26-30;36.