版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
拓?fù)?Topology)是在同一個(gè)要素集(FeatureDataset)下的要素類(FeatureClass)之間的拓?fù)潢P(guān)系的集合。所以要參與一個(gè)拓?fù)涞乃幸仡?,必須在同一個(gè)要素集內(nèi)(也就是具有同一的空間參考),這樣進(jìn)行的拓?fù)錂z查才是精確的。一個(gè)要素集可以有多個(gè)拓?fù)洌總€(gè)要素類最多只能參與一個(gè)拓?fù)?,一個(gè)拓?fù)渲锌梢远x多個(gè)規(guī)則。進(jìn)行拓?fù)浞治龅倪^程:一、 建立拓?fù)?添加拓?fù)湟?guī)則)二、 驗(yàn)證拓?fù)淙?編輯過程中保證拓?fù)涞恼_四、 查詢系統(tǒng)中存在的拓?fù)?******************************************************************************一、建立拓?fù)涞姆椒ǎ?:利用ArcCatalog桌面建立;2:使用程序(ArcEngine)開發(fā)建立拓?fù)?;在Engine中建立拓?fù)涞膶?shí)現(xiàn)接口是ITopologyContainer::CreateTopology;ITopologyContainer::CreateTopology方法用來創(chuàng)建拓?fù)?;接口說明:ITopologyContainer是用來創(chuàng)建、添加、管理拓?fù)涞钠脚_(tái)容器;通過本接口用戶可以了解當(dāng)前要素集的拓?fù)湫畔?,如名稱;如果用戶僅出于得到要素集拓?fù)湫畔⒌哪康?,建議不用本接口打開拓?fù)?,而使用IFeatureDatasetNames::TopologyNames方法就可以快速獲取。一旦使用CreateTopology方法創(chuàng)建拓?fù)浜?,本拓?fù)涞膮?shù)便不能更改,如想變更則需刪除或重新建立新的拓?fù)洹efaultClusterTolerance是建立拓?fù)淠J(rèn)的“容差”;MaximumClusterTolerance表示最大“容差”;MinimumClusterTolerance表示最小“容差”;如果用戶在創(chuàng)建拓?fù)鋾r(shí)使用的容差參數(shù)位于最大、最小之間則參數(shù)有效,如位于最大與最小之間則按照極值(最大、最?。﹣硖幚?;注意默認(rèn)的容差是與最小容差一樣的;建立拓?fù)湟?guī)則:使用ITopologyRuleContainer接口;接口說明:IRule接口是Engine中的定義規(guī)則的接口,其中它的Type屬性有以下幾種:建立拓?fù)湟?guī)則我們將使用esriRTTopology;并通過ITopologyRule接口來實(shí)現(xiàn)拓?fù)湟?guī)則。并通過ITopologyRuleContainer接口將所定義的規(guī)則添加到當(dāng)前的拓?fù)渲校ˋddRule方法)。ITopology接口和ITopologyRuleContainer接口共同繼承于Topology類,所以可以QI。注意建立拓?fù)鋾r(shí)會(huì)出現(xiàn)的問題:1:當(dāng)要素集中的所有要素都已經(jīng)參加建立其它拓?fù)涞臅r(shí)候,使用已使用的要素類新建立拓?fù)鋾?huì)產(chǎn)生錯(cuò)誤;2:當(dāng)要素已參加網(wǎng)絡(luò)分析(GeometryNetwork)運(yùn)算的時(shí)候,建立拓?fù)湟矔?huì)出現(xiàn)錯(cuò)誤;3:目標(biāo)要素類是一個(gè)注記層或多維圖層,不能建立拓?fù)洌?:目標(biāo)要素類已被注冊(cè)為有版本,不能建立拓?fù)洌欢?、進(jìn)行拓?fù)潋?yàn)證(validate)的方法:1:在ArcCatalog建立好拓?fù)浜?,可以選擇直接驗(yàn)證;2:也可以在ArcMap中對(duì)建立好的拓?fù)溥M(jìn)行驗(yàn)證(要素必須在編輯狀態(tài)StartEdit),然后可以進(jìn)行拓?fù)涞木庉嫞?:利用程序進(jìn)行驗(yàn)證;ITopology有一個(gè)方法ValidateTopology用來驗(yàn)證指定區(qū)域內(nèi)的拓?fù)?。需要注意沒有版本的拓?fù)淇梢栽谌魏螘r(shí)候驗(yàn)證。而有版本的拓?fù)浔仨氃诰庉嫽卦捴序?yàn)證。通過驗(yàn)證后,當(dāng)前的拓?fù)渚涂梢詸z查出相應(yīng)的拓?fù)溴e(cuò)誤,并生成拓?fù)鋱D層ITopologyLayerITopologyLayer其實(shí)也是一個(gè)layer,繼承與layer類。接口說明:ITopologyLayer接口具有一個(gè)渲染Renderer的方法,可以根據(jù)拓?fù)溴e(cuò)誤信息(esriTopologyRenderer)進(jìn)行分類渲染。三、拓?fù)渚庉嫞寒?dāng)對(duì)拓?fù)浞治鲵?yàn)證后,就需要對(duì)當(dāng)前的拓?fù)溴e(cuò)誤進(jìn)行編輯更改。在進(jìn)行拓?fù)渚庉嫷臅r(shí)候,我們需要知道一個(gè)概念,就是TopologyGraph;什么是TopologyGraph呢?其實(shí)就是在進(jìn)行拓?fù)浞治龊螅覀円獙?duì)錯(cuò)誤的線、點(diǎn)(因?yàn)槎噙呅我彩怯芯€和點(diǎn)組成的)進(jìn)行編輯,來修改當(dāng)前的要素錯(cuò)誤。在編輯前要生成TopologyGraph拓?fù)鋱D,在拓?fù)鋱D上顯示了需要修改的Nodes、Edges等信息,我們所做的編輯其實(shí)就是在TopologyGraph上進(jìn)行的。上面我提到過ITopologyLayer,當(dāng)ITopologyLayer建立后,其實(shí)在內(nèi)存中就存在了Cache緩存。拓?fù)鋱DTopologyGraph的建立就是需要這個(gè)ITopologyLayer的Cache來完成的,方法如下://topoLayer是一個(gè)打開的拓?fù)鋱D層ITopologyGraphpTG=topoLayer.Topology.Cache;pTG.Build(pA.Extent,false);建立拓?fù)鋱D,其中pA.Extent是所要分析的范圍;接口說明:在接口的屬性方法中,我們可以看到很多對(duì)要素編輯的操作。那就對(duì)了,對(duì)拓?fù)渚庉嬈鋵?shí)很大一部分是利用這個(gè)方法來完成的。如:切割、重建、刪除等等。HitTest方法來獲取所點(diǎn)擊的Edges、Nodes;使用ITopologyNode、ITopologyEdge獲取邊、點(diǎn)同樣實(shí)現(xiàn)相應(yīng)的編輯操作。使用ITopologyErrorFeature接口可以獲取產(chǎn)生錯(cuò)誤的要素Feature,它繼承與Feature類。ITopologyErrorSelection接口操作當(dāng)前TopologyLayer層下的錯(cuò)誤是否可用;ITopologyExtension是當(dāng)前拓?fù)涞臄U(kuò)展,包括可以設(shè)置錯(cuò)誤要素的樣式symbol等。注意:本接口只能在Desktop許可下獲取,Engine不能應(yīng)用。那么有人會(huì)問:“我們對(duì)拓?fù)鋱D層、拓?fù)湟剡M(jìn)行更改顏色,Engine就做不了了?”呵呵,當(dāng)然不是。別忘了我前面提到過的ITopologyLayer接口利用這個(gè)接口我們同樣可以對(duì)圖層進(jìn)行renderer渲染,具體操作請(qǐng)參考help幫助文檔!topologyelements(NodeandEdges)當(dāng)編輯結(jié)束后,我們就可以提交更改了。ITopologyGraph:Post方法提交所做的編輯。部分編輯的代碼:***************************************************SetpTopologyGraph=pTopology.CachepTopologyGraph.BuildpMxDoc.ActiveView.Extent,FalseSetpEnumTopologyEdge=pTopologyGraph.EdgesSetpTopologyEdge=pEnumTopologyEdge.Nextbsel=pTopologyGraph.Select(esriTopologySelectionResultNew,pTopologyEdge)SetpAffine=NewAffineTransformation2DpAffine.Move10,10pTopologyGraph.TransformSelectionesriTransformForward,pAffine,FalsepTopologyGraph.PostpGDset.Extent''提交編輯****************************************************這樣整個(gè)拓?fù)浣?、?yàn)證、編輯整個(gè)流程就完成了。如果我們想對(duì)這個(gè)拓?fù)溥M(jìn)行查看,可以使用ITopologyWorkspace::OpenTopology方法來打開拓?fù)?。重要說明:如果我們對(duì)當(dāng)前的拓?fù)洳粷M意需要?jiǎng)h除的話,我們首先要清空當(dāng)前拓?fù)渲械囊仡恟emoveclass(Itopology接口),然后再delete(Dataset接口)拓?fù)?,否則會(huì)出現(xiàn)錯(cuò)誤。附錄:一、拓?fù)鋽?shù)據(jù)圖層(ItopologyLayer)中拓?fù)溴e(cuò)誤類型:作為圖層可以進(jìn)行renderer渲染,以下也是可以渲染得類型;esriTRAreaErrors0AreaErrorrenderer.esriTRLineErrorsLineErrorrenderer.esriTRPointErrorsPointErrorrenderer.esriTRAreaExceptionsPolygonExceptionrenderer.esriTRLineExceptionsLineExceptionrenderer.esriTRPointExceptions5PointExceptionrenderer.esriTRDirtyAreas6DirtyArearenderer二、Geodatabase的Topology規(guī)則:多邊形topology規(guī)則mustnotoverlay:?jiǎn)我仡悾噙呅我叵嗷ゲ荒苤丿Bmustnothavegaps:?jiǎn)我仡?,連續(xù)連接的多邊形區(qū)域中間不能有空白區(qū)(非數(shù)據(jù)區(qū))containspoint:多邊形+點(diǎn),多邊形要素類的每個(gè)要素的邊界以內(nèi)必須包含點(diǎn)層中至少一個(gè)點(diǎn)boundarymustbecoveredby:多邊形+線,多邊形層的邊界與線層重疊(線層可以有非重疊的更多要素)mustbecoveredbyfeatureclassof:多邊形+多邊形,第一個(gè)多邊形層必須被第二個(gè)完全覆蓋(省與全國(guó)的關(guān)系)mustbecoveredby:多邊形+多邊形,第一個(gè)多邊形層必須把第二個(gè)完全覆蓋(全國(guó)與省的關(guān)系)mustnotoverlaywith:多邊形+多邊形,兩個(gè)多邊形層的多邊形不能存在一對(duì)相互覆蓋的要素mustcovereachother:多邊形+多邊形,兩個(gè)多邊形的要素必須完全重疊areaboundarymustbecoveredbyboundaryof :多邊形+多邊形,第一個(gè)多邊形的各要素必須為第二個(gè)的一個(gè)或幾個(gè)多邊形完全覆蓋mustbeproperlyinsidepolygons:點(diǎn)+多邊形,點(diǎn)層的要素必須全部在多邊形內(nèi)mustbecoveredbyboundaryof:點(diǎn)+多邊形,點(diǎn)必須在多邊形的邊界上線topology規(guī)則mustnothavedangle:線,不能有懸掛節(jié)點(diǎn)mustnothavepseudo-node:線,不能有偽節(jié)點(diǎn)mustnotoverlay:線,不能有線重合(不同要素間)mustnotselfoverlay:線,一個(gè)要素不能自覆蓋mustnotintersect:線,不能有線交*(不同要素間)mustnotselfintersect:線,不能有線自交*mustnotintersectortouchinterrior:線,不能有相交和重疊mustbesinglepart:線,一個(gè)線要素只能由一個(gè)path組成mustnotcoveredwith:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴陽(yáng)幼兒師范高等??茖W(xué)?!秳?dòng)畫場(chǎng)景設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025山西省安全員C證(專職安全員)考試題庫(kù)
- 硅湖職業(yè)技術(shù)學(xué)院《面向?qū)ο蠹夹g(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025甘肅省建筑安全員考試題庫(kù)
- 廣州幼兒師范高等??茖W(xué)校《綠色建筑與綠色施工》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年四川建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 廣州衛(wèi)生職業(yè)技術(shù)學(xué)院《溫病學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025貴州建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫(kù)
- 2025黑龍江省安全員-C證(專職安全員)考試題庫(kù)
- 《ESD知識(shí)和控制》課件
- 著作權(quán)案例分析
- 人教版四年級(jí)上冊(cè)豎式計(jì)算400題及答案
- 重慶開縣2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)檢測(cè)卷(含答案)
- 血?dú)夥治鼋Y(jié)果判讀及臨床應(yīng)用護(hù)理課件
- 智能船舶與海洋工程:物聯(lián)網(wǎng)在船舶與海洋工程中的應(yīng)用
- 高速服務(wù)區(qū)經(jīng)營(yíng)分析報(bào)告
- 浙江省湖州市2022-2023學(xué)年四年級(jí)上學(xué)期數(shù)學(xué)期末試卷(含答案)
- 建井施工方案
- YMO青少年數(shù)學(xué)思維28屆五年級(jí)全國(guó)總決賽試卷
- 個(gè)人業(yè)績(jī)相關(guān)信息采集表
- 過敏性紫癜課件PPT
評(píng)論
0/150
提交評(píng)論