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