久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

Arcgis中的工具總結(共5篇)

時間:2019-05-12 18:05:24下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《Arcgis中的工具總結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《Arcgis中的工具總結》。

第一篇:Arcgis中的工具總結

Arcgis中的工具總結

1.要素的剪切與延伸

實用工具 TASK 任務欄 Extend/Trim feature 剪切所得內(nèi)容與你畫線的方向有關。

2.自動捕捉跟蹤工具

點擊Editor工具欄中Snapping來打開Snapping Environment對話框

捕捉設置中有3個選項,vertex edge end 分別是節(jié)點、終點、和邊,選擇end應該會捕捉端點

3.圖斑面積計算及長度計算

應用工具CALCULATE AREA 或者使用VBA代碼實現(xiàn) 新建字段并開啟Advanced 寫入代碼,面積計算:

Dim Output as double

Dim pArea as Iarea

Set pArea = [shape]

在最后的一個空格里面寫入代碼(即:字段名)pArea.area

長度計算:

Dim Output as double

Dim pCurve as ICurve

Set pCurve = [shape]

Output = pCurve.Length

4.剪切圖斑

Task任務欄 cut polygon feature工具,需要sketch工具畫線輔助完成

5.配準工具

Spatial Adjustment 工具 需要注意先要 set adjustment data 然后配準

6.影像校正

Georeferncing工具

7.要素變形

Task 工具條中的reshape feature 配合sketch工具

8.添加節(jié)點

Modify feature 在需要加點的地方右鍵單擊insert vertex

也可單擊右鍵選擇properties 打開edit sketch properties對話框,在坐標點位置右鍵插入節(jié)點

9.共享多邊形生成

Auto-complete polygon 工具生成共享邊的多邊形,配合snapping environment更好。

10.畫島圖

1).使用任務欄中的sketch工具,當畫完外面的一圈時,右鍵 選擇finish part 然后畫中間的部分 再右鍵finish sketch 2).分別畫連個圖斑然后應用Editor 工具欄中的工具先intersect(圖斑重疊的地方創(chuàng)建一個新的圖斑)然后Clip(剪切)即可。(補充其他工具:Union,把多個圖斑聯(lián)合起來并形成一個新的連接在一起的圖斑,原圖斑無變化,聯(lián)合后的圖斑不繼承原任何圖斑的屬性;Merge,把多個圖斑合并到其中一個圖斑上并繼承它的屬性,原圖斑變化;Split用于間斷線段,但得知道具體的長度,如果不知道那么長度或者沒必要那么精確就直接用Eeitor工具欄的Split tool工具)

11.連接外界屬性數(shù)據(jù)(如:.xsl文件等)

利用JOIN 工具可以方便的實現(xiàn)與外界屬性數(shù)據(jù)的關聯(lián),但這種關聯(lián)是依賴于外界數(shù)據(jù)庫本身的,需經(jīng)過重新導出之后即完全保存在相應圖層屬性頁。在做外聯(lián)如EXCEL等的時候?qū)?shù)據(jù)有一些要求,確保第一行包含字段名,這些字段名不能超過十個字母,不能出現(xiàn)特殊字符。最好把EXCEL保存為.csv文件去除一些不兼容的內(nèi)容再連接。

轉(zhuǎn)載ESRI論壇Lucy1114帖子說明:

12.導出Shape格式為其他軟件識別的打印格式如JEPG等格式

FILE/EXPORT MAP 然后選擇相應的圖片格式,此時也可設置答應的分辨率 pdi

13.建立注記層

方法一.carvert to Ananotation ,方法二.Draw工具條 方法三.從其他地方轉(zhuǎn)換注記圖層

14.查看特定區(qū)域范圍內(nèi)的某種地物分布情況

Selection / select by location

15.如何用面生成中線

先把數(shù)據(jù)轉(zhuǎn)成coverage格式,workstion里有Centerline命令。

另外ArcToolBox->Data Management Tools->Generalization->Collapse Dual Lines To Centerline也行。不過以上做法要求邊界是雙線。你必須先把面轉(zhuǎn)成線,特別是參數(shù)的設置。也可以嘗試下sketch工具條中的midpoint tool 后面有詳細的講解過程。

16.根據(jù)坐標數(shù)據(jù)生成點

方法一.:[工具] >>[添加XY 數(shù)據(jù)],在“添加XY 數(shù)據(jù)”窗口中,選擇已添加的

XY 數(shù)據(jù)表,指定X 坐標字段(東經(jīng))和Y 坐標字段(北緯),按“編輯”按鈕,選擇坐標系統(tǒng)。一般GPS系統(tǒng)采用的坐標系統(tǒng)為WGS_1984。

方法二.直接用TOOL工具下的ADD XY 可以單個加點

17.用任意多邊形剪切柵格數(shù)據(jù)(矢量數(shù)據(jù)轉(zhuǎn)換為柵格數(shù)據(jù))

在ArcCatalog下新建一個要素類(要素類型為:多邊形),命名為:ClipPoly.shp

在ArcMap中,加載柵格數(shù)據(jù):Landuse、和ClipPoly.shp

打開 編輯器工具欄,開始編輯ClipPoly,根據(jù)要剪切的區(qū)域,繪制一個任意形狀的多

邊形。打開屬性表,修改多邊形的字段“ID”的值為1,保存修改,停止編輯。

打開 空間分析工具欄

GIS軟件應用-ArcGIS

執(zhí)行命令:<空間分析>-<轉(zhuǎn)換>--<要素到柵格>

指定柵格大小:查詢要剪切的柵格圖

層Landuse 的柵格大小,這里指定為25

指定輸出柵格的名稱為路徑

執(zhí)行命令: <空間分析>-<柵格計算器>

構造表達式:[Landuse]*[polyClip4-polyclip4],執(zhí)行柵格圖層:Landuse 和 用以剪切 的柵格polyClip4 之間的相乘運算

GIS軟件應用-ArcGIS

得到的結果即是以任意多邊形剪切的Landuse數(shù)據(jù)

18.柵格重分類(Raster Reclassify)

通過柵格重分類操作可以將連續(xù)柵格數(shù)據(jù)轉(zhuǎn)換為離散柵格數(shù)據(jù)

19.Eliminate合并破碎多邊形

以下的操作將會把面積小于10000平方米的多邊形合并到周圍與之有最長公共

邊的多邊形中:

執(zhí)行菜單命令[選擇]>>[通過屬性選擇],查詢”Area”<=10000(平方米)的圖斑

被選中的多邊形以高亮方式顯示,這些小的圖斑將會被合并到與之相鄰且有最大公共邊 的多邊形。當然也可以選擇合并到相鄰的面積最大的多邊形。

打開 Arctoolbox,執(zhí)行 [消除] 命令

指定輸入圖層:tinSlopef, 輸出要素類:TinSlopef_Elminate.shp

Eliminate(合并破碎多邊形)操作原理

20.重疊要素的選擇切換

目標:在覆蓋同一區(qū)域的多個要素中切換被選擇要素

操作步驟: 1).在編輯環(huán)境中選中覆蓋同一區(qū)域的多個要素中的一個要素 2).按下N鍵,被選要素就會自動地切換到另一個圖層的要素上去(如圖1)

3).重復操作,直到選中目標要素為止

21.編輯時一些常用的快捷鍵

一、公共快捷鍵(對所有編輯工具有效):

在編輯未完成時按快捷鍵E切換到選擇的環(huán)境中去 Z 放大 X 縮小 C 漫游 V顯示節(jié)點 Ctrl+Z 撤銷Ctrl+Y 重做 SpaceBar 暫停捕捉

二、編輯工具:

Shift:添加至/取消選擇 Ctrl:移動選擇錨 N:下一個被選要素

三、用于Edit工具的與注記相關的快捷鍵: E:在Sketch工具、Edit工具和Edit Annotation工具間切換;

四、Edit Annotation工具:

Shift:添加至/取消選擇 Ctrl:移動選擇錨 N:下一個被選要素 R:切換至旋轉(zhuǎn)模式/從旋轉(zhuǎn)模式切換 F:切換至要素模式/從要素模式切換

E:在Sketch工具、Edit工具和Edit Annotation工具間切換 L:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度

O:在跟蹤要素模式下打開Follow Feature Options 對話框

Tab:在跟蹤要素模式下對注記放置的位置進行左右邊的切換

P:在跟蹤要素模式下對注記放置的角度進行平行和垂直方向的切換。

E:在Sketch工具、Edit工具和Edit Annotation工具間切換 L:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度

O:在跟蹤要素模式下打開Follow Feature Options 對話框

Tab:在跟蹤要素模式下對注記放置的位置進行左右邊的切換

P:在跟蹤要素模式下對注記放置的角度進行平行和垂直方向的切換。

五、Sketch工具:

Ctrl+A:方位 Ctrl+F:偏轉(zhuǎn) Ctrl+L:長度 Ctrl+D:X,Y增量 Ctrl+G:方位/長度 Ctrl+P:平行 Ctrl+E:垂直 Ctrl+T:切線 Ctrl+Delete:刪除草圖 F2:完成草圖 F6:絕對X,Y坐標 F7:線段偏轉(zhuǎn) T:顯示容限 已經(jīng)輸入的命令可以通過Esc取消。

六.鼠標操作技巧

i.在使用【Pan】工具時,鼠標單擊處將位于地圖的中心。

ii.在使用【Zoom In / Zoom Out / Pan】工具時,按F6鍵可以循序在這3個工具間切換

iii.在TOC中按住Alt鍵,并單擊圖層,等效于縮放到圖層(Zoom To Layer)

22.對線要素標注的增強

(對線要素進行標注時,如果標注在線上,標注和線會疊加顯示,效果不理想,下面叫介紹一種可以在顯示標注的地方把線斷開的方法,這樣效果會美觀一些)

操作步驟: 1).把標注轉(zhuǎn)成注記,保存在GDB中

2). 用ArcToolbox中的制圖工具Cartography Tools->Masking Tools->Intersecting Layer Masks,為注記創(chuàng)建模版,模版的大小用參數(shù)Margin來決定

3).右鍵點擊數(shù)據(jù)框,在環(huán)境菜單中選擇高級繪制選項(Advanced Drawing Options),用注記的模版圖層去遮蓋線圖層,確定

23.同一圖層使用Clip實現(xiàn)圖斑的無縫拼接

當一個圖斑的邊界確定,需要實現(xiàn)兩個圖斑的無縫拼接時,可以把圖斑拉伸覆蓋確定邊界的圖斑的一部分,然后用下面的圖斑剪區(qū)上面的圖斑。

方法二:圖斑之間有小的縫隙,可以先在縫隙上任意補畫一個圖斑,然后合并(merge)圖斑,最后再剪切(Clip)即可得到無縫的圖斑。

如下圖所示:

24.利用兩個相交圖斑創(chuàng)建新圖斑。

兩個圖斑都選中然后 Eidtor 工具條intersect,此方法原圖斑不會被接切。

25.屬性表中選擇集與非選擇集的切換

Options/switch selection

26.快速把選擇的要素另存為一個圖層并加載進來。

先選責需要另存圖層的要素(直接選擇或者屬性表),然后在圖層上右鍵Selection/create Layer From Selected Features。

(以前都是直接export竟然沒有發(fā)現(xiàn))

27.利用Hyperlinks豐富數(shù)據(jù)庫,為其添加超鏈接。

單擊rowse工具欄中Identify按鈕。單擊地圖中一個要素,在Identify Results窗口右擊需要設置超鏈接的要素,然后點擊Add Hyperlink菜單。若要將一個Web頁加為超鏈接,單擊項,并輸入URL。要鏈接到一個文檔,單擊Link to a Document,并輸入文檔路徑名。單擊Tools工具欄中的Hyperlink工具,并單擊圖上某一個要素即可實現(xiàn)。

使用一個屬性字段作為超鏈 在內(nèi)容表中右擊包含一個超鏈接字段的圖層,然后點擊properties ,單擊Display選項卡。選中Supprt Hyper3.Hyperlinks using field選項,單擊下拉箭頭并點擊一個字段。單擊Document or URL。單擊OK,單擊Tools中的Hyperlink按鈕,將鼠標指移到一要素上并單擊以顯示其超鏈接。

28.Arcmap中的SQL語言

當查詢ArcInfocoverages, shape文件, INFO表以及dBASE表時,SQL表達式中的字段名必須用雙引號擴起。如:“AREA”,如果查詢的是個人地理數(shù)據(jù)庫數(shù)據(jù),則需要將字段名包含在方括號內(nèi),如:[AREA],如果查詢的是ArcSDE地理數(shù)據(jù)庫數(shù)據(jù)或是ArcIMS要素類或ArcIMS影象服務子層中的數(shù)據(jù),則不需要將字段名括起,如:AREA

有些運算符和關鍵字也可能有所變化。

在查詢表達式中,字符串必須加單引號,例如:

[STATE_NAME]=‘California’

除個人地理數(shù)據(jù)庫要素類和表之外,查詢表達式中的字符串是區(qū)分字母大小寫的。如果搜索不需要區(qū)分大小寫,可以使用SQL函數(shù)將所有的值都轉(zhuǎn)換成大寫或者小寫。對于基于文件的數(shù)據(jù)源,例如shape文件或coverages,既可以使用UPPER函數(shù),也可以使用LOWER函數(shù)。

例如下面這個查詢將選出那些姓名的最后為Jones或JONES的顧客。

UPPER(“LAST_NAME”)= 'JONES'

可以用LIKE運算符(不是 = 運算符)與通配符一起構建部分字符串查詢。

例如,表達式 [STATE_NAME] LIKE 'Miss*'將在美國州名中選擇Mississippi和Missouri。

*表示多個字符。

還比如,查詢表達式 [OWNER_NAME] LIKE '?atherine smith' 將找出Catherine Smith和Katherine Smith。

?表示單個字符。通配符的使用依賴于不同的數(shù)據(jù)庫。例子中使用的通配符只適用于個人地理數(shù)據(jù)庫。

可以使用NULL關鍵字來選擇那些在指定字段中值為NULL的要素和記錄。通常,NULL關鍵字的前面總有IS或IS NOT。

29.Select by location小結

按位置查找要素的方法

使用按位置選擇(Select By Location)對話框,可以根據(jù)要素間的相對空間位置進行查找。可以使用多種方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點、線、多邊形等要素。

被…跨越邊界(Are crossed by the outline of)

利用這種方法,選擇被另一圖層要素覆蓋的某個圖層上的要素。例如,搜索道路跨越的荒地,得到的結果是道路跨越其邊界的所有荒地。

相交(Intersect)

與Are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結果將包括該道路在其邊界范圍之內(nèi)或在其邊界之上的所有荒地。

在…距離范圍內(nèi)(Are within a distance of)

這一方法將選擇同一圖層或不同圖層上相鄰或鄰近的要素。例如,現(xiàn)有一個包括清潔井和污染井的圖層,使用該方法可以找出距離污染井500米范圍內(nèi)的所有清潔井。同樣,也可以找出距離污染井500米范圍內(nèi)其他圖層上的水庫和農(nóng)田。還可以用該選項選擇與其他要素相毗鄰的要素。例如,假如用戶已選定了公司可能購買的地塊,現(xiàn)在想獲取鄰近地塊的信息。這種情況下,利用該選項選擇選中地塊零距離范圍內(nèi)的所有地塊即可。

中心在…里(Have their center in)

這種方法選擇某一圖層上的要素,其中心點落在另一圖層要素中。

完全在…內(nèi)(Are completely within)

這種方法選擇完全落在另一圖層多邊形內(nèi)部的某一圖層上的要素,例如,選擇林區(qū)里面的湖泊。通過指定一個緩沖距離,可以選擇落于多邊形內(nèi)部并距離多邊形邊界一定范圍內(nèi)的所有要素。例如,選擇林區(qū)內(nèi)部500米范圍內(nèi)的湖泊。

完全包含(Completely contain)

這種方法選擇某一圖層上完全包含另一圖層上的要素的多邊形。例如,選擇內(nèi)部包含湖泊的林區(qū)。通過指定一個緩沖距離,可以選擇在其內(nèi)部一定范圍內(nèi)包含要素的多邊形。例如,對湖泊做緩沖區(qū),可以選擇距離湖泊500米范圍內(nèi)的林區(qū)。

與…有公共線段(Share a line segment with)

這種方法選擇那些與其他要素具有公共線段、頂點或節(jié)點的要素。

與…等同(Are identical to)

這種方法選擇與另一圖層中某一要素具有同樣幾何形狀的所有要素。這時,要素類型必須相同。舉個例子:必須用多邊形選擇多邊形,用線段選擇線段,用點選擇點。

包含(Contain)

這種方法選擇某一圖層中包含另一圖層中要素的要素。這種方法與完全包含(Completely contain)方法的區(qū)別在于:要素間的邊界可以接觸。例如,使用包含(Contain)方法,即使湖泊的邊界和包含該湖泊的森林的邊界接觸,森林也會被選中。但是在用完全包含(Completely contain)方法時,森林是不會選中的。

包含于(Are Contained by)

這種方法選擇某一圖層中被另一圖層中要素包含的要素。例如,選擇被鄉(xiāng)村包圍的城市。這種方法和完全包含于(Are completely within)方法的區(qū)別在于,要素的邊界可以接觸。

與…接觸(Touch the boundary of)

如果使用包含線的圖層來選擇要素,則該方法將選擇那些與此圖層里的線有公共線段,頂點或端點(節(jié)點)的線和多邊形要素。如果跨越了線,則這些線和多邊形將不會被選中。

如果使用包含多邊形的圖層來選擇要素,則該方法將選擇那些與此圖層里的多邊形邊界有公共線段或頂點的線和多邊形要素。如果跨越了多邊形邊界,則這些線和多邊形將不會被選中。

31.將選中的要素放大至整個窗口

在內(nèi)容表中右擊包含選中要素的圖層,單擊Selection菜單,并單擊Zoom To Selected Features子菜單。

選中要素將放大至整個ArcMap窗口。

32.顯示選中要素的屬性

在內(nèi)容表中右擊選中要素所在圖層,單擊Open Attribute Table,單擊Show Selected records。

窗口中顯示出選中要素的屬性記錄。也可以打開屬性表在select和all之間切換。

33.通過單擊要素添加文本

1).在內(nèi)容表中,右擊需要添加標注的圖層,單擊Properties。

2).單擊Labels選項卡。

3).單擊Label Field下拉箭頭,單擊作為標注的字段。

4).單擊OK。

5).單擊Draw工具條上的Label按鈕。應該是只需單擊下拉箭頭選擇Label按鈕。

6).單擊Place label at position clicked。如果選擇了Automatically find best placement,ArcMap會自動的為標注尋找合適的位置。

7).單擊Choose a style,然后單擊需要的標注樣式。

8).在需要標注的要素上單擊鼠標,標注就添加上去了。

(先在Draw工具條下新建標注組方便管理,New Annotation Group)

34.標注工具條和標注管理器

如果圖層中有一些要素需要指定特殊的標注屬性,需要在標注管理器中生成其它的標注類。

點擊左側面板上的一個圖層,在右側面板上為其添加一個新的標注類。

個人認為此方法雖然沒有轉(zhuǎn)為注記后的標注靈活,但卻可以方便的實現(xiàn)自動相對智能化的標注,相比之下更省心,提高效率。

35.在進行地圖查詢或編輯的時候為什么會總是選中所有的圖層

訣竅在這里(雖然是一點點小問題,但當我第一次遇到這個問題時卻花費了我不少時間,甚至于懷疑自己的數(shù)據(jù)有問題)

36.建立拓撲關系檢查圖斑

先根據(jù)需要在Catalog中建立相應的拓撲關系規(guī)則,然后在Arcmap中進行拓撲處理,輔助工具條Topolygon,下圖所示為重疊圖斑檢查。(也可以在Arctoolbox下的Data Management tools/topology來做)

有關geodatabase的topology規(guī)則

多邊形topology

1).must not overlay:單要素類,多邊形要素相互不能重疊

2).must not have gaps:單要素類,連續(xù)連接的多邊形區(qū)域中間不能有空白區(qū)(非數(shù)據(jù)區(qū))

3).contains point:多邊形+點,多邊形要素類的每個要素的邊界以內(nèi)必須包含點層中至少一個點 4).boundary must be covered by:多邊形+線,多邊形層的邊界與線層重疊(線層可以有非重疊的更多要素)

5).must be covered by feature class of:多邊形+多邊形,第一個多邊形層必須被第二個完全覆蓋(省與全國的關系)

6).must be covered by:多邊形+多邊形,第一個多邊形層必須把第二個完全覆蓋(全國與省的關系)

7).must not overlay with:多邊形+多邊形,兩個多邊形層的多邊形不能存在一對相互覆蓋的要素

8).must cover each other:多邊形+多邊形,兩個多邊形的要素必須完全重疊

9).area boundary must be covered by boundary of:多邊形+多邊形,第一個多邊形的各要素必須為第二個的一個或幾個多邊形完全覆蓋

10).must be properly inside polygons:點+多邊形,點層的要素必須全部在多邊形內(nèi)

11).must be covered by boundary of:點+多邊形,點必須在多邊形的邊界上

線topology

1).must not have dangle:線,不能有懸掛節(jié)點

2).must not have pseudo-node:線,不能有偽節(jié)點

3).must not overlay:線,不能有線重合(不同要素間)

4).must not self overlay:線,一個要素不能自覆蓋

5).must not intersect:線,不能有線交叉(不同要素間)

6).must not self intersect:線,不能有線自交叉

7).must not intersect or touch interrior:線,不能有相交和重疊

8).must be single part:線,一個線要素只能由一個path組成

9).must not covered with:線+線,兩層線不能重疊

10).must be covered by feature class of:線+線,兩層線完全重疊

11).endpoint must be covered by:線+點,線層中的終點必須和點層的部分(或全部)點重合

12).must be covered by boundary of:線+多邊形,線被多邊形邊界重疊

13).must be covered by endpoint of:點+線,點被線終點完全重合

14).point must be covered by line:點+線,點都在線上

Topology工具條及功能介紹:

37.給多個要素同一賦值

選中你需要同一賦值的是所有圖斑,然后點擊Atrributes,此時出現(xiàn)屬性修改對話框,點擊根目錄是對所有要素同一賦值,點擊下面的支目錄則可以分別賦值。(也可以用字段計算器實現(xiàn))

38.如何根據(jù)確定的點畫出以他相應的點

例如:我在地圖上已經(jīng)指導了一個一直點,而其他的點在地圖上都是以他為中心畫出來的。學校

SE60度,140米 意思是學校在中心點南偏東60度,距離是140米,這樣的點在arcmap中怎么加呢?我的方法有二分別如下。

1).確定已有一個點圖層,其中有學校,然后:

對該圖層開始編輯

選擇工具欄editor---direction-distance tool

以中心點為中心,先畫角度線(arcmap左下角會有角度提示),再畫距離/半徑(注:畫的過程中點擊A鍵可以輸入角度值,點擊D鍵可以輸入距離值)

確定,即可

如果找不到direction-distance tool 的同志請看下面

Direction-distance tool is here

第二種方法就是直接編寫代碼實現(xiàn)

下面是一段示例的VBA代碼(本段代碼作者:GIS空間站 knight_sl)

Option Explicit

Dim dPoint(2, 1)As Double

Sub aaa()

Call bbb

Dim aa As IMxDocument

Set aa = ThisDocument

Dim pFLyr As IFeatureLayer

Set pFLyr = aa.FocusMap.Layer(0)

Dim pFCsr As IFeatureCursor

Dim pFt As IFeature

Set pFCsr = pFLyr.FeatureClass.Update(Nothing, False)

Set pFt = pFCsr.NextFeature

Dim pPoint As IPoint

Set pPoint = pFt.ShapeCopy

Dim pNewPoint As IPoint

Dim X0 As Double, Y0 As Double

Dim X As Double, Y As Double

Dim dAngle As Double

Dim i As Long

For i = 0 To UBound(dPoint, 1)

Set pFt = pFLyr.FeatureClass.CreateFeature

Set pNewPoint = New Point

dAngle = dPoint(i, 0)* 3.14***3 / 180

pNewPoint.X = dPoint(i, 1)* Cos(dAngle)+ pPoint.X

pNewPoint.Y = dPoint(i, 1)* Sin(dAngle)+ pPoint.Y

Set pFt.Shape = pNewPoint

pFt.Store

Next

Set pFLyr = Nothing

Set pFCsr = Nothing

Set pFt = Nothing

Set pPoint = Nothing

Set pNewPoint = Nothing

End Sub

Subbbb()

'定義新加三個點的角度和距離

dPoint(0, 0)= 10

dPoint(0, 1)= 150

dPoint(1, 0)= 30

dPoint(1, 1)= 170

dPoint(2, 0)= 120

dPoint(2, 1)= 200

End Sub

這中方法做起來需要一點編程經(jīng)驗,但是比上面那中一個一個的畫的方法要先進多了,可以把所有的點錄入同時畫出來。

如果你不會VBA編程,請看下面:

這是ArcGIS VBA的程序,運行的方法:

1),運行ArcMap,加載所需圖層;

2),Tools菜單/Macros(宏)/Visual Basic Editor(VB編輯器),這樣打開VB編輯器

3),雙擊打開VB編輯器左上工程資源管理器中的Project/ArcMap對象/ThisDocument,把上面的代碼粘進去。注意看首行

Option Explicit如果有兩行,就刪除一行。

4),點擊VB編輯器工具欄的運行按鈕運行(或菜單 運行/運行子過程),就可以了,再激活ArcMap可以看到發(fā)生了什么!

或者還有一種創(chuàng)建宏的方法(不過建議對ArcGIS VBA不大熟的同志不要用這種方法):

1),運行ArcMap,加載所需圖層;

2),Tools菜單/Macros(宏)/Macros,這樣打開宏編輯器

3),在宏名稱中輸入aaa,確定后,會打開VB編輯器,將看到有一個aaa的過程,沒有實體。你把上面的aaa過程中的代碼粘進去,然后在前面加上

Option Explicit(這個別重復了哈)

Dim dPoint(2, 1)As Double

就可以。

4),點擊VB編輯器工具欄的運行按鈕運行(或菜單 運行/運行子過程),就可以了,再激活ArcMap可以看到發(fā)生了什么!

39.這里說道了工具的使用,那么就簡單的再介紹下Sketch中的幾個工具吧

Sketch construction tools的使用:

Sketch tool:主要是用來創(chuàng)造線和面特征的節(jié)點,在你完成了草圖之后,ArcMAP就會增加最后的線段,形成矢量圖。

Arc tool:這個主要是幫你創(chuàng)造一個弧段的,選中這個工具后,先在弧段起點點一下,然后在弧段高度方向大致位置點一下(這個點是不可見的,只是給你確定弧段的高度),最后在弧段的終點點一下,就形成一條弧段了。

Direction-distance tool:這個主要是從已知某一個方向和某一個距離來確定一個點。首先點一個已知方向的點,這是會有一條線出來,你確定好方向后,再點已知距離的點,這是出來一個圓,確定距離后,直線和圓有交點,這就是你要的點,再上面點一下就ok!

Distance-distance tool:這個和上面的一樣的道理,只是它都用距離來確定一個點,也就是兩個圓確定你要的點。

Endpoint arc tool:這也是創(chuàng)造弧段用的,與Arc tool 工具不同的是,它是先在弧段的起點點一下,然后在弧段的終點點一下,再點一個點確定弧段的半徑。個人認為這個工具要比Arc tool工具更精確些。

Intersection tool:就是利用兩條直線確定一個點。很簡單一用就會!

Midpoint tool:確定中點的工具,比如馬路的中點,你可以先點一邊,再點馬路另一邊,這時馬路的中點自動出現(xiàn)了。(畫道路中線太可以試試,不過得是直線道路咯,^_^)

Tangent tool:相切弧段工具,它能夠在一條線段上畫出一條切線,只有你用其他工具畫了線段出來時你才可以用這個工具。

Trace tool: 主要是用來在跟蹤已存在的特征,比如一棟房子,你要沿房子外圍畫一條線(比如圍墻),那么你使用這個工具就非常方便,首先開始時你必須按O鍵,設置下跟蹤的間距,如100,其中還有三個角點的方式:mitered是直角 bevelled 是鈍角rounded是圓角。(感覺那效果有點像CAD的偏移咯)

40.如何標注多個字段的屬性及分子式標注

Propertis/label field /expression

實例:“”& [單位名稱] &“” &VbCrLf& “ ” & [PARCEL_NO]

輸出分數(shù)線 VbCrLf 換行

效果圖:

引用GIS空間站 兔八哥文章詳解

以前用ArcGIS Label一般也就在圖層的Properties里面定義一下Label字體大小和粗細。這兩天遇到一個問題,需要在Label中顯示多個字段的內(nèi)容,比如BlockName和CompanyName。其實這個本來不是很難的問題,因為Label中支持VBScript,使用[BlockName] &VbNewLine& [CompanyName]。就可以實現(xiàn)標注中第一行顯示BlockName,第二行顯示CompanyName.現(xiàn)在問題出來了,出圖時候希望突出BlockName效果,希望加粗顯示,而CompanyName使用一般字體。考慮了很長時間終于從ArcGIS幫助中找到了相關的內(nèi)容,原來Label的VBScript里面支持類似于Html的VBScript標簽,比如加粗就是用,上面問題就可以使用下面語句解決:

” & [BlockName] & “” &VbNewLine& [CompanyName]

除了加粗,ArcGIS中還支持下面的文本格式標簽:

Font:

” & [LABELFIELD] & “

Color:

” & [LABELFIELD] & “

” & [LABELFIELD] & “

Bold:

” & [LABELFIELD] & “

Italic:

” & [LABELFIELD] & “

Underline:

” & [LABELFIELD] & “

All caps:

” & [LABELFIELD] & “

Small caps:

” & [LABELFIELD] & “

Superscript

” & [LABELFIELD] & “

Subscript:

” & [LABELFIELD] & “

Character spacing(%):

” & [LABELFIELD] & “

Word spacing(%):

” & [LABELFIELD] & “

Leading(pts): “” & [LABELFIELD] & “

需要注意的是,使用這些標簽后,生成的Label語句在Verify按鈕中是不生效的,只對最終的顯示結果生效。

其實問題還沒有最終解決,使用VbNewLine生成的顯示結果,上下兩行缺省時居中對齊,現(xiàn)在希望它們左對齊顯示,還沒找到辦法。還有一個問題,就是ArcGIS中對點的Label可以選擇Label的位置,而對面沒有,缺省是放置在中間,現(xiàn)在希望放置在左上角,還沒有找到該怎么辦。

下面是一個VBS的代碼可以試試。

Function FindLabel([OBJECTID], [SHAPE_Area])

Dim nFMLength

Dim nFZLength

nFMLength = Len([SHAPE_Area])

nFZLength = Len([OBJECTID])

Dim strLeftSpace

Dim strRightSpace

strLeftSpace = ”“

strRightSpace= ”“

If nFMLength>nFZLength Then

For i=0 To(nFMLength-nFZLength)/2

strLeftSpace =strLeftSpace +chr(32)

strRightSpace =strRightSpace + chr(32)

Next

End If

FindLabel = ”“ &strLeftSpace& [OBJECTID]&strRightSpace& ”“&chr(13)&chr(10)& [SHAPE_Area]

End Function

41.用點構面

ArcToolBox->Samples->Data Management->Features->Create Features From Text File

點組成面,最重要的是點序的排列,因此對數(shù)據(jù)的組織有一定的要求。

42.幾個常用的VBA代碼

在ARCGIS屬性表中增加需要的字段,并自動賦值

使用方法

1打開屬性表,選擇計算的字段,右點選擇Calculate Values;2.選擇“是”,進入Field Calculator;

2選擇Advance選項; 在Pre-Logic VBA Script Code編輯框中輸入VBA代碼;

4在下面編輯框中輸入賦值部分.1--點坐標X

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPoint As IPoint

Set pPoint = pGeo

賦值部分:

pPoint.X

2--點坐標Y

VBA部分: 同上

賦值部分:

pPoint.Y

坐標值為文件存儲的固有值,和是否使用On the Fly坐標表示無關。返回當前顯示的坐標值參看8,9

3--多邊形周長

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

賦值部分:

pPolygon.Length

4--多邊形面積

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

賦值部分:

pArea.Area

5--多邊形重心X

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

Dim pPoint As IPoint

Set pPoint = pArea.Centroid

賦值部分:

pPoint.X

6--多邊形重心Y

VBA部分: 同上

賦值部分:

pPoint.Y

7--Polyline長度

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolyline As IPolyline

Set pPolyline = pGeo

Dim pCurve As IPolycurve

Set pCurve = pPolyline

賦值部分:

pCurve.Length

8--表示點坐標X

VBA部分:

Dim pDoc As IMxDocument

Set pDoc = ThisDocument

Dim pSpRef As ISpatialReference

Set pSpRef = pDoc.FocusMap.SpatialReference

Dim pClone As IClone

Set pClone = [Shape]

Dim pGeo As IGeometry

Set pGeo = pClone.Clone

Dim pPoint as IPoint

Set pPoint = pGeo

pGeo.ProjectpSpRef

賦值部分:

pPoint.X

9--表示點坐標Y

VBA部分: 同上

賦值部分:

pPoint.Y

坐標值為On the Fly顯示的坐標,不是文件存儲的固有坐標

10--連續(xù)編號

VBA部分:

Static lCount as long

lCount=lCount+1

賦值部分:

lCount(從1開始)

lCount-1(從0開始)

計算面的中點

Dim Output As Double

Dim pArea As IArea

Set pArea = [Shape]

Output = pArea.Centroid.X(或y)

當然這是很老的方法了,現(xiàn)在arcgis9.2以后都不需要用VBA啦,右鍵屬性表字段然后直接選擇 Caculate Geometry就可以實現(xiàn)比如面積計算,X,Y坐標等的屬性賦值了咯。

43.在同一圖層如何對同一要素的不同部分以不同的符號表示

(注:要實現(xiàn)這種渲染需要兩段具有不同的屬性)44.自己做arcMAP的圖例

在Symbol property Editor中進行制作了 1)、先在Style Manager中的左側列表中,選擇相應的Style文件,ArcGIS默認的符號庫文件是ESRI.Style文件,當然也給出了C:Documents and Settings........................................目錄下用于用戶自定義的Style文件 2)、展開Style文件,選擇要創(chuàng)建Symbol的類型,如:Fill Symbol(面填充)、Line Symbol(線)、Marker Symbol(點)然后在右側的列表中鼠標右鍵->New 3)、在彈出的Symbol Property Editor窗體中,進一步選擇Marker Symbol的類型,如:Simple Marker Symbol、Picture Marker Symbol等等

4)、這個時候就要根據(jù)需要開始設計符號的各種屬性了,由于不同種類的Marker Symbol有不同的屬性,因此,屬性也會不盡相同。

5)、另外介紹一個經(jīng)常需要或比較使用的步驟,我們需要設計的符號可以由ESRI提供的現(xiàn)有符號組合而成,那么我們則需要添加2個Symbol Layer,然后進行2個Symbol Layer的疊加

6)、分別設置上述2個Symbol Layer的中的Symbol的屬性,之后確認保存,這樣會在Style Manager中看到我們新制作的符號

如圖:

(注:以上內(nèi)容轉(zhuǎn)載自ESRI社區(qū) gis27)

45.計算屬性中相同的字段個數(shù)

選擇要計算的字段然后右鍵選擇Summarize根據(jù)相應的要求設置參數(shù)即可實現(xiàn)。功能示意如下圖:

46.自動提取面的中點并加點

Arctoolbox->Feature-> Feature to Point

47.合并屬性相同的相鄰圖斑

使用Dissolve

當選擇了create multipart feature時,所有具有相同屬性的圖斑將鏈接在一起做為一個圖斑。

48.提取圖斑轉(zhuǎn)折點坐標

如果沒有偽節(jié)點那么,選中一個線或者面,打開sketch Properties,就可以看到節(jié)點坐標。

還有一種方法就是:通過toolbox-datamanagement-feature-FeatureVerticesToPoints得到轉(zhuǎn)折點的圖層然后Add XY Coordinates,該點圖層的屬性表中就包含了X,Y字段,將其導出,就得到轉(zhuǎn)折點坐標了。

ArcMap中設置.mxd相對路徑

復制拷貝地圖文檔后再次打開會遇到圖層前一個!的標識符號,是因為加載圖層的相對路徑變化了,需要重新指定圖層位置。對此將.mxd文檔設置為相對路徑起到作用,具體做法如下:

(1)File-->Document Properties-->打開對話框中,點擊Data Source Options...按鈕;

(2)選中store relative path names to data sources單選框,并勾選Make relative paths the defalut of...前的復選框。

以上兩步操作即可。

在dissolve時,出現(xiàn)

ERROR 000354: The name contains invalid characters Failed to execute(Dissolve).End Time: Thu Mar 24 09:32:47 2011(Elapsed Time: 0.00 seconds)output文件包括無效字符如中劃線等

Geometry First [Editor's note: I was having trouble last week dissolving a shapefile based on a common attribute.I kept getting the following error: ”Invalid Topology [INCOMPLETE_VOID_POLY]“.Not entirely helpful!A little Google searching turned up the following tip from ESRI.]

Republished from ESRI.Problem: Some Overlay Tools, such as Intersect, return unexpected results or fail

Description Results do not look correct or operations fail with strange errors such as:

“Invalid Topology [INCOMPLETE_VOID_POLY]“.If this type of error has occurred, it is most likely to occur when using one of the following: Clip, Erase, Identity, Intersect, Symmetrical Difference, Union, Update, Split Featureclass to Coverage, Dissolve, Feature to Line, Feature To Polygon, Integrate, or ValidateTopology.Cause It is possible that tool outputs may be strange or incorrect because one or more features in the input feature class have geometry problems.Some examples of geometry problems are:

· short segments · null geometry

· incorrect ring ordering

· incorrect segment orientation · unclosed rings · self-intersections or empty parts

Solution or Workaround If such errors occur or the output looks incorrect, the first step in assessing the situation is to run the ArcToolbox tool Data Management Tools > Features > Check Geometry.-show me

This tool provides a list of the invalid features in the feature class and a short description of the problem.Features with problems can be fixed in one of two ways:

Editing the feature class with the geometry problem, and fixing each individual problem identified.Some of these problems, like non-simple geometry, can be fixed by double-clicking the feature in the editor and saving the edits.Running the ArcToolBox tool Data Management Tools > Features > Repair Geometry on the feature class containing the problem features

昨天檢查一區(qū)屬性發(fā)現(xiàn)一區(qū)圖層的面積屬性shape_area竟然出現(xiàn)了負值,想必是數(shù)據(jù)轉(zhuǎn)換的時候出現(xiàn)了問題。今天在論壇求證了一下,感謝各位的解答。

ArcGIS默認順時針圖形為正,手工畫polygon的時候不管怎么畫結果都是順時針的。所以一般負值的出現(xiàn)是轉(zhuǎn)換過程出現(xiàn)問題,polygon是由ring組成的,ring則是有更小的segement(line,circularArc,ellipticalArc,beziercurve)構成,所具有方向性。解決方法是用ArcTool中的check geometry和 repair geometry工具,上述的檢查結果是Incorrect ring ordering。repair后會自動修復錯誤,已解決。

此外,repair工具只能修復以下五種錯誤:

Null geometry—The feature will be deleted from the feature class.Short segment—The geometry's short segment will be deleted.Incorrect ring ordering—The geometry will be updated to have correct ring ordering.Incorrect segment orientation—The geometry will be updated to have correct segment orientation.Self intersections—The geometry's segments that intersect will be split at their intersection.Unclosed rings—The unclosed rings will be closed.Empty parts—The parts that are null or empty will be deleted.更多的錯誤修復參照幫助中的 How to salvage a corrupt shapefile 米3

第二篇:Arcgis中工具總結

1.要素的剪切與延伸

實用工具 TASK 任務欄 Extend/Trim feature 剪切所得內(nèi)容與你畫線的方向有關。

2.自動捕捉跟蹤工具

點擊Editor工具欄中Snapping來打開Snapping Environment對話框

捕捉設置中有3個選項,vertex edge end 分別是節(jié)點、終點、和邊,選擇end應該會捕捉端點

3.圖斑面積計算及長度計算

應用工具CALCULATE AREA 或者使用VBA代碼實現(xiàn) 新建字段并開啟Advanced 寫入代碼,面積計算:

Dim Output as double

Dim pArea as Iarea

Set pArea = [shape]

在最后的一個空格里面寫入代碼(即:字段名)pArea.area

長度計算:

Dim Output as double

Dim pCurve as ICurve

Set pCurve = [shape]

Output = pCurve.Length

4.剪切圖斑

Task任務欄 cut polygon feature工具,需要sketch工具畫線輔助完成

5.配準工具

Spatial Adjustment 工具 需要注意先要 set adjustment data 然后配準 6.影像校正

Georeferncing工具

7.要素變形

Task 工具條中的reshape feature 配合sketch工具

8.添加節(jié)點

Modify feature 在需要加點的地方右鍵單擊insert vertex

也可單擊右鍵選擇properties 打開edit sketch properties對話框,在坐標點位置右鍵插入節(jié)點

9.共享多邊形生成

Auto-complete polygon 工具生成共享邊的多邊形,配合snapping environment更好。

10.畫島圖 1).使用任務欄中的sketch工具,當畫完外面的一圈時,右鍵 選擇finish part 然后畫中間的部分 再右鍵finish sketch

2).分別畫連個圖斑然后應用Editor 工具欄中的工具先intersect(圖斑重疊的地方創(chuàng)建一個新的圖斑)然后Clip(剪切)即可。(補充其他工具:Union,把多個圖斑聯(lián)合起來并形成一個新的連接在一起的圖斑,原圖斑無變化,聯(lián)合后的圖斑不繼承原任何圖斑的屬性;Merge,把多個圖斑合并到其中一個圖斑上并繼承它的屬性,原圖斑變化;Split用于間斷線段,但得知道具體的長度,如果不知道那么長度或者沒必要那么精確就直接用Eeitor工具欄的Split tool工具)

11.連接外界屬性數(shù)據(jù)(如:.xsl文件等)

利用JOIN 工具可以方便的實現(xiàn)與外界屬性數(shù)據(jù)的關聯(lián),但這種關聯(lián)是依賴于外界數(shù)據(jù)庫本身的,需經(jīng)過重新導出之后即完全保存在相應圖層屬性頁。在做外聯(lián)如EXCEL等的時候?qū)?shù)據(jù)有一些要求,確保第一行包含字段名,這些字段名不能超過十個字母,不能出現(xiàn)特殊字符。最好把EXCEL保存為.csv文件去除一些不兼容的內(nèi)容再連接。

轉(zhuǎn)載ESRI論壇Lucy1114帖子說明:

12.導出Shape格式為其他軟件識別的打印格式如JEPG等格式

FILE/EXPORT MAP 然后選擇相應的圖片格式,此時也可設置答應的分辨率 pdi

13.建立注記層

方法一.carvert to Ananotation ,方法二.Draw工具條 方法三.從其他地方轉(zhuǎn)換注記圖層

14.查看特定區(qū)域范圍內(nèi)的某種地物分布情況

Selection / select by location

15.如何用面生成中線

先把數(shù)據(jù)轉(zhuǎn)成coverage格式,workstion里有Centerline命令。

另外ArcToolBox->Data Management Tools->Generalization->Collapse Dual Lines To Centerline也行。不過以上做法要求邊界是雙線。你必須先把面轉(zhuǎn)成線,特別是參數(shù)的設置。也可以嘗試下sketch工具條中的midpoint tool 后面有詳細的講解過程。

16.根據(jù)坐標數(shù)據(jù)生成點

方法一.:[工具] >>[添加XY 數(shù)據(jù)],在“添加XY 數(shù)據(jù)”窗口中,選擇已添加的

XY 數(shù)據(jù)表,指定X 坐標字段(東經(jīng))和Y 坐標字段(北緯),按“編輯”按鈕,選擇坐標系統(tǒng)。一般GPS系統(tǒng)采用的坐標系統(tǒng)為WGS_1984。

方法二.直接用TOOL工具下的ADD XY 可以單個加點

17.用任意多邊形剪切柵格數(shù)據(jù)(矢量數(shù)據(jù)轉(zhuǎn)換為柵格數(shù)據(jù))

在ArcCatalog下新建一個要素類(要素類型為:多邊形),命名為:ClipPoly.shp

在ArcMap中,加載柵格數(shù)據(jù):Landuse、和ClipPoly.shp

打開 編輯器工具欄,開始編輯ClipPoly,根據(jù)要剪切的區(qū)域,繪制一個任意形狀的多 邊形。打開屬性表,修改多邊形的字段“ID”的值為1,保存修改,停止編輯。

打開 空間分析工具欄

GIS軟件應用-ArcGIS

執(zhí)行命令:<空間分析>-<轉(zhuǎn)換>--<要素到柵格>

指定柵格大小:查詢要剪切的柵格圖

層Landuse 的柵格大小,這里指定為25

指定輸出柵格的名稱為路徑

執(zhí)行命令: <空間分析>-<柵格計算器>

構造表達式:[Landuse]*[polyClip4-polyclip4],執(zhí)行柵格圖層:Landuse 和 用以剪切 的柵格polyClip4 之間的相乘運算 GIS軟件應用-ArcGIS

得到的結果即是以任意多邊形剪切的Landuse數(shù)據(jù)

18.柵格重分類(Raster Reclassify)

通過柵格重分類操作可以將連續(xù)柵格數(shù)據(jù)轉(zhuǎn)換為離散柵格數(shù)據(jù)

19.Eliminate合并破碎多邊形

以下的操作將會把面積小于10000平方米的多邊形合并到周圍與之有最長公共

邊的多邊形中:

執(zhí)行菜單命令[選擇]>>[通過屬性選擇],查詢”Area”<=10000(平方米)的圖斑

被選中的多邊形以高亮方式顯示,這些小的圖斑將會被合并到與之相鄰且有最大公共邊 的多邊形。當然也可以選擇合并到相鄰的面積最大的多邊形。

打開 Arctoolbox,執(zhí)行 [消除] 命令

指定輸入圖層:tinSlopef, 輸出要素類:TinSlopef_Elminate.shp

Eliminate(合并破碎多邊形)操作原理

20.重疊要素的選擇切換

目標:在覆蓋同一區(qū)域的多個要素中切換被選擇要素

操作步驟:

1).在編輯環(huán)境中選中覆蓋同一區(qū)域的多個要素中的一個要素

2).按下N鍵,被選要素就會自動地切換到另一個圖層的要素上去(如圖1)

3).重復操作,直到選中目標要素為止

21.編輯時一些常用的快捷鍵

一、公共快捷鍵(對所有編輯工具有效):

在編輯未完成時按快捷鍵E切換到選擇的環(huán)境中去 Z 放大 X 縮小 C 漫游 V顯示節(jié)點 Ctrl+Z 撤銷Ctrl+Y 重做 SpaceBar 暫停捕捉

二、編輯工具:

Shift:添加至/取消選擇 Ctrl:移動選擇錨 N:下一個被選要素

三、用于Edit工具的與注記相關的快捷鍵:

E:在Sketch工具、Edit工具和Edit Annotation工具間切換;

四、Edit Annotation工具:

Shift:添加至/取消選擇 Ctrl:移動選擇錨 N:下一個被選要素 R:切換至旋轉(zhuǎn)模式/從旋轉(zhuǎn)模式切換 F:切換至要素模式/從要素模式切換

E:在Sketch工具、Edit工具和Edit Annotation工具間切換 L:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度

O:在跟蹤要素模式下打開Follow Feature Options 對話框

Tab:在跟蹤要素模式下對注記放置的位置進行左右邊的切換

P:在跟蹤要素模式下對注記放置的角度進行平行和垂直方向的切換。

E:在Sketch工具、Edit工具和Edit Annotation工具間切換 L:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度

O:在跟蹤要素模式下打開Follow Feature Options 對話框

Tab:在跟蹤要素模式下對注記放置的位置進行左右邊的切換

P:在跟蹤要素模式下對注記放置的角度進行平行和垂直方向的切換。

五、Sketch工具:

Ctrl+A:方位 Ctrl+F:偏轉(zhuǎn) Ctrl+L:長度 Ctrl+D:X,Y增量 Ctrl+G:方位/長度 Ctrl+P:平行 Ctrl+E:垂直 Ctrl+T:切線 Ctrl+Delete:刪除草圖 F2:完成草圖 F6:絕對X,Y坐標 F7:線段偏轉(zhuǎn) T:顯示容限 已經(jīng)輸入的命令可以通過Esc取消。

六.鼠標操作技巧

i.在使用【Pan】工具時,鼠標單擊處將位于地圖的中心。

ii.在使用【Zoom In / Zoom Out / Pan】工具時,按F6鍵可以循序在這3個工具間切換

iii.在TOC中按住Alt鍵,并單擊圖層,等效于縮放到圖層(Zoom To Layer)

22.對線要素標注的增強

(對線要素進行標注時,如果標注在線上,標注和線會疊加顯示,效果不理想,下面叫介紹一種可以在顯示標注的地方把線斷開的方法,這樣效果會美觀一些)

操作步驟:

1).把標注轉(zhuǎn)成注記,保存在GDB中

2). 用ArcToolbox中的制圖工具Cartography Tools->Masking Tools->Intersecting Layer Masks,為注記創(chuàng)建模版,模版的大小用參數(shù)Margin來決定

3).右鍵點擊數(shù)據(jù)框,在環(huán)境菜單中選擇高級繪制選項(Advanced Drawing Options),用注記的模版圖層去遮蓋線圖層,確定

23.同一圖層使用Clip實現(xiàn)圖斑的無縫拼接

當一個圖斑的邊界確定,需要實現(xiàn)兩個圖斑的無縫拼接時,可以把圖斑拉伸覆蓋確定邊界的圖斑的一部分,然后用下面的圖斑剪區(qū)上面的圖斑。

方法二:圖斑之間有小的縫隙,可以先在縫隙上任意補畫一個圖斑,然后合并(merge)圖斑,最后再剪切(Clip)即可得到無縫的圖斑。

如下圖所示:

24.利用兩個相交圖斑創(chuàng)建新圖斑。

兩個圖斑都選中然后 Eidtor 工具條intersect,此方法原圖斑不會被接切。

25.屬性表中選擇集與非選擇集的切換

Options/switch selection

26.快速把選擇的要素另存為一個圖層并加載進來。

先選責需要另存圖層的要素(直接選擇或者屬性表),然后在圖層上右鍵Selection/create Layer From Selected Features。

(以前都是直接export竟然沒有發(fā)現(xiàn))

27.利用Hyperlinks豐富數(shù)據(jù)庫,為其添加超鏈接。

單擊rowse工具欄中Identify按鈕。單擊地圖中一個要素,在Identify Results窗口右擊需要設置超鏈接的要素,然后點擊Add Hyperlink菜單。若要將一個Web頁加為超鏈接,單擊項,并輸入URL。要鏈接到一個文檔,單擊Link to a Document,并輸入文檔路徑名。單擊Tools工具欄中的Hyperlink工具,并單擊圖上某一個要素即可實現(xiàn)。

使用一個屬性字段作為超鏈 在內(nèi)容表中右擊包含一個超鏈接字段的圖層,然后點擊properties ,單擊Display選項卡。選中Supprt Hyper3.Hyperlinks using field選項,單擊下拉箭頭并點擊一個字段。單擊Document or URL。單擊OK,單擊Tools中的Hyperlink按鈕,將鼠標指移到一要素上并單擊以顯示其超鏈接。

28.Arcmap中的SQL語言

當查詢ArcInfo coverages, shape文件, INFO表以及dBASE表時,SQL表達式中的字段名必須用雙引號擴起。如:“AREA”,如果查詢的是個人地理數(shù)據(jù)庫數(shù)據(jù),則需要將字段名包含在方括號內(nèi),如:[AREA],如果查詢的是ArcSDE地理數(shù)據(jù)庫數(shù)據(jù)或是ArcIMS要素類或ArcIMS影象服務子層中的數(shù)據(jù),則不需要將字段名括起,如:AREA

有些運算符和關鍵字也可能有所變化。

在查詢表達式中,字符串必須加單引號,例如:

[STATE_NAME]=‘California’ 除個人地理數(shù)據(jù)庫要素類和表之外,查詢表達式中的字符串是區(qū)分字母大小寫的。如果搜索不需要區(qū)分大小寫,可以使用SQL函數(shù)將所有的值都轉(zhuǎn)換成大寫或者小寫。對于基于文件的數(shù)據(jù)源,例如shape文件或coverages,既可以使用UPPER函數(shù),也可以使用LOWER函數(shù)。

例如下面這個查詢將選出那些姓名的最后為Jones或JONES的顧客。

UPPER(“LAST_NAME”)= 'JONES'

可以用LIKE運算符(不是 = 運算符)與通配符一起構建部分字符串查詢。

例如,表達式 [STATE_NAME] LIKE 'Miss*'將在美國州名中選擇Mississippi和Missouri。

*表示多個字符。

還比如,查詢表達式 [OWNER_NAME] LIKE '?atherine smith' 將找出Catherine Smith和Katherine Smith。

?表示單個字符。通配符的使用依賴于不同的數(shù)據(jù)庫。例子中使用的通配符只適用于個人地理數(shù)據(jù)庫。

可以使用NULL關鍵字來選擇那些在指定字段中值為NULL的要素和記錄。通常,NULL關鍵字的前面總有IS或IS NOT。

29.Select by location小結

按位置查找要素的方法

使用按位置選擇(Select By Location)對話框,可以根據(jù)要素間的相對空間位置進行查找。可以使用多種方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點、線、多邊形等要素。

被?跨越邊界(Are crossed by the outline of)

利用這種方法,選擇被另一圖層要素覆蓋的某個圖層上的要素。例如,搜索道路跨越的荒地,得到的結果是道路跨越其邊界的所有荒地。

相交(Intersect)

與Are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結果將包括該道路在其邊界范圍之內(nèi)或在其邊界之上的所有荒地。

在?距離范圍內(nèi)(Are within a distance of)

這一方法將選擇同一圖層或不同圖層上相鄰或鄰近的要素。例如,現(xiàn)有一個包括清潔井和污染井的圖層,使用該方法可以找出距離污染井500米范圍內(nèi)的所有清潔井。同樣,也可以找出距離污染井500米范圍內(nèi)其他圖層上的水庫和農(nóng)田。還可以用該選項選擇與其他要素相毗鄰的要素。例如,假如用戶已選定了公司可能購買的地塊,現(xiàn)在想獲取鄰近地塊的信息。這種情況下,利用該選項選擇選中地塊零距離范圍內(nèi)的所有地塊即可。

中心在?里(Have their center in)

這種方法選擇某一圖層上的要素,其中心點落在另一圖層要素中。

完全在?內(nèi)(Are completely within)

這種方法選擇完全落在另一圖層多邊形內(nèi)部的某一圖層上的要素,例如,選擇林區(qū)里面的湖泊。通過指定一個緩沖距離,可以選擇落于多邊形內(nèi)部并距離多邊形邊界一定范圍內(nèi)的所有要素。例如,選擇林區(qū)內(nèi)部500米范圍內(nèi)的湖泊。

完全包含(Completely contain)

這種方法選擇某一圖層上完全包含另一圖層上的要素的多邊形。例如,選擇內(nèi)部包含湖泊的林區(qū)。通過指定一個緩沖距離,可以選擇在其內(nèi)部一定范圍內(nèi)包含要素的多邊形。例如,對湖泊做緩沖區(qū),可以選擇距離湖泊500米范圍內(nèi)的林區(qū)。

與?有公共線段(Share a line segment with)

這種方法選擇那些與其他要素具有公共線段、頂點或節(jié)點的要素。

與?等同(Are identical to)

這種方法選擇與另一圖層中某一要素具有同樣幾何形狀的所有要素。這時,要素類型必須相同。舉個例子:必須用多邊形選擇多邊形,用線段選擇線段,用點選擇點。

包含(Contain)

這種方法選擇某一圖層中包含另一圖層中要素的要素。這種方法與完全包含(Completely contain)方法的區(qū)別在于:要素間的邊界可以接觸。例如,使用包含(Contain)方法,即使湖泊的邊界和包含該湖泊的森林的邊界接觸,森林也會被選中。但是在用完全包含(Completely contain)方法時,森林是不會選中的。

包含于(Are Contained by)

這種方法選擇某一圖層中被另一圖層中要素包含的要素。例如,選擇被鄉(xiāng)村包圍的城市。這種方法和完全包含于(Are completely within)方法的區(qū)別在于,要素的邊界可以接觸。

與?接觸(Touch the boundary of)

如果使用包含線的圖層來選擇要素,則該方法將選擇那些與此圖層里的線有公共線段,頂點或端點(節(jié)點)的線和多邊形要素。如果跨越了線,則這些線和多邊形將不會被選中。

如果使用包含多邊形的圖層來選擇要素,則該方法將選擇那些與此圖層里的多邊形邊界有公共線段或頂點的線和多邊形要素。如果跨越了多邊形邊界,則這些線和多邊形將不會被選中。

31.將選中的要素放大至整個窗口

在內(nèi)容表中右擊包含選中要素的圖層,單擊Selection菜單,并單擊Zoom To Selected Features子菜單。

選中要素將放大至整個ArcMap窗口。

32.顯示選中要素的屬性

在內(nèi)容表中右擊選中要素所在圖層,單擊Open Attribute Table,單擊Show Selected records。

窗口中顯示出選中要素的屬性記錄。也可以打開屬性表在select和all之間切換。

33.通過單擊要素添加文本

1).在內(nèi)容表中,右擊需要添加標注的圖層,單擊Properties。

2).單擊Labels選項卡。

3).單擊Label Field下拉箭頭,單擊作為標注的字段。

4).單擊OK。5).單擊Draw工具條上的Label按鈕。應該是只需單擊下拉箭頭選擇Label按鈕。

6).單擊Place label at position clicked。如果選擇了Automatically find best placement,ArcMap會自動的為標注尋找合適的位置。

7).單擊Choose a style,然后單擊需要的標注樣式。

8).在需要標注的要素上單擊鼠標,標注就添加上去了。

(先在Draw工具條下新建標注組方便管理,New Annotation Group)

34.標注工具條和標注管理器

如果圖層中有一些要素需要指定特殊的標注屬性,需要在標注管理器中生成其它的標注類。

點擊左側面板上的一個圖層,在右側面板上為其添加一個新的標注類。

個人認為此方法雖然沒有轉(zhuǎn)為注記后的標注靈活,但卻可以方便的實現(xiàn)自動相對智能化的標注,相比之下更省心,提高效率。35.在進行地圖查詢或編輯的時候為什么會總是選中所有的圖層

訣竅在這里(雖然是一點點小問題,但當我第一次遇到這個問題時卻花費了我不少時間,甚至于懷疑自己的數(shù)據(jù)有問題)

36.建立拓撲關系檢查圖斑

先根據(jù)需要在Catalog中建立相應的拓撲關系規(guī)則,然后在Arcmap中進行拓撲處理,輔助工具條Topolygon,下圖所示為重疊圖斑檢查。(也可以在Arctoolbox下的Data Management tools/topology來做)

有關geodatabase的topology規(guī)則

多邊形topology

1).must not overlay:單要素類,多邊形要素相互不能重疊

2).must not have gaps:單要素類,連續(xù)連接的多邊形區(qū)域中間不能有空白區(qū)(非數(shù)據(jù)區(qū))

3).contains point:多邊形+點,多邊形要素類的每個要素的邊界以內(nèi)必須包含點層中至少一個點

4).boundary must be covered by:多邊形+線,多邊形層的邊界與線層重疊(線層可以有非重疊的更多要素)

5).must be covered by feature class of:多邊形+多邊形,第一個多邊形層必須被第二個完全覆蓋(省與全國的關系)

6).must be covered by:多邊形+多邊形,第一個多邊形層必須把第二個完全覆蓋(全國與省的關系)

7).must not overlay with:多邊形+多邊形,兩個多邊形層的多邊形不能存在一對相互覆蓋的要素

8).must cover each other:多邊形+多邊形,兩個多邊形的要素必須完全重疊

9).area boundary must be covered by boundary of:多邊形+多邊形,第一個多邊形的各要素必須為第二個的一個或幾個多邊形完全覆蓋

10).must be properly inside polygons:點+多邊形,點層的要素必須全部在多邊形內(nèi)

11).must be covered by boundary of:點+多邊形,點必須在多邊形的邊界上

線topology

1).must not have dangle:線,不能有懸掛節(jié)點

2).must not have pseudo-node:線,不能有偽節(jié)點

3).must not overlay:線,不能有線重合(不同要素間)

4).must not self overlay:線,一個要素不能自覆蓋

5).must not intersect:線,不能有線交叉(不同要素間)

6).must not self intersect:線,不能有線自交叉

7).must not intersect or touch interrior:線,不能有相交和重疊

8).must be single part:線,一個線要素只能由一個path組成 9).must not covered with:線+線,兩層線不能重疊

10).must be covered by feature class of:線+線,兩層線完全重疊

11).endpoint must be covered by:線+點,線層中的終點必須和點層的部分(或全部)點重合

12).must be covered by boundary of:線+多邊形,線被多邊形邊界重疊

13).must be covered by endpoint of:點+線,點被線終點完全重合

14).point must be covered by line:點+線,點都在線上

Topology工具條及功能介紹:

37.給多個要素同一賦值

選中你需要同一賦值的是所有圖斑,然后點擊Atrributes,此時出現(xiàn)屬性修改對話框,點擊根目錄是對所有要素同一賦值,點擊下面的支目錄則可以分別賦值。(也可以用字段計算器實現(xiàn))38.如何根據(jù)確定的點畫出以他相應的點

例如:我在地圖上已經(jīng)指導了一個一直點,而其他的點在地圖上都是以他為中心畫出來的。學校

SE60度,140米

意思是學校在中心點南偏東60度,距離是140米,這樣的點在arcmap中怎么加呢?我的方法有二分別如下。

1).確定已有一個點圖層,其中有學校,然后:

對該圖層開始編輯

選擇工具欄editor---direction-distance tool

以中心點為中心,先畫角度線(arcmap左下角會有角度提示),再畫距離/半徑(注:畫的過程中點擊A鍵可以輸入角度值,點擊D鍵可以輸入距離值)

確定,即可

如果找不到direction-distance tool 的同志請看下面

Direction-distance tool is here

第二種方法就是直接編寫代碼實現(xiàn)

下面是一段示例的VBA代碼(本段代碼作者:

Option Explicit

Dim dPoint(2, 1)As Double Sub aaa()

Call bbb

Dim aa As IMxDocument

Set aa = ThisDocument

Dim pFLyr As IFeatureLayer

GIS空間站 knight_sl)

Set pFLyr = aa.FocusMap.Layer(0)

Dim pFCsr As IFeatureCursor

Dim pFt As IFeature

Set pFCsr = pFLyr.FeatureClass.Update(Nothing, False)

Set pFt = pFCsr.NextFeature

Dim pPoint As IPoint

Set pPoint = pFt.ShapeCopy

Dim pNewPoint As IPoint

Dim X0 As Double, Y0 As Double

Dim X As Double, Y As Double

Dim dAngle As Double

Dim i As Long

For i = 0 To UBound(dPoint, 1)

Set pFt = pFLyr.FeatureClass.CreateFeature

Set pNewPoint = New Point

dAngle = dPoint(i, 0)* 3.14***3 / 180

pNewPoint.X = dPoint(i, 1)* Cos(dAngle)+ pPoint.X

pNewPoint.Y = dPoint(i, 1)* Sin(dAngle)+ pPoint.Y

Set pFt.Shape = pNewPoint

pFt.Store

Next

Set pFLyr = Nothing

Set pFCsr = Nothing

Set pFt = Nothing

Set pPoint = Nothing

Set pNewPoint = Nothing End Sub Sub bbb()

'定義新加三個點的角度和距離

dPoint(0, 0)= 10

dPoint(0, 1)= 150

dPoint(1, 0)= 30

dPoint(1, 1)= 170

dPoint(2, 0)= 120

dPoint(2, 1)= 200

End Sub

這中方法做起來需要一點編程經(jīng)驗,但是比上面那中一個一個的畫的方法要先進多了,可以把所有的點錄入同時畫出來。

如果你不會VBA編程,請看下面:

這是ArcGIS VBA的程序,運行的方法:

1),運行ArcMap,加載所需圖層; 2),Tools菜單/Macros(宏)/Visual Basic Editor(VB編輯器),這樣打開VB編輯器

3),雙擊打開VB編輯器左上工程資源管理器中的Project/ArcMap對象/ThisDocument,把上面的代碼粘進去。注意看首行

Option Explicit如果有兩行,就刪除一行。

4),點擊VB編輯器工具欄的運行按鈕運行(或菜單 運行/運行子過程),就可以了,再激活ArcMap可以看到發(fā)生了什么!

或者還有一種創(chuàng)建宏的方法(不過建議對ArcGIS VBA不大熟的同志不要用這種方法):

1),運行ArcMap,加載所需圖層;

2),Tools菜單/Macros(宏)/Macros,這樣打開宏編輯器

3),在宏名稱中輸入aaa,確定后,會打開VB編輯器,將看到有一個aaa的過程,沒有實體。你把上面的aaa過程中的代碼粘進去,然后在前面加上 Option Explicit(這個別重復了哈)

Dim dPoint(2, 1)As Double 就可以。

4),點擊VB編輯器工具欄的運行按鈕運行(或菜單 運行/運行子過程),就可以了,再激活ArcMap可以看到發(fā)生了什么!

39.這里說道了工具的使用,那么就簡單的再介紹下Sketch中的幾個工具吧

Sketch construction tools的使用:

Sketch tool:主要是用來創(chuàng)造線和面特征的節(jié)點,在你完成了草圖之后,ArcMAP就會增加最后的線段,形成矢量圖。

Arc tool:這個主要是幫你創(chuàng)造一個弧段的,選中這個工具后,先在弧段起點點一下,然后在弧段高度方向大致位置點一下(這個點是不可見的,只是給你確定弧段的高度),最后在弧段的終點點一下,就形成一條弧段了。Direction-distance tool:這個主要是從已知某一個方向和某一個距離來確定一個點。首先點一個已知方向的點,這是會有一條線出來,你確定好方向后,再點已知距離的點,這是出來一個圓,確定距離后,直線和圓有交點,這就是你要的點,再上面點一下就ok!

Distance-distance tool:這個和上面的一樣的道理,只是它都用距離來確定一個點,也就是兩個圓確定你要的點。

Endpoint arc tool:這也是創(chuàng)造弧段用的,與Arc tool 工具不同的是,它是先在弧段的起點點一下,然后在弧段的終點點一下,再點一個點確定弧段的半徑。個人認為這個工具要比Arc tool工具更精確些。

Intersection tool:就是利用兩條直線確定一個點。很簡單一用就會!

Midpoint tool:確定中點的工具,比如馬路的中點,你可以先點一邊,再點馬路另一邊,這時馬路的中點自動出現(xiàn)了。(畫道路中線太可以試試,不過得是直線道路咯,^_^)

Tangent tool:相切弧段工具,它能夠在一條線段上畫出一條切線,只有你用其他工具畫了線段出來時你才可以用這個工具。

Trace tool: 主要是用來在跟蹤已存在的特征,比如一棟房子,你要沿房子外圍畫一條線(比如圍墻),那么你使用這個工具就非常方便,首先開始時你必須按O鍵,設置下跟蹤的間距,如100,其中還有三個角點的方式:mitered是直角 bevelled 是鈍角rounded是圓角。(感覺那效果有點像CAD的偏移咯)

40.如何標注多個字段的屬性及分子式標注

Propertis/label field /expression

實例:“”& [單位名稱] &“” & VbCrLf & “ ” & [PARCEL_NO]

輸出分數(shù)線 VbCrLf 換行

效果圖:

引用GIS空間站 兔八哥文章詳解

以前用ArcGIS Label一般也就在圖層的Properties里面定義一下Label字體大小和粗細。這兩天遇到一個問題,需要在Label中顯示多個字段的內(nèi)容,比如BlockName和CompanyName。其實這個本來不是很難的問題,因為Label中支持VBScript,使用[BlockName] & VbNewLine & [CompanyName]。就可以實現(xiàn)標注中第一行顯示BlockName,第二行顯示CompanyName.現(xiàn)在問題出來了,出圖時候希望突出BlockName效果,希望加粗顯示,而CompanyName使用一般字體。考慮了很長時間終于從ArcGIS幫助中找到了相關的內(nèi)容,原來Label的VBScript里面支持類似于Html的VBScript標簽,比如加粗就是用,上面問題就可以使用下面語句解決:

” & [BlockName] & “” & VbNewLine & [CompanyName]

除了加粗,ArcGIS中還支持下面的文本格式標簽: Font:

” & [LABELFIELD] & “” Color:

” & [LABELFIELD] & “

” & [LABELFIELD] & “” Bold:

” & [LABELFIELD] & “” Italic:

” & [LABELFIELD] & “

Underline:

” & [LABELFIELD] & “” All caps:

” & [LABELFIELD] & “

Small caps:

” & [LABELFIELD] & “

Superscript

” & [LABELFIELD] & “

Subscript:

” & [LABELFIELD] & “

Character spacing(%):

” & [LABELFIELD] & “

Word spacing(%):

” & [LABELFIELD] & “

Leading(pts):

” & [LABELFIELD] & “

需要注意的是,使用這些標簽后,生成的Label語句在Verify按鈕中是不生效的,只對最終的顯示結果生效。其實問題還沒有最終解決,使用VbNewLine生成的顯示結果,上下兩行缺省時居中對齊,現(xiàn)在希望它們左對齊顯示,還沒找到辦法。還有一個問題,就是ArcGIS中對點的Label可以選擇Label的位置,而對面沒有,缺省是放置在中間,現(xiàn)在希望放置在左上角,還沒有找到該怎么辦。

下面是一個VBS的代碼可以試試。

Function FindLabel([OBJECTID], [SHAPE_Area])

Dim nFMLength

Dim nFZLength

nFMLength = Len([SHAPE_Area])

nFZLength = Len([OBJECTID])

Dim strLeftSpace

Dim strRightSpace strLeftSpace

= ”“

strRightSpace= ”“

If nFMLength > nFZLength Then

For i=0 To

(nFMLength-nFZLength)/2

strLeftSpace =strLeftSpace +chr(32)

strRightSpace =strRightSpace + chr(32)

Next

End If

FindLabel =

&strLeftSpace

& [OBJECTID]&strRightSpace& [SHAPE_Area]

End Function

”"&chr(13)&chr(10)& 41.用點構面

ArcToolBox->Samples->Data Management->Features->Create Features From Text File

點組成面,最重要的是點序的排列,因此對數(shù)據(jù)的組織有一定的要求。

42.幾個常用的VBA代碼

在ARCGIS屬性表中增加需要的字段,并自動賦值

使用方法

1打開屬性表,選擇計算的字段,右點選擇Calculate Values;2.選擇“是”,進入Field Calculator;

2選擇Advance選項; 在Pre-Logic VBA Script Code編輯框中輸入VBA代碼;

4在下面編輯框中輸入賦值部分.1--點坐標X

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPoint As IPoint

Set pPoint = pGeo

賦值部分: pPoint.X

2--點坐標Y

VBA部分: 同上 賦值部分: pPoint.Y

坐標值為文件存儲的固有值,和是否使用On the Fly坐標表示無關。返回當前顯示的坐標值參看8,9

3--多邊形周長

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

賦值部分:

pPolygon.Length

4--多邊形面積

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

賦值部分:

pArea.Area

5--多邊形重心X

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

Dim pPoint As IPoint

Set pPoint = pArea.Centroid

賦值部分: pPoint.X

6--多邊形重心Y

VBA部分: 同上

賦值部分: pPoint.Y

7--Polyline長度

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolyline As IPolyline

Set pPolyline = pGeo

Dim pCurve As IPolycurve

Set pCurve = pPolyline

賦值部分:

pCurve.Length

8--表示點坐標X

VBA部分:

Dim pDoc As IMxDocument

Set pDoc = ThisDocument

Dim pSpRef As ISpatialReference

Set pSpRef = pDoc.FocusMap.SpatialReference

Dim pClone As IClone

Set pClone = [Shape]

Dim pGeo As IGeometry

Set pGeo = pClone.Clone

Dim pPoint as IPoint

Set pPoint = pGeo

pGeo.Project pSpRef

賦值部分: pPoint.X

9--表示點坐標Y

VBA部分: 同上

賦值部分: pPoint.Y

坐標值為On the Fly顯示的坐標,不是文件存儲的固有坐標

10--連續(xù)編號

VBA部分:

Static lCount as long

lCount=lCount+1

賦值部分:

lCount(從1開始)

lCount-1(從0開始)

計算面的中點

第三篇:Arcgis使用總結

一、feature生成Tin

在3DAnalyst中-----Creat/modify TIN------Create TIN From Features----添加layer---Height source 高程字段

二、3D圖

生成3D的其中一個條件是你的資料中有一個高度的屬性打開ArcGIS中的ArcScene, 導入數(shù)據(jù), 右選Screen Layers, 在當中的Properties-> Base Height中, 設定你的數(shù)據(jù)中的高度字段為數(shù)據(jù)高度如下

三、散點關系圖

Tools-----graphs-----creatscatterplot matrix wizard

四、arcgis導出點XY坐標

ArcToolBox->Data Management Tools->Features->Add XY Coordinates工具就能自動在屬性表中添加點的x,y坐標,然后將屬性表導出就可以了

五、由點坐標生成點

1,先把點坐標信息(一般是經(jīng)緯度)標準化,就是原來的度分秒表示的都要轉(zhuǎn)換成度表示的;

2,將數(shù)據(jù)導入到Excel里面,總共有兩列X,Y(列名可以隨便取,但必須有列名),下面對應x,y坐標數(shù)據(jù)即可;

3,將文件保存成.csv文件。

當然我們也可以用記事本自己編寫如下格式的文件:

x,y

86.578,46.689

87.433,45.654

保存成txt就可以了。

到這里數(shù)據(jù)的準備工作完成,下面開始導入:

1,ArcMAP下面,菜單tools-Add XY Data…,如下圖:

坐標系統(tǒng)處,點edit,import,導入當前打開的坐標系統(tǒng)即可,當然也可以通過Select選擇坐標系統(tǒng)!如果不添加的話,默認的是WGS84.2,點ok,這時會有一個提示,點確定即可

3,這時會形成一個新圖層,所有的點都添加進來了,但現(xiàn)在添加進來的點由于沒有objectID或者FID,現(xiàn)在圖層不具備.shp圖層的大部分功能,如點的選擇,編輯,關聯(lián),屬性等操作。還需進一步操作

4,在剛才生成的圖層上點右鍵,選data-expot data…,導出成.shp文件,這時再把導出的文件添加進來即可。至此,已完成任務。

五、求多邊形幾何中心坐標

這個需要自己計算,首先在屬性表里面加兩列X,Y利用Geometery Calculator計算Xcenter,YCenter可以獲得中心點的XY坐標,然后將屬性表.dbf文件單獨復制出來,利用ArcMAP的Display XY功能進行顯示并且將顯示圖層輸出保存為SHP文件即可,具體操作可以百度之,我這邊只提供一個大概的思路

第四篇:Arcgis Engine開發(fā)總結集錦

1.目錄

1.目錄...................................................................................................................................................................................................................1 2.用ArcEngine的工具條添加圖層要素...........................................................................................................................................................2 3.ArcEngine中對Feature的編輯......................................................................................................................................................................5 4.Feature的概念..................................................................................................................................................................................................7 5.如何實現(xiàn)經(jīng)度緯度到平面坐標的相互轉(zhuǎn)換?(轉(zhuǎn)載).................................................................................................................................7 6.ArcEngine中使用上下左右鍵移動地圖功能的實現(xiàn)....................................................................................................................................9 7.緩沖區(qū)的創(chuàng)建.................................................................................................................................................................................................11 8.C#制作鷹眼全過程(引自ESRI中國社區(qū))...................................................................................................................................................13 9.ArcEngine中拓撲的使用-......................................................................................................................................................................86 26.基于AO/AE獲取要素信息.......................................................................................................................................................................87 27.ArcEngine中拓撲的使用-..........................................................................................................................................100 IfeatureSelection:SelectFeatures方法介紹..............................................................................................................................................105 常用數(shù)據(jù)入sde庫的代碼........................................................................................................................................................................107 ArcEngine開發(fā)感想.................................................................................................................................................................................112 Geometry 對象淺析.................................................................................................................................................................................114 AE開發(fā)中的一些基本方法(1)數(shù)據(jù)連接................................................................................................................................................125 2.用ArcEngine的工具條添加圖層要素

發(fā)現(xiàn)AE比起其它的組件GIS來要好用的多 但也有一些bt的地方

比如說AE沒有提供圖層編輯的工具條

但最近因為程序里要添加圖元 必須得開發(fā)圖層編輯的功能

于是去找了找資料

發(fā)現(xiàn)自帶的幫助里有一個MapEditing的示例 但是從AO的示例改造而來 需要從按鈕寫起 想想如果這樣搞的話 倒不如直接用AO算了

一直想省點事

在AE自帶的工具條上做點文章

其實AE中也有一組相似的編輯按鈕,是用于編輯Graphics的

自然就有了一個想法:能不能先生成一個Graphic,然后將其加載進來 代碼分享

private void Form1_Load(object sender, System.EventArgs e){ //清空圖層

this.axMapControl1.Map.ClearLayers();

//加載服務器SDE地圖信息

ESRI.ArcGIS.esriSystem.IpropertySet Proset = new ESRI.ArcGIS.esriSystem.PropertySetClass();//屬性集

ESRI.ArcGIS.Geodatabase.IWorkspaceFactory Fact;//工作空間倉庫

ESRI.ArcGIS.Geodatabase.IWorkspace Workspace;//工作空間

Proset.SetProperty(“Server”,“服務器名”);//服務器名

Proset.SetProperty(“Instance”,“端口”);//實例化端口

Proset.SetProperty(“user”,“用戶名”);//SDE用戶名

Proset.SetProperty(“password”,“密碼”);//密碼

Proset.SetProperty(“version”,“sde.DEFAULT”);//連接版本

Fact = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();//實例化為SDE工作空間倉庫 Workspace = Fact.Open(Proset,Int32.Parse(this.Handle.ToString()));//填入屬性集

ESRI.ArcGIS.Geodatabase.IFeatureWorkspace FeatureWorkspace;FeatureWorkspace = Workspace as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace;//傳遞給Feature工作空間

ESRI.ArcGIS.Geodatabase.IFeatureClass FeatureClass;FeatureClass = FeatureWorkspace.OpenFeatureClass(“SDE.BBBB”);//填充所需Feature集合

ESRI.ArcGIS.Carto.FeatureLayer FLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass();FLayer.FeatureClass = FeatureClass;//將Feature加載到圖層

axMapControl1.Map.AddLayer(FLayer);//加載圖層 axMapControl1.Update();//更新空白區(qū)域

axMapControl1.Refresh();//刷新地圖視窗 }

private void Form1_Closed(object sender, System.EventArgs e){ ESRI.ArcGIS.esriSystem.IAoInitialize aoi = new ESRI.ArcGIS.esriSystem.AoInitializeClass();aoi.Shutdown();}

private void button1_Click(object sender, System.EventArgs e){ IGraphicsContainerSelect GraphicsContainerSelect =(IGraphicsContainerSelect)axMapControl1.Map;

if(GraphicsContainerSelect.ElementSelectionCount ==0)//判斷是否選中圖斑

{ MessageBox.Show(“請選中欲導入圖斑!”);return;} IWorkspaceEdit WorkspaceEdit;IFeatureLayer FeatureLayer;IFeatureClass FeatureClass;IFeature Feature;IDataset Dataset;

FeatureLayer =(IFeatureLayer)this.axMapControl1.get_Layer(0);//選中導入圖層

FeatureClass = FeatureLayer.FeatureClass;//該圖層的feature集

Dataset =(IDataset)FeatureClass;//該圖層的數(shù)據(jù)集

WorkspaceEdit =(IWorkspaceEdit)Dataset.Workspace;//關聯(lián)到編輯空間

WorkspaceEdit.StartEditing(true);//使之可編輯 WorkspaceEdit.StartEditOperation();//開始編輯

Feature = FeatureClass.CreateFeature();//創(chuàng)建空feature Feature.Shape = GraphicsContainerSelect.SelectedElement(0).Geometry;//僅導入最新選中圖斑,即多選時只有一個可以導入

Feature.Store();WorkspaceEdit.StopEditOperation();

WorkspaceEdit.StopEditing(true);//結束編輯并保存

IGraphicsContainer GraphicsContainer =(IGraphicsContainer)GraphicsContainerSelect;

GraphicsContainer.DeleteAllElements();//刪除graphic圖層

axMapControl1.ActiveView.Refresh();//刷新當前視圖

MessageBox.Show(“ok”);} 3.ArcEngine中對Feature的編輯

對Feature的編輯分為以下幾個部分 1.新建 2.修改 3.刪除

涉及到的接口有以下幾個 IWorkspaceEdit IFeatureClass IFeatureCursor IFeature 其中IWorkspaceEdit用于啟動編輯 開始編輯操作 結束編輯操作 結束編輯 IFeatureClass 是數(shù)據(jù)的所在地

IFeatureCursor 是一個游標 提供訪問數(shù)據(jù)的接口和修改數(shù)據(jù)的接口 IFeature 是對象的代表 我們要編輯的目標 編輯的過程如下: 1.添加一個Feature //假設space是一個IWorkspaceEdit //參數(shù)表示是否需要使用Undo/Redo功能,該功能的粒度是EditOperator.spaceEdit.StartEditing(false);spaceEdit.StartEditOperator();//添加一個Feature IFeature newFea=feaClass.createFeature();//為Feature 添加屬性 設置圖形 newFea.Store();//保存屬性和圖形

spaceEdit.StopEditOperator();//結束編輯操作 //結束編輯過程

//參數(shù)表示是否保存編輯 spaceEdit.StopEditing(true);2.添加多個Feature 添加多個Feature也可以向上面一樣 使用多次就可以了

當時也可以使用IFeatureCursor來添加數(shù)據(jù) 3.修改Feature 添加Feature中的修改屬性和圖形部分就是

每次修改后一定要調(diào)用Store方法 這樣變化才可以保存下來 4.刪除

IFeature 有一個方法Delete 可以用于刪除 當時經(jīng)過測試發(fā)現(xiàn)對Shapefile 會拋出異常來。

IFeatureCuror有一個DeleteFeature方法 可以用來刪除當前的Feature,經(jīng)測試

對所有的數(shù)據(jù)源類型都可以使用。

注意事項

1.不能設置Feature的OID 2.不能設置Feature的Area 3.不能設置Feature的Lenght 4.不能設置Feature的Shape字段,需要調(diào)用單獨的方法來給Feature關聯(lián)幾何圖形。4.Feature的概念

Feature是二次開發(fā)中最常用的對象,feature是featureclass中一個記錄,從object中派生出來的,因此也具有屬性和方法,object又是從row中派生的,所以featureclass其實一張表,featured就是表中的一條記錄,feature可以保存空間數(shù)據(jù)對象,要素中的幾何型體對象定義了要素的類型,它可以保存的幾何型體對象有點、點集、多邊形、多義線。這些都是些簡單的要素對象,在有些情況下要素還可以參與拓撲、網(wǎng)絡運算。Feature相關接口

Feature有派生出很多類,如:networkfeature、rastercatalogfeature、coverageannotationfeature、annotationfeature、dimensionfeature。feature的主要接口是Ifeature,其中的Extent用來返回要素對象的包絡線,顯示要素的空間范圍;Featuretype返回要素的類型;Shape返回要素的幾何型體對象;ShapeCopy得到幾何型體對象的一個拷貝。IfeatureBuffer中的Shape得到緩沖要素的幾何型體對象

IfeatureEdit中MoveSet、RotateSet、DeleteSet分別是移動、旋轉(zhuǎn)、刪除一個或者是多個要素組成的要素集上。Split主要是用來分割幾何型體的,通過點分割線,通過多義線分割多邊形,分割后舊的被刪除,新的要素自動產(chǎn)生。因為每個要素都有對應的屬性,要素改變了,其對應的屬性也相應的要改變。Splitattributes就是用來分割要素屬性字段中的值。該方法可以在Split方法執(zhí)行后自動執(zhí)行。IfeatureDraw中的InvalidArea屬性得到一個繪畫的區(qū)域。Draw在顯示設備上繪制要素

IfeatureChanges中OriginalShape得到要素的最初幾何類型,ShapeChanged指示要素的幾何類型是否改變。IfeatureSimplify中SimplifyGeometry按照該元素的拓撲規(guī)則進行拓撲一致

5.如何實現(xiàn)經(jīng)度緯度到平面坐標的相互轉(zhuǎn)換?(轉(zhuǎn)載)

分類:WebGIS網(wǎng)絡地理信息系統(tǒng)研究

現(xiàn)在好多人在使用ArcObject的時候都可能需要作經(jīng)緯度和平面坐標的相互轉(zhuǎn)換。由于經(jīng)緯度是球面坐標,平面坐標是X-Y的笛卡爾坐標系統(tǒng),所以這是一個看起來比較難的問題。

好多人一上來就搬出地圖學、地圖投影學或者測繪學中的投影公式(如高斯投影 或 墨卡托投影),又是基準坐標又是角度的搞的人頭都大了。

實際上要想實現(xiàn)這個功能非常easy。ARC Engine中的IPoint就可以進行投影和反投影運算了。投影過程(C#):

/// flatref 投影的坐標系統(tǒng),這里的54013是世界投影,世界投影所有經(jīng)緯度都可以轉(zhuǎn)換為平面坐標,但是由于投影面積大失真也會比較大(相當于把整個地球劈成一片片的,然后拉伸最后貼到平面上,失真當然大了)。當然也可以選擇精度更高的平面如:esriSRProjCS_Beijing1954GK_23N

對應數(shù)值21483 僅僅把北京附近的地球平面拉伸鋪在平面上,由于投影面積變小,所以投影經(jīng)度提高。但是由于面積變小,所以有些經(jīng)度緯度不能轉(zhuǎn)換,比如所美國的精度緯度用北京投影就投不了。

flatref = pfactory.CreateProjectedCoordinateSystem(54013);

//沒什么說的,標準大地經(jīng)緯度,可以將X-Y逆投影為經(jīng)度和緯度

earthref = pfactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983);

/// 將經(jīng)緯度點轉(zhuǎn)換為平面坐標。

private IPoint GetProject(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = earthref;

geo.Project(flatref);

return pt;

}

/// 將平面坐標轉(zhuǎn)換為經(jīng)緯度。

private IPoint GetGeo(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = flatref;

geo.Project(earthref);

double xx = pt.X;

return pt;}實際上IPoint的投影和任何地圖都沒什么大關系,完全可以不用地圖,直接調(diào)用IPoint進行投影的轉(zhuǎn)換

6.ArcEngine中使用上下左右鍵移動地圖功能的實現(xiàn)

//閃爍目標

public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap){ IActiveView iActiveView = iMap as IActiveView;if(iActiveView!= null){ iActiveView.ScreenDisplay.StartDrawing(0,(short)esriScreenCache.esriNoScreenCache);//根據(jù)幾何類型調(diào)用不同的過程

switch(iFeature.Shape.GeometryType){ case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;default: break;} iActiveView.ScreenDisplay.FinishDrawing();} } //閃爍線

static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry){ ISimpleLineSymbol iLineSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iLineSymbol = new SimpleLineSymbol();iLineSymbol.Width = 4;iRgbColor = new RgbColor();iRgbColor.Red = 255;iLineSymbol.Color = iRgbColor;iSymbol =(ISymbol)iLineSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //閃爍面

static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleFillSymbol iFillSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iFillSymbol = new SimpleFillSymbol();iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;iFillSymbol.Outline.Width = 12;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();iFillSymbol.Color = iRgbColor;iSymbol =(ISymbol)iFillSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;iScreenDisplay.SetSymbol(iSymbol);mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //閃爍點

static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleMarkerSymbol iMarkerSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iMarkerSymbol = new SimpleMarkerSymbol();iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb();iMarkerSymbol.Color = iRgbColor;iSymbol =(ISymbol)iMarkerSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} 7.緩沖區(qū)的創(chuàng)建

藍藍的小志 發(fā)表于 2005-6-5 10:07:08

本文以面圖層為例,并且把創(chuàng)建的緩沖區(qū)就存儲在面圖層中,當然也可以把創(chuàng)建的緩沖區(qū)另存為一個新的圖層。程序運行環(huán)境(.NET+AO)

代碼如下:

Private Sub ITopologicalOperator_Buffer(ByVal pFeatLyr As ESRI.ArcGIS.Carto.IFeatureLayer, ByVal distance As Double, Optional ByVal pFeatClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = Nothing)'pFeatLyr 為面圖層 'distance緩沖距離

Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass

Dim pTopoOper As ESRI.ArcGIS.Geometry.ITopologicalOperator

Dim pBufferPoly As ESRI.ArcGIS.Geometry.IPolygon

Dim pFeatCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor

Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature

Try

pFeatureClass = pFeatLyr.FeatureClass

pFeatCursor = pFeatureClass.Search(Nothing, False)

pFeature = pFeatCursor.NextFeature

Do

If Not(pFeature Is Nothing)Then

pTopoOper = pFeature.Shape()

pBufferPoly = pTopoOper.Buffer(distance)

'pFeature = pFeatClass.CreateFeature

pFeature.Shape = pBufferPoly

pFeature.Store()

pFeature = pFeatCursor.NextFeature()

End If

Loop Until(pFeature Is Nothing)

Catch

MsgBox(Err.Description, MsgBoxStyle.OKOnly, “錯誤提示”)

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

End Try

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

End Sub 8.C#制作鷹眼全過程(引自ESRI中國社區(qū))

1.axMapControl1是主控件,axMapControl2是鷹眼控件

2.1.鷹眼地圖資源載入

3.private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)

4.{

5.//當主地圖顯示控件的地圖更換時,鷹眼中的地圖也跟隨更換

6.axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);

7.axMapControl2.Extent = axMapControl2.FullExtent;

8.}

9.2.繪制鷹眼矩形框

10.private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)

11.{

12.// 得到新范圍

13.IEnvelope pEnv =(IEnvelope)e.newEnvelope;

14.IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;

15.IActiveView pAv = pGra as IActiveView;

16.//在繪制前,清除axMapControl2中的任何圖形元素

17.pGra.DeleteAllElements();

18.IRectangleElement pRectangleEle = new RectangleElementClass();

19.IElement pEle = pRectangleEle as IElement;

20.pEle.Geometry = pEnv;

21.//設置鷹眼圖中的紅線框

22.IRgbColor pColor = new RgbColorClass();

23.pColor.Red = 255;

24.pColor.Green = 0;

25.pColor.Blue = 0;26.pColor.Transparency = 255;27.//產(chǎn)生一個線符號對象

28.ILineSymbol pOutline = new SimpleLineSymbolClass();

29.pOutline.Width = 2;

30.pOutline.Color = pColor;

31.//設置顏色屬性

32.pColor = new RgbColorClass();

33.pColor.Red = 255;

34.pColor.Green = 0;

35.pColor.Blue = 0;

36.pColor.Transparency = 0;

37.//設置填充符號的屬性

38.IFillSymbol pFillSymbol = new SimpleFillSymbolClass();

39.pFillSymbol.Color = pColor;

40.pFillSymbol.Outline = pOutline;

41.IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;

42.pFillShapeEle.Symbol = pFillSymbol;

43.pGra.AddElement((IElement)pFillShapeEle, 0);

44.pAv.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);

45.}

46.3.實現(xiàn)互動

47.private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)

48.{

49.IPoint pPt=new PointClass();

50.pPt.PutCoords(e.mapX ,e.mapY);51.//改變主控件的視圖范圍

52.axMapControl1.CenterAt(pPt);

53.} 9.ArcEngine中拓撲的使用--

拓撲(ITopology)的使用包括 1.建立拓撲 2.驗證拓撲

3.編輯過程中保證拓撲的正確 4.查詢系統(tǒng)中存在的拓撲 1.首先 來看看建立拓撲

Topology實現(xiàn)了ITopology這個接口 但是給類是不能用來創(chuàng)建對象的。

必須要通過調(diào)用 ITopologyContainer::CreateTopology這個方法來建立一個Topology FeatureDataset 實現(xiàn)了ITopologyContainer這個接口。那么 這就是說拓撲只能在一個

FeatureDataset的范圍內(nèi)建立。而不能獨立存在于Workspace中。這樣做的原因是需要保證 參與同一個拓撲的FeatureClass具有同一個投影坐標系統(tǒng)。建立拓撲后需要將ObjectClass 加入到拓撲中去。這樣這個拓撲就可以用來驗證這幾個ObjectClass 的對象之間的關系了。驗證關系就要有規(guī)則,規(guī)則是由ITopologyRule來表達的。ITopologyRule必須要被 加入到一個ITopologyRuleContainer中去。而Topology實現(xiàn)了這個接口。一個ITopologyRule用來表達兩個ObjectClass的對象之間的某個關系。具體代碼參看接口就可以了。2.驗證拓撲

ITopology有一個方法 ValidateTopology 用來驗證指定區(qū)域內(nèi)的拓撲。需要注意 沒有版本 的拓撲可以在 任何時候驗證。而有版本的拓撲必須在編輯回話中驗證。3.拓撲編輯 1.移動共用點

1.首先需要打開拓撲 建立拓撲圖(ITopologyGraph)代碼如下:

//topoLayer 是一個打開的拓撲圖層 ITopologyGraph pTG=topoLayer.Topology.Cache;pTG.Build(pA.Extent,false);2.然后 需要獲得當前節(jié)點或者邊 這個操作要使用拓撲圖的點擊測試 ITopologyElement topeEle pTG.HitTest(...ref topeEle);這個方法在點擊測試成功的時候返回true.而且會通過topeEle這個ref 參數(shù)將選中的元素(點或者邊)返回.3.還有一種獲取節(jié)點的方法

首先調(diào)用拓撲圖的Select方法 選中點擊測試的元素(pTG.Select)然后可以查詢拓撲圖的選中節(jié)點集合 就可以找到該節(jié)點(pTG.NodeSelection)4.為該元素使用一個Feedback.//其中 pNode 就是當前節(jié)點 sr 是參考坐標系 可以使用null //還有給Feedback設置Display m_pNodeFeedback =pTG.GetSplitMoveNodeFeedback(pNode,false,sr);m_pNodeFeedback.Display= activeView.ScreenDisplay;5.在鼠標移動的時候 調(diào)用Feedback的MoveTo 方法。if(m_pNodeFeedback!=null){

//activeView 是活動的試圖

//首先要把將點坐標轉(zhuǎn)換為地圖中的坐標。//然后調(diào)用MoveTo 方法

IPoint pt=activeView.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y);m_pNodeFeedback.MoveTo(pt);} 6.在鼠標釋放的時候 //獲取拓撲圖

ITopologyGraph pTG=topoLayer.Topology.Cache;//轉(zhuǎn)換坐標 IPoint pt=pA.ScreenDisplay.DisplayTransformation.ToMapPoint(X,Y);//獲得正在做拓撲編輯的元素

ITopologyNode pTN=(ITopologyNode)m_pTopoElement;//實施拓撲編輯

pTG.SplitMoveNode(pTN,pt,false);//提交拓撲編輯結果 IEnvelope pE;pTG.Post(out pE);4.查詢系統(tǒng)中的拓撲

還是ITopologyContainer 這個接口 這個接口有FeatureDataset這個唯一的實現(xiàn)。CreateTopology 建立一個新的拓撲

DefaultClusterTolerance The default cluster tolerance as per the topology engine.MaximumClusterTolerance The maximal cluster tolerance as per the topology engine.MinimumClusterTolerance The minimal cluster tolerance as per the topology engine.Topology 通過索引打開拓撲.TopologyByID 通過ID打開拓撲.TopologyByName 通過名字打開拓撲

TopologyCount 拓撲的數(shù)目

10.為什么使用接口編程{轉(zhuǎn)載}

進行接口的介紹,必須介紹一下程序語言發(fā)展的歷史才行,魯迅先生說過“治學先治史”,明白了程序語言發(fā)展的前世今生,才能知道為什么這么多語言為什么會這樣,為什么么會那樣?

計算機出現(xiàn)以后,科學家相繼開發(fā)了多種語言,從smalltalk,Pascal,Basic,C語言,C++,java,.net等等,這些語言的發(fā)展步伐,可以看作是從面向過程向面向?qū)ο蟀l(fā)展的一段歷史。很多面向?qū)ο蟮臅诮榻B自己的歷史的時候,都會給讀者介紹這一段歷史,并鼓吹OO編程是多么多么的優(yōu)異。問題是,很多剛開始學程序的人根本不知道為什么要有這個轉(zhuǎn)變,他們也很難理解OO語言中的虛函數(shù),接口等概念到底為了什么而提出來。

我們在了解這一段歷史以前,首先給大家介紹一個概念??“粒度”,什么是粒度?作者認為所謂粒度其實就是一個程序中使用代碼單元的組合尺度,我們可以舉一個例子,沙礫??磚塊??房屋模板,我們設想去修建一座房子,其實有很多中修筑方法,如果你不閑麻煩,可以使用沙礫一點點地建筑,或者將沙礫燒制為磚塊,用磚塊來砌,甚至直接從工廠購買房屋的門,窗,墻組件來堆砌。這三種不同的方法代表了三種不同的組合尺度。沙礫是最小的單位,使用它搭建小的房子說不定還可以,但是毫無疑問,我們必須使用很多很多“沙礫”,不便于管理;磚塊比沙礫聚合了一層,可以用來修建較大的房子了;房屋模板是最高的尺寸,使用它可以快速地搭建大規(guī)模的房屋。這三種尺度的區(qū)別和聯(lián)系,與我們編寫程序概念是有很大的相似之處的。

在早期學習Pascal,老師告訴我們這種面向過程語言的最基本的單元是過程和函數(shù),它們是程序中的最小的組件。過程和函數(shù)可以實現(xiàn)最基本的代碼重用,當我們把某些固定功能的代碼使用過程和函數(shù)編寫后,我們可以在程序中調(diào)用它們而不必在任何需要的地方都寫上這樣一段代碼,這樣的好處是顯而易見的。在一些小型的程序里面,使用過程和函數(shù)是合適的,但是在大中型程序中,它們的弊端就顯示出來,過程和函數(shù)的粒度太低了,如果我們一個系統(tǒng),有10000個函數(shù)和過程,我們的程序員將不得不花費大量的時間去尋找和維護它們,10000個沒有任何關系的函數(shù)和過程的管理難度是顯而易見的,就好像10000個人的企業(yè)一樣,如果沒有部門和職務,這還不亂了套?!

面向?qū)ο笳Z言的出現(xiàn),就是為了解決這個問題,別聽OO語言吹的天花亂墜,其實它出現(xiàn)就為一個理由??提高編程的粒度。面向?qū)ο笳Z言的基本單位是類 CLASS,類封裝了很多數(shù)據(jù)成員和成員函數(shù),過程,將最小組件的提高了一個等級,我們需要直接操作的不是過程和函數(shù)了,而是一個個更高層次上的類。我們把10000人分了很多部門,不同的部門負責不同的事宜,這樣公司終于可以走上正軌了。

做成了類CLASS是否就萬事大吉了呢?不一定,新的問題隨之而來,也許我們有一個部門的人很多,可以做很多事情,如何在部門內(nèi)部實現(xiàn)更好的管理呢?好比我們有一個類,它提供了很多種方法和屬性,這些方法和屬性其實可以分為一堆堆,為不同的功能服務,但是我們的類并沒有做這個管理。在AO種,map對象擁有很多功能,比如管理圖層,管理元素,管理選擇集,進行地圖顯示,每種不同的功能都有好多方法和屬性,現(xiàn)在這些屬性和方法是雜亂無章,沒有任何區(qū)別堆積在一個類里面的,當我們的程序員需要尋找一個方法的時候,不得不一個個去尋找,很不方便。

這個時候,接口interface出現(xiàn)了,C++的發(fā)明者第一次提出純虛函數(shù)(其實就是接口)概念的時候,遭到了很多抵制,很多人都不明白接口的意義何在,我們用虛函數(shù)好好的,何必又出來個啥東西都沒有的空架子?說它是類吧,又不能實現(xiàn)產(chǎn)生一個對象;說它是對象吧,又沒有方法體來使用。接口出來干了一件好事,就是將類內(nèi)部進行分類。對于map對象,我們可以做好幾個接口,這些接口中定義不同功能的方法,函數(shù)和屬性,map類實現(xiàn)這些接口,這樣我們可以使用接口定義,實現(xiàn)對象。因此,所謂接口就是一系列相關方法與屬性集合的定義。

Dim pGraphicsContainer as iGraphicsContainer pGraphicsContainer=application.document.ActiveView.focusMap pGraphicsContainer可以使用的屬性和方法就只能是它定義的那部分了,而不能使用管理元素等的接口定義的方法和屬性,那我們?nèi)绾问褂闷渌墓δ苣兀窟@就是所謂的QI(Query Interface)功能。從一個接口查詢另一個接口。

Dim pGeoFeatureLayer as iGeofeatureLayer pGeoFeatureLayer= pGraphicsContainer QI

好了,我們羅嗦了這么多,已經(jīng)走進了COM的概念了,在正式介紹COM以前我們得最后羅嗦一點:計算機語言的發(fā)展歷史,其實就是一部不斷提高組件粒度的歷史,不斷提高代碼重用的歷史。以前我們使用過程和函數(shù),后來我們使用類,現(xiàn)在我們使用接口,都是為了一個目的,讓我們操作的組件在具體和抽象之間尋找一個平衡點。太具體了,如過程和函數(shù),就沒有了框架;太抽象,如類,就無法分別。

一個代碼示例:

public interface IForm { void Show();void ShowDialog();}

public class A:IForm { public void Show(){ } public void ShowDialog(){ } }

public class B:IForm { public void Show(){ } public void ShowDialog(){ } }

public class FormFactory { public static IForm CreateInstance(string parm){

if(parm == “A”){ return new A();else if(parm == “B”)return new B();} return null;} } 這是邏輯的抽象 這是方法的具體 這就是編寫程序的哲學.11.ArcEngine中閃爍目標

//閃爍目標

public static void FlashFeature(AxMapControl mapControl,IFeature iFeature, IMap iMap){ IActiveView iActiveView = iMap as IActiveView;if(iActiveView!= null){ iActiveView.ScreenDisplay.StartDrawing(0,(short)esriScreenCache.esriNoScreenCache);//根據(jù)幾何類型調(diào)用不同的過程

switch(iFeature.Shape.GeometryType){ case esriGeometryType.esriGeometryPolyline: FlashLine(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPolygon: FlashPolygon(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;case esriGeometryType.esriGeometryPoint: FlashPoint(mapControl, iActiveView.ScreenDisplay, iFeature.Shape);break;default: break;} iActiveView.ScreenDisplay.FinishDrawing();} } //閃爍線

static void FlashLine(AxMapControl mapControl,IScreenDisplay iScreenDisplay,IGeometry iGeometry){ ISimpleLineSymbol iLineSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iLineSymbol = new SimpleLineSymbol();iLineSymbol.Width = 4;iRgbColor = new RgbColor();iRgbColor.Red = 255;iLineSymbol.Color = iRgbColor;iSymbol =(ISymbol)iLineSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //閃爍面

static void FlashPolygon(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleFillSymbol iFillSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iFillSymbol = new SimpleFillSymbol();iFillSymbol.Style = esriSimpleFillStyle.esriSFSSolid;iFillSymbol.Outline.Width = 12;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(100, 180, 180).ToArgb();iFillSymbol.Color = iRgbColor;iSymbol =(ISymbol)iFillSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;iScreenDisplay.SetSymbol(iSymbol);mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} //閃爍點

static void FlashPoint(AxMapControl mapControl, IScreenDisplay iScreenDisplay, IGeometry iGeometry){ ISimpleMarkerSymbol iMarkerSymbol;ISymbol iSymbol;IRgbColor iRgbColor;iMarkerSymbol = new SimpleMarkerSymbol();iMarkerSymbol.Style = esriSimpleMarkerStyle.esriSMSCircle;iRgbColor = new RgbColor();iRgbColor.RGB = System.Drawing.Color.FromArgb(0, 0, 0).ToArgb();iMarkerSymbol.Color = iRgbColor;iSymbol =(ISymbol)iMarkerSymbol;iSymbol.ROP2 = esriRasterOpCode.esriROPNotXOrPen;mapControl.FlashShape(iGeometry, 3, 200, iSymbol);} 12.創(chuàng)建多個ArcSDE實例

編號: 000037 相關產(chǎn)品及版本: ArcSDE 3.x,8.x,9.0平臺: N/A 提交時間: 2004-08-23

修改時間: 2004-08-31 提交人: 吳樂茂 內(nèi)容摘要

有時候,我們需要有多于一個的ArcSDE實例同時運行。只要存在多個數(shù)據(jù)庫實例,就可以實現(xiàn)這個目的。ArcSDE與RDBMS之間必須是一個一一對應的關系。ArcSDE會鎖定版本表,以保證每個數(shù)據(jù)庫實例只對應一個ArcSDE實例。

過程描述

對于Windows:

1.拷貝 %SDEHOME% 到一個新的位置。

2.用適當?shù)腞DBMS連接變量(如RACLE_SID)更新新的dbinit.sde 文件。3.用新的實例名、端口號和網(wǎng)絡協(xié)議更新 %SDEHOME%etcservices.sde文件。

4.添加服務名、端口號和網(wǎng)絡協(xié)議到 WINNTsystem32driversetcservices 文件中。須確認所用的端口號沒有被用過。5.刪除新的giomgr.log文件中的內(nèi)容。

6.如果需要,更新新的giomgr.defs文件,以指定新實例的操作參數(shù)。

7.如果需要,更新新的dbtune.sde 文件,以指定參數(shù)給在新實例的數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)時使用。

8.確認SDEHOME 變量指向正確的新ArcSDE實例位置,并運行給對應數(shù)據(jù)庫使用的sdesetup 命令來創(chuàng)建新數(shù)據(jù)的存儲表。9.使用 “sdeservice-o create” 命令創(chuàng)建新的ArcSDE服務。

對于UNIX:

1.給新實例創(chuàng)建一個新的工作目錄。

2.拷貝 $SDEHOME 到新創(chuàng)建的工作目錄。

3.用適當?shù)腞DBMS 連接變量(如ORACLE_SID)更新新的dbinit.sde 文件。4.用新的實例名、端口號和網(wǎng)絡協(xié)議更新 $SDEHOME/etc/services.sde 文件。

5.添加服務名、端口號和網(wǎng)絡協(xié)議到 /etc/services 文件。須確認所用的端口號沒有被用過。6.刪除新的giomgr.log文件中的內(nèi)容。

7.如果需要,更新新的giomgr.defs文件,以指定新實例的操作參數(shù)。

8.如果需要,更新新的dbtune.sde 文件,以指定參數(shù)給在新實例的數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)時使用。

9.確認SDEHOME 變量指向正確的新ArcSDE實例位置,并運行給對應數(shù)據(jù)庫使用的sdesetup 命令來創(chuàng)建新數(shù)據(jù)的存儲表。

常用ArcSDE命令 啟動cmd 1.創(chuàng)建和刪除ArcSDE服務操作命令(sdeservice)創(chuàng)建ArcSDE for oracle9i服務 sdeservice-o create-d oracle9i,sid-p sde-i esri_sde 刪除ArcSDE for oracle9i服務 sdeservice-o delete-i esri_sde-d oracle9i,sid 注:-d 后面填寫數(shù)據(jù)庫類型及其SID sdeservice命令幫助 創(chuàng)建、刪除SDE服務

2.ArcSDE 服務操作命令(sdemon)

檢測服務狀態(tài)命令: Sdemon-o status-I esri_sde 啟動服務命令: Sdemon-o start-I esri_sde-p sde 停止服務命令: Sdemon-o shutdown-I esri_sde-p sde Sdemon命令幫助

更多操作命令,請查看路徑“ArcSDEora9iexebin”下的“*.exe”文件

13.空間查詢與空間分析功能

GIS的面向用戶的應用功能不僅僅表現(xiàn)在它能提供一些靜態(tài)的查詢、檢索數(shù)據(jù),更有意義的在于用戶可以根據(jù)需要建立一個應用分析的模式,通過動態(tài)的分析,從而為評價、管理和決策服務。這種分析功能可以在系統(tǒng)操作運算功能的支持下或建立專門的分析軟件來實現(xiàn),如空間信息量測與分析、統(tǒng)計分析、地形分析、網(wǎng)絡分析、疊置分析、緩沖分析、決策支持等。系統(tǒng)本身是否具有建立各種應用模型的功能是判別它好壞的重要標志之一,因為這種功能在很大程度上決定了該系統(tǒng)在實際應用中的靈活性和經(jīng)濟效益。

空間查詢和空間分析是從GIS目標之間的空間關系中獲取派生的信息和新的知識,用以回答有關空間關系的查詢和應用分析。

拓撲空間查詢

在此操作中,用戶將地圖當作查詢工具,而不僅僅是數(shù)據(jù)載體。空間目標之間的拓撲關系可以有兩類:一種是幾何元素的結點、弧段和面塊之間的關聯(lián)關系,用以描述和表達幾何元素間的拓撲關系;另一種是GIS中地物之間的空間拓撲關系,可以通過關聯(lián)關系和位置關系隱含表達,用戶需通過特殊的方法查詢。

這些空間關系主要有以下幾項:面與面的關系,如檢索與某個面狀地物相鄰的所有多邊形及屬性;線與線的關系,如檢索與某一主干河相關聯(lián)的所有支流;點與點的關系,如檢索到某點一定距離內(nèi)的所有點狀地物;線與面的關系,如檢索某公路所經(jīng)過的所有縣市或某縣市內(nèi)的所有公路;點與線的關系,如某河流上的所有橋梁;點與面的關系,如檢索某市所有銀行分布點。

緩沖區(qū)分析

緩沖區(qū)用以確定圍繞某地要素繪出的定寬地區(qū),以滿足一定的分析條件。點的緩沖區(qū)是個圓餅,線的緩沖區(qū)是個條帶狀,多邊形的緩沖區(qū)則是個更大的相似多邊形。緩沖區(qū)分析是GIS中基本的空間分析功能之一,尤其對于建立影響地帶是必不可少的。如道路規(guī)劃中建立緩沖區(qū)以確定道路兩邊若干距離內(nèi)的土地利用性質(zhì)。

疊加分析

疊加分析提供根據(jù)兩幅或兩幅以上圖層在空間上比較地圖要素和屬性的能力,通常有合成疊加和統(tǒng)計疊加之分,前者是根據(jù)兩組多邊形邊界的交點建立具有多重屬性的多邊形,后者則進行多邊形范圍的屬性特征統(tǒng)計分析(如圖1-3所示)。合成疊加得到一張新的疊加圖,產(chǎn)生了許多新多邊形,每個多邊形都具有兩種以上的屬性。統(tǒng)計疊加的目的是統(tǒng)計一種要素在另一種要素中的分布特征。

距離分析及相鄰相接分析

距離分析提供了在地圖上距離的功能,相鄰分析確定哪些地圖要素與其它要素相接觸或相鄰,而相接分析則結合距離和相鄰分析兩者的針對性,提供確定地圖要素間鄰近或鄰接的功能。相鄰和相接分析廣泛應用于環(huán)境規(guī)劃和影響評價的公共部門。大多數(shù)GIS軟件目前不能直接進行相鄰相接分析,而是通過先建立一定要求的緩沖區(qū),再與其它圖形要素進行疊置分析的間接方法解決。地形分析功能

通過數(shù)字地形模型DTM,以離散分布的平面點來模擬連續(xù)分布的地形,再從中內(nèi)插提取各種地形分析數(shù)據(jù),地形分析包括以下內(nèi)容: 等高線分析

等高線圖是人們傳統(tǒng)上觀測地形的主要手段,可以從等高線上精確地獲得地形的起伏程度,區(qū)域內(nèi)各部分的高程等。透視圖分析

等高線雖然精確,但不夠直觀,用戶往往需要從直觀上觀察地形的概貌,所以GIS通常具有繪制透視圖的功能,有些系統(tǒng)還能在三維空間格網(wǎng)上著色,使圖形更為逼真。坡度坡向分析

在DTM中計算坡度和坡向,派生出坡度坡向圖供地形分析(如日照分析、土地適宜性分析等)。斷面圖分析

用戶可以在斷面圖上考察該剖面地形的起伏并計算剖面面積,以便用于工程設計和工程量算。

地形表面面積和填挖方體積計算

利用DTM數(shù)據(jù),可以比較容易地求出所需要地區(qū)的地形表面面積以及施工區(qū)域內(nèi)填挖方的體積(土石方量)。

制圖功能、地理數(shù)據(jù)庫、空間查詢與空間分析能力是GIS最具有獨特吸引力所在。而系統(tǒng)是否具有良好的用戶接口和各種應用分析程序的支持也是至關重要的,但是應由GIS開發(fā)人員和用戶來共同完成的。

地理信息系統(tǒng)技術廣泛應用于農(nóng)業(yè)、林業(yè)、國土資源、地礦、軍事、交通、測繪、水利、廣播電視、通訊、電力、公安、社區(qū)管理、教育、能源等幾乎所有的行業(yè),并正在走進人們?nèi)粘5墓ぷ鳌W習和生活中。

地理信息系統(tǒng)的主要任務是對與地理空間位置或區(qū)域有關的社會經(jīng)濟、人文景觀、自然資源及環(huán)境等多種信息進行綜合管理和分析,主要任務有以下三個方面.14.AO中的空間關系

最近在做AO的一些東西,有些空間關系讓我搞不太懂,查到一個東西,還是很好的 名詞解釋:

Boundary(邊界):

只有線和面才有邊界。面的邊界是指組成面的框架線;線的邊界是指線的二個端點(即起點和終點,不包括中間部分的節(jié)點);點沒有邊界。Interior(內(nèi)部):

除去邊界后剩下的部分即是一個要素的內(nèi)部。因此線的內(nèi)部指除去端點后的部分;面的內(nèi)部是指除去框架線后的部分;點的內(nèi)部就是點本身。Exterior(外部):

除去該要素后的剩余的空間范圍即是該要素的外部。空間關系具體描述(Queryable Spatial Relationships): 示意圖:

空間關系:

1, esriSpatialRelTouches(鄰接)應用范圍:

除點與點之間的關系外,其它的要素之間都可以具有該關系。描述:

如果二個要素有相同的邊界,且它們內(nèi)部不相交的話,稱這二個要素之間的關系是鄰接的關系,圖1-

1、2-

1、3-

1、3-2,注意圖3-3中點與線是包涵的關系。

當查詢要素和被查詢要素具有該關系時,即spatialRel的值是esriSpatialRelTouches,則會返回查詢要素。2, esriSpatialRelCrosses(交叉)應用范圍:

線與面,線與線等。不能用于面與面(面與面相交部分是面,不能二個要素中的最高維數(shù)低一),面與點,點與線(二個要素的維數(shù)差2)。描述:

如果二個要素的相交部分不為空,并且相交部分形狀的維數(shù)比兩個要素中最高維數(shù)低1(即線面交叉是線,線線交叉是點)則稱這二個要素具有交叉關系,圖2-

4、4-1,圖2-1中中二條線的關系屬于鄰接關系,而不屬于交叉關系,因為它們的內(nèi)部相交部分為空。當查詢要素和被查詢要素具有該關系時,即spatialRel的值是esriSpatialReCrosses,則會返回查詢要素。3, esriSpatialRelOverlaps(重疊關系)應用范圍:

線與線,面與面之間,其它的不具有該關系。描述:

二個同維的要素之間的相交部分的圖形具有與這二個要素相同的維數(shù)的,且不與任何一個要素完全相同,則稱這二個要素重疊。圖1-

2、2-2均是重疊關系,但是2-3中的二條線不是重疊關系,因為相交的部分與黃色的線完全相同。

當查詢要素和被查詢要素具有該關系時,即spatialRel的值是esriSpatialRelOverlaps,則會返回查詢要素。4,esriSpatialRelWithin和esriSpatialRelContains(包涵)應用范圍:

所有要素類之間均具有該關系。描述:

該關系可細分為一個要素完全位于另一個要素的內(nèi)部和一個要素完全包涵另外一個要素,它們是相對的關系。如果說要素1完全位于要素2的內(nèi)部,則要素2完全包涵要素1。

當查詢的要素完全位于被查詢的要素內(nèi)部的話(即spatialRel的值是esriSpatialRelWithin),則返回被查詢的要素;同時如果查詢的要素完全被被查詢的要素包括時(即spatialRel的值是esriSpatialRelContains)則返回被查詢的要素。5,esriSpatialRelIntersects(相交)描述:

相交關系是一個廣義的關系,包括上述4種關系。因此如果spatialRel的值是esriSpatialRelIntersects關系的話,只要查詢要素和被查詢要素之間滿足上述四種空間關系的任一種空間關系,即可返回被查詢的要素。6,esriSpatialRelRelate 描述:

需要通過SpatialRelDescription屬性對二個要素的空間關系進行定制,可以對二個要素的內(nèi)部,外部,邊界之間的相交的情況進行描述,例如:字符串'****T***'代表的是二個要素共享邊界。

15.ArcGIS Engine 中的相交分析的實現(xiàn)

在ArcGIS Engine中實現(xiàn)點和面進行相交分析,應該是用IBasicGeoprocessor.Intersect方法,不知道對不對啊?

用點和面進行相交分析,主要目的是為了確定點在哪個區(qū)域內(nèi)!比如可以用一個井的點圖層和一個行政區(qū)劃的面圖層進行相交分析,得到的是一個井的點圖層,而此圖層的屬性包含了兩個圖層的屬性,從而通過對屬性表的查詢,來確定在某個區(qū)域內(nèi)井的個數(shù)等等信息。以下代碼編譯通過,但是在運行時,就報錯,說是參數(shù)錯誤,各位幫忙看看,謝謝!1

private void M_OverLayer_Click(object sender, System.EventArgs e)2

{ 3

try 4

{ 5

//分析層

ILayer pLayer=this.axMapControl1.get_Layer(0);7

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

15

21

26

31

//疊加表

pLayer=this.axMapControl1.get_Layer(1);ITable pOverlayTable=pLayer as ITable;//疊加分析表

IFeatureClassName pFeatClassName=new FeatureClassNameClass();pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;pFeatClassName.ShapeFieldName=“shape”;pFeatClassName.ShapeType=pInputFeatClass.ShapeType;//工作空間名稱

IWorkspaceName pNewWSName=new WorkspaceNameClass();pNewWSName.WorkspaceFactoryProgID = “esriDataSourcesFile.ShapefileWorkspaceFactory”;pNewWSName.PathName = @“C:temp”;//數(shù)據(jù)集名稱

IDatasetName pDatasetName=pFeatClassName as IDatasetName;pDatasetName.Name=“ss”;pDatasetName.WorkspaceName=pNewWSName;//幾何處理

IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();IFeatureClass pOutputFeatClass=pBGP.Intersect(pInputTable,false,pOverlayTable,false,0.01,pFeatClassName);

//輸出要素層設置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();37

pOutputFeatLayer.FeatureClass=pOutputFeatClass;38

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;39 40

this.axMapControl1.AddLayer((ILayer)pOutputFeatClass,0);41

axMapControl1.Update();42

} 43

catch(Exception ex)44

{ 45

MessageBox.Show(ex.Message);46

} 47

} 16.GIS基本概念集錦

1、地理信息系統(tǒng)(geographic information system,即gis)——一門集計算機科學、信息學、地理學等多門科學為一體的新興學科,它是在計算機軟件和硬件支持下,運用系統(tǒng)工程和信息科學的理論,科學管理和綜合分析具有空間內(nèi)涵的地理數(shù)據(jù),以提供對規(guī)劃、管理、決策和研究所需信息的空間信息系統(tǒng)。gis有以下子系統(tǒng):數(shù)據(jù)輸入子系統(tǒng),數(shù)據(jù)存儲和檢索子系統(tǒng),數(shù)據(jù)操作和分析子系統(tǒng),報告子系統(tǒng).信息系統(tǒng)

非空間的 空間的

管理信息系統(tǒng) 非地理學的 gis cad/cam 其他gis lis 社會經(jīng)濟,人口普查 基于非地塊,基于地塊的2、比較gis與cad、cac間的異同。

cad——計算機輔助設計,規(guī)則圖形的生成、編輯與顯示系統(tǒng),與外部描述數(shù)據(jù)無關。cac——計算機輔助制圖,適合地圖制圖的專用軟件,缺乏空間分析能力。

gis——地理信息系統(tǒng),集規(guī)則圖形與地圖制圖于一身,且有較強的空間分析能力。

3、圖層:將空間信息按其幾何特征及屬性劃分成的專題。

4、地理數(shù)據(jù)采集——實地調(diào)查、采樣;傳統(tǒng)的測量方法,如三角測量法、三邊測量法;全球定位系統(tǒng)(gps);現(xiàn)代遙感技術;生物遙測學;數(shù)字攝影技術;人口普查。

5、信息范例——傳統(tǒng)的制圖方法,稱為信息范例,即假定地圖本身是一個最終產(chǎn)品,通過使用符號、分類限制的選擇等方式交換空間信息的模式。這個范例是傳統(tǒng)的透視圖方法,由于原始而受到很多限制,地圖用戶不能輕易獲得預分類數(shù)據(jù)。也就是說,用戶只限于處理最終產(chǎn)品,而無法將數(shù)據(jù)重組為更有效的形式以適應環(huán)境或需求的變化。

6、分析范例(整體范例)——存儲保存原始數(shù)據(jù)的屬性數(shù)據(jù),可根據(jù)用戶的需求進行數(shù)據(jù)的顯示、重組和分類。整體范例是一種真正的用于制圖學和地理學的整體方法。

7、柵格——柵格結構是最簡單最直接的空間數(shù)據(jù)結構,是指將地球表面劃分為大小均勻緊密相鄰的網(wǎng)格陣列,每個網(wǎng)格作為一個象元或象素由行、列定義,并包含一個代碼表示該象素的屬性類型或量值,或僅僅包括指向其屬性記錄的指針。因此,柵格結構是以規(guī)則的陣列來表示空間地物或現(xiàn)象分布的數(shù)據(jù)組織,組織中的每個數(shù)據(jù)表示地物或現(xiàn)象的非幾何屬性特征。特點:屬性明顯,定位隱含,即數(shù)據(jù)直接記錄屬性本身,而所在的位置則根據(jù)行列號轉(zhuǎn)換為相應的坐標,即定位是根據(jù)數(shù)據(jù)在數(shù)據(jù)集中的位置得到的,在柵格結構中,點用一個柵格單元表示;線狀地物用沿線走向的一組相鄰柵格單元表示,每個柵格單元最多只有兩個相鄰單元在線上;面或區(qū)域用記有區(qū)域?qū)傩缘南噜彇鸥駟卧募媳硎荆總€柵格單元可有多于兩個的相鄰單元同屬一個區(qū)域。

8、矢量——它假定地理空間是連續(xù),通過記錄坐標的方式盡可能精確地表示點、線、多邊形等地理實體,坐標空間設為連續(xù),允許任意位置、長度和面積的精確定義。對于點實體,矢量結構中只記錄其在特定坐標系下的坐標和屬性代碼;對于線實體,用一系列坐標對的連線表示;多邊形是指邊界完全閉合的空間區(qū)域,用一系列坐標對的連線表示。

9、“拓撲”(topology)一詞來源于希臘文,它的原意是“形狀的研究”。拓撲學是幾何學的一個分支,它研究在拓撲變換下能夠保持不變的幾何屬性——拓撲屬性(拓撲屬性:一個點在一個弧段的端點,一個點在一個區(qū)域的邊界上;非拓撲屬性:兩點之間的距離,弧段的長度,區(qū)域的周長、面積)。這種結構應包括:唯一標識,多邊形標識,外包多邊形指針,鄰接多邊形指針,邊界鏈接,范圍(最大和最小x、y坐標值)。地理空間研究中三個重要的拓撲概念(1)連接性:弧段在結點處的相互聯(lián)接關系;(2)多邊形區(qū)域定義:多個弧段首尾相連構成了多邊形的內(nèi)部區(qū)域;(3)鄰接性:通過定義弧段的左右邊及其方向性來判斷弧段左右多邊形的鄰接性。

10、矢量的實體錯誤——偽節(jié)點:即需要假節(jié)點進行識別的節(jié)點,發(fā)生在線和自身相連接的地方(如島狀偽結點——顯示存在一個島狀多邊形,這個多邊形處于另一個更大的多邊形內(nèi)部),或發(fā)生在兩條線沿著平行路徑而不是交叉路徑相交的地方(節(jié)點——表示線與線間連接的特殊點)。搖擺結點:有時稱為搖擺,來源于3種可能的錯誤類型:閉合失敗的多邊形;欠頭線,即結點延伸程度不夠,未與應當連接的目標相連;過頭線,結點的線超出想與之連接的實體。碎多邊形:起因于沿共同邊界線進行的不良數(shù)字化過程,在邊界線位置,線一定是不只一次地被數(shù)字化。高度不規(guī)則的國家邊境線,例如中美洲,特別容易出現(xiàn)這樣的數(shù)字變形。標注錯誤:丟失標注和重復標注。異常多邊形:具有丟失節(jié)點的多邊形。丟失的弧。

11、空間分析方法——

1、空間信息的測量:線與多邊形的測量、距離測量、形狀測量;

2、空間信息分類:范圍分級分類、鄰域功能、漫游窗口、緩沖區(qū);

3、疊加分析:多邊形疊加、點與多邊形、線與多邊形;

4、網(wǎng)絡分析:路徑分析、地址匹配、資源匹配;

5、空間統(tǒng)計分析:插值、趨勢分析、結構分析;

6、表面分析:坡度分析、坡向分析、可見度和相互可見度分析。

12、歐拉數(shù)——最通常的空間完整性,即空洞區(qū)域內(nèi)空洞數(shù)量的度量,測量法稱為歐拉函數(shù),它只用一個單一的數(shù)描述這些函數(shù),稱為歐拉數(shù)。數(shù)量上,歐拉數(shù)=(空洞數(shù))-(碎片數(shù)-1),這里空洞數(shù)是外部多邊形自身包含的多邊形空洞數(shù)量,碎片數(shù)是碎片區(qū)域內(nèi)多邊形的數(shù)量。有時歐拉數(shù)是不確定的。

13、函數(shù)距離——描述兩點間距離的一種函數(shù)關系,如時間、摩擦、消耗等,將這些用于距離測量的方法集中起來,稱為函數(shù)距離。

14、曼哈頓距離——兩點在南北方向上的距離加上在東西方向上的距離,即d(i,j)=|xi-xj|+|yi-yj|。對于一個具有正南正北、正東正西方向規(guī)則布局的城鎮(zhèn)街道,從一點到達另一點的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離因此曼哈頓距離又稱為出租車距離,曼哈頓距離不是距離不變量,當坐標軸變動時,點間的距離就會不同。

15、鄰域功能——所謂鄰域是指具有統(tǒng)一屬性的實體區(qū)域或者焦點集中在整個地區(qū)的較小部分實體空間。鄰域功能就是在特定的實體空間中發(fā)現(xiàn)其屬性的一致性。它包括直接鄰域和擴展鄰域。

16、緩沖區(qū)分析——是指根據(jù)數(shù)據(jù)庫的點、線、面實體基礎,自動建立其周圍一定寬度范圍內(nèi)的緩沖區(qū)多邊形實體,從而實現(xiàn)空間數(shù)據(jù)在水平方向得以擴展的空間分析方法。緩沖區(qū)在某種程度上受控于目前存在的摩擦表面、地形、障礙物等,也就是說,盡管緩沖區(qū)建立在位置的基礎上,但是還有其他實質(zhì)性的成分。確定緩沖區(qū)距離的四種基本方法:隨機緩沖區(qū)、成因緩沖區(qū)、可測量緩沖區(qū)、合法授權緩沖區(qū)。

17、統(tǒng)計表面——表面是含有z值的形貌,z值又稱為高度值,它的位置被一系列x和y坐標對定義且在區(qū)域范圍內(nèi)分布。z值也常被認為是高程值,但是不必局限于這一種度量。實際上,在可定義的區(qū)域內(nèi)出現(xiàn)的任意可測量的數(shù)值(例如,序數(shù)、間隔和比率數(shù)據(jù))都可以認為組成了表面。一般使用的術語是統(tǒng)計表面,因為在考慮的范圍內(nèi)z值構成了許多要素的統(tǒng)計學的表述(robinson et al., 1995)。

18、dem——數(shù)字高程模型(digital elevation model)。地形模型不僅包含高程屬性,還包含其它的地表形態(tài)屬性,如坡度、坡向等。dem通常用地表規(guī)則網(wǎng)格單元構成的高程矩陣表示,廣義的dem還包括等高線、三角網(wǎng)等所有表達地面高程的數(shù)字表示。在地理信息系統(tǒng)中,dem是建立數(shù)字地形模型(digital terrain model)的基礎數(shù)據(jù),其它的地形要素可由dem直接或間接導出,稱為“派生數(shù)據(jù)”,如坡度、坡向。

19、空間插值——空間插值常用于將離散點的測量數(shù)據(jù)轉(zhuǎn)換為連續(xù)的數(shù)據(jù)曲面,以便與其它空間現(xiàn)象的分布模式進行比較,它包括了空間內(nèi)插和外推兩種算法。空間內(nèi)插算法:通過已知點的數(shù)據(jù)推求同一區(qū)域未知點數(shù)據(jù)。空間外推算法:通過已知區(qū)域的數(shù)據(jù),推求其它區(qū)域數(shù)據(jù)。20、泰森多邊形——通過數(shù)學方法定義、平分點間的空間并以直線相連結,在點狀物體間生成多邊形的方法。

21、線密度——用所有區(qū)域內(nèi)的線的總長度除以區(qū)域的面積。

22、連通性——連通性是衡量網(wǎng)絡復雜性的量度,常用γ指數(shù)和α指數(shù)計算它。其中,γ指數(shù)等于給定空間網(wǎng)絡體節(jié)點連線數(shù)與可能存在的所有連線數(shù)之比;α指數(shù)用于衡量環(huán)路,節(jié)點被交替路徑連接的程度稱為α指數(shù),等于當前存在的環(huán)路數(shù)與可能存在的最大環(huán)路數(shù)之比。

23、圖形疊加——將一個被選主題的圖形所表示的專題信息放在另一個被選主題的圖形所表示的專題信息之上。

24、柵格自動疊加——基于網(wǎng)格單元的多邊形疊加是一個簡單的過程,因為區(qū)域是由網(wǎng)格單元組成的不規(guī)則的塊,它共享相同的一套數(shù)值和相關的標注。毫無疑問,網(wǎng)格單元為基礎的多邊形疊加缺乏空間準確性,因為網(wǎng)格單元很大,但是類似于簡單的點與多邊形和線與多邊形疊加的相同部分,由于它的簡單性,因此可以獲得較高的靈活程度和處理速度。

25、拓撲矢量疊加——如何決定實體間功能上的關系,如定義由特殊線相連的左右多邊形,定義線段間的關系去檢查交通流量,或依據(jù)個別實體或相關屬性搜索已選擇實體。它也為疊加多個多邊形圖層建立了一種方法,從而確保連結著每個實體的屬性能夠被考慮,并且因此使多個屬性相結合的合成多邊形能夠被支持。這種拓撲結果稱作最小公共地理單元(lcgu)。

26、矢量多邊形疊加——點與多邊形和線與多邊形疊加使用的主要問題是,線并不總是出現(xiàn)在整個區(qū)域內(nèi)。解決該問題的最強有力的辦法是讓軟件測定每組線的交叉點,這就是所謂的結點。進行矢量多邊形的疊加,其任務是基本相同的,除了必須計算重疊交叉點外,還要定義與之相聯(lián)系的多邊形線的屬性。

27、布爾疊加——一種以布爾代數(shù)為基礎的疊加操作。

28、制圖建模——用以指明應用命令組合來回答有關空間現(xiàn)象問題的處理。制圖模型是針對原始數(shù)據(jù)也包括導出數(shù)據(jù)和中間地圖數(shù)據(jù)進行一系列交互有序的地圖操作來模擬空間決策的處理。

29、地理模型的類型——類似統(tǒng)計同類的描述性模型和與推理統(tǒng)計技術相關的規(guī)則性模型。

30、常見模型——

1、注重樣式與處理的問題長時間以來用于解釋類似農(nóng)業(yè)活動與運輸成本間的關系——獨立狀態(tài)模型。

2、最初為預測工業(yè)位置點的空間分布的樣式而設計的weber模型,進行改進后可使參與者尋找最佳商業(yè)和服務位置——位置-分配模型。

3、建立在吸引力與到潛在市場的距離呈反比這一基礎上的經(jīng)濟地理模型——重力模型。

4、通過空間驗證思想如今廣泛用于生態(tài)群落,通過地理空間跟蹤動植物運動——改進擴散模型。

31、專題地圖——以表現(xiàn)某單一屬性的位置或若干選定屬性之間關系為主要目的的地圖。專題圖形設計的一般程序包括合適的符號和圖形對象的選擇、生成和放置,以明確突出研究主題的重要屬性和空間關系,同時還要考慮參考系統(tǒng)。gis專題地圖輸出的規(guī)則:不但要有精美的圖形,最重要的是去讀圖、分析地圖和理解地圖。

32、元數(shù)據(jù)——關于數(shù)據(jù)的數(shù)據(jù),對數(shù)據(jù)庫內(nèi)容的全面描述,其目的是促進數(shù)據(jù)集的高效利用和充分共享。使用元數(shù)據(jù)的理由:性能上,完整性、可擴展性、特殊性、安全性;功能上,差錯功能、瀏覽功能、程序生成。

33、聚合——將單個數(shù)據(jù)元素進行分類的大量數(shù)字處理過程。

34、克立金法——依靠地球自然表面隨距離的變化概率而確定高程的一種精確內(nèi)插方法。

35、四叉樹——一種壓縮數(shù)據(jù)結構,它把地理空間定量劃分為可變大小的網(wǎng)格,每個網(wǎng)格具有相同性質(zhì)的屬性。

36、比較工具型地理信息系統(tǒng)和應用型地理信息系統(tǒng)的異同。

工具型地理信息系統(tǒng):是一種通用型gis,具有一般的功能和特點,向用戶提供一個統(tǒng)一的操作平臺。一般沒有地理空間實體,而是由用戶自己定義。具有很好的二次開發(fā)功能。如:arcinfo、genamap、mapinfo、mapgis、geostar。

應用型地理信息系統(tǒng):在較成熟的工具型gis軟件基礎上,根據(jù)用戶的需求和應用目的而設計的用于解決一類或多類實際問題的地理信息系統(tǒng),它具有地理空間實體和解決特殊地理空間分布的模型。如lis、cgis、ugis。

37、詳細描述應用型地理信息系統(tǒng)的開發(fā)過程

1、系統(tǒng)總體設計:需求和可行性分析、數(shù)據(jù)模型設計、數(shù)據(jù)庫設計、方法設計

2、系統(tǒng)軟件設計:開發(fā)語言、用戶界面、流程、交互

3、程序代碼編寫:投影、數(shù)據(jù)庫、輸入、編輯

4、系統(tǒng)的調(diào)試與運行:α調(diào)試、β調(diào)試

5、系統(tǒng)的評價與維護:功能評價、費用評價、效益評價

38、空間信息系統(tǒng):以多媒體技術為依托,以空間數(shù)據(jù)為基礎,以虛擬現(xiàn)實為手段的集空間數(shù)據(jù)的輸入、編輯、存儲、分析和顯示于一體的巨系統(tǒng),體由若干個子系統(tǒng)組成。

39、地理數(shù)據(jù)測量標準——命名(對數(shù)據(jù)命名,允許我們對把對象叫什么做出聲明,但不允許對兩個命名的對象進行直接比較)、序數(shù)(提供對空間對象進行邏輯對比的結果,但這種對比僅限于所談論問題的范圍內(nèi))、間隔(可以對待測項逐個賦值,能夠更為精確地估計對比物的不同點)、比率(用途最廣的測量數(shù)據(jù)標準,它是允許直接比較空間變量的惟一標準)。

40、根據(jù)樣本進行推理的取樣原則——未取樣位置的數(shù)據(jù)可以從已取樣位置的數(shù)據(jù)中推測出來;區(qū)域邊界內(nèi)的數(shù)據(jù)可以合并計算;一組空間單元中的數(shù)據(jù)能夠轉(zhuǎn)換成具有不同空間配置的另外一組空間單元數(shù)據(jù)。常用的方法:內(nèi)插法:當有數(shù)值邊界或知道缺失部分兩端數(shù)值;外推法:當缺失的數(shù)據(jù)一側有數(shù)值,而另一側每一數(shù)值。

17.AE開發(fā)中矢量圖層疊加求交分析

AE開發(fā)中矢量圖層疊加求交分析: AE開發(fā)中,矢量圖層疊加分析需要用到的主要類為BasicGeoprocessor,其主要接口為IBasicGeoprocessor。IBasicGeoprocessor接口提供了基本的空間數(shù)據(jù)處理的方法和屬性,其中包括疊加求交(Interset)和疊加求和(Union)。下面提供疊加求交的開發(fā)實例: C#+AE9.1疊加求交示例代碼:

private void M_OverLayer_Click(object sender, System.EventArgs e)2

{ 3

try 4

{ 5

//分析層

ILayer pLayer=this.axMapControl1.get_Layer(0);7

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

//疊加表

pLayer=this.axMapControl1.get_Layer(1);13

ITable pOverlayTable=pLayer as ITable;14 15

//疊加分析表

IFeatureClassName pFeatClassName=new FeatureClassNameClass();17

pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;18

pFeatClassName.ShapeFieldName=“shape”;19

pFeatClassName.ShapeType=pInputFeatClass.ShapeType;20 21

26

31

40

//工作空間名稱

IWorkspaceName pNewWSName=new WorkspaceNameClass();

pNewWSName.WorkspaceFactoryProgID = “esriDataSourcesFile.ShapefileWorkspaceFactory”;

pNewWSName.PathName = @“C:temp”;

//數(shù)據(jù)集名稱

IDatasetName pDatasetName=pFeatClassName as IDatasetName;

pDatasetName.Name=“ss”;

pDatasetName.WorkspaceName=pNewWSName;

//幾何處理

IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();

IFeatureClass pOutputFeatClass=pBGP.Intersect(pInputTable,false,pOverlayTable,false,0.01,pFeatClassName);

//輸出要素層設置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();

pOutputFeatLayer.FeatureClass=pOutputFeatClass;

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;

this.axMapControl1.AddLayer((ILayer)pOutputFeatClass,0);

axMapControl1.Update();} catch(Exception ex){

MessageBox.Show(ex.Message);46

} 47

} 最近在研究ae中實現(xiàn)overlay的方法,終于發(fā)現(xiàn)了2個方法。(針對shapefile)方法一:利用ITopology接口:

void COverlayDlg::Overlay(ILayerPtr inputLayer, ILayerPtr OverlayLayer,IFeatureClassPtr ipNewClass){ int mode=m_modeCombo.GetCurSel();IFeatureLayerPtr ipPutlayer(inputLayer);IFeatureClassPtr ipPutClass;ipPutlayer->get_FeatureClass(&ipPutClass);IFeatureClassPtr ipOutClass;IFeatureLayerPtr ipOverlayer(OverlayLayer);ipOverlayer->get_FeatureClass(&ipOutClass);IQueryFilterPtr ipQF(CLSID_QueryFilter);long number1,number2;ipPutClass->FeatureCount(ipQF,&number1);ipPutClass->FeatureCount(ipQF,&number2);IActiveViewPtr ipView=p_View->m_ctrlMap.GetActiveView();ITopologicalOperatorPtr ipTo;IFeaturePtr ipFeature1,ipFeature2;IGeometryPtr ipGeo1,ipGeo2,ipNew;for(long i=0;i

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

ipTo->Intersect(ipGeo2,esriGeometry2Dimension,&ipNew);

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

}ipView->Refresh();} 這種方法是一個一個feature的創(chuàng)建,存入featureclass接口中。方法二:利用IBasicGeoprocess接口 //把第一個圖層和第0個圖層疊置 IFeatureLayerPtr ipFeaLay;IFeatureClassPtr ipFeaCls;HRESULT hr;ILayerPtr ipLay;IMapPtr ipMap(m_ctrlMap.GetMap());hr=ipMap->get_Layer(0,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

ITablePtr ipInPutTable(ipLay);hr=ipMap->get_Layer(1,&ipLay);ipFeaLay=ipLay;if(ipFeaLay!=0)

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

hr=ipDatasetName->putref_WorkspaceName(ipWSName);if(FAILED(hr))return;

IBasicGeoprocessorPtr ipBGP(CLSID_BasicGeoprocessor);IFeatureClassPtr ipOutputFeaCls;hr=ipBGP->Intersect(ipInPutTable,VARIANT_FALSE,ipOverlayTable,VARIANT_FALSE,double(0),ipFeaClsName,&ipOutputFeaCls);IFeatureLayerPtr ipOutputFeaLay(CLSID_FeatureLayer);ipOutputFeaLay->putref_FeatureClass(ipOutputFeaCls);BSTR OutFeaClsAliName;hr=ipOutputFeaCls->get_AliasName(&OutFeaClsAliName);if(FAILED(hr))return;hr=ipOutputFeaLay->put_Name(OutFeaClsAliName);if(FAILED(hr))return;hr=ipMap->AddLayer(ipOutputFeaLay);if(FAILED(hr))return;IActiveViewPtr ipAV(ipMap);ipAV->Refresh();18.矢量數(shù)據(jù)分析

地圖疊加:將兩幅數(shù)字化地圖的幾何形狀和屬性結合在一起,生成輸出地圖的一種屬性數(shù)據(jù)。點與多邊形疊加:一種GIS操作,點狀地圖上的每個點被賦予點所落入的多邊形內(nèi)的屬性數(shù)據(jù)。

線與多邊形疊加:一種GIS操作,現(xiàn)狀地圖被疊加地圖上的多邊形邊界所分割,輸出地圖上每個弧段結合了來自線狀地圖和所落入多邊形的屬性。

多邊形與多邊形疊加:一種GIS操作,其輸出地圖結合了來自輸入地圖和疊加地圖的多邊形邊界,生成一套新的多邊形,每個新的多邊形攜帶了兩幅地圖的屬性。

緩沖:一種GIS操作,將落在所選地圖要素指定距離之內(nèi)的區(qū)域與之外的區(qū)域分開。相交(Intersect):一種地圖疊加方法,僅保留那些落在輸入地圖和疊加地圖共同范圍的要素。聯(lián)合(Union):保留輸入地圖和疊加地圖全部要素的一種多邊形與多邊形疊加方法。層疊置(Identity):一種地圖疊加方法,僅保留那些落在由輸入地圖定義范圍內(nèi)的要素。模糊容差:用于GIS軟件的距離容差,落在這一指定距離內(nèi)的點和線被強制捕捉到一起。

破碎多邊形:在地圖疊加中沿著兩個輸入地圖的共同邊界出現(xiàn)的極小多邊形。破碎多邊形往往來自數(shù)字化誤差。誤差傳遞:由于輸入地圖的誤差造成地圖疊加輸出中誤差的產(chǎn)生。最小制圖單元:由政府機構或組織所指定的最小面積單元。

19.GIS空間信息基本分析方法

www.tmdps.cn 2001-6-29 遠圖開發(fā)室

地理信息系統(tǒng)(GIS)具有很強的空間信息分析功能,這是區(qū)別于計算機地圖制圖系統(tǒng)的顯著特征之一。利用空間信息分析技術,通過對原始數(shù)據(jù)模型的觀察和實驗,用戶可以獲得新的經(jīng)驗和知識,并以此作為空間行為的決策依據(jù)。

空間信息分析的內(nèi)涵極為豐富。作為GIS的核心部分之一,空間信息分析在地理數(shù)據(jù)的應用中發(fā)揮著舉足輕重的作用。疊置分析(Overlay Analysis)覆蓋疊置分析是將兩層或多層地圖要素進行疊加產(chǎn)生一個新要素層的操作,其結果將原來要素分割生成新的要素,新要素綜合了原來兩層或多層要素所具有的屬性。也就是說,覆蓋疊置分析不僅生成了新的空間關系,還將輸入數(shù)據(jù)層的屬性聯(lián)系起來產(chǎn)生了新的屬性關系。覆蓋疊置分析是對新要素的屬性按一定的數(shù)學模型進行計算分析,進而產(chǎn)生用戶需要的結果或回答用戶提出的問題。1)多邊形疊置

這個過程是將兩層中的多邊形要素疊加,產(chǎn)生輸出層中的新多邊形要素,同時它們的屬性也將聯(lián)系起來,以滿足建立分析模型的需要。一般GIS軟件都提供了三種多邊形疊置:

(1)多邊形之和(UNION):輸出保留了兩個輸入的所有多邊形。

(2)多邊形之積(INTERSECT):輸出保留了兩個輸入的共同覆蓋區(qū)域。

(3)多邊形疊合(IDENTITY):以一個輸入的邊界為準,而將另一個多邊形與之相匹配,輸出內(nèi)容是第一個多邊形區(qū)域內(nèi)二個輸入層所有多邊形。

多邊形疊置是個非常有用的分析功能,例如,人口普查區(qū)和校區(qū)圖疊加,結果表示了每一學校及其對應的普查區(qū),由此就可以查到作為校區(qū)新屬性的重疊普查區(qū)的人口數(shù)。2)點與多邊形疊加

點與多邊形疊加,實質(zhì)是計算包含關系。疊加的結果是為每點產(chǎn)生一個新的屬性。例如,井位與規(guī)劃區(qū)疊加,可找到包含每個井的區(qū)域。3)線與多邊形疊加

將多邊形要素層疊加到一個弧段層上,以確定每條弧段(全部或部分)落在哪個多邊形內(nèi)。網(wǎng)絡分析(Network Analysis)對地理網(wǎng)絡(如交通網(wǎng)絡)、城市基礎設施網(wǎng)絡(如各種網(wǎng)線、電力線、電話線、供排水管線等)進行地理分析和模型化,是地理信息系統(tǒng)中網(wǎng)絡分析功能的主要目的。網(wǎng)絡分析是運籌學模型中的一個基本模型,它的根本目的是研究、籌劃一項網(wǎng)絡工程如何按排,并使其運行效果最好,如一定資源的最佳分配,從一地到另一地的運輸費用最低等。其基本思想則在于人類活動總是趨向于按一定目標選擇達到最佳效果的空間位置。這類問題在生產(chǎn)、社會、經(jīng)濟活動中不勝枚舉,因此研究此類問題具有重大意義。網(wǎng)絡中的基本組成部分和屬性如下:

(1)鏈(Links),網(wǎng)絡中流動的管線,如街道,河流,水管等,其狀態(tài)屬性包括阻力(Impedence)和需求(Demand)。(2)障礙(Barriers),禁止網(wǎng)絡中鏈上流動的點。

(3)拐角點(Turns),出現(xiàn)在網(wǎng)絡鏈中所有的分割結點上,狀態(tài)屬性有阻力,如拐彎的時間和限制(如不允許左拐)。

(4)中心(Centers),是接受或分配資源的位置,如水庫、商業(yè)中心、電站等,其狀態(tài)屬性包括資源容量,如總的資源量;阻力限額,如中心與鏈之間的最大距離或時間限制。

(5)站點(Stops),在路徑選擇中資源增減的站點,如庫房、汽車站等,其狀態(tài)屬性有要被運輸?shù)馁Y源需求,如產(chǎn)品數(shù)。

網(wǎng)絡中的狀態(tài)屬性有阻力和需求兩項,實際的狀態(tài)屬性可通過空間屬性和狀態(tài)屬性的轉(zhuǎn)換,根據(jù)實際情況賦到網(wǎng)絡屬性表中。1)路徑分析

(1)靜態(tài)求最佳路徑:由用戶確定權值關系后,即給定每條弧段的屬性,當需求最佳路徑時,讀出路徑的相關屬性,求最佳路徑。

(2)動態(tài)分段技術:給定一條路徑由多段聯(lián)系組成,要求標注出這條路上的公里點或要求定位某一公路上的某一點,標注出某條路上從某一公里數(shù)到另一公里數(shù)的路段。

(3)N條最佳路徑分析:確定起點、終點,求代價較小的條路徑,因為在實踐中往往僅求出最佳路徑并不能滿足要求,可能因為某種因素不走最佳路徑,而走近似最佳路徑。

(4)最短路徑:確定起點、終點和所要經(jīng)過的中間點、中間連線,求最短路徑。

(5)動態(tài)最佳路徑分析:實際網(wǎng)絡分析中權值是隨著權值關系式變化的,而且可能會臨時出現(xiàn)一些障礙點,所以往往需要動態(tài)地計算最佳路徑。2)地址匹配

地址匹配實質(zhì)是對地理位置的查詢,它涉及到地址的編碼(Geocode)。地址匹配與其它網(wǎng)絡分析功能結合起來,可以滿足實際工作中非常復雜的分析要求。所需輸入的數(shù)據(jù),包括地址表和含地址范圍的街道網(wǎng)絡及待查詢地址的屬性值。3)資源分配

資源分配網(wǎng)絡模型由中心點(分配中心)及其狀態(tài)屬性和網(wǎng)絡組成。分配有兩種方式,一種是由分配中心向四周輸出,另一種是由四周向中心集中。這種分配功能可以解決資源的有效流動和合理分配。其在地理網(wǎng)絡中的應用與區(qū)位論中的中心地理論類似。在資源分配模型中,研究區(qū)可以是機能區(qū),根據(jù)網(wǎng)絡流的阻力等來研究中心的吸引區(qū),為網(wǎng)絡中的每一連接尋找最近的中心,以實現(xiàn)最佳的服務。還可以用來指定可能的區(qū)域。

資源分配模型可用來計算中心地的等時區(qū),等交通距離區(qū),等費用距離區(qū)等。可用來進行城鎮(zhèn)中心,商業(yè)中心或港口等地的吸引范圍分析,以用來尋找區(qū)域中最近的商業(yè)中心,進行各種區(qū)劃和港口腹地的模擬等。緩沖區(qū)分析(Buffer Analysis)緩沖區(qū)分析是針對點、線、面實體,自動建立其周圍一定寬度范圍以內(nèi)的緩沖區(qū)多邊形。緩沖區(qū)的產(chǎn)生有三種情況:一是基于點要素的緩沖區(qū),通常以點為圓心、以一定距離為半徑的圓;二是基于線要素的緩沖區(qū),通常是以線為中心軸線,距中心軸線一定距離的平行條帶多邊形;三是基于面要素多邊形邊界的緩沖區(qū),向外或向內(nèi)擴展一定距離以生成新的多邊形。

緩沖區(qū)分析是地理信息系統(tǒng)重要的空間分析功能之一,它在交通、林業(yè)、資源管理、城市規(guī)劃中有著廣泛的應用。例如:湖泊和河流周圍的保護區(qū)的定界,汽車服務區(qū)的選擇,民宅區(qū)遠離街道網(wǎng)絡的緩沖區(qū)的建立等。空間統(tǒng)計分析(Spacial Analysis)1)常規(guī)統(tǒng)計分析

常規(guī)統(tǒng)計分析主要完成對數(shù)據(jù)集合的均值、總和、方差、頻數(shù)、峰度系數(shù)等參數(shù)的統(tǒng)計分析。2)空間自相關分析

空間自相關分析是認識空間分布特征、選擇適宜的空間尺度來完成空間分析的最常用的方法。目前,普遍使用空間自相關系數(shù)——

MoranI指數(shù),其計算公式如下:

其中:N表示空間實體數(shù)目;xi表示空間實體的屬性值;x是xi的平均值;Wij=1表示空間實體i與j相鄰,Wij=0表示空間實體i與j不相鄰I的值介于1與I之間,I=1表示空間自正相關,空間實體呈聚合分布;I=1表示空間自負相關,空間實體呈離散分布;I=0則表示空間實體是隨機分布的。Wij表示實體i與j的空間關系,它通過拓撲關系獲得。3)回歸分析

回歸分析用于分析兩組或多組變量之間的相關關系,常見回歸分析方程有:線性回歸、指數(shù)回歸、對數(shù)回歸、多元回歸等。4)趨勢分析

通過數(shù)學模型模擬地理特征的空間分布與時間過程,把地理要素時空分布的實測數(shù)據(jù)點之間的不足部分內(nèi)插或預測出來。5)專家打分模型

專家打分模型將相關的影響因素按其相對重要性排隊,給出各因素所占的權重值;對每一要素內(nèi)部進行進一步分析,按其內(nèi)部的分類進行排隊,按各類對結果的影響給分,從而得到該要素內(nèi)各類別對結果的影響量,最后系統(tǒng)進行復合,得出排序結果,以表示對結果影響的優(yōu)劣程度,作為決策的依據(jù)。

專家打分模型可分二步實現(xiàn)。第一步——打分:用戶首先在每個feature的屬性表里增加一個數(shù)據(jù)項,填入專家賦給的相應的分值;第二步——復合:調(diào)用加權符合程序,根據(jù)用戶對各個feature給定的權重值進行疊加,得到最后的結果。

20.如何判斷圖形間的邏輯運算

本小節(jié)以Polyline(Polygon類似)為例, 講解如何判斷圖形間的邏輯關系,主要用到的接口是IRelationalOperator。

在本例中,使用Relational Operator 對兩個圖形進行比較,返回一個布爾值來指出這兩個圖形間是否存在特定的關系。一些關系的判斷是要求兩個圖形要有相同的維數(shù)的(如必須Polyline之間或Polygon之間),而另外一些對圖形維數(shù)就沒有太多限制。大多數(shù)已定義的關系操作符是互斥的。RelationalOperator的具體方法有:

Contains:判斷一個圖形是否包含另外一個圖形。Within:判斷一個圖形是否被另外一個圖形所包含。

Crosses:判斷兩個圖形是否在維數(shù)較少的那個圖形的內(nèi)部相交。Disjoint:判斷兩個圖形間是否沒有相同點。

Equals:判斷兩個圖形是否是同一個類型并且在平面上的點是否是相同的位置。如果返回值為真,則它們應該包含(Contains)另外一個圖形同時也被另外一個圖形所包含(Within)。

Overlaps:判斷兩個圖形的交集是否和其中的一個圖形擁有相同的維數(shù),并且他們交集不能和其中任何一個圖形相等。該方法只使用與兩個Polyline之間或者兩個Polygon之間。

Touch:判斷兩個圖形的邊界是否相交,如果兩個圖形的交集不為空,但兩個圖形內(nèi)部的交集為空,則返回值為真。下圖為幾個圖形的邊界(Boundary)和內(nèi)部(Interior)概念的圖解:

下面針對較易混淆的兩個概念,Crosses和Touch進行舉例說明(Polyline/Polyline):

Crossess Touch Crossess Touch 21.AE中2種方式overlay

最近在研究ae中實現(xiàn)overlay的方法,終于發(fā)現(xiàn)了2個方法。(針對shapefile)方法一:利用ITopology接口:

void COverlayDlg::Overlay(ILayerPtr inputLayer, ILayerPtr OverlayLayer,IFeatureClassPtr ipNewClass){ int mode=m_modeCombo.GetCurSel();IFeatureLayerPtr ipPutlayer(inputLayer);IFeatureClassPtr ipPutClass;ipPutlayer->get_FeatureClass(&ipPutClass);IFeatureClassPtr ipOutClass;IFeatureLayerPtr ipOverlayer(OverlayLayer);ipOverlayer->get_FeatureClass(&ipOutClass);

IQueryFilterPtr ipQF(CLSID_QueryFilter);long number1,number2;ipPutClass->FeatureCount(ipQF,&number1);ipPutClass->FeatureCount(ipQF,&number2);

IActiveViewPtr ipView=p_View->m_ctrlMap.GetActiveView();ITopologicalOperatorPtr ipTo;IFeaturePtr ipFeature1,ipFeature2;IGeometryPtr ipGeo1,ipGeo2,ipNew;for(long i=0;i

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

ipTo->Intersect(ipGeo2,esriGeometry2Dimension,&ipNew);

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

} ipView->Refresh();} 這種方法是一個一個feature的創(chuàng)建,存入featureclass接口中。

方法二:利用IBasicGeoprocess接口

//把第一個圖層和第0個圖層疊置

IFeatureLayerPtr ipFeaLay;IFeatureClassPtr ipFeaCls;HRESULT hr;

ILayerPtr ipLay;IMapPtr ipMap(m_ctrlMap.GetMap());hr=ipMap->get_Layer(0,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

ITablePtr ipInPutTable(ipLay);hr=ipMap->get_Layer(1,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay!=0)

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

hr=ipDatasetName->putref_WorkspaceName(ipWSName);if(FAILED(hr))return;

IBasicGeoprocessorPtr ipBGP(CLSID_BasicGeoprocessor);IFeatureClassPtr ipOutputFeaCls;hr=ipBGP->Intersect(ipInPutTable,VARIANT_FALSE,ipOverlayTable,VARIANT_FALSE,double(0),ipFeaClsName,&ipOutputFeaCls);

IFeatureLayerPtr ipOutputFeaLay(CLSID_FeatureLayer);ipOutputFeaLay->putref_FeatureClass(ipOutputFeaCls);BSTR OutFeaClsAliName;hr=ipOutputFeaCls->get_AliasName(&OutFeaClsAliName);if(FAILED(hr))return;hr=ipOutputFeaLay->put_Name(OutFeaClsAliName);if(FAILED(hr))return;hr=ipMap->AddLayer(ipOutputFeaLay);if(FAILED(hr))return;IActiveViewPtr ipAV(ipMap);ipAV->Refresh();

22.ArcEngine中實現(xiàn)捕捉功能

捕捉功能主要使用ArcEngine中的兩個接口

1.IHitTest用于作點擊測試

2.IFeatureCache 用于建立做緩存

由于數(shù)據(jù)庫中有多個FeatureClass,而每個FeatureClass又可以做多種點擊測試 所以這里有會有好幾種捕捉方案。

我們稱呼每一個可以執(zhí)行捕捉的對象叫捕捉代理,所有的代理在一個捕捉環(huán)境中 方案1:每個代理負責測試一種FeatureClass的一種點擊方式 方案2:每個代理負責測試一種FeatureClass的所有點擊方式 方案3:一代理負責測試所有的FeatureClass的一種點擊方式 方案4:一個代理負責測試所有FeatureClass的所有點擊方式

在實際使用過程中 我們使用的是第一種方案。但是我個人認為第二種方案比較好。當然這只是個人推測 沒有測試數(shù)據(jù)證明。

下面給出第一種方案的代碼: ///

/// IFeatureSnapAgent 的摘要說明。

///

public interface IFeatureSnapAgent:ISnapAgent,ISnapAgentFeedback {

IFeatureCache FeatureCache

{

get;

}

IFeatureClass FeatureClass

{

get;

set;

}

esriGeometryHitPartType HitPartType

{

get;

set;

}

///

/// 為捕捉連接事件,當捕捉發(fā)生的時候,就會觸發(fā)事件。

///

///

void AddSnapedEventHandler(GeometrySnapedEventHandler handler);

///

/// 不再監(jiān)聽捕捉事件

///

///

void RemoveSnapedEventHandler(GeometrySnapedEventHandler handler);} ///

/// 默認的要素捕捉代理

///

public class DefaultFeatureSnapAgent :IFeatureSnapAgent,IEditEvents,ESRI.ArcGIS.esriSystem.IPersistVariant

{

#region 構造函數(shù)

///

/// 為代理指定別名。注意該代理目前還沒有關聯(lián)到任何目標FeatureClass

/// 要使得該代理起作用,必須要為他設置FeatureClass.///

///

名稱(請確保唯一)

public DefaultFeatureSnapAgent(string name):this(name,null)

{

}

///

/// 將使用該FeatureClass的別名做代理的名稱

///

///

public DefaultFeatureSnapAgent(IFeatureClass feaClass):this(feaClass.AliasName,feaClass)

{

}

///

/// 完全初始化捕捉代理

///

///

名稱(請確保唯一)

///

目標FeatureClass

public DefaultFeatureSnapAgent(string name,IFeatureClass feaClass)

{

m_snapAgentName=name;

m_bCacheHasCreated=false;

m_hitPartType=esriGeometryHitPartType.esriGeometryPartNone;

this.m_isSnapWorking=true;

this.m_featureClass=feaClass;

this.m_snapFeedbackText="";

}

#endregion

#region IFeatureSnapAgent 成員

private event GeometrySnapedEventHandler

m_snapSubsciber;

///

/// FeatureClass緩沖區(qū)。

///

private IFeatureCache m_featureCache;

///

/// 該代理將捕捉在該FeatureClass上的Feature.和Geometry

///

private IFeatureClass m_featureClass;

///

/// 點擊測試的有效類型。

///

protected esriGeometryHitPartType m_hitPartType;

///

/// 緩沖區(qū)對象是否已經(jīng)被創(chuàng)建了。跟是否建立了緩沖沒有關系。

///

private bool

m_bCacheHasCreated;

///

/// 緩沖區(qū)對象

///

public IFeatureCache FeatureCache

{

get

{

return m_featureCache;

}

}

///

第五篇:ArcGIS地統(tǒng)計分析總結

ArcGIS地統(tǒng)計分析(Geostatistical Analyst)1 介紹

1.1為什么使用ArcGIS Geostatistical Analyst

人為判斷總是會遺漏某些重要信息,同時也會無中生有。而ArcGIS Geostatistical Analyst提供客觀的數(shù)據(jù)驅(qū)動方法,定量預測數(shù)據(jù)變化趨勢和從空間數(shù)據(jù)中發(fā)掘特征模型。如果數(shù)據(jù)不夠精確或者模型不夠準確,這樣勢必影響輸出的地圖和從中得到的結論。而ArcGIS Geostatistical Analyst可以提供一個概率框架,來定量計算生成數(shù)據(jù)面時的不確定性。

元統(tǒng)計分析方法利用屬性數(shù)據(jù)之間的相關來推斷不同變量之間的聯(lián)系,ArcGIS Geostatistical Analyst可以聯(lián)合各種數(shù)據(jù)來做更精確的預測。ArcGIS Geostatistical Analyst可以有效地推測一些空間現(xiàn)象的未知部分,因此,對采樣計劃的設計和優(yōu)化非常關鍵。

1.2使用ArcGIS Geostatistical Analyst的各個領域

這個模塊的應用對象不計其數(shù),可以使用這個工具包開發(fā)任何一種地理數(shù)據(jù)集(比如坐標和屬性),下面列出幾個成功應用ArcGIS Geostatistical Analyst的典型領域:

氣象學家和統(tǒng)計學家應用ArcGIS Geostatistical Analyst來進行氣象數(shù)據(jù)分析。采礦行業(yè)廣泛的應用ArcGIS Geostatistical Analyst,涉及從最初的地質(zhì)特征研究到產(chǎn)量控制的各個階段。

石油工業(yè)成功的應用ArcGIS Geostatistical Analyst,來分析包括地震數(shù)據(jù)和油井數(shù)據(jù)集成的空間數(shù)據(jù),并且用來研究物理特性和地震屬性之間的相關關系。

在環(huán)境問題的研究中,ArcGIS Geostatistical Analyst的應用提供了一個分析空氣、土壤和地下水污染高效和一致的模型。演示、個例研究和研究教育論文提供了大量的應用ArcGIS Geostatistical Analyst的例子。同時,ArcGIS Geostatistical Analyst也成為評估漁業(yè)產(chǎn)量的一個標準方法。

精細農(nóng)業(yè)所應用的土壤特性的圖形分析中,ArcGIS Geostatistical Analyst也得到廣泛應用。越來越多的農(nóng)民或者農(nóng)村顧問使用ArcGIS Geostatistical Analyst來增加作物產(chǎn)量、提高利潤、減小對環(huán)境的不利影響。

2基本原理

地統(tǒng)計學與經(jīng)典統(tǒng)計學的共同之處在于:它們都是在大量采樣的基礎上,通過對樣本屬性值的頻率分布或均值、方差關系及其相應規(guī)則的分析,確定其空間分布格局與相關關系。但地統(tǒng)計學區(qū)別于經(jīng)典統(tǒng)計學的最大特點即是:地統(tǒng)計學既考慮到樣本值的大小,又重視樣本空間位置及樣本間的距離,彌補了經(jīng)典統(tǒng)計學忽略空間方位的缺陷。

地統(tǒng)計分析理論基礎包括前提假設、區(qū)域化變量、變異分析和空間估值。

2.1 前提假設(1)隨機過程

與經(jīng)典統(tǒng)計學相同的是,地統(tǒng)計學也是在大量樣本的基礎上,通過分析樣本間的規(guī)律,探索其分布規(guī)律,并進行預測。地統(tǒng)計學認為研究區(qū)域中的所有樣本值都是隨機過程的結果,即所有樣本值都不是相互獨立的,它們是遵循一定的內(nèi)在規(guī)律的。因此地統(tǒng)計學就是要揭示這種內(nèi)在規(guī)律,并進行預測。

(2)正態(tài)分布

在統(tǒng)計學分析中,假設大量樣本是服從正態(tài)分布的,地統(tǒng)計學也不例外。在獲得數(shù)據(jù)后首先應對數(shù)據(jù)進行分析,若不符合正態(tài)分布的假設,應對數(shù)據(jù)進行變換,轉(zhuǎn)為符合正態(tài)分布的形式,并盡量選取可逆的變換形式。

(3)平穩(wěn)性

對于統(tǒng)計學而言,重復的觀點是其理論基礎。統(tǒng)計學認為,從大量重復的觀察中可以進行預測和估計,并可以了解估計的變化性和不確定性。對于大部分的空間數(shù)據(jù)而言,平穩(wěn)性的假設是合理的。這其中包括兩種平穩(wěn)性:一是均值平穩(wěn),即假設均值是不變的并且與位置無關;另一類是與協(xié)方差函數(shù)有關的二階平穩(wěn)和與半變異函數(shù)有關的內(nèi)蘊平穩(wěn)。二階平穩(wěn)是假設具有相同的距離和方向的任意兩點的協(xié)方差是相同的,協(xié)方差只與這兩點的值相關而與它們的位置無關。內(nèi)蘊平穩(wěn)假設是指具有相同距離和方向的任意兩點的方差(即變異函數(shù))是相同的。二階平穩(wěn)和內(nèi)蘊平穩(wěn)都是為了獲得基本重復規(guī)律而作的基本假設,通過協(xié)方差函數(shù)和變異函數(shù)可以進行預測和估計預測結果的不確定性。

2.2 區(qū)域化變量

當一個變量呈現(xiàn)一定的空間分布時,稱之為區(qū)域化變量,它反映了區(qū)域內(nèi)的某種特征或現(xiàn)象。區(qū)域化變量與一般的隨機變量不同之處在于,一般的隨機變量取值符合一定的概率分布,而區(qū)域化變量根據(jù)區(qū)域內(nèi)位置的不同而取不同的值。而當區(qū)域化變量在區(qū)域內(nèi)確定位置取值時,表現(xiàn)為一般的隨機變量,也就是說,它是與位置有關的隨機變量。在實際分析中,常采用抽樣的方式獲得區(qū)域化變量在某個區(qū)域內(nèi)的值,即此時區(qū)域化變量表現(xiàn)為空間點函數(shù):

Z?x??Z?xu,xv,xw?

根據(jù)其定義,區(qū)域化變量具有兩個顯著特征:即隨機性和結構性。首先,區(qū)域化變量是一個隨機變量,它具有局部的、隨機的、異常的特征;其次,區(qū)域化變量具有一定的結構特點,即變量在點x與偏離空間距離為h的點x+h處的值Z(x)和Z(x+h)具有某種程度的相似性,即自相關性,這種自相關性的程度依賴于兩點間的距離h及變量特征。除此之外,區(qū)域化變量還具有空間局限性(即這種結構性表現(xiàn)為一定范圍內(nèi))、不同程度的連續(xù)性和不同程度的各向異性(即各個方向表現(xiàn)出的自相關性有所區(qū)別)等特征。

2.3 變異分析

(1)協(xié)方差函數(shù) 協(xié)方差又稱半方差,表示兩隨機變量之間的差異。在概率論中,隨機變量X與Y的協(xié)方差定義為:

Cov?X,Y??E??X?E?X???Y?E?Y???

借鑒上式,地統(tǒng)計學中的協(xié)方差函數(shù)可表示為:

1N?h?C?h??Z?xi??Z?xi?Z?xi?h??Z?xi?h? ?N?h?i?1????

其中,Z(x)為區(qū)域化隨機變量,并滿足二階平穩(wěn)假設,即隨機變量Z(x)的空間分布規(guī)律不因位移而改變;h為兩樣本點空間分隔距離;Z?xi?為Z(x)在空間點處xi的樣本值。

Z?xi?h?是Z(x)在處距離偏離h的樣本值[i=1,2,…,N(h)];N(h)是分隔距離為h時的樣本點對總數(shù);Z?xi?和Z?xi?h?分別為Z?xi?和Z?xi?h?的樣本平均數(shù),即:

1nZ?xi???Z?xi?

ni?1

1nZ?xi?h???Z?xi?h?

ni?1

(2)半變異函數(shù) 半變異函數(shù)又稱半變差函數(shù)、半變異矩,是地統(tǒng)計分析的特有函數(shù)。區(qū)域化變量Z(x)在點x和x+h處的值Z(x)與Z(x+h)差的方差的一半稱為區(qū)域化變量Z(x)的半變異函數(shù),記為r(h),2r(h)稱為變異函數(shù)。

根據(jù)定義有:

1r?x,h??Var[Z(x)?Z(x?h)]

2112r?x,h??E[Z(x)?Z(x?h)]?{E[Z(x)]?E[Z(x?h)]}2 22

區(qū)域化變量Z(x)滿足二階平穩(wěn)假設,因此對于任意的h有:

E[Z(x?h)]?E[Z(x)]

因此,半變異函數(shù)可改寫為:

1r?x,h??E[Z(x)?Z(x?h)]2

2由上式可知,半變異函數(shù)依賴于自變量x和h,當半變異函數(shù)r(x,h)僅僅依賴于距離h而與位置x無關時,r(x,h)可改寫為r(x),即:

1r?h??E[Z(x)?Z(x?h)]2

2具體表示為:

1N(h)2r?h??[Z(xi)?Z(xi?h)] ?2N(h)i?1

各變量的含義同前。也有將r(h)稱為變異函數(shù),兩者使用上不引起本質(zhì)上的差別。

(3)變異分析 半變異函數(shù)和協(xié)方差函數(shù)把統(tǒng)計相關系數(shù)的大小作為一個距離的函數(shù),是地理學相近相似定理定量量化。

圖10.1和圖10.2顯示,半變異值的變化隨著距離的加大而增加,協(xié)方差隨著距離的加大

而減小。這主要是由于半變異函數(shù)和協(xié)方差函數(shù)都是事物空間相關系數(shù)的表現(xiàn),當兩事物彼此距離較小時,它們是相似的,因此協(xié)方差值較大,而半變異值較小;反之,協(xié)方差值較小,而半變異值較大。此外,協(xié)方差函數(shù)和半變異函數(shù)隨著距離的加大基本呈反向變化特征,它們之間的近似關系表達式為:

r(h)?sill?C(h)

半變異函數(shù)曲線圖和協(xié)方差函數(shù)曲線反映了一個采樣點與其相鄰采樣點的空間關系。此外,它們對異常采樣點具有很好的探測作用,在ArcGIS地統(tǒng)計分析模塊中可以使用兩者的任意一個,一般采用半變異函數(shù)。在半變異曲線圖中有兩個非常重要的點:間隔為0時的點和半變異函數(shù)趨近平穩(wěn)時的拐點,由這兩個點產(chǎn)生四個相應的參數(shù):塊金值(Nugget)、變程(Range)、基臺值(Sill)、偏基臺值(Partial Sill)它們的含義表示如下:

塊金值(Nugget):理論上,當采樣點間的距離為0時,半變異函數(shù)值應為0,但由于存在測量誤差和空間變異,使得兩采樣點非常接近時,它們的半變異函數(shù)值不為0,即存在塊金值。測量誤差是儀器內(nèi)在誤差引起的,空間變異是自然現(xiàn)象在一定空間范圍內(nèi)的變化。它們?nèi)我庖环交騼烧吖餐饔卯a(chǎn)生了塊金值。

基臺值(Sill):當采樣點間的距離h增大時,半變異函數(shù)人r(h)從初始的塊金值達到一個相對穩(wěn)定的常數(shù)時,該常數(shù)值稱為基臺值。當半變異函數(shù)值超過基臺值時,即函數(shù)值不隨采樣點間隔距離而改變時,空間相關性不存在。

偏基臺值(Partial Sill):基臺值與塊金值的差值變程(Range):當半變異函數(shù)的取值由初始的塊金值達到基臺值時采樣點的間隔距離稱為變程。變程表示了在某種觀測尺度下,空間相關性的作用范圍,其大小受觀測尺度的限定。在變程范圍內(nèi),樣點間的距離越小,其相似性,即空間相關性越大。當h>R時,區(qū)域化變量Z(x)的空間相關性不存在,即當某點與已知點的距離大于變程時,該點數(shù)據(jù)不能用于內(nèi)插或外推。

當限定的樣本點間隔過小時,可能出現(xiàn)曲線圖上曲線為一近似平行于橫坐標的直線,此時半變異函數(shù)表現(xiàn)為純塊金效應。這是由于所限定的樣本間隔內(nèi),點與點的變化很大,即各個樣點是隨機的,不具備空間相關性,區(qū)域內(nèi)樣點的平均值即是最佳估計值。此時只有增大樣本間隔,才能反映出樣本間的空間相關性。

空間相關性的強弱可由Partial_Sill/Sill來反映,該值越大,空間相關性越強,相應地,Nugget/Sill稱為基底效應,表示樣本間的變異特征,該值越大,表示樣本間的變異更多得是由隨機因素引起的。

2.4 空間估值

一個完整的地統(tǒng)計分析過程,或者說空間估值過程,一般為:首先是獲取原始數(shù)據(jù),檢查、分析數(shù)據(jù),找尋數(shù)據(jù)暗含的特點和規(guī)律,比如是否為正態(tài)分布、有沒有趨勢效應、各向異性等等;然后選擇合適的模型進行表面預測,這其中包括半變異模型的選擇和預測模型的選擇;最后檢驗模型是否合理或幾種模型進行對比。克里格插值

克里格插值(Kriging)又稱空間局部插值法,是以變異函數(shù)理論和結構分析為基礎,在有限區(qū)域內(nèi)對區(qū)域化變量進行無偏最優(yōu)估計的一種方法,是地統(tǒng)計學的主要內(nèi)容之一。南非礦產(chǎn)工程師D.R.Krige(1951年)在尋找金礦時首次運用這種方法,法國著名統(tǒng)計學家G.Matheron隨后將該方法理論化、系統(tǒng)化,并命名為Kriging,即克里格方法。

克里格方法的適用范圍為區(qū)域化變量存在空間相關性,即如果變異函數(shù)和結構分析的結果表明區(qū)域化變量存在空間相關性,則可以利用克里格方法進行內(nèi)插或外推;否則反之。其實質(zhì)是利用區(qū)域化變量的原始數(shù)據(jù)和變異函數(shù)的結構特點,對未知樣點進行線性無偏、最優(yōu)估計。無偏是指偏差的數(shù)學期望為0,最優(yōu)是指估計值與實際值之差的平方和最小。也就是說,克里格方法是根據(jù)未知樣點有限鄰域內(nèi)的若干已知樣本點數(shù)據(jù),在考慮了樣本點的形狀、大小和空間方位,與未知樣點的相互空間位置關系,以及變異函數(shù)提供的結構信息之后,對未知樣點進行的一種線性無偏最優(yōu)估計。

地統(tǒng)計分析的核心就是通過對采樣數(shù)據(jù)的分析、對采樣區(qū)地理特征的認識選擇合適的空間內(nèi)插方法創(chuàng)建表面。插值方法按其實現(xiàn)的數(shù)學原理可以分為兩類:一是確定性插值方法,另一類是地統(tǒng)計插值,也就是克里格插值,如圖所示。

確定性插值方法以研究區(qū)域內(nèi)部的相似性(如反距離加權插值法)、或者以平滑度為基礎(如徑向基函數(shù)插值法)由已知樣點來創(chuàng)建表面。地統(tǒng)計插值方法(例如克里格法)利用的則是已知樣點的統(tǒng)計特性。地統(tǒng)計插值方法不但能夠量化已知點之間的空間自相關性,而且能夠解釋說明采樣點在預測區(qū)域范圍內(nèi)的空間分布情況。

確定性插值方法有可以分為兩種:即全局性插值方法和局部性插值方法,如圖10.4所示。全局性插值方法以整個研究區(qū)的樣點數(shù)據(jù)集為基礎來計算預測值,局部性插值方法則使用一個大研究區(qū)域內(nèi)較小的空間區(qū)域內(nèi)的已知樣點來計算預測值。

克里格方法與反距離權插值方法有些類似,兩者都通過對已知樣本點賦權重來求得未知樣點的值,可統(tǒng)一表示為:

Z(x0)???iZ(xi)i?1n

式中,Z(x0)為未知樣點的值,Z(xi)為未知樣點周圍的已知樣本點的值,λi為第i個已知樣本點對未知樣點的權重,n為已知樣本點的個數(shù)。

不同的是,在賦權重時,反距離權插值方法只考慮已知樣本點與未知樣點的距離遠近,而克里格方法不僅考慮距離,而且通過變異函數(shù)和結構分析,考慮了已知樣本點的空間分布及與未知樣點的空間方位關系。

空間插值方法根據(jù)是否能保證創(chuàng)建的表面經(jīng)過所有的采樣點,又可以分為精確性插值和非精確性插值。精確性插值法預測值在樣點處的值與實測值相等,非精確性插值法預測值在樣點處的值與實測值一般不會相等。使用非精確性插值法可以避免在輸出表面上出現(xiàn)明顯的波峰或波谷。反距離權插值和徑向基插值屬于精確性插值方法,而全局多項式插值、局部多項式插值,以及克里格插值都屬于非精確性插值方法。

Z?xi? Z?xi?

Z?xi?h? Z?xi?h?

xi

下載Arcgis中的工具總結(共5篇)word格式文檔
下載Arcgis中的工具總結(共5篇).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內(nèi)容。

相關范文推薦

    ArcGIS瓦片格式選擇總結-hm

    一、 常用互聯(lián)網(wǎng)地圖瓦片格式對比: 1) 矢量:PNG,基本控制在20K以內(nèi); 2) 影像注記:PNG,基本控制在20K以內(nèi); 3) 影像:JPEG,小比例尺大多控制在20K以內(nèi),大比例尺高分影像在20K-30K; 1、 百度......

    PS工具總結

    移動工具:快捷鍵v,移動圖層、選區(qū)內(nèi)內(nèi)容的工具。 選框工具:快捷鍵m,建立選區(qū),按住Shift是額外增加選區(qū),按住Alt是減少當前選區(qū),在 選區(qū)外單擊鼠標左鍵是取消所有選區(qū)。 套索工具:快......

    化學工具總結

    化學軟件 分子模型化 3D分子圖形顯示工具 (RasMol and OpenRasMol)(免費) AMBER (分子力學力場模擬程序) autodock (分子對接軟件)(免費) GROMACS (分子動力學軟件)(免費) G......

    工具管理制度[共5篇]

    杭州佑昌齒輪制造有限公司工具管理制度 1.目的 為使公司節(jié)約開支降低成本,提高工具最大利用率,同時對工具的申購、領用、使用及維護進行合理化的管理 2.范圍 本制度適用于本公......

    工具管理制度[共五篇]

    工具管理制度 一、目的:規(guī)范各類工具的保管、領用、以舊換新、移交、報廢程序,以避免工具的超標領用及調(diào)用無交接等現(xiàn)象。 二、適用范圍:工具領用、退庫、交接、報廢等。 三、......

    工具英文名稱(共5則范文)

    扳手Wrenches/套筒Sockets 開口扳手 Open End Wrenches梅花扳手 Spline End Wrenches 塊扳手 Crowfoot Wrenches 開口/梅花扳手 Combination Wrenches 內(nèi)六角扳手 Hex Wrenc......

    個人計劃網(wǎng)中的人生工具

    個人計劃網(wǎng)中的人生工具 一、目標 工具 目標的十大作用: 1.目標產(chǎn)生積極的心態(tài)。 2.目標使你看清使命,產(chǎn)生動力。 3.目標使你感覺到生存的意義和價值。 。。。。個人計劃網(wǎng)參......

    抓包工具學習總結

    抓包工具學習 一、 配置鏡像端口方法:(機換器型號:S2008) 方法一: 1、 打開串口,把串口線接入交換機端口 2、 從串口“選項-會話選項”把“波特率設為9600” 3、 按確認鍵 4、 輸......

主站蜘蛛池模板: 强伦姧人妻免费无码电影| 日本无遮挡真人祼交视频| 亚洲人成色77777在线观看大战p| 久久久久日韩精品免费观看| 天天爽夜夜爽人人爽免费| 国产主播一区二区三区在线观看| 狠狠躁夜夜躁无码中文字幕| 久久发布国产伦子伦精品| 亚洲欧洲无码av不卡在线| 亚洲爆乳无码专区www| 亂倫近親相姦中文字幕| 国产精品福利在线观看无码卡一| 国产亚洲欧美日韩在线一区二区三区| 非洲黑人最猛性xxxx交| 亚洲人成日韩中文字幕不卡| 欧美日韩在手机线旡码可下载| 亚洲av日韩av永久无码绿巨人| 精品少妇人妻av一区二区| 亚洲一区二区三区在线观看精品中文| 国产在线一区二区三区四区五区| 麻豆国产成人av高清在线观看| 影音先锋无码a∨男人资源站| 中国老太太性老妇hd| 黑人大群体交免费视频| 欧美日本精品一区二区三区| 精品丝袜国产自在线拍小草| 久久久久久久久久久国产| 亚洲人成无码网www动漫| 成人va亚洲va欧美天堂| 无码尹人久久相蕉无码| 午夜亚洲福利在线老司机| 久久精品国产99国产精品亚洲| 99久久精品免费看国产| 国产成人av乱码免费观看| 日本中文字幕在线| 久久精品极品盛宴免视| 华人少妇被黑人粗大的猛烈进| 亚洲欧洲日产国产av无码| 伊人成色综合网| 成年日韩片av在线网站| 少妇人妻挤奶水中文视频毛片|