亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ArcPy和VBA的長(zhǎng)順縣國(guó)家儲(chǔ)備林小班設(shè)計(jì)圖ArcGis自動(dòng)出圖方法研究

        2021-07-13 07:29:12歐丁丁劉世好尹祺卿胡春香
        關(guān)鍵詞:長(zhǎng)順縣設(shè)計(jì)圖字段

        歐丁丁,張 琪,劉世好,曹 虹,文 汲,周 維,尹祺卿,胡春香

        (1.國(guó)家林業(yè)和草原局中南調(diào)查規(guī)劃設(shè)計(jì)院,長(zhǎng)沙 410014; 2.中南林業(yè)科技大學(xué),長(zhǎng)沙 410004)

        林業(yè)制圖是林業(yè)工作中的一項(xiàng)基礎(chǔ)性工作,也是向大眾直觀展示林業(yè)調(diào)查、規(guī)劃設(shè)計(jì)成果的重要途徑[1-3],但傳統(tǒng)的林業(yè)制圖工作量大、技術(shù)要求高[4-7],特別具體到每個(gè)小班的現(xiàn)狀和設(shè)計(jì)情況的圖件制作,圖件數(shù)量多,制圖時(shí)間周期長(zhǎng),嚴(yán)重?cái)D占項(xiàng)目時(shí)間?;诖耍糠謱W(xué)者開(kāi)始思考如何進(jìn)行自動(dòng)出圖,并尋求適合特定條件下的自動(dòng)出圖方法。有的學(xué)者對(duì)單個(gè)小班的出圖方法進(jìn)行了研究,如:李霄等[8]基于Arcgis內(nèi)置站點(diǎn)包ArcPy對(duì)違法礦山小班的現(xiàn)狀進(jìn)行自動(dòng)出圖方法研究,通過(guò)建立地圖模板,遍歷要素的每一個(gè)小班,使用動(dòng)態(tài)文本對(duì)小班現(xiàn)狀進(jìn)行描述,最后導(dǎo)出圖片,相比人工制圖節(jié)省了大量的時(shí)間;陽(yáng)昭[9]利用ArcGIS10.2的數(shù)據(jù)驅(qū)動(dòng)頁(yè)面,對(duì)低效林改造作業(yè)設(shè)計(jì)項(xiàng)目小班進(jìn)行了自動(dòng)分幅出圖,實(shí)現(xiàn)了林業(yè)項(xiàng)目專題圖的自動(dòng)分幅出圖。雖然已有不少有關(guān)ArcGIS自動(dòng)出圖的研究,但目前依然存在尚未解決的問(wèn)題,如:在對(duì)多個(gè)小班自動(dòng)出圖的時(shí)候,如何避免圖面框線與小班界線相交的問(wèn)題、如何在出圖時(shí)自動(dòng)生成小班屬性簡(jiǎn)表,以及同時(shí)一張已定紙張大小的范圍能內(nèi)包含最多的小班,從而節(jié)約紙張并且保持出圖界面的美觀等。本研究將通過(guò)結(jié)合ArcGIS內(nèi)置站點(diǎn)包ArcPy和基于Excel的編程語(yǔ)言VBA解決上述問(wèn)題,為林業(yè)自動(dòng)化制圖提供一種新的方法。

        1 研究區(qū)概況

        長(zhǎng)順縣位于貴州省中南部,地處烏蒙山—苗嶺生態(tài)屏障中段及烏江生態(tài)保護(hù)帶中段,距省城貴陽(yáng)市 87 km,據(jù)黔南自治州首府都勻市178 km,北靠貴陽(yáng)市及平壩縣,東鄰長(zhǎng)順縣,東南抵羅甸縣,西南抵紫云苗族布依族自治縣,西北抵安順,東北抵貴陽(yáng)市花溪;屬濕潤(rùn)地區(qū)的亞熱帶季風(fēng)氣候,具有山岳型氣候特點(diǎn),冬春干燥,夏季濕潤(rùn),四季分明。

        近年來(lái),長(zhǎng)順縣積極推進(jìn)國(guó)家儲(chǔ)備林建設(shè)進(jìn)度,已完成國(guó)家儲(chǔ)備林建設(shè)一期項(xiàng)目可研,為全面完成貴州省國(guó)家儲(chǔ)備林建設(shè)任務(wù),科學(xué)經(jīng)營(yíng)和精準(zhǔn)提升長(zhǎng)順縣森林質(zhì)量,增強(qiáng)區(qū)域內(nèi)優(yōu)質(zhì)木材和生態(tài)產(chǎn)品的供應(yīng)能力,鞏固全縣脫貧攻堅(jiān)成果,深入論證長(zhǎng)順縣國(guó)家儲(chǔ)備林二期建設(shè)的必要性和可行性,長(zhǎng)順縣林業(yè)局委托國(guó)家林業(yè)和草原局中南調(diào)查規(guī)劃設(shè)計(jì)院編制《長(zhǎng)順縣國(guó)家儲(chǔ)備林二期建設(shè)項(xiàng)目可行性研究報(bào)告》。

        2 材料與方法

        2.1 數(shù)據(jù)來(lái)源

        數(shù)據(jù)來(lái)源于《長(zhǎng)順縣國(guó)家儲(chǔ)備林二期建設(shè)項(xiàng)目可行性研究報(bào)告》中劃定的國(guó)家儲(chǔ)備林建設(shè)小班。

        2.2 研究方法

        1)ArcPy簡(jiǎn)介

        ArcPy是一個(gè)以成功的 arcgisscripting 模塊為基礎(chǔ)并繼承了 arcgisscripting 功能進(jìn)而構(gòu)建而成的站點(diǎn)包。目的是為以實(shí)用高效的方式通過(guò) Python 執(zhí)行地理數(shù)據(jù)分析、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)管理和地圖自動(dòng)化創(chuàng)建基礎(chǔ)。在ArcGIS的內(nèi)置Python窗口中可以導(dǎo)入AArcPy站點(diǎn)包,進(jìn)行數(shù)據(jù)的處理和分析。

        使用數(shù)據(jù)驅(qū)動(dòng)框架進(jìn)行小班自動(dòng)出圖的關(guān)鍵是小班索引圖層的創(chuàng)建,而ArcGIS中自帶的索引圖層創(chuàng)建功能難以滿足出圖要求,如按鄉(xiāng)鎮(zhèn)出圖、邊框與小班界不相交等。本研究將使用ArcPy進(jìn)行小班索引圖層的創(chuàng)建。

        2)VBA簡(jiǎn)介

        VBA(Visual Basic for Applications)是微軟公司基于VB(Visual Basic)和office開(kāi)發(fā)的自動(dòng)化辦公語(yǔ)言,VBA與VB編程語(yǔ)言的編程語(yǔ)法、開(kāi)發(fā)機(jī)制和語(yǔ)言結(jié)構(gòu)幾乎一致,主要能用來(lái)擴(kuò)展office的應(yīng)用程序功能。

        小班屬性是小班設(shè)計(jì)圖的重要組成部分,用于補(bǔ)充每個(gè)小班的屬性及設(shè)計(jì)情況,通??梢杂脛?dòng)態(tài)文本和小班簡(jiǎn)表的方式實(shí)現(xiàn)。對(duì)于一個(gè)小班的小班設(shè)計(jì)圖而言,動(dòng)態(tài)文本的實(shí)現(xiàn)方式相對(duì)簡(jiǎn)單,文本布局可根據(jù)需求自行排版,但是不能同時(shí)顯示多個(gè)小班的屬性信息。使用小班簡(jiǎn)表可同時(shí)顯示多個(gè)小班的屬性信息,但是對(duì)于自動(dòng)出圖而言,如何根據(jù)小班屬性表桉小班索引圖層定制的分幅自動(dòng)生成小班簡(jiǎn)表是需要解決的重點(diǎn)及難點(diǎn)。本研究基于Excel使用VBA編程語(yǔ)言自動(dòng)生成小班簡(jiǎn)表。

        3 實(shí)現(xiàn)步驟

        3.1 出圖模板的定制

        1)圖層的添加。根據(jù)國(guó)家儲(chǔ)備林相關(guān)技術(shù)規(guī)程,使用地形圖作為底圖,行政界線包括鄉(xiāng)鎮(zhèn)界和村界,在ArcMAP中依次添加地形圖、鄉(xiāng)鎮(zhèn)界線、村界線、設(shè)計(jì)小班和索引圖層。其中:設(shè)計(jì)小班和索引圖層可為任意面圖層,并將其圖層名稱分別更改為XB_JX和qdfz,同時(shí)為qdfz添加tplj字段和page字段。

        2)數(shù)據(jù)驅(qū)動(dòng)頁(yè)面設(shè)置。在設(shè)置數(shù)據(jù)驅(qū)動(dòng)頁(yè)面中,勾選啟用數(shù)據(jù)驅(qū)動(dòng)頁(yè)面數(shù)據(jù)框?yàn)槟J(rèn)圖層,索引圖層為qdfz圖層,名稱字段為page,排序字段為OBJECTID字段,調(diào)整當(dāng)前比例為1∶10000,然后在范圍中選擇居中并保持當(dāng)前比例。

        3)頁(yè)面設(shè)置。轉(zhuǎn)為布局視圖,并在文件—頁(yè)面和打印設(shè)置中將紙張?jiān)O(shè)置為A3橫向,將數(shù)據(jù)框調(diào)整為合適大小,添加公里格網(wǎng),再依次添加指北針、圖例和比例尺,然后插入圖片,將圖片錨點(diǎn)設(shè)置為左上定點(diǎn),并能進(jìn)行移動(dòng)和縮放,保證圖片左上頂點(diǎn)與數(shù)據(jù)框頂點(diǎn)重合,圖片大小以100%縮放時(shí)能看清圖片中的文字為宜,然后右擊圖片查看屬性,在源中選擇數(shù)據(jù)驅(qū)動(dòng)頁(yè)面的簡(jiǎn)單路徑,索引圖層的字段設(shè)置為tplj。

        然后為小班設(shè)計(jì)圖添加動(dòng)態(tài)標(biāo)題,在插入中選擇插入標(biāo)題,代碼如圖1所示。

        圖1 小班設(shè)計(jì)圖標(biāo)題動(dòng)態(tài)文本

        4)頁(yè)面定義查詢。右擊XB_JX,在定義查詢選擇頁(yè)面定義,啟用頁(yè)面定義查詢頁(yè)面名稱字段選擇page,選擇匹配。這樣可保證在出圖時(shí),XB_JX圖層只顯示與數(shù)據(jù)驅(qū)動(dòng)頁(yè)面中page字段屬性一樣的小班。

        5)小班標(biāo)注。利用小班標(biāo)注可以將小班界與屬性信息相關(guān)聯(lián),本研究使用分子式進(jìn)行小班信息的標(biāo)注,其中:[bz]為小班號(hào)字段。如圖2所示。

        圖2 標(biāo)注樣式

        6)圖層范圍指示器。圖層范圍指示器可用于標(biāo)識(shí)出圖范圍在總范圍中的位置,本研究中還可用來(lái)檢驗(yàn)出圖效果(通過(guò)查看小班界線與指示范圍是否相交來(lái)檢驗(yàn))。實(shí)現(xiàn)步驟為:插入數(shù)據(jù)框、添加小班數(shù)據(jù)、添加鄉(xiāng)鎮(zhèn)界、更改數(shù)據(jù)顯示樣式、右擊新建的圖層選擇范圍指示器選中圖層并勾選使用簡(jiǎn)單范圍。

        設(shè)置完后將出圖模板保存?zhèn)溆谩?/p>

        3.2 基于ArcPy的小班索引圖層創(chuàng)建

        小班索引圖層創(chuàng)建的關(guān)鍵是在1∶10000的比例尺下,將完全被A3紙覆蓋的小班的page字段命名為相同的值。

        1)獲取屬性表。在ArcPy中對(duì)小班的屬性進(jìn)行查詢分析有兩種方法:一種是使用游標(biāo)依次進(jìn)行遍歷,另一種是將屬性表導(dǎo)出為數(shù)組進(jìn)行操作,本步驟只能選擇第一種方式進(jìn)行,所需要的小班屬性包括小班坐標(biāo)點(diǎn)、OBJECTID、page字段和鄉(xiāng)鎮(zhèn)字段,在使用游標(biāo)遍歷小班并保存所需的屬性信息至數(shù)組后,對(duì)數(shù)組按照鄉(xiāng)鎮(zhèn)名稱進(jìn)行排序,方便后面按鄉(xiāng)鎮(zhèn)進(jìn)行位置距離的搜索。實(shí)現(xiàn)代碼如圖3所示。

        圖3 獲取屬性表代碼

        2)賦值屬性表。將所需要的屬性提取出來(lái)后,要對(duì)page字段進(jìn)行賦值,對(duì)屬性表中的每一行,提取每個(gè)小班的四至坐標(biāo),如果鄉(xiāng)鎮(zhèn)名字相同,則進(jìn)行遍歷,遍歷分兩次進(jìn)行,第一層是遍歷每一個(gè)小班,第二層是針對(duì)這一個(gè)小班對(duì)比鄉(xiāng)鎮(zhèn)內(nèi)其他小班的四至坐標(biāo)與本小班的四至坐標(biāo)的x方向?qū)嶋H距離的最大值和y方向上實(shí)際距離的最大值,如果此距離均小于A3紙張的實(shí)際距離的某個(gè)比例(因?yàn)樾“喾秶粫?huì)鋪滿整張A3紙),則將其page字段賦相同的值,同時(shí),進(jìn)行檢測(cè),若添加了一個(gè)新的小班后,整體的范圍超過(guò)了A3紙張的實(shí)際距離的某個(gè)比例,則不賦同樣的值。實(shí)現(xiàn)代碼如下:

        def fz_sxb(sxb_list,cs):

        i =0

        ss_list=[]

        xz_list=[]

        for shp in sxb_list:

        x1=[]

        y1=[]

        if shp[2] is None:

        i+=1

        x_z=[]

        y_z=[]

        if shp[3] not in xz_list:

        i=1

        xz_list.append(shp[3])

        for plts in shp[0]:

        x1.append(plts[0])

        y1.append(plts[1])

        shp[2]=i

        x_z=x1

        y_z=y1

        for row1 in sxb_list:

        x2=[]

        y2=[]

        if row1[2] is None and row1[3]==shp[3]:

        for pltss in row1[0]:

        x2.append(pltss[0])

        y2.append(pltss[1])

        x_z=x_z+x2

        y_z=y_z+y2

        x_min=min(x_z)

        x_max=max(x_z)

        y_min=min(y_z)

        y_max=max(y_z)

        x_jl=x_max-x_min

        y_jl=y_max-y_min

        if x_jl<=(4200*float(cs)) and y_jl <=(2970*float(cs)):

        row1[2]=i

        else:

        for x in x2:

        x_z.remove(x)

        for y in y2:

        y_z.remove(y)

        ss_list.append((shp[1],shp[2]))

        return ss_list

        CS表示出圖范圍相對(duì)A3紙的比例。

        3)賦值字段。進(jìn)行屬性表(數(shù)組)賦值后,需將結(jié)果賦值給小班屬性表的字段,本步驟使用游標(biāo)進(jìn)行賦值。實(shí)現(xiàn)代碼如下:

        def fz_zd(fc,field,xzfield,cs):

        k_list=fz_sxb(hq_sxb(fc,field,xzfield),cs)

        with arcpy.da.UpdateCursor(fc,["OID@",field,xzfield])as cursor:

        for row in cursor:

        for k in k_list:

        if row[0]==k[0]:

        row[1]=str(row[2])+"_"+str(k[1])

        cursor.updateRow(row)

        完成上述步驟后,將字段賦值后的小班按照page字段進(jìn)行小班融合,生成數(shù)據(jù)驅(qū)動(dòng)頁(yè)面的索引圖層。本研究將此步驟放到自動(dòng)出圖方法中實(shí)現(xiàn)(3.4節(jié))。

        3.3 基于VBA的小班簡(jiǎn)表創(chuàng)建

        1)轉(zhuǎn)為Excel。將賦值字段后的小班屬性表,使用轉(zhuǎn)換工具箱中的表轉(zhuǎn)Excel轉(zhuǎn)成Excel。

        2)數(shù)據(jù)清理與格式設(shè)置。導(dǎo)出的屬性表中,包含了一些不需要顯示在小班簡(jiǎn)表中的信息,需手動(dòng)進(jìn)行刪除,同時(shí),行列的寬度和長(zhǎng)度、字體格式和大小等需手動(dòng)進(jìn)行調(diào)節(jié)。最后將page字段移動(dòng)至最后一列方便圖片保存。

        3)使用VBA自動(dòng)生成小班簡(jiǎn)表圖片。首先生成page字段的唯一值字典,然后對(duì)page字段進(jìn)行篩選,把篩選的內(nèi)容復(fù)制成圖片然后新建空白的圖表,把內(nèi)容粘貼進(jìn)圖表,再使用VBA圖表的導(dǎo)出功能可將內(nèi)容轉(zhuǎn)換成圖片。實(shí)現(xiàn)代碼如下:

        Sub xbjb()

        Dim arr()

        Dim dic

        Dim pa

        Dim a As Range

        Dim i, j As Integer

        Dim arr2()

        Dim shp As Shape

        Dim oChartObject As ChartObject

        Dim oChart As Chart

        sPath = Excel.ThisWorkbook.Path & "”

        arr = Sheet2.Range("a3:" & Chr(Range("z3").End(xlToLeft).Column + 64) & Range("a65536").End(xlUp).Row)

        Set dic = CreateObject("scripting.dictionary")

        pa = Chr(Range("z2").End(xlToLeft).Column + 64)

        arr2 = Range(pa & "3:" & pa & Range(pa & "65536").End(xlUp).Row)

        For i = LBound(arr2) To UBound(arr2)

        dic(arr2(i, 1)) = 1

        Next

        Rows("2:2").Select

        Range("F2").Activate

        Selection.AutoFilter

        For Each d In dic.keys

        ActiveSheet.Range("$A$2:" & "$" & pa & "$" & Range("a65536").End(xlUp).Row).AutoFilter Field:=Range("z3").End(xlToLeft).Column, Criteria1:=d

        Range("A1:" & Chr(Range("z3").End(xlToLeft).Column + 63) & Range("a65536").End(xlUp).Row).CopyPicture Appearance:=xlScreen, Format:=xlPicture

        ActiveSheet.Paste

        For Each shp In Shapes

        shp.Title = d

        shp.Copy

        Set oChartObject = ChartObjects.Add(0, 0, shp.Width, shp.Height)

        oChartObject.Activate

        ActiveChart.Paste

        oChartObject.Chart.Export sPath & d & ".jpg"

        shp.Delete

        For Each oChartObject In ChartObjects

        oChartObject.Delete

        Next

        Next

        Next

        End Sub

        3.4 自動(dòng)出圖方法的實(shí)現(xiàn)

        用ArcPy的融合代碼生成索引圖層,并為索引圖層的tplj和xh字段賦值,tplj表示小班屬性表所對(duì)應(yīng)的絕對(duì)路徑,xh表示該張小班設(shè)計(jì)圖的序號(hào)。根據(jù)之前制作的出圖模板,替換XB_JX及qdfz的數(shù)據(jù)源,最后結(jié)合數(shù)據(jù)驅(qū)動(dòng)導(dǎo)出圖片,保存為jpg格式。出圖代碼如下:

        import arcpy

        import os

        fc=arcpy.GetParameterAsText(0)

        mxd=arcpy.mapping.MapDocument((arcpy.GetParameterAsText(1)).decode("utf-8"))

        excel_sjqd=arcpy.GetParameterAsText(2)

        tp_luj=arcpy.GetParameterAsText(3)

        tp_fbl=int(arcpy.GetParameterAsText(4))

        wj_lj=os.path.dirname(mxd.filePath)

        if os.path.exists(os.path.join(wj_lj,"sjqd_ys.gdb")):

        arcpy.Delete_management(os.path.join(wj_lj,"sjqd_ys.gdb"))

        arcpy.CreateFileGDB_management(wj_lj,"sjqd_ys")

        else:

        arcpy.CreateFileGDB_management(wj_lj,"sjqd_ys")

        out_gdb=os.path.join(wj_lj,"sjqd_ys.gdb")

        arcpy.Dissolve_management(fc, os.path.join(out_gdb,"XB_RH"),

        "Page", "", "MULTI_PART",

        "DISSOLVE_LINES")

        arcpy.AddField_management(os.path.join(out_gdb,"XB_RH"),"xz","TEXT")

        arcpy.AddField_management(os.path.join(out_gdb,"XB_RH"),"xh","TEXT")

        arcpy.AddField_management(os.path.join(out_gdb,"XB_RH"),"tplj","TEXT")

        with

        arcpy.da.UpdateCursor(os.path.join(out_gdb,"XB_RH"),["Page","xz","xh","tplj"])as cursor:

        for row in cursor:

        row[1]=str(row[0]).split("_")[0]

        row[2]=str(row[0]).split("_")[1]

        row[3]=str(os.path.join(excel_sjqd,row[0]))+".jpg"

        cursor.updateRow(row)

        arcpy.Copy_management(fc,os.path.join(out_gdb,"XB_FZ"))

        df=arcpy.mapping.ListDataFrames(mxd)[0]

        lyr_list=arcpy.mapping.ListLayers(df)

        for lyr in lyr_list:

        if lyr.name == "XB_FZ" or lyr.name == "XB_RH":

        arcpy.mapping.RemoveLayer(df,lyr)

        if lyr.name == "qdfz":

        lyr.replaceDataSource(out_gdb,"FILEGDB_WORKSPACE","XB_RH")

        if lyr.name =="XB_JX":

        lyr.replaceDataSource(out_gdb,"FILEGDB_WORKSPACE","XB_FZ")

        if lyr.name ==os.path.basename(fc):

        arcpy.mapping.RemoveLayer(df,lyr)

        arcpy.RefreshActiveView

        for pageNum in range(1, mxd.dataDrivenPages.pageCount + 1):

        mxd.dataDrivenPages.currentPageID = pageNum

        filds=["OID@","xz","xh"]

        with arcpy.da.SearchCursor(os.path.join(out_gdb,"XB_RH"),filds) as cursor:

        for row in cursor:

        if str(row[0])==str(pageNum):

        a=str(str(row[1])+"小班設(shè)計(jì)圖"+str(row[2])+".jpg").decode("utf-8")

        arcpy.mapping.ExportToJPEG(mxd,os.path.join(tp_luj,a),resolution=tp_fbl)

        del mxd

        3.5 工具箱的定制

        自動(dòng)化制圖的代碼比較復(fù)雜,進(jìn)行成果分享時(shí)需對(duì)代碼進(jìn)行包裝,本研究使用ArcGis的腳本制作工具進(jìn)行代碼包裝,在ArcGis的目錄中新建工具箱,并新建Python腳本工具,由前文步驟可知,共需新建2個(gè)Python腳本,第一個(gè)為小班字段賦值腳本,第二個(gè)為自動(dòng)出圖腳本。結(jié)果如圖4、圖5所示。

        圖4 字段賦值腳本

        圖5 自動(dòng)出圖腳本

        4 結(jié)果與分析

        4.1 結(jié)果

        小班設(shè)計(jì)圖全部導(dǎo)出完成后,對(duì)小班設(shè)計(jì)圖進(jìn)行手動(dòng)檢查,檢查小班界是否與圖框相交、是否同時(shí)出現(xiàn)兩個(gè)鄉(xiāng)鎮(zhèn)的小班等不符合要求的小班設(shè)計(jì)圖。

        經(jīng)過(guò)檢查后, 121張小班設(shè)計(jì)圖,只有1張小班設(shè)計(jì)圖由于小班簡(jiǎn)表與小班界線存在相交的現(xiàn)象,美觀率99.2%。在具體操作中,不合格小班設(shè)計(jì)圖可手動(dòng)進(jìn)行拖動(dòng)重新出圖,或者調(diào)整參數(shù)的大小或者調(diào)整頁(yè)面元素的布局,從而保證小班設(shè)計(jì)圖與小班簡(jiǎn)表不重疊。

        從出圖結(jié)果看,所有小班設(shè)計(jì)圖的小班界均與圖框不相交,不僅實(shí)現(xiàn)了按照鄉(xiāng)鎮(zhèn)出圖,還確保了圖面上小班數(shù)量的最大化,在節(jié)約出圖時(shí)間的同時(shí)保證紙張數(shù)量最少。如圖6所示。

        4.2 分析

        根據(jù)小班的實(shí)際位置與實(shí)際A3紙張的大小確定各小班所在的頁(yè)碼,在保證小班界線與框線不相交的同時(shí),確保一張A3頁(yè)面中的小班個(gè)數(shù)最大化,從而減少了紙張數(shù)量。但頁(yè)面元素中,小班簡(jiǎn)表的位置相對(duì)不固定,小班個(gè)數(shù)越多的頁(yè)面,其小班簡(jiǎn)表所占用的范圍也越大,與小班簡(jiǎn)表交叉的可能性也越高,通過(guò)設(shè)置出圖相對(duì)比例參數(shù)可降低交叉的可能性。

        圖6 小班設(shè)計(jì)圖

        5 結(jié)論與討論

        5.1 結(jié)論

        本研究基于ArcGis內(nèi)置站點(diǎn)包ArcPy和VBA,從圖件美觀和減少紙張數(shù)的角度出發(fā),將自動(dòng)化制圖分解為四個(gè)步驟,使用VBA進(jìn)行索引圖層的制作和自動(dòng)出圖、使用VBA進(jìn)行小班屬性簡(jiǎn)表的自動(dòng)生成,較好地解決了林業(yè)專題圖中多個(gè)小班自動(dòng)出圖所面臨的一些問(wèn)題,實(shí)現(xiàn)了林業(yè)制圖的自動(dòng)化和美觀化,在提高工作效率的同時(shí),不僅確保了所有圖件的統(tǒng)一性,還保證了圖件的美觀。

        1)使用傳統(tǒng)的手工制作林業(yè)專題圖,需要重復(fù)的進(jìn)行小班簡(jiǎn)表的插入或手動(dòng)更改圖面文字信息、重復(fù)地導(dǎo)出地圖,不僅過(guò)程繁瑣,還容易出錯(cuò),工作效率極低。本研究通過(guò)結(jié)合ArcPy和VBA,實(shí)現(xiàn)了林業(yè)專題圖的自動(dòng)出圖,在保證圖件美觀的同時(shí)大大提升了工作效率。

        2)在以往關(guān)于自動(dòng)出圖的研究中,大都是使用原圖層作為索引圖層,故一個(gè)圖件上只能出一個(gè)小班,本研究使用ArcPy進(jìn)行索引圖層的制作,通過(guò)小班位置距離搜索功能,自動(dòng)調(diào)節(jié)圖上的小班范圍比例,實(shí)現(xiàn)了多個(gè)小班自動(dòng)出圖。

        3)與添加動(dòng)態(tài)文本作為小班屬性相比,本研究使用VBA生成小班屬性簡(jiǎn)表作為小班屬性信息,可以添加多個(gè)小班的任意屬性信息,同時(shí)還能使用Excel對(duì)小班簡(jiǎn)表進(jìn)行風(fēng)格化處理,滿足不同的需求。

        5.2 討論

        本研究開(kāi)發(fā)設(shè)計(jì)的自動(dòng)出圖工具對(duì)于提高林業(yè)制圖工作效率具有很重要的現(xiàn)實(shí)意義,結(jié)合ArcPy和VBA,解決了以往自動(dòng)出圖中添加小班屬性信息困難、多個(gè)小班出圖繁瑣等問(wèn)題,能夠節(jié)省大量時(shí)間用于項(xiàng)目成果質(zhì)量的把控,具有很好的推廣意義。但本研究依然存在不足,如小班簡(jiǎn)表的制作過(guò)程中,小班個(gè)數(shù)越多則小班簡(jiǎn)表的長(zhǎng)度越長(zhǎng),與小班界相交的可能性越大,在設(shè)計(jì)代碼的過(guò)程中由于無(wú)法提前知曉每張小班設(shè)計(jì)圖中小班的個(gè)數(shù)和分布情況,故暫時(shí)未能從源頭解決問(wèn)題,只能調(diào)節(jié)頁(yè)面布局情況和相關(guān)參數(shù)大小,在今后的研究中需進(jìn)一步進(jìn)行優(yōu)化。

        猜你喜歡
        長(zhǎng)順縣設(shè)計(jì)圖字段
        圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
        焊縫符號(hào)在機(jī)械設(shè)計(jì)圖上的標(biāo)注
        貴州省黔南州長(zhǎng)順縣小學(xué)生課余體育鍛煉的研究
        設(shè)計(jì)圖失竊案
        西夏的“炮”設(shè)計(jì)圖
        西夏研究(2017年4期)2017-08-17 08:53:02
        只存在于設(shè)計(jì)圖上的虛幻建筑
        長(zhǎng)順縣水利建設(shè)存在的問(wèn)題及對(duì)策
        貴州省長(zhǎng)順縣板叢水庫(kù)灌區(qū)跨溝建筑物方案比選
        貴州省長(zhǎng)順縣白臘凼水庫(kù)除險(xiǎn)加固工程設(shè)計(jì)分析
        CNMARC304字段和314字段責(zé)任附注方式解析
        国产一区二区丁香婷婷| 大屁股人妻女教师撅着屁股| 中文字幕久久精品一二三区| 一本一本久久a久久精品| 久久久精品国产视频在线| 亚洲不卡免费观看av一区二区| 中文字幕人成乱码熟女| 少妇特黄a一区二区三区| 香蕉视频免费在线| 日韩一区中文字幕在线| 91极品尤物国产在线播放| 国产成人av三级三级三级在线| 成午夜福利人试看120秒| 亚洲国产精品日韩av专区| 毛片无遮挡高清免费久久 | 中文字幕一区二区三区综合网| 久久国产精品一区av瑜伽| 99久久亚洲精品日本无码| 国产a v无码专区亚洲av| 第九色区Aⅴ天堂| 自拍情爱视频在线观看| 人人妻人人澡人人爽人人dvd| 一本一道av无码中文字幕| 手机色在线| 国产av无毛无遮挡网站| 好吊妞无缓冲视频观看 | 亚洲欧美国产日产综合不卡| 国产一区二区视频在线看| 美国少妇性xxxx另类| 无码人妻av免费一区二区三区| 好吊妞人成免费视频观看| 国产成年女人特黄特色毛片免| 亚洲成人中文字幕在线视频 | 91福利国产在线观一区二区| 成人爽a毛片免费网站中国| 成人a级视频在线播放| 色av综合av综合无码网站| 亚洲中文字幕有综合久久| 丝袜美腿在线观看一区| 国产精品沙发午睡系列990531| 久久精品成人91一区二区|