• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于模型構(gòu)建器與AE的衛(wèi)片執(zhí)法自動(dòng)化套合圖研究與應(yīng)用

      2021-11-10 06:00:44張笑涵
      城市勘測(cè) 2021年5期
      關(guān)鍵詞:衛(wèi)片圖斑工具

      張笑涵

      (沈陽(yáng)市勘察測(cè)繪研究院有限公司,遼寧 沈陽(yáng) 110004)

      1 引 言

      模型構(gòu)建器是ArcGIS內(nèi)部包含的可視化編程工具。它以工作流的方式呈現(xiàn),幾乎無(wú)須編程語(yǔ)言,即可實(shí)現(xiàn)工具自動(dòng)化的功能,其各個(gè)分項(xiàng)工具可修改其參數(shù),內(nèi)置的迭代器,可對(duì)要素、行、字段值、多值、數(shù)據(jù)集、要素類(lèi)、文件、柵格、表、工作空間進(jìn)行迭代,還可用編程思維的For循環(huán),While循環(huán)進(jìn)行批處理。模型構(gòu)建器的基本單位為變量和方法,變量可任意從ArcMap中拖拽(相對(duì)路徑),也可從ArcCatalog中加載(絕對(duì)路徑)。方法即為ArcGIS工具箱(俗稱紅盒子)中的任意工具,其參數(shù)可自定義,可關(guān)聯(lián)迭代結(jié)果,可互為前提條件。整個(gè)模型構(gòu)建器應(yīng)用起來(lái)可實(shí)現(xiàn)較為復(fù)雜的數(shù)據(jù)處理任務(wù),如將變量設(shè)為模型參數(shù),整個(gè)程序打包后可供他人使用,還可將多個(gè)模型構(gòu)建器串聯(lián),實(shí)現(xiàn)更為復(fù)雜的功能。

      ArcGIS Engine是用于構(gòu)建定制應(yīng)用的一個(gè)完整的嵌入式的GIS組件庫(kù),使用ArcEngine可以創(chuàng)建獨(dú)立界面版本(stand-alone)的應(yīng)用程序,或者對(duì)現(xiàn)有的應(yīng)用程序進(jìn)行擴(kuò)展,為GIS和非GIS用戶提供專(zhuān)門(mén)的空間解決方案。

      本文通過(guò)將上述兩種快速解決問(wèn)題的工具相結(jié)合,各取所長(zhǎng),形成一套自動(dòng)化的成果輸出程序,不僅將工作效率提高,也為日后的相關(guān)項(xiàng)目提供了經(jīng)驗(yàn)。

      2 需求分析

      為適應(yīng)數(shù)字城市建設(shè)的需求,滿足經(jīng)濟(jì)社會(huì)和人民生活的需要,推動(dòng)城市規(guī)劃、設(shè)計(jì)、管理及建設(shè)的需要,本市近些年加大了衛(wèi)星遙感監(jiān)控?cái)?shù)據(jù)處理與應(yīng)用服務(wù)項(xiàng)目的重視程度,對(duì)監(jiān)測(cè)圖斑中涉及違法建設(shè)、違法破壞耕種層等行為,也加大了監(jiān)察和執(zhí)法力度。

      本次數(shù)據(jù)成果中,內(nèi)業(yè)數(shù)據(jù)包括前期處理及后期成果建檔,數(shù)據(jù)處理包括根據(jù)測(cè)量坐標(biāo)值,影像底圖數(shù)據(jù),進(jìn)行監(jiān)測(cè)變更宗地圖繪制,求取違法用地面積或指定區(qū)域范圍面積,制作違法影像宗地圖、照片成果圖、測(cè)繪報(bào)告編制、衛(wèi)片檔案圖冊(cè)制作等。后期提交成果包括以縣區(qū)行政區(qū)域?yàn)閱挝坏倪b感圖斑衛(wèi)片影像及相關(guān)矢量數(shù)據(jù)、圖斑核查表、衛(wèi)片檔案及監(jiān)控分析報(bào)告,圖斑核查表包括圖斑明細(xì)、中心點(diǎn)坐標(biāo)(x軸、y軸坐標(biāo)),圖斑號(hào)、圖斑面積等內(nèi)容。

      其中衛(wèi)片檔案圖冊(cè)等相關(guān)圖件包含大量圖形坐標(biāo),并涉及矢量數(shù)據(jù)配圖等工作,因需滿足宗地圖制作的相關(guān)規(guī)范,如圖廓,圖例,指北針,起始坐標(biāo)為左上角等,若人工干預(yù),工作量巨大,因此考慮自動(dòng)化成圖,樣圖如圖1所示:

      3 模型構(gòu)建器部分的應(yīng)用

      源數(shù)據(jù)為國(guó)家下發(fā)監(jiān)測(cè)圖斑,即為矢量面狀shp數(shù)據(jù),要提取其各拐點(diǎn)坐標(biāo),需使用“要素折點(diǎn)轉(zhuǎn)點(diǎn)”工具,并使用“添加X(jué)Y坐標(biāo)”工具添加其坐標(biāo),添加若干文本及雙精度字段供后期AE程序使用,其中關(guān)鍵字段為POINT_Y與POINT_X之間的差值,根據(jù)差值的大小,可判斷出其相對(duì)左上方的ID號(hào)。

      圖1 衛(wèi)片執(zhí)法套合圖(樣例)

      處理后,可通過(guò)“刪除相同的”工具,對(duì)點(diǎn)狀數(shù)據(jù)進(jìn)行處理,如面狀數(shù)據(jù)有重復(fù)拐點(diǎn),可在這一步中將其刪除,需要注意的是,處理后的數(shù)據(jù)因ID號(hào)不連貫,可將數(shù)據(jù)進(jìn)行“要素類(lèi)至要素類(lèi)”工具處理,重新生成ID索引(為后期數(shù)據(jù)連貫讀取做準(zhǔn)備)。

      整套流程可集成于一個(gè)模型構(gòu)建器中,輸入端可設(shè)為模型參數(shù)供用戶選擇,盡量將參數(shù)設(shè)置為1個(gè)~2個(gè),方便用戶操作。本文主要強(qiáng)調(diào)解決問(wèn)題的快速性,讀者可自行擴(kuò)展,如將C#結(jié)合AE,在其GP組件中將上述命令得以實(shí)現(xiàn)?;蜻\(yùn)用ArcPy,用打包性更完善的python語(yǔ)言編譯。

      4 AE代碼塊中的應(yīng)用

      利用ArcGIS Engine開(kāi)發(fā)者能將ArcGIS功能集成到一些應(yīng)用軟件。包括核心ArcObjects的功能,是對(duì)AO中的大部分接口、類(lèi)等進(jìn)行封裝所構(gòu)成的嵌入式組件,其接口、方法、屬性與AO是相同的。不同之處在于開(kāi)發(fā)環(huán)境,ArcObjects必須依賴ArcGIS Desktop桌面平臺(tái),即購(gòu)買(mǎi)安裝了ArcGIS Desktop的同時(shí),安裝ArcObjects,才能利用AO進(jìn)行開(kāi)發(fā);ArcEngine是獨(dú)立的嵌入式組件,不依賴ArcGIS Desktop桌面平臺(tái),直接安裝ArcEngine Runtime和DeveloperKit后,即可利用其在不同開(kāi)發(fā)語(yǔ)言環(huán)境下開(kāi)發(fā)。

      本次程序?qū)O相關(guān)組件集成于winform中,并加載Microsoft.Office.Interop.Excel,itextsharp等相關(guān)組件,通過(guò)游標(biāo)IFeatureCursor對(duì)mxd中的已加載圖層Layer進(jìn)行字段逐行遍歷,后用feature.get_Value方法將所需字段進(jìn)行提取,用GetMaxValue(list)方法對(duì)坐標(biāo)差值進(jìn)行篩選,取最大值ID暫定為左上角J1起始點(diǎn)。

      界址點(diǎn)成果表核心代碼如下:

      //獲取J1關(guān)鍵id

      queryFilter.WhereClause = "jian = '" + GetMaxValue(list1).ToString() + "'" + " AND ORIG_FID =" + hao;

      IFeatureCursor featureCursor3 = QSZD2.Search(queryFilter,false);

      IFeature feature3 = featureCursor3.NextFeature();

      int guanjianid = Convert.ToInt32(feature3.get_Value(feature3.Fields.FindField(suoyin)).ToString());

      //j賦值

      queryFilter.WhereClause = "ORIG_FID = " + hao;

      IFeatureCursor featureCursor4 = QSZD2.Search(queryFilter,false);

      IFeature feature4 = featureCursor4.NextFeature();

      //excel

      Microsoft.Office.Interop.Excel.Workbook workbook = excel.Application.Workbooks.Open("D:\界址點(diǎn)坐標(biāo)成果表模板.xls",missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);

      Microsoft.Office.Interop.Excel.Worksheet newWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.get_Item(1);

      for (int i = 1;i <= numall;i++)

      {

      string jhao = "J" + i.ToString();

      queryFilter.WhereClause = "ORIG_FID = " + hao + " AND j ='" + jhao + "'";

      IFeatureCursor featureCursor5 = QSZD2.Search(queryFilter,false);

      IFeature feature5 = featureCursor5.NextFeature();

      double qux = Convert.ToDouble(feature5.get_Value(feature5.Fields.FindField("POINT_X")));

      double quy = Convert.ToDouble(feature5.get_Value(feature5.Fields.FindField("POINT_Y")));

      newWorksheet.Cells[i - 2 + 5,1] = jhao;

      newWorksheet.Cells[i - 2 + 5,2] = qux.ToString("0.000");

      newWorksheet.Cells[i - 2 + 5,3] = quy.ToString("0.000");

      }

      對(duì)于套合圖配圖部分,其主要思路為,通過(guò)IFeatureLayerDefinition接口,將指定圖件的ID號(hào)鎖定(也可為其他,但必須唯一值),運(yùn)用IEnvelope接口將目標(biāo)要素縮放,可通過(guò)envelope.Expand方法調(diào)節(jié)縮放比例。m_MapDcument.PageLayout as IActiveView方法可將窗口調(diào)整為頁(yè)面布局。IFontDisp接口可提供字體調(diào)整方案,包括字體,字號(hào),是否加重等相關(guān)屬性,通過(guò)ESRI.ArcGIS.Carto.ITextElement接口將標(biāo)題添加到布局視圖中,位置可事先隨意加載,并調(diào)整到合適位置,在ArcMap中查看其中心點(diǎn)坐標(biāo)。

      成果輸出可將模板另存為mxd格式,也可直接利用圖件輸出接口ESRI.ArcGIS.Output.IExport及相應(yīng)代碼生成pdf圖件。

      套合圖配圖核心代碼如下:

      string zongdicaotupath = @"D:*.mxd";

      IMapDocument m_MapDcument;

      m_MapDcument = new MapDocumentClass();

      m_MapDcument.Open(zongdicaotupath,"");

      int num = 1;

      IFeatureLayer QSZDLayer1 = m_MapDcument.Map[0].get_Layer(1) as IFeatureLayer;

      IFeatureLayer QSZDLayer = m_MapDcument.Map[0].get_Layer(0) as IFeatureLayer;

      IFeatureClass QSZD = QSZDLayer1.FeatureClass;

      IFeatureCursor featureCursor1 = QSZD.Search(null,false);

      IFeature feature = featureCursor1.NextFeature();

      while (feature != null)

      {

      string hao = feature.get_Value(feature.Fields.FindField("OBJECTID")).ToString();

      string hao2 = feature.get_Value(feature.Fields.FindField("JCBH")).ToString();

      string hao3 = feature.get_Value(feature.Fields.FindField("值")).ToString();

      string hao4 = feature.get_Value(feature.Fields.FindField("XMC")).ToString();

      //mxd

      IActiveView activeaaa = m_MapDcument.ActiveView.FocusMap as IActiveView;

      IFeatureLayerDefinition fea_c = QSZDLayer as IFeatureLayerDefinition;

      fea_c.DefinitionExpression = "土地證號(hào) in(" + hao3+")";

      IFeatureLayerDefinition fea_c2 = QSZDLayer1 as IFeatureLayerDefinition;

      fea_c2.DefinitionExpression = "OBJECTID =" + hao;

      activeaaa.Extent = feature.Extent;

      IEnvelope envelope = new EnvelopeClass();

      envelope = activeaaa.Extent;

      envelope.Expand(2,2,true);

      activeaaa.Extent = envelope;

      activeaaa = m_MapDcument.PageLayout as IActiveView;

      }

      5 程序與數(shù)據(jù)的結(jié)合及部署

      程序整合后,要對(duì)其與數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián),實(shí)際應(yīng)用過(guò)程中可以有兩種方式,不同的方式都有各自不同的效果和優(yōu)點(diǎn)。

      方法一是定義絕對(duì)路徑,即設(shè)置為數(shù)據(jù)源存于C盤(pán)或D盤(pán)的根目錄(實(shí)際生產(chǎn)中此方法最為常用)。這樣用戶使用時(shí),可將整個(gè)程序包按使用說(shuō)明置于相應(yīng)盤(pán)符下,直接運(yùn)行程序時(shí),軟件會(huì)自動(dòng)讀取絕對(duì)路徑下的數(shù)據(jù)庫(kù),遍歷其中的要素類(lèi)及要素,得到的分析結(jié)果也會(huì)存于絕對(duì)路徑下的數(shù)據(jù)庫(kù)中,方便讀取,查詢。此方法可將一些程序變?yōu)橐绘I式或者導(dǎo)航式的界面,用戶體驗(yàn)簡(jiǎn)單,可操作性強(qiáng)。

      方法二是將輸入的要素及過(guò)程中的參數(shù)在模型構(gòu)建器中設(shè)置為“模型參數(shù)”,此方法可將程序各項(xiàng)參數(shù)激活,靈活性更高,用戶可以根據(jù)自己的計(jì)算機(jī)容量,數(shù)據(jù)存放路徑等個(gè)人實(shí)際條件,自主選擇相應(yīng)的數(shù)據(jù)來(lái)源,使用起來(lái)更加人性化。但菜單界面中下拉式菜單,文本框,和文件選擇按鈕較多,可能會(huì)使界面略微復(fù)雜化。

      AE部分的部署,因在winform窗體中編譯,其exe可直接應(yīng)用,用戶自帶ArcGIS環(huán)境即可使用,本文不再贅述。

      6 全流程中注意事項(xiàng)及要點(diǎn)

      (1)模型構(gòu)建器的強(qiáng)大,是建立于要提前熟悉將要使用的具體ArcTools的功能,才能快速組合出工作流。

      (2)如果你已經(jīng)可以熟練使用一些ArcToolbox中的工具,此時(shí)剛開(kāi)始嘗試模型構(gòu)建器的話,首先應(yīng)該花時(shí)間了解行內(nèi)變量這個(gè)重要概念,并熟悉其語(yǔ)法。

      (3)變量引用依靠圖形中標(biāo)注的名稱,所以最好規(guī)范化,方便后續(xù)通過(guò)行內(nèi)變量的方式引用。

      (4)可以通過(guò)設(shè)定一個(gè)模型內(nèi)通用的數(shù)據(jù)庫(kù),方便查看中間數(shù)據(jù)以及結(jié)果。在模型中添加一個(gè)孤立的數(shù)據(jù)庫(kù)變量就行了,然后通過(guò)行內(nèi)變量的方式來(lái)引用。

      (5)要十分注意待使用工具的輸入輸出數(shù)據(jù)的格式,由于AecToolbox的包容性比較強(qiáng),可能某一步輸出了一種和預(yù)想不同的數(shù)據(jù)類(lèi)型(比如你設(shè)計(jì)在某個(gè)gdb數(shù)據(jù)庫(kù)中輸出要素類(lèi),實(shí)際工具輸出的是shp,但由于gdb數(shù)據(jù)庫(kù)的包容性,這一步程序一切正常),且后續(xù)幾步都無(wú)異常,但最終卻可能影響結(jié)果。

      (6)迭代是使用模型構(gòu)建器的重要原因之一,一個(gè)模型中只能存在一個(gè)迭代器,但是模型中可以嵌套另一個(gè)存在迭代器的模型,這樣可以實(shí)現(xiàn)迭代的嵌套。

      (7)嵌套模型的要點(diǎn)是,讓存在外循環(huán)的模型的輸出數(shù)據(jù)成為模型參數(shù)(右鍵點(diǎn)擊圖形,設(shè)置模型變量),此時(shí)從Catalog中拖拽該模型到內(nèi)循環(huán)所在模型中的時(shí)候,輸出數(shù)據(jù)可以暴露出來(lái)。

      (8)如果模型中的工具需要多個(gè)輸入變量,好像只允許其中一個(gè)變量是通過(guò)迭代而來(lái)。比如筆者要實(shí)現(xiàn)以下功能,A.gdb和B.gdb兩個(gè)數(shù)據(jù)庫(kù)中分別放了a1、a2和b1、b2兩個(gè)要素類(lèi),希望通過(guò)裁切功能實(shí)現(xiàn)b1和b2分布裁切A.gdb,最終得到A_B1.gdb以及A_B2.gdb。

      (9)由于模型構(gòu)建器中是依靠主流向執(zhí)行的,分支中如果有中間數(shù)據(jù)需要在主流向的后續(xù)工具中使用的話,需要將支線的執(zhí)行優(yōu)先級(jí)提高到后續(xù)工具以上,也就需要用到所謂的“前提條件”連接符。

      (10)路徑解析工具配合行內(nèi)變量可以提高模型的自動(dòng)化程度。

      (11)行內(nèi)變量在一條路徑中只能出現(xiàn)一次。

      (12)textelement等元素添加后需及時(shí)刪除,否則迭代后將積存于頁(yè)面布局中。

      (13)圖形索引有時(shí)會(huì)出現(xiàn)OBJECTID_12等情況,需注意調(diào)整。

      7 結(jié) 論

      利用ArcGIS的模型構(gòu)建器(Model Builder)可以方便、高效地實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)化處理。結(jié)合強(qiáng)大的C#+AE語(yǔ)言代碼塊,可以對(duì)各類(lèi)數(shù)據(jù)進(jìn)行數(shù)據(jù)分析、統(tǒng)計(jì)及批量化處理。能在短時(shí)間內(nèi)為各個(gè)項(xiàng)目提供高效的解決方案。同時(shí),操作人員只需簡(jiǎn)單的編程基礎(chǔ),就能利用模型構(gòu)建器輔助編程,獲得底層開(kāi)發(fā)同等的功效。這不僅能為測(cè)繪一線生產(chǎn)提高效率,也能在尋求更快的解決方案,更多元的處理手段上,提供了更廣泛的思路。

      猜你喜歡
      衛(wèi)片圖斑工具
      地理國(guó)情監(jiān)測(cè)中異形圖斑的處理方法
      基于C#編程的按位置及屬性值自動(dòng)合并圖斑方法探究
      綠色科技(2021年5期)2021-11-28 14:57:37
      波比的工具
      波比的工具
      土地利用圖斑自動(dòng)檢測(cè)算法研究
      衛(wèi)片執(zhí)法系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
      “巧用”工具
      讀者(2017年18期)2017-08-29 21:22:03
      “甜酸苦辣”話衛(wèi)片
      基于ArcGIS 10的土地利用總體規(guī)劃圖斑自動(dòng)化綜合
      遙感圖像結(jié)合MapGIS在省級(jí)礦山衛(wèi)片執(zhí)法檢查中的應(yīng)用
      邵阳县| 武功县| 龙口市| 布拖县| 浮梁县| 九龙县| 馆陶县| 庆元县| 全南县| 鹤峰县| 安多县| 英吉沙县| 延边| 凉山| 横山县| 体育| 青铜峡市| 黄大仙区| 屏东县| 涿州市| 新巴尔虎左旗| 上饶市| 仁化县| 确山县| 赣州市| 长岭县| 朝阳县| 盐山县| 施甸县| 巴南区| 阿拉善盟| 井陉县| 祥云县| 崇义县| 万源市| 蓬莱市| 伊通| 凉城县| 双流县| 平遥县| 湘乡市|