第一篇:Arcgis中工具總結(jié)
1.要素的剪切與延伸
實用工具 TASK 任務欄 Extend/Trim feature 剪切所得內(nèi)容與你畫線的方向有關(guān)。
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ù)的關(guān)聯(lián),但這種關(guā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í)行命令: <空間分析>-<柵格計算器>
構(gòu)造表達式:[Landuse]*[polyClip4-polyclip4],執(zhí)行柵格圖層:Landuse 和 用以剪切 的柵格polyClip4 之間的相乘運算 GIS軟件應用-ArcGIS
得到的結(jié)果即是以任意多邊形剪切的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工具的與注記相關(guān)的快捷鍵:
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
有些運算符和關(guān)鍵字也可能有所變化。
在查詢表達式中,字符串必須加單引號,例如:
[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運算符(不是 = 運算符)與通配符一起構(gòu)建部分字符串查詢。
例如,表達式 [STATE_NAME] LIKE 'Miss*'將在美國州名中選擇Mississippi和Missouri。
*表示多個字符。
還比如,查詢表達式 [OWNER_NAME] LIKE '?atherine smith' 將找出Catherine Smith和Katherine Smith。
?表示單個字符。通配符的使用依賴于不同的數(shù)據(jù)庫。例子中使用的通配符只適用于個人地理數(shù)據(jù)庫。
可以使用NULL關(guān)鍵字來選擇那些在指定字段中值為NULL的要素和記錄。通常,NULL關(guān)鍵字的前面總有IS或IS NOT。
29.Select by location小結(jié)
按位置查找要素的方法
使用按位置選擇(Select By Location)對話框,可以根據(jù)要素間的相對空間位置進行查找。可以使用多種方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點、線、多邊形等要素。
被?跨越邊界(Are crossed by the outline of)
利用這種方法,選擇被另一圖層要素覆蓋的某個圖層上的要素。例如,搜索道路跨越的荒地,得到的結(jié)果是道路跨越其邊界的所有荒地。
相交(Intersect)
與Are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結(jié)果將包括該道路在其邊界范圍之內(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.標注工具條和標注管理器
如果圖層中有一些要素需要指定特殊的標注屬性,需要在標注管理器中生成其它的標注類。
點擊左側(cè)面板上的一個圖層,在右側(cè)面板上為其添加一個新的標注類。
個人認為此方法雖然沒有轉(zhuǎn)為注記后的標注靈活,但卻可以方便的實現(xiàn)自動相對智能化的標注,相比之下更省心,提高效率。35.在進行地圖查詢或編輯的時候為什么會總是選中所有的圖層
訣竅在這里(雖然是一點點小問題,但當我第一次遇到這個問題時卻花費了我不少時間,甚至于懷疑自己的數(shù)據(jù)有問題)
36.建立拓撲關(guān)系檢查圖斑
先根據(jù)需要在Catalog中建立相應的拓撲關(guān)系規(guī)則,然后在Arcmap中進行拓撲處理,輔助工具條Topolygon,下圖所示為重疊圖斑檢查。(也可以在Arctoolbox下的Data Management tools/topology來做)
有關(guān)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:多邊形+多邊形,第一個多邊形層必須被第二個完全覆蓋(省與全國的關(guān)系)
6).must be covered by:多邊形+多邊形,第一個多邊形層必須把第二個完全覆蓋(全國與省的關(guān)系)
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
實例:“
輸出分數(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幫助中找到了相關(guān)的內(nèi)容,原來Label的VBScript里面支持類似于Html的VBScript標簽,比如加粗就是用
“
除了加粗,ArcGIS中還支持下面的文本格式標簽: Font:
“
“
“
“
“
Underline:
“
“
Small caps:
“
Superscript
“” & [LABELFIELD] & “”
Subscript:
“” & [LABELFIELD] & “”
Character spacing(%):
“
Word spacing(%):
“
Leading(pts):
“
需要注意的是,使用這些標簽后,生成的Label語句在Verify按鈕中是不生效的,只對最終的顯示結(jié)果生效。其實問題還沒有最終解決,使用VbNewLine生成的顯示結(jié)果,上下兩行缺省時居中對齊,現(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.用點構(gòu)面
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坐標表示無關(guān)。返回當前顯示的坐標值參看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中的工具總結(jié)
Arcgis中的工具總結(jié)
1.要素的剪切與延伸
實用工具 TASK 任務欄 Extend/Trim feature 剪切所得內(nèi)容與你畫線的方向有關(guān)。
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ù)的關(guān)聯(lián),但這種關(guā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í)行命令: <空間分析>-<柵格計算器>
構(gòu)造表達式:[Landuse]*[polyClip4-polyclip4],執(zhí)行柵格圖層:Landuse 和 用以剪切 的柵格polyClip4 之間的相乘運算
GIS軟件應用-ArcGIS
得到的結(jié)果即是以任意多邊形剪切的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工具的與注記相關(guān)的快捷鍵: 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
有些運算符和關(guān)鍵字也可能有所變化。
在查詢表達式中,字符串必須加單引號,例如:
[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運算符(不是 = 運算符)與通配符一起構(gòu)建部分字符串查詢。
例如,表達式 [STATE_NAME] LIKE 'Miss*'將在美國州名中選擇Mississippi和Missouri。
*表示多個字符。
還比如,查詢表達式 [OWNER_NAME] LIKE '?atherine smith' 將找出Catherine Smith和Katherine Smith。
?表示單個字符。通配符的使用依賴于不同的數(shù)據(jù)庫。例子中使用的通配符只適用于個人地理數(shù)據(jù)庫。
可以使用NULL關(guān)鍵字來選擇那些在指定字段中值為NULL的要素和記錄。通常,NULL關(guān)鍵字的前面總有IS或IS NOT。
29.Select by location小結(jié)
按位置查找要素的方法
使用按位置選擇(Select By Location)對話框,可以根據(jù)要素間的相對空間位置進行查找。可以使用多種方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點、線、多邊形等要素。
被…跨越邊界(Are crossed by the outline of)
利用這種方法,選擇被另一圖層要素覆蓋的某個圖層上的要素。例如,搜索道路跨越的荒地,得到的結(jié)果是道路跨越其邊界的所有荒地。
相交(Intersect)
與Are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結(jié)果將包括該道路在其邊界范圍之內(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.標注工具條和標注管理器
如果圖層中有一些要素需要指定特殊的標注屬性,需要在標注管理器中生成其它的標注類。
點擊左側(cè)面板上的一個圖層,在右側(cè)面板上為其添加一個新的標注類。
個人認為此方法雖然沒有轉(zhuǎn)為注記后的標注靈活,但卻可以方便的實現(xiàn)自動相對智能化的標注,相比之下更省心,提高效率。
35.在進行地圖查詢或編輯的時候為什么會總是選中所有的圖層
訣竅在這里(雖然是一點點小問題,但當我第一次遇到這個問題時卻花費了我不少時間,甚至于懷疑自己的數(shù)據(jù)有問題)
36.建立拓撲關(guān)系檢查圖斑
先根據(jù)需要在Catalog中建立相應的拓撲關(guān)系規(guī)則,然后在Arcmap中進行拓撲處理,輔助工具條Topolygon,下圖所示為重疊圖斑檢查。(也可以在Arctoolbox下的Data Management tools/topology來做)
有關(guān)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:多邊形+多邊形,第一個多邊形層必須被第二個完全覆蓋(省與全國的關(guān)系)
6).must be covered by:多邊形+多邊形,第一個多邊形層必須把第二個完全覆蓋(全國與省的關(guān)系)
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
實例:“
輸出分數(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幫助中找到了相關(guān)的內(nèi)容,原來Label的VBScript里面支持類似于Html的VBScript標簽,比如加粗就是用
“
除了加粗,ArcGIS中還支持下面的文本格式標簽:
Font:
“
Color:
“
“
Bold:
“
Italic:
“
Underline:
“
All caps:
“
Small caps:
“
Superscript
“” & [LABELFIELD] & “”
Subscript:
“” & [LABELFIELD] & “”
Character spacing(%):
“
Word spacing(%):
“
Leading(pts): “
需要注意的是,使用這些標簽后,生成的Label語句在Verify按鈕中是不生效的,只對最終的顯示結(jié)果生效。
其實問題還沒有最終解決,使用VbNewLine生成的顯示結(jié)果,上下兩行缺省時居中對齊,現(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 = ”
End Function
41.用點構(gòu)面
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坐標表示無關(guān)。返回當前顯示的坐標值參看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中的左側(cè)列表中,選擇相應的Style文件,ArcGIS默認的符號庫文件是ESRI.Style文件,當然也給出了C:Documents and Settings........................................目錄下用于用戶自定義的Style文件 2)、展開Style文件,選擇要創(chuàng)建Symbol的類型,如:Fill Symbol(面填充)、Line Symbol(線)、Marker Symbol(點)然后在右側(cè)的列表中鼠標右鍵->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的時候不管怎么畫結(jié)果都是順時針的。所以一般負值的出現(xiàn)是轉(zhuǎn)換過程出現(xiàn)問題,polygon是由ring組成的,ring則是有更小的segement(line,circularArc,ellipticalArc,beziercurve)構(gòu)成,所具有方向性。解決方法是用ArcTool中的check geometry和 repair geometry工具,上述的檢查結(jié)果是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使用總結(jié)
一、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ù)高度如下
三、散點關(guān)系圖
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圖層的大部分功能,如點的選擇,編輯,關(guān)聯(lián),屬性等操作。還需進一步操作
4,在剛才生成的圖層上點右鍵,選data-expot data…,導出成.shp文件,這時再把導出的文件添加進來即可。至此,已完成任務。
五、求多邊形幾何中心坐標
這個需要自己計算,首先在屬性表里面加兩列X,Y利用Geometery Calculator計算Xcenter,YCenter可以獲得中心點的XY坐標,然后將屬性表.dbf文件單獨復制出來,利用ArcMAP的Display XY功能進行顯示并且將顯示圖層輸出保存為SHP文件即可,具體操作可以百度之,我這邊只提供一個大概的思路
第四篇:Arcgis Engine開發(fā)總結(jié)集錦
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;//關(guān)聯(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);//結(jié)束編輯并保存
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用于啟動編輯 開始編輯操作 結(jié)束編輯操作 結(jié)束編輯 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();//結(jié)束編輯操作 //結(jié)束編輯過程
//參數(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關(guān)聯(lián)幾何圖形。4.Feature的概念
Feature是二次開發(fā)中最常用的對象,feature是featureclass中一個記錄,從object中派生出來的,因此也具有屬性和方法,object又是從row中派生的,所以featureclass其實一張表,featured就是表中的一條記錄,feature可以保存空間數(shù)據(jù)對象,要素中的幾何型體對象定義了要素的類型,它可以保存的幾何型體對象有點、點集、多邊形、多義線。這些都是些簡單的要素對象,在有些情況下要素還可以參與拓撲、網(wǎng)絡運算。Feature相關(guān)接口
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的投影和任何地圖都沒什么大關(guān)系,完全可以不用地圖,直接調(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ān)系了。驗證關(guān)系就要有規(guī)則,規(guī)則是由ITopologyRule來表達的。ITopologyRule必須要被 加入到一個ITopologyRuleContainer中去。而Topology實現(xiàn)了這個接口。一個ITopologyRule用來表達兩個ObjectClass的對象之間的某個關(guān)系。具體代碼參看接口就可以了。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);//提交拓撲編輯結(jié)果 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個沒有任何關(guān)系的函數(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)對象。因此,所謂接口就是一系列相關(guā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 相關(guān)產(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之間必須是一個一一對應的關(guān)系。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目標之間的空間關(guān)系中獲取派生的信息和新的知識,用以回答有關(guān)空間關(guān)系的查詢和應用分析。
拓撲空間查詢
在此操作中,用戶將地圖當作查詢工具,而不僅僅是數(shù)據(jù)載體。空間目標之間的拓撲關(guān)系可以有兩類:一種是幾何元素的結(jié)點、弧段和面塊之間的關(guān)聯(lián)關(guān)系,用以描述和表達幾何元素間的拓撲關(guān)系;另一種是GIS中地物之間的空間拓撲關(guān)系,可以通過關(guān)聯(lián)關(guān)系和位置關(guān)系隱含表達,用戶需通過特殊的方法查詢。
這些空間關(guān)系主要有以下幾項:面與面的關(guān)系,如檢索與某個面狀地物相鄰的所有多邊形及屬性;線與線的關(guān)系,如檢索與某一主干河相關(guān)聯(lián)的所有支流;點與點的關(guān)系,如檢索到某點一定距離內(nèi)的所有點狀地物;線與面的關(guān)系,如檢索某公路所經(jīng)過的所有縣市或某縣市內(nèi)的所有公路;點與線的關(guān)系,如某河流上的所有橋梁;點與面的關(guān)系,如檢索某市所有銀行分布點。
緩沖區(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)計一種要素在另一種要素中的分布特征。
距離分析及相鄰相接分析
距離分析提供了在地圖上距離的功能,相鄰分析確定哪些地圖要素與其它要素相接觸或相鄰,而相接分析則結(jié)合距離和相鄰分析兩者的針對性,提供確定地圖要素間鄰近或鄰接的功能。相鄰和相接分析廣泛應用于環(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)是否具有良好的用戶接口和各種應用分析程序的支持也是至關(guān)重要的,但是應由GIS開發(fā)人員和用戶來共同完成的。
地理信息系統(tǒng)技術(shù)廣泛應用于農(nóng)業(yè)、林業(yè)、國土資源、地礦、軍事、交通、測繪、水利、廣播電視、通訊、電力、公安、社區(qū)管理、教育、能源等幾乎所有的行業(yè),并正在走進人們?nèi)粘5墓ぷ鳌W習和生活中。
地理信息系統(tǒng)的主要任務是對與地理空間位置或區(qū)域有關(guān)的社會經(jīng)濟、人文景觀、自然資源及環(huán)境等多種信息進行綜合管理和分析,主要任務有以下三個方面.14.AO中的空間關(guān)系
最近在做AO的一些東西,有些空間關(guān)系讓我搞不太懂,查到一個東西,還是很好的 名詞解釋:
Boundary(邊界):
只有線和面才有邊界。面的邊界是指組成面的框架線;線的邊界是指線的二個端點(即起點和終點,不包括中間部分的節(jié)點);點沒有邊界。Interior(內(nèi)部):
除去邊界后剩下的部分即是一個要素的內(nèi)部。因此線的內(nèi)部指除去端點后的部分;面的內(nèi)部是指除去框架線后的部分;點的內(nèi)部就是點本身。Exterior(外部):
除去該要素后的剩余的空間范圍即是該要素的外部。空間關(guān)系具體描述(Queryable Spatial Relationships): 示意圖:
空間關(guān)系:
1, esriSpatialRelTouches(鄰接)應用范圍:
除點與點之間的關(guān)系外,其它的要素之間都可以具有該關(guān)系。描述:
如果二個要素有相同的邊界,且它們內(nèi)部不相交的話,稱這二個要素之間的關(guān)系是鄰接的關(guān)系,圖1-
1、2-
1、3-
1、3-2,注意圖3-3中點與線是包涵的關(guān)系。
當查詢要素和被查詢要素具有該關(guān)系時,即spatialRel的值是esriSpatialRelTouches,則會返回查詢要素。2, esriSpatialRelCrosses(交叉)應用范圍:
線與面,線與線等。不能用于面與面(面與面相交部分是面,不能二個要素中的最高維數(shù)低一),面與點,點與線(二個要素的維數(shù)差2)。描述:
如果二個要素的相交部分不為空,并且相交部分形狀的維數(shù)比兩個要素中最高維數(shù)低1(即線面交叉是線,線線交叉是點)則稱這二個要素具有交叉關(guān)系,圖2-
4、4-1,圖2-1中中二條線的關(guān)系屬于鄰接關(guān)系,而不屬于交叉關(guān)系,因為它們的內(nèi)部相交部分為空。當查詢要素和被查詢要素具有該關(guān)系時,即spatialRel的值是esriSpatialReCrosses,則會返回查詢要素。3, esriSpatialRelOverlaps(重疊關(guān)系)應用范圍:
線與線,面與面之間,其它的不具有該關(guān)系。描述:
二個同維的要素之間的相交部分的圖形具有與這二個要素相同的維數(shù)的,且不與任何一個要素完全相同,則稱這二個要素重疊。圖1-
2、2-2均是重疊關(guān)系,但是2-3中的二條線不是重疊關(guān)系,因為相交的部分與黃色的線完全相同。
當查詢要素和被查詢要素具有該關(guān)系時,即spatialRel的值是esriSpatialRelOverlaps,則會返回查詢要素。4,esriSpatialRelWithin和esriSpatialRelContains(包涵)應用范圍:
所有要素類之間均具有該關(guān)系。描述:
該關(guān)系可細分為一個要素完全位于另一個要素的內(nèi)部和一個要素完全包涵另外一個要素,它們是相對的關(guān)系。如果說要素1完全位于要素2的內(nèi)部,則要素2完全包涵要素1。
當查詢的要素完全位于被查詢的要素內(nèi)部的話(即spatialRel的值是esriSpatialRelWithin),則返回被查詢的要素;同時如果查詢的要素完全被被查詢的要素包括時(即spatialRel的值是esriSpatialRelContains)則返回被查詢的要素。5,esriSpatialRelIntersects(相交)描述:
相交關(guān)系是一個廣義的關(guān)系,包括上述4種關(guān)系。因此如果spatialRel的值是esriSpatialRelIntersects關(guān)系的話,只要查詢要素和被查詢要素之間滿足上述四種空間關(guān)系的任一種空間關(guān)系,即可返回被查詢的要素。6,esriSpatialRelRelate 描述:
需要通過SpatialRelDescription屬性對二個要素的空間關(guān)系進行定制,可以對二個要素的內(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ù)無關(guān)。cac——計算機輔助制圖,適合地圖制圖的專用軟件,缺乏空間分析能力。
gis——地理信息系統(tǒng),集規(guī)則圖形與地圖制圖于一身,且有較強的空間分析能力。
3、圖層:將空間信息按其幾何特征及屬性劃分成的專題。
4、地理數(shù)據(jù)采集——實地調(diào)查、采樣;傳統(tǒng)的測量方法,如三角測量法、三邊測量法;全球定位系統(tǒng)(gps);現(xiàn)代遙感技術(shù);生物遙測學;數(shù)字攝影技術(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、柵格——柵格結(jié)構(gòu)是最簡單最直接的空間數(shù)據(jù)結(jié)構(gòu),是指將地球表面劃分為大小均勻緊密相鄰的網(wǎng)格陣列,每個網(wǎng)格作為一個象元或象素由行、列定義,并包含一個代碼表示該象素的屬性類型或量值,或僅僅包括指向其屬性記錄的指針。因此,柵格結(jié)構(gòu)是以規(guī)則的陣列來表示空間地物或現(xiàn)象分布的數(shù)據(jù)組織,組織中的每個數(shù)據(jù)表示地物或現(xiàn)象的非幾何屬性特征。特點:屬性明顯,定位隱含,即數(shù)據(jù)直接記錄屬性本身,而所在的位置則根據(jù)行列號轉(zhuǎn)換為相應的坐標,即定位是根據(jù)數(shù)據(jù)在數(shù)據(jù)集中的位置得到的,在柵格結(jié)構(gòu)中,點用一個柵格單元表示;線狀地物用沿線走向的一組相鄰柵格單元表示,每個柵格單元最多只有兩個相鄰單元在線上;面或區(qū)域用記有區(qū)域?qū)傩缘南噜彇鸥駟卧募媳硎荆總€柵格單元可有多于兩個的相鄰單元同屬一個區(qū)域。
8、矢量——它假定地理空間是連續(xù),通過記錄坐標的方式盡可能精確地表示點、線、多邊形等地理實體,坐標空間設為連續(xù),允許任意位置、長度和面積的精確定義。對于點實體,矢量結(jié)構(gòu)中只記錄其在特定坐標系下的坐標和屬性代碼;對于線實體,用一系列坐標對的連線表示;多邊形是指邊界完全閉合的空間區(qū)域,用一系列坐標對的連線表示。
9、“拓撲”(topology)一詞來源于希臘文,它的原意是“形狀的研究”。拓撲學是幾何學的一個分支,它研究在拓撲變換下能夠保持不變的幾何屬性——拓撲屬性(拓撲屬性:一個點在一個弧段的端點,一個點在一個區(qū)域的邊界上;非拓撲屬性:兩點之間的距離,弧段的長度,區(qū)域的周長、面積)。這種結(jié)構(gòu)應包括:唯一標識,多邊形標識,外包多邊形指針,鄰接多邊形指針,邊界鏈接,范圍(最大和最小x、y坐標值)。地理空間研究中三個重要的拓撲概念(1)連接性:弧段在結(jié)點處的相互聯(lián)接關(guān)系;(2)多邊形區(qū)域定義:多個弧段首尾相連構(gòu)成了多邊形的內(nèi)部區(qū)域;(3)鄰接性:通過定義弧段的左右邊及其方向性來判斷弧段左右多邊形的鄰接性。
10、矢量的實體錯誤——偽節(jié)點:即需要假節(jié)點進行識別的節(jié)點,發(fā)生在線和自身相連接的地方(如島狀偽結(jié)點——顯示存在一個島狀多邊形,這個多邊形處于另一個更大的多邊形內(nèi)部),或發(fā)生在兩條線沿著平行路徑而不是交叉路徑相交的地方(節(jié)點——表示線與線間連接的特殊點)。搖擺結(jié)點:有時稱為搖擺,來源于3種可能的錯誤類型:閉合失敗的多邊形;欠頭線,即結(jié)點延伸程度不夠,未與應當連接的目標相連;過頭線,結(jié)點的線超出想與之連接的實體。碎多邊形:起因于沿共同邊界線進行的不良數(shù)字化過程,在邊界線位置,線一定是不只一次地被數(shù)字化。高度不規(guī)則的國家邊境線,例如中美洲,特別容易出現(xiàn)這樣的數(shù)字變形。標注錯誤:丟失標注和重復標注。異常多邊形:具有丟失節(jié)點的多邊形。丟失的弧。
11、空間分析方法——
1、空間信息的測量:線與多邊形的測量、距離測量、形狀測量;
2、空間信息分類:范圍分級分類、鄰域功能、漫游窗口、緩沖區(qū);
3、疊加分析:多邊形疊加、點與多邊形、線與多邊形;
4、網(wǎng)絡分析:路徑分析、地址匹配、資源匹配;
5、空間統(tǒng)計分析:插值、趨勢分析、結(jié)構(gòu)分析;
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ù)關(guān)系,如時間、摩擦、消耗等,將這些用于距離測量的方法集中起來,稱為函數(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ū)、合法授權(quán)緩沖區(qū)。
17、統(tǒng)計表面——表面是含有z值的形貌,z值又稱為高度值,它的位置被一系列x和y坐標對定義且在區(qū)域范圍內(nèi)分布。z值也常被認為是高程值,但是不必局限于這一種度量。實際上,在可定義的區(qū)域內(nèi)出現(xiàn)的任意可測量的數(shù)值(例如,序數(shù)、間隔和比率數(shù)據(jù))都可以認為組成了表面。一般使用的術(shù)語是統(tǒng)計表面,因為在考慮的范圍內(nèi)z值構(gòu)成了許多要素的統(tǒng)計學的表述(robinson et al., 1995)。
18、dem——數(shù)字高程模型(digital elevation model)。地形模型不僅包含高程屬性,還包含其它的地表形態(tài)屬性,如坡度、坡向等。dem通常用地表規(guī)則網(wǎng)格單元構(gòu)成的高程矩陣表示,廣義的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ù)學方法定義、平分點間的空間并以直線相連結(jié),在點狀物體間生成多邊形的方法。
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ù)值和相關(guān)的標注。毫無疑問,網(wǎng)格單元為基礎的多邊形疊加缺乏空間準確性,因為網(wǎng)格單元很大,但是類似于簡單的點與多邊形和線與多邊形疊加的相同部分,由于它的簡單性,因此可以獲得較高的靈活程度和處理速度。
25、拓撲矢量疊加——如何決定實體間功能上的關(guān)系,如定義由特殊線相連的左右多邊形,定義線段間的關(guān)系去檢查交通流量,或依據(jù)個別實體或相關(guān)屬性搜索已選擇實體。它也為疊加多個多邊形圖層建立了一種方法,從而確保連結(jié)著每個實體的屬性能夠被考慮,并且因此使多個屬性相結(jié)合的合成多邊形能夠被支持。這種拓撲結(jié)果稱作最小公共地理單元(lcgu)。
26、矢量多邊形疊加——點與多邊形和線與多邊形疊加使用的主要問題是,線并不總是出現(xiàn)在整個區(qū)域內(nèi)。解決該問題的最強有力的辦法是讓軟件測定每組線的交叉點,這就是所謂的結(jié)點。進行矢量多邊形的疊加,其任務是基本相同的,除了必須計算重疊交叉點外,還要定義與之相聯(lián)系的多邊形線的屬性。
27、布爾疊加——一種以布爾代數(shù)為基礎的疊加操作。
28、制圖建模——用以指明應用命令組合來回答有關(guān)空間現(xiàn)象問題的處理。制圖模型是針對原始數(shù)據(jù)也包括導出數(shù)據(jù)和中間地圖數(shù)據(jù)進行一系列交互有序的地圖操作來模擬空間決策的處理。
29、地理模型的類型——類似統(tǒng)計同類的描述性模型和與推理統(tǒng)計技術(shù)相關(guān)的規(guī)則性模型。
30、常見模型——
1、注重樣式與處理的問題長時間以來用于解釋類似農(nóng)業(yè)活動與運輸成本間的關(guān)系——獨立狀態(tài)模型。
2、最初為預測工業(yè)位置點的空間分布的樣式而設計的weber模型,進行改進后可使參與者尋找最佳商業(yè)和服務位置——位置-分配模型。
3、建立在吸引力與到潛在市場的距離呈反比這一基礎上的經(jīng)濟地理模型——重力模型。
4、通過空間驗證思想如今廣泛用于生態(tài)群落,通過地理空間跟蹤動植物運動——改進擴散模型。
31、專題地圖——以表現(xiàn)某單一屬性的位置或若干選定屬性之間關(guān)系為主要目的的地圖。專題圖形設計的一般程序包括合適的符號和圖形對象的選擇、生成和放置,以明確突出研究主題的重要屬性和空間關(guān)系,同時還要考慮參考系統(tǒng)。gis專題地圖輸出的規(guī)則:不但要有精美的圖形,最重要的是去讀圖、分析地圖和理解地圖。
32、元數(shù)據(jù)——關(guān)于數(shù)據(jù)的數(shù)據(jù),對數(shù)據(jù)庫內(nèi)容的全面描述,其目的是促進數(shù)據(jù)集的高效利用和充分共享。使用元數(shù)據(jù)的理由:性能上,完整性、可擴展性、特殊性、安全性;功能上,差錯功能、瀏覽功能、程序生成。
33、聚合——將單個數(shù)據(jù)元素進行分類的大量數(shù)字處理過程。
34、克立金法——依靠地球自然表面隨距離的變化概率而確定高程的一種精確內(nèi)插方法。
35、四叉樹——一種壓縮數(shù)據(jù)結(jié)構(gòu),它把地理空間定量劃分為可變大小的網(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ù)為依托,以空間數(shù)據(jù)為基礎,以虛擬現(xiàn)實為手段的集空間數(shù)據(jù)的輸入、編輯、存儲、分析和顯示于一體的巨系統(tǒng),體由若干個子系統(tǒng)組成。
39、地理數(shù)據(jù)測量標準——命名(對數(shù)據(jù)命名,允許我們對把對象叫什么做出聲明,但不允許對兩個命名的對象進行直接比較)、序數(shù)(提供對空間對象進行邏輯對比的結(jié)果,但這種對比僅限于所談論問題的范圍內(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ù)一側(cè)有數(shù)值,而另一側(cè)每一數(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ù)字化地圖的幾何形狀和屬性結(jié)合在一起,生成輸出地圖的一種屬性數(shù)據(jù)。點與多邊形疊加:一種GIS操作,點狀地圖上的每個點被賦予點所落入的多邊形內(nèi)的屬性數(shù)據(jù)。 線與多邊形疊加:一種GIS操作,現(xiàn)狀地圖被疊加地圖上的多邊形邊界所分割,輸出地圖上每個弧段結(jié)合了來自線狀地圖和所落入多邊形的屬性。 多邊形與多邊形疊加:一種GIS操作,其輸出地圖結(jié)合了來自輸入地圖和疊加地圖的多邊形邊界,生成一套新的多邊形,每個新的多邊形攜帶了兩幅地圖的屬性。 緩沖:一種GIS操作,將落在所選地圖要素指定距離之內(nèi)的區(qū)域與之外的區(qū)域分開。相交(Intersect):一種地圖疊加方法,僅保留那些落在輸入地圖和疊加地圖共同范圍的要素。聯(lián)合(Union):保留輸入地圖和疊加地圖全部要素的一種多邊形與多邊形疊加方法。層疊置(Identity):一種地圖疊加方法,僅保留那些落在由輸入地圖定義范圍內(nèi)的要素。模糊容差:用于GIS軟件的距離容差,落在這一指定距離內(nèi)的點和線被強制捕捉到一起。 破碎多邊形:在地圖疊加中沿著兩個輸入地圖的共同邊界出現(xiàn)的極小多邊形。破碎多邊形往往來自數(shù)字化誤差。誤差傳遞:由于輸入地圖的誤差造成地圖疊加輸出中誤差的產(chǎn)生。最小制圖單元:由政府機構(gòu)或組織所指定的最小面積單元。 19.GIS空間信息基本分析方法 www.tmdps.cn 2001-6-29 遠圖開發(fā)室 地理信息系統(tǒng)(GIS)具有很強的空間信息分析功能,這是區(qū)別于計算機地圖制圖系統(tǒng)的顯著特征之一。利用空間信息分析技術(shù),通過對原始數(shù)據(jù)模型的觀察和實驗,用戶可以獲得新的經(jīng)驗和知識,并以此作為空間行為的決策依據(jù)。 空間信息分析的內(nèi)涵極為豐富。作為GIS的核心部分之一,空間信息分析在地理數(shù)據(jù)的應用中發(fā)揮著舉足輕重的作用。疊置分析(Overlay Analysis)覆蓋疊置分析是將兩層或多層地圖要素進行疊加產(chǎn)生一個新要素層的操作,其結(jié)果將原來要素分割生成新的要素,新要素綜合了原來兩層或多層要素所具有的屬性。也就是說,覆蓋疊置分析不僅生成了新的空間關(guān)系,還將輸入數(shù)據(jù)層的屬性聯(lián)系起來產(chǎn)生了新的屬性關(guān)系。覆蓋疊置分析是對新要素的屬性按一定的數(shù)學模型進行計算分析,進而產(chǎn)生用戶需要的結(jié)果或回答用戶提出的問題。1)多邊形疊置 這個過程是將兩層中的多邊形要素疊加,產(chǎn)生輸出層中的新多邊形要素,同時它們的屬性也將聯(lián)系起來,以滿足建立分析模型的需要。一般GIS軟件都提供了三種多邊形疊置: (1)多邊形之和(UNION):輸出保留了兩個輸入的所有多邊形。 (2)多邊形之積(INTERSECT):輸出保留了兩個輸入的共同覆蓋區(qū)域。 (3)多邊形疊合(IDENTITY):以一個輸入的邊界為準,而將另一個多邊形與之相匹配,輸出內(nèi)容是第一個多邊形區(qū)域內(nèi)二個輸入層所有多邊形。 多邊形疊置是個非常有用的分析功能,例如,人口普查區(qū)和校區(qū)圖疊加,結(jié)果表示了每一學校及其對應的普查區(qū),由此就可以查到作為校區(qū)新屬性的重疊普查區(qū)的人口數(shù)。2)點與多邊形疊加 點與多邊形疊加,實質(zhì)是計算包含關(guān)系。疊加的結(jié)果是為每點產(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)絡鏈中所有的分割結(jié)點上,狀態(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)求最佳路徑:由用戶確定權(quán)值關(guān)系后,即給定每條弧段的屬性,當需求最佳路徑時,讀出路徑的相關(guān)屬性,求最佳路徑。 (2)動態(tài)分段技術(shù):給定一條路徑由多段聯(lián)系組成,要求標注出這條路上的公里點或要求定位某一公路上的某一點,標注出某條路上從某一公里數(shù)到另一公里數(shù)的路段。 (3)N條最佳路徑分析:確定起點、終點,求代價較小的條路徑,因為在實踐中往往僅求出最佳路徑并不能滿足要求,可能因為某種因素不走最佳路徑,而走近似最佳路徑。 (4)最短路徑:確定起點、終點和所要經(jīng)過的中間點、中間連線,求最短路徑。 (5)動態(tài)最佳路徑分析:實際網(wǎng)絡分析中權(quán)值是隨著權(quán)值關(guān)系式變化的,而且可能會臨時出現(xiàn)一些障礙點,所以往往需要動態(tài)地計算最佳路徑。2)地址匹配 地址匹配實質(zhì)是對地理位置的查詢,它涉及到地址的編碼(Geocode)。地址匹配與其它網(wǎng)絡分析功能結(jié)合起來,可以滿足實際工作中非常復雜的分析要求。所需輸入的數(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)空間自相關(guān)分析 空間自相關(guān)分析是認識空間分布特征、選擇適宜的空間尺度來完成空間分析的最常用的方法。目前,普遍使用空間自相關(guān)系數(shù)—— MoranI指數(shù),其計算公式如下: 其中:N表示空間實體數(shù)目;xi表示空間實體的屬性值;x是xi的平均值;Wij=1表示空間實體i與j相鄰,Wij=0表示空間實體i與j不相鄰I的值介于1與I之間,I=1表示空間自正相關(guān),空間實體呈聚合分布;I=1表示空間自負相關(guān),空間實體呈離散分布;I=0則表示空間實體是隨機分布的。Wij表示實體i與j的空間關(guān)系,它通過拓撲關(guān)系獲得。3)回歸分析 回歸分析用于分析兩組或多組變量之間的相關(guān)關(guān)系,常見回歸分析方程有:線性回歸、指數(shù)回歸、對數(shù)回歸、多元回歸等。4)趨勢分析 通過數(shù)學模型模擬地理特征的空間分布與時間過程,把地理要素時空分布的實測數(shù)據(jù)點之間的不足部分內(nèi)插或預測出來。5)專家打分模型 專家打分模型將相關(guān)的影響因素按其相對重要性排隊,給出各因素所占的權(quán)重值;對每一要素內(nèi)部進行進一步分析,按其內(nèi)部的分類進行排隊,按各類對結(jié)果的影響給分,從而得到該要素內(nèi)各類別對結(jié)果的影響量,最后系統(tǒng)進行復合,得出排序結(jié)果,以表示對結(jié)果影響的優(yōu)劣程度,作為決策的依據(jù)。 專家打分模型可分二步實現(xiàn)。第一步——打分:用戶首先在每個feature的屬性表里增加一個數(shù)據(jù)項,填入專家賦給的相應的分值;第二步——復合:調(diào)用加權(quán)符合程序,根據(jù)用戶對各個feature給定的權(quán)重值進行疊加,得到最后的結(jié)果。 20.如何判斷圖形間的邏輯運算 本小節(jié)以Polyline(Polygon類似)為例, 講解如何判斷圖形間的邏輯關(guān)系,主要用到的接口是IRelationalOperator。 在本例中,使用Relational Operator 對兩個圖形進行比較,返回一個布爾值來指出這兩個圖形間是否存在特定的關(guān)系。一些關(guān)系的判斷是要求兩個圖形要有相同的維數(shù)的(如必須Polyline之間或Polygon之間),而另外一些對圖形維數(shù)就沒有太多限制。大多數(shù)已定義的關(guān)系操作符是互斥的。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ù)證明。 下面給出第一種方案的代碼: /// /// 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 構(gòu)造函數(shù) /// /// 為代理指定別名。注意該代理目前還沒有關(guān)聯(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)建了。跟是否建立了緩沖沒有關(guān)系。 /// private bool m_bCacheHasCreated; /// /// 緩沖區(qū)對象 /// public IFeatureCache FeatureCache { get { return m_featureCache; } } /// 崇德博智,扶危定傾。 2016-2017春季學期 地理信息系統(tǒng) ARCGIS 教程 制作人:防災科技學院 郭子愷 版權(quán)問題 禁止竊取 崇德博智,扶危定傾。 目錄 一、安裝----4 1.安裝程序 (1)Desktop CN 安裝過程(2)License Manager安裝過程(3)安裝漢化包 2.更改破解文件內(nèi)容并完成后續(xù)更改(1)更改破解文件(2)后續(xù)更改 二、基礎操作----19 1.進入arcgis軟件 2.arcgis新建地圖 3.連接到文件夾 4.添加底圖 5.創(chuàng)建點文件、線文件、區(qū)文件 6.添加所需工作框 7.丟失的目錄、內(nèi)容列表和搜索 8.開始編輯和停止編輯 9.放大和縮小及拖動圖層 三、繪圖----30 1.點要素 (1)選擇點的畫出形式(2)繪畫點及點的種類規(guī)劃(3)標注 (4)點的拖動更改位置 2.線要素 (1)繪制線和構(gòu)造工具的選擇(2)線段的切割 (3)線段控制點的添加(4)繪畫形式的選擇(5)線的id賦予 崇德博智,扶危定傾。 3.區(qū)要素 (1)區(qū)的繪畫和構(gòu)造工具的選擇(2)區(qū)的id賦予 四、圖件的輸出----57 1.查漏補缺 2.數(shù)據(jù)視圖改為布局視圖 3.插入圖例、比例尺和指北針 4.導出地圖 5.保存arcmap文檔 崇德博智,扶危定傾。 一、安裝 1.安裝程序(兩個主要程序及一個漢化包) 兩個主要程序安裝完成后都會彈出窗口關(guān)閉即可。 單機上圖文件夾 分別點開Desktop CN文件夾和License Manager文件夾 分別點擊此圖標進行安裝(一次只能安裝一個文件夾里的程序,無前后順序) (1)Desktop CN 安裝過程(軟件較大需耐心等待,不要點擊取消退出安裝) 點擊下一步。崇德博智,扶危定傾。 點擊我接受許可協(xié)議,然后點擊下一步。 點擊完全安裝,然后點擊下一步。崇德博智,扶危定傾。 可更改安裝目錄,無需更改則可直接點擊下一步。 可更改安裝目錄,無需更改則可直接點擊下一步。崇德博智,扶危定傾。 點擊安裝。 等待安裝。崇德博智,扶危定傾。 點擊完成。崇德博智,扶危定傾。(2)License Manager安裝過程 點擊next。 點擊I accept the license agreement,然后點擊next。崇德博智,扶危定傾。 可更改安裝目錄,或不更改然后直接點擊next。 點擊Install。崇德博智,扶危定傾。 等待安裝。 點擊Finish。崇德博智,扶危定傾。 點擊ok,安裝完成。崇德博智,扶危定傾。(3)安裝漢化包 點擊arcgis10.2破解文件 點擊該圖標進行安裝。 等待安裝完成后改程序自動退出。崇德博智,扶危定傾。 2.更改破解文件內(nèi)容并完成后續(xù)更改 (1)更改破解文件 點開文件夾 打開service文件 出現(xiàn)圖一 (圖一) 將圖二中選中部分更改為計算機全名 (圖二) 崇德博智,扶危定傾。 提示:計算機全名找到(這里以win10系統(tǒng)為例) 點擊更改設置 右鍵找到屬性并打開 將選中位置復制到service文件中要替換的位置,保存并關(guān)閉文本。崇德博智,扶危定傾。 將改好后的這兩個文件復制到Desktop CN和License Manager安裝目錄下的(2)后續(xù)更改 文件夾中。 在開始菜單中找到該圖標打開 選中標記的屬性,然后將最后一個標記改為自己的計算機全名,然后點擊確定。崇德博智,扶危定傾。 點擊確定退出。 在開始菜單中找到該圖標打開 點擊停止,然后再點擊啟動,再點擊重新讀取許可,點擊確定退出。 安裝完成。崇德博智,扶危定傾。 二、基礎操作 1.進入arcgis軟件 點擊該圖標進入arc軟件 2.arcgis新建地圖 繪圖基本窗口 點擊標記位置中新建地圖下的我的模版,然后點擊確定或回車。崇德博智,扶危定傾。 3.連接到文件夾 將光標放置在矩形標記位置目錄出彈出目錄欄。 然后單擊右鍵文件夾連接下的連接到文件夾。 提醒:為了有一個良好的繪圖習慣和遵循規(guī)律以及日后對所畫圖層的保存和備案,請先創(chuàng)建一個新的文件夾用來存放被繪圖層和后期繪制的點線面文件。例如創(chuàng)建文件名為“圖層”。崇德博智,扶危定傾。 在該圖框中找到之前創(chuàng)建好的繪圖文件夾 添加完成后如圖所示。崇德博智,扶危定傾。 4.添加底圖 拓展開圖層文件夾,將圖層.jpg文件左鍵拖入中央空白區(qū)域,添加圖層。(注意:后面創(chuàng)建的點文件、線文件、區(qū)文件也可用這種方式添加) 或者點擊該圖標。崇德博智,扶危定傾。 點擊文件夾連接。 點擊標記處進入連接好的文件夾內(nèi)。崇德博智,扶危定傾。 添加標記處的圖層或者以后創(chuàng)建的點文件、線文件、區(qū)文件。 初次添加圖層會提示構(gòu)建金字塔,單機是通過。崇德博智,扶危定傾。 圖層置入完成。崇德博智,扶危定傾。 5.創(chuàng)建點文件、線文件、區(qū)文件 如圖右鍵連接好的“圖層”文件夾,點擊光標中的shapefile。 (注意:如果出現(xiàn)下圖情況則重啟arcgis軟件則可去除該狀況) 崇德博智,扶危定傾。 出現(xiàn)圖框,根據(jù)標記中,可更改文件名稱和要素類型。 如圖所示更改所需要素,分別創(chuàng)建點、線、面要素,選擇好后點擊確定即可完成創(chuàng)建。崇德博智,扶危定傾。 如圖創(chuàng)建好的點文件、線文件、區(qū)文件在此展現(xiàn)。 6.添加所需工作框 添加四處圖標標記的工作框,為日后所需。崇德博智,扶危定傾。 7.丟失的目錄、內(nèi)容列表和搜索 若是不小心點掉三個內(nèi)容的其中一個,則可在標記處添加回來。 8.開始編輯和停止編輯 點擊開始編輯,則可開始繪圖。開始編輯后停止編輯亮起,點擊停止編輯則可以停止繪圖。(注意:標記下方有保存編輯內(nèi)容,一定要時時記得保存操作內(nèi)容,以防軟件崩潰,出現(xiàn)不可逆轉(zhuǎn)的失誤。) 崇德博智,扶危定傾。 9.放大和縮小及拖動圖層 滾輪滑動即可放大和縮小,按住滾輪下移動鼠標即可改變操作位置。崇德博智,扶危定傾。 三、繪圖 1.點要素 (1)選擇點的畫出形式 開始編輯后點擊標記位置創(chuàng)建要素,并出現(xiàn)選擇界面。 點擊選擇界面中的點文件,再在下方選擇所需要的點類型。(注意:一般只需要點,很難用到線末端的點。)崇德博智,扶危定傾。 (2)繪畫點及點的種類規(guī)劃 即可點出所需要的點。 (注意:點有很多不同類型,所以需要畫圖前對圖層進行瀏覽并分出幾種不一樣的點,對不同的點進行不同的標號,然后再同種類型的點統(tǒng)一繪畫,然后更改id,再畫下一種點,直至所有所需點都畫完。) (注意:我們所繪制的點可以分為以下幾種: 1.圖形點 2.標記點)(注意:圖形點中還存在不同的圖形,所以仍需不一樣的點給予不同的id) 如圖對標記處點文件右鍵找到屬性表。 崇德博智,扶危定傾。 屬性表如圖顯示,在標記處可看到id序列,分別對已經(jīng)畫好的第一種點賦予id-01號,然后關(guān)閉屬性表,再繪畫第二種點。 繪畫好第二種點后如上操作再賦予第二種點id-02號。 (注意:因為該圖中圖形點單一只有圓圈點一種,所以本圖只存在一種圖形點和不顯示圖形的標記點兩種,所以只需要賦予兩個id進行區(qū)分,若其他圖件存在多種圖形點,則就需要重復上面過程進行設置id號。) 崇德博智,扶危定傾。 進行id區(qū)分顯示,點擊標記處點文件右鍵打開屬性。 點擊符號系統(tǒng),然后點擊類別。 崇德博智,扶危定傾。 點擊唯一值,再點擊添加所有值,然后確定退出。 如圖,不同id顯示出來,可分別進行設置。 崇德博智,扶危定傾。 點擊該位置更改點形狀及其屬性。 單擊其中一個,出現(xiàn)符號選擇器,然后可對點的形狀和屬性進行選擇。 崇德博智,扶危定傾。 更改完成后,可看出各類id點自動改為設置好的樣式。 (3)標注 停止編輯,然后點擊標記處點文件選擇屬性表打開,點開標記處圖標。 崇德博智,扶危定傾。 點擊添加字段。 在標記名稱處輸入名稱,并在字段類型中選擇文本,然后點擊確定。 崇德博智,扶危定傾。 如圖所示文本字段“備注”顯示。 如excel一樣可對圖標進行縮短拉長,方便后續(xù)操作。 (注意:點擊編輯后才可進行屬性表中備注文字的輸入) 崇德博智,扶危定傾。 點擊屬性表標記處可看到對應點亮起,方便一一對應輸入備注文字。 輸入如下圖,完成后關(guān)閉即可。 崇德博智,扶危定傾。 然后點擊點文件右鍵選擇屬性。 進入屬性圖框后,點擊標注,然后勾選標注此圖層中的要素。 崇德博智,扶危定傾。 點擊標記處,選擇備注,再仿照word文檔中的文字更改方式對文字進行更改,如大小、顏色、加粗、傾斜等。 點擊放置屬性。 崇德博智,扶危定傾。 出現(xiàn)放置屬性圖框,先擇更改位置,可更改標注所出現(xiàn)在點的各個不同方向的位置。點擊確定后標注顯示。 標注顯示如圖。 崇德博智,扶危定傾。 (注意:如若需要標注不同大小和顏色的標注,打開標注圖框后點擊標記處。) (注意:然后點擊添加,輸入名稱后可通過更改不同名稱的標注來顯示不同的標注類型。) 崇德博智,扶危定傾。 (4)點的拖動更改位置 用鼠標點住選中的點進行拖動即可更改位置 崇德博智,扶危定傾。 2.線要素 (1)繪制線和構(gòu)造工具的選擇 選擇標注中的線文件,然后選擇下面一種類型。 (注意:線的表達方式有很多種,可根據(jù)需求利用不同的形狀線進行繪圖,以便于節(jié)省時間和提高精度。) 繪制線過程中,左鍵單擊畫出不同段的線。 崇德博智,扶危定傾。 左鍵雙擊結(jié)束所畫線。 如點的移動一樣,可用標記處的圖標,在選中線段后進行移動。 崇德博智,扶危定傾。 (2)線段的切割 通過該圖標可進行線的切割。 (3)線段控制點的添加 該圖標可在線段上增添新的控制點,改變線段形狀。 (注意:該操作是為了成圖有更好的觀賞度來改變線的彎曲度。) 崇德博智,扶危定傾。 (4)繪畫形式的選擇 圖中標注位置可更改線段繪畫中的不同繪畫形式。 標記的三種為常用類型。分別為:直線段、端點弧段、追蹤。 崇德博智,扶危定傾。 (5)線的id賦予 圖中存在多種類型的線段,同樣跟點要素一樣,可以賦予id,在一個線文件中顯示多種不同樣式的線要素。如圖,設置不同id,效仿點要素中的操作。 崇德博智,扶危定傾。 如圖,點擊屬性。 點擊符號系統(tǒng),類別,唯一值,再添加所有值,最后點擊確定退出。第五篇:arcgis教案