每個(gè)人都曾試圖在平淡的學(xué)習(xí)、工作和生活中寫一篇文章。寫作是培養(yǎng)人的觀察、聯(lián)想、想象、思維和記憶的重要手段。相信許多人會(huì)覺得范文很難寫?以下是小編為大家收集的優(yōu)秀范文,歡迎大家分享閱讀。
arcgis繪圖工具篇一
在3danalyst中-----creat/modify tin------create tin from features----添加layer---height source 高程字段
二、3d圖
生成3d的其中一個(gè)條件是你的資料中有一個(gè)高度的屬性打開arcgis中的arcscene, 導(dǎo)入數(shù)據(jù), 右選screen layers, 在當(dāng)中的properties-> base height中, 設(shè)定你的數(shù)據(jù)中的高度字段為數(shù)據(jù)高度如下
三、散點(diǎn)關(guān)系圖
tools-----graphs-----creatscatterplot matrix wizard
四、arcgis導(dǎo)出點(diǎn)xy坐標(biāo)
arctoolbox->data management tools->features->add xy coordinates工具就能自動(dòng)在屬性表中添加點(diǎn)的x,y坐標(biāo),然后將屬性表導(dǎo)出就可以了
五、由點(diǎn)坐標(biāo)生成點(diǎn)
1,先把點(diǎn)坐標(biāo)信息(一般是經(jīng)緯度)標(biāo)準(zhǔn)化,就是原來的度分秒表示的都要轉(zhuǎn)換成度表示的;
2,將數(shù)據(jù)導(dǎo)入到excel里面,總共有兩列x,y(列名可以隨便取,但必須有列名),下面對(duì)應(yīng)x,y坐標(biāo)數(shù)據(jù)即可;
3,文件。
當(dāng)然我們也可以用記事本自己編寫如下格式的文件:
x,y
86.578,46.689
87.433,45.654
保存成txt就可以了。
到這里數(shù)據(jù)的準(zhǔn)備工作完成,下面開始導(dǎo)入:
1,arcmap下面,菜單tools-add xy data…,如下圖:
坐標(biāo)系統(tǒng)處,點(diǎn)edit,import,導(dǎo)入當(dāng)前打開的坐標(biāo)系統(tǒng)即可,當(dāng)然也可以通過select選擇坐標(biāo)系統(tǒng)!如果不添加的話,默認(rèn)的是wgs84.2,點(diǎn)ok,這時(shí)會(huì)有一個(gè)提示,點(diǎn)確定即可
3,這時(shí)會(huì)形成一個(gè)新圖層,所有的點(diǎn)都添加進(jìn)來了,但現(xiàn)在添加進(jìn)來的點(diǎn)由于沒有objectid或者fid,圖層的大部分功能,如點(diǎn)的選擇,編輯,關(guān)聯(lián),屬性等操作。還需進(jìn)一步操作
4,在剛才生成的圖層上點(diǎn)右鍵,選data-expot data…,文件,這時(shí)再把導(dǎo)出的文件添加進(jìn)來即可。至此,已完成任務(wù)。
五、求多邊形幾何中心坐標(biāo)
這個(gè)需要自己計(jì)算,首先在屬性表里面加兩列x,y利用geometery calculator計(jì)算xcenter,ycenter可以獲得中心點(diǎn)的xy坐標(biāo),文件單獨(dú)復(fù)制出來,利用arcmap的display xy功能進(jìn)行顯示并且將顯示圖層輸出保存為shp文件即可,具體操作可以百度之,我這邊只提供一個(gè)大概的思路
arcgis繪圖工具篇二
1.要素的剪切與延伸
實(shí)用工具 task 任務(wù)欄 extend/trim feature 剪切所得內(nèi)容與你畫線的方向有關(guān)。
2.自動(dòng)捕捉跟蹤工具
點(diǎn)擊editor工具欄中snapping來打開snapping environment對(duì)話框
捕捉設(shè)置中有3個(gè)選項(xiàng),vertex edge end 分別是節(jié)點(diǎn)、終點(diǎn)、和邊,選擇end應(yīng)該會(huì)捕捉端點(diǎn)
3.圖斑面積計(jì)算及長(zhǎng)度計(jì)算
應(yīng)用工具calculate area 或者使用vba代碼實(shí)現(xiàn) 新建字段并開啟advanced 寫入代碼,面積計(jì)算:
dim output as double
dim parea as iarea
set parea = [shape]
在最后的一個(gè)空格里面寫入代碼(即:字段名)
長(zhǎng)度計(jì)算:
dim output as double
dim pcurve as icurve
set pcurve = [shape]
output =
4.剪切圖斑
task任務(wù)欄 cut polygon feature工具,需要sketch工具畫線輔助完成
5.配準(zhǔn)工具
spatial adjustment 工具 需要注意先要 set adjustment data 然后配準(zhǔn) 6.影像校正
georeferncing工具
7.要素變形
task 工具條中的reshape feature 配合sketch工具
8.添加節(jié)點(diǎn)
modify feature 在需要加點(diǎn)的地方右鍵單擊insert vertex
也可單擊右鍵選擇properties 打開edit sketch properties對(duì)話框,在坐標(biāo)點(diǎn)位置右鍵插入節(jié)點(diǎn)
9.共享多邊形生成
auto-complete polygon 工具生成共享邊的多邊形,配合snapping environment更好。
10.畫島圖 1).使用任務(wù)欄中的sketch工具,當(dāng)畫完外面的一圈時(shí),右鍵 選擇finish part 然后畫中間的部分 再右鍵finish sketch
2).分別畫連個(gè)圖斑然后應(yīng)用editor 工具欄中的工具先intersect(圖斑重疊的地方創(chuàng)建一個(gè)新的圖斑)然后clip(剪切)即可。(補(bǔ)充其他工具:union,把多個(gè)圖斑聯(lián)合起來并形成一個(gè)新的連接在一起的圖斑,原圖斑無變化,聯(lián)合后的圖斑不繼承原任何圖斑的屬性;merge,把多個(gè)圖斑合并到其中一個(gè)圖斑上并繼承它的屬性,原圖斑變化;split用于間斷線段,但得知道具體的長(zhǎng)度,如果不知道那么長(zhǎng)度或者沒必要那么精確就直接用eeitor工具欄的split tool工具)
11.連接外界屬性數(shù)據(jù)(如:.xsl文件等)
利用join 工具可以方便的實(shí)現(xiàn)與外界屬性數(shù)據(jù)的關(guān)聯(lián),但這種關(guān)聯(lián)是依賴于外界數(shù)據(jù)庫(kù)本身的,需經(jīng)過重新導(dǎo)出之后即完全保存在相應(yīng)圖層屬性頁(yè)。在做外聯(lián)如excel等的時(shí)候?qū)?shù)據(jù)有一些要求,確保第一行包含字段名,這些字段名不能超過十個(gè)字母,不能出現(xiàn)特殊字符。文件去除一些不兼容的內(nèi)容再連接。
轉(zhuǎn)載esri論壇lucy1114帖子說明:
12.導(dǎo)出shape格式為其他軟件識(shí)別的打印格式如jepg等格式
file/export map 然后選擇相應(yīng)的圖片格式,此時(shí)也可設(shè)置答應(yīng)的分辨率 pdi
13.建立注記層
t to ananotation ,工具條 方法三.從其他地方轉(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ù)的設(shè)置。也可以嘗試下sketch工具條中的midpoint tool 后面有詳細(xì)的講解過程。
16.根據(jù)坐標(biāo)數(shù)據(jù)生成點(diǎn)
方法一.:[工具] >>[添加xy 數(shù)據(jù)],在“添加xy 數(shù)據(jù)”窗口中,選擇已添加的
xy 數(shù)據(jù)表,指定x 坐標(biāo)字段(東經(jīng))和y 坐標(biāo)字段(北緯),按“編輯”按鈕,選擇坐標(biāo)系統(tǒng)。一般gps系統(tǒng)采用的坐標(biāo)系統(tǒng)為wgs_1984。
方法二.直接用tool工具下的add xy 可以單個(gè)加點(diǎn)
17.用任意多邊形剪切柵格數(shù)據(jù)(矢量數(shù)據(jù)轉(zhuǎn)換為柵格數(shù)據(jù))
在arccatalog下新建一個(gè)要素類(要素類型為:多邊形),命名為:
在arcmap中,加載柵格數(shù)據(jù):landuse、
打開 編輯器工具欄,開始編輯clippoly,根據(jù)要剪切的區(qū)域,繪制一個(gè)任意形狀的多 邊形。打開屬性表,修改多邊形的字段“id”的值為1,保存修改,停止編輯。
打開 空間分析工具欄
gis軟件應(yīng)用-arcgis
執(zhí)行命令:<空間分析>-<轉(zhuǎn)換>--<要素到柵格>
指定柵格大?。翰樵円羟械臇鸥駡D
層landuse 的柵格大小,這里指定為25
指定輸出柵格的名稱為路徑
執(zhí)行命令: <空間分析>-<柵格計(jì)算器>
構(gòu)造表達(dá)式:[landuse]*[polyclip4-polyclip4],執(zhí)行柵格圖層:landuse 和 用以剪切 的柵格polyclip4 之間的相乘運(yùn)算 gis軟件應(yīng)用-arcgis
得到的結(jié)果即是以任意多邊形剪切的landuse數(shù)據(jù)
18.柵格重分類(raster reclassify)
通過柵格重分類操作可以將連續(xù)柵格數(shù)據(jù)轉(zhuǎn)換為離散柵格數(shù)據(jù)
ate合并破碎多邊形
以下的操作將會(huì)把面積小于10000平方米的多邊形合并到周圍與之有最長(zhǎng)公共
邊的多邊形中:
執(zhí)行菜單命令[選擇]>>[通過屬性選擇],查詢”area”<=10000(平方米)的圖斑
被選中的多邊形以高亮方式顯示,這些小的圖斑將會(huì)被合并到與之相鄰且有最大公共邊 的多邊形。當(dāng)然也可以選擇合并到相鄰的面積最大的多邊形。
打開 arctoolbox,執(zhí)行 [消除] 命令
指定輸入圖層:tinslopef, 輸出要素類:
eliminate(合并破碎多邊形)操作原理
20.重疊要素的選擇切換
目標(biāo):在覆蓋同一區(qū)域的多個(gè)要素中切換被選擇要素
操作步驟:
1).在編輯環(huán)境中選中覆蓋同一區(qū)域的多個(gè)要素中的一個(gè)要素
2).按下n鍵,被選要素就會(huì)自動(dòng)地切換到另一個(gè)圖層的要素上去(如圖1)
3).重復(fù)操作,直到選中目標(biāo)要素為止
21.編輯時(shí)一些常用的快捷鍵
一、公共快捷鍵(對(duì)所有編輯工具有效):
在編輯未完成時(shí)按快捷鍵e切換到選擇的環(huán)境中去 z 放大 x 縮小 c 漫游 v顯示節(jié)點(diǎn) ctrl+z 撤銷ctrl+y 重做 spacebar 暫停捕捉
二、編輯工具:
shift:添加至/取消選擇 ctrl:移動(dòng)選擇錨 n:下一個(gè)被選要素
三、用于edit工具的與注記相關(guān)的快捷鍵:
e:在sketch工具、edit工具和edit annotation工具間切換;
四、edit annotation工具:
shift:添加至/取消選擇 ctrl:移動(dòng)選擇錨 n:下一個(gè)被選要素 r:切換至旋轉(zhuǎn)模式/從旋轉(zhuǎn)模式切換 f:切換至要素模式/從要素模式切換
e:在sketch工具、edit工具和edit annotation工具間切換 l:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度
o:在跟蹤要素模式下打開follow feature options 對(duì)話框
tab:在跟蹤要素模式下對(duì)注記放置的位置進(jìn)行左右邊的切換
p:在跟蹤要素模式下對(duì)注記放置的角度進(jìn)行平行和垂直方向的切換。
e:在sketch工具、edit工具和edit annotation工具間切換 l:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度
o:在跟蹤要素模式下打開follow feature options 對(duì)話框
tab:在跟蹤要素模式下對(duì)注記放置的位置進(jìn)行左右邊的切換
p:在跟蹤要素模式下對(duì)注記放置的角度進(jìn)行平行和垂直方向的切換。
五、sketch工具:
ctrl+a:方位 ctrl+f:偏轉(zhuǎn) ctrl+l:長(zhǎng)度 ctrl+d:x,y增量 ctrl+g:方位/長(zhǎng)度 ctrl+p:平行 ctrl+e:垂直 ctrl+t:切線 ctrl+delete:刪除草圖 f2:完成草圖 f6:絕對(duì)x,y坐標(biāo) f7:線段偏轉(zhuǎn) t:顯示容限 已經(jīng)輸入的命令可以通過esc取消。
六.鼠標(biāo)操作技巧
i.在使用【pan】工具時(shí),鼠標(biāo)單擊處將位于地圖的中心。
ii.在使用【zoom in / zoom out / pan】工具時(shí),按f6鍵可以循序在這3個(gè)工具間切換
iii.在toc中按住alt鍵,并單擊圖層,等效于縮放到圖層(zoom to layer)
22.對(duì)線要素標(biāo)注的增強(qiáng)
(對(duì)線要素進(jìn)行標(biāo)注時(shí),如果標(biāo)注在線上,標(biāo)注和線會(huì)疊加顯示,效果不理想,下面叫介紹一種可以在顯示標(biāo)注的地方把線斷開的方法,這樣效果會(huì)美觀一些)
操作步驟:
1).把標(biāo)注轉(zhuǎn)成注記,保存在gdb中
2). 用arctoolbox中的制圖工具cartography tools->masking tools->intersecting layer masks,為注記創(chuàng)建模版,模版的大小用參數(shù)margin來決定
3).右鍵點(diǎn)擊數(shù)據(jù)框,在環(huán)境菜單中選擇高級(jí)繪制選項(xiàng)(advanced drawing options),用注記的模版圖層去遮蓋線圖層,確定
23.同一圖層使用clip實(shí)現(xiàn)圖斑的無縫拼接
當(dāng)一個(gè)圖斑的邊界確定,需要實(shí)現(xiàn)兩個(gè)圖斑的無縫拼接時(shí),可以把圖斑拉伸覆蓋確定邊界的圖斑的一部分,然后用下面的圖斑剪區(qū)上面的圖斑。
方法二:圖斑之間有小的縫隙,可以先在縫隙上任意補(bǔ)畫一個(gè)圖斑,然后合并(merge)圖斑,最后再剪切(clip)即可得到無縫的圖斑。
如下圖所示:
24.利用兩個(gè)相交圖斑創(chuàng)建新圖斑。
兩個(gè)圖斑都選中然后 eidtor 工具條intersect,此方法原圖斑不會(huì)被接切。
25.屬性表中選擇集與非選擇集的切換
options/switch selection
26.快速把選擇的要素另存為一個(gè)圖層并加載進(jìn)來。
先選責(zé)需要另存圖層的要素(直接選擇或者屬性表),然后在圖層上右鍵selection/create layer from selected features。
(以前都是直接export竟然沒有發(fā)現(xiàn))
27.利用hyperlinks豐富數(shù)據(jù)庫(kù),為其添加超鏈接。
單擊rowse工具欄中identify按鈕。單擊地圖中一個(gè)要素,在identify results窗口右擊需要設(shè)置超鏈接的要素,然后點(diǎn)擊add hyperlink菜單。若要將一個(gè)web頁(yè)加為超鏈接,單擊項(xiàng),并輸入url。要鏈接到一個(gè)文檔,單擊link to a document,并輸入文檔路徑名。單擊tools工具欄中的hyperlink工具,并單擊圖上某一個(gè)要素即可實(shí)現(xiàn)。
使用一個(gè)屬性字段作為超鏈 在內(nèi)容表中右擊包含一個(gè)超鏈接字段的圖層,然后點(diǎn)擊properties ,單擊display選項(xiàng)卡。選中supprt inks using field選項(xiàng),單擊下拉箭頭并點(diǎn)擊一個(gè)字段。單擊document or url。單擊ok,單擊tools中的hyperlink按鈕,將鼠標(biāo)指移到一要素上并單擊以顯示其超鏈接。
中的sql語(yǔ)言
當(dāng)查詢arcinfo coverages, shape文件, info表以及dbase表時(shí),sql表達(dá)式中的字段名必須用雙引號(hào)擴(kuò)起。如:“area”,如果查詢的是個(gè)人地理數(shù)據(jù)庫(kù)數(shù)據(jù),則需要將字段名包含在方括號(hào)內(nèi),如:[area],如果查詢的是arcsde地理數(shù)據(jù)庫(kù)數(shù)據(jù)或是arcims要素類或arcims影象服務(wù)子層中的數(shù)據(jù),則不需要將字段名括起,如:area
有些運(yùn)算符和關(guān)鍵字也可能有所變化。
在查詢表達(dá)式中,字符串必須加單引號(hào),例如:
[state_name]=‘california’ 除個(gè)人地理數(shù)據(jù)庫(kù)要素類和表之外,查詢表達(dá)式中的字符串是區(qū)分字母大小寫的。如果搜索不需要區(qū)分大小寫,可以使用sql函數(shù)將所有的值都轉(zhuǎn)換成大寫或者小寫。對(duì)于基于文件的數(shù)據(jù)源,例如shape文件或coverages,既可以使用upper函數(shù),也可以使用lower函數(shù)。
例如下面這個(gè)查詢將選出那些姓名的最后為jones或jones的顧客。
upper(“l(fā)ast_name”)= 'jones'
可以用like運(yùn)算符(不是 = 運(yùn)算符)與通配符一起構(gòu)建部分字符串查詢。
例如,表達(dá)式 [state_name] like 'miss*'將在美國(guó)州名中選擇mississippi和missouri。
*表示多個(gè)字符。
還比如,查詢表達(dá)式 [owner_name] like '?atherine smith' 將找出catherine smith和katherine smith。
?表示單個(gè)字符。通配符的使用依賴于不同的數(shù)據(jù)庫(kù)。例子中使用的通配符只適用于個(gè)人地理數(shù)據(jù)庫(kù)。
可以使用null關(guān)鍵字來選擇那些在指定字段中值為null的要素和記錄。通常,null關(guān)鍵字的前面總有is或is not。
by location小結(jié)
按位置查找要素的方法
使用按位置選擇(select by location)對(duì)話框,可以根據(jù)要素間的相對(duì)空間位置進(jìn)行查找??梢允褂枚喾N方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點(diǎn)、線、多邊形等要素。
被?跨越邊界(are crossed by the outline of)
利用這種方法,選擇被另一圖層要素覆蓋的某個(gè)圖層上的要素。例如,搜索道路跨越的荒地,得到的結(jié)果是道路跨越其邊界的所有荒地。
相交(intersect)
與are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結(jié)果將包括該道路在其邊界范圍之內(nèi)或在其邊界之上的所有荒地。
在?距離范圍內(nèi)(are within a distance of)
這一方法將選擇同一圖層或不同圖層上相鄰或鄰近的要素。例如,現(xiàn)有一個(gè)包括清潔井和污染井的圖層,使用該方法可以找出距離污染井500米范圍內(nèi)的所有清潔井。同樣,也可以找出距離污染井500米范圍內(nèi)其他圖層上的水庫(kù)和農(nóng)田。還可以用該選項(xiàng)選擇與其他要素相毗鄰的要素。例如,假如用戶已選定了公司可能購(gòu)買的地塊,現(xiàn)在想獲取鄰近地塊的信息。這種情況下,利用該選項(xiàng)選擇選中地塊零距離范圍內(nèi)的所有地塊即可。
中心在?里(have their center in)
這種方法選擇某一圖層上的要素,其中心點(diǎn)落在另一圖層要素中。
完全在?內(nèi)(are completely within)
這種方法選擇完全落在另一圖層多邊形內(nèi)部的某一圖層上的要素,例如,選擇林區(qū)里面的湖泊。通過指定一個(gè)緩沖距離,可以選擇落于多邊形內(nèi)部并距離多邊形邊界一定范圍內(nèi)的所有要素。例如,選擇林區(qū)內(nèi)部500米范圍內(nèi)的湖泊。
完全包含(completely contain)
這種方法選擇某一圖層上完全包含另一圖層上的要素的多邊形。例如,選擇內(nèi)部包含湖泊的林區(qū)。通過指定一個(gè)緩沖距離,可以選擇在其內(nèi)部一定范圍內(nèi)包含要素的多邊形。例如,對(duì)湖泊做緩沖區(qū),可以選擇距離湖泊500米范圍內(nèi)的林區(qū)。
與?有公共線段(share a line segment with)
這種方法選擇那些與其他要素具有公共線段、頂點(diǎn)或節(jié)點(diǎn)的要素。
與?等同(are identical to)
這種方法選擇與另一圖層中某一要素具有同樣幾何形狀的所有要素。這時(shí),要素類型必須相同。舉個(gè)例子:必須用多邊形選擇多邊形,用線段選擇線段,用點(diǎn)選擇點(diǎn)。
包含(contain)
這種方法選擇某一圖層中包含另一圖層中要素的要素。這種方法與完全包含(completely contain)方法的區(qū)別在于:要素間的邊界可以接觸。例如,使用包含(contain)方法,即使湖泊的邊界和包含該湖泊的森林的邊界接觸,森林也會(huì)被選中。但是在用完全包含(completely contain)方法時(shí),森林是不會(huì)選中的。
包含于(are contained by)
這種方法選擇某一圖層中被另一圖層中要素包含的要素。例如,選擇被鄉(xiāng)村包圍的城市。這種方法和完全包含于(are completely within)方法的區(qū)別在于,要素的邊界可以接觸。
與?接觸(touch the boundary of)
如果使用包含線的圖層來選擇要素,則該方法將選擇那些與此圖層里的線有公共線段,頂點(diǎn)或端點(diǎn)(節(jié)點(diǎn))的線和多邊形要素。如果跨越了線,則這些線和多邊形將不會(huì)被選中。
如果使用包含多邊形的圖層來選擇要素,則該方法將選擇那些與此圖層里的多邊形邊界有公共線段或頂點(diǎn)的線和多邊形要素。如果跨越了多邊形邊界,則這些線和多邊形將不會(huì)被選中。
31.將選中的要素放大至整個(gè)窗口
在內(nèi)容表中右擊包含選中要素的圖層,單擊selection菜單,并單擊zoom to selected features子菜單。
選中要素將放大至整個(gè)arcmap窗口。
32.顯示選中要素的屬性
在內(nèi)容表中右擊選中要素所在圖層,單擊open attribute table,單擊show selected records。
窗口中顯示出選中要素的屬性記錄。也可以打開屬性表在select和all之間切換。
33.通過單擊要素添加文本
1).在內(nèi)容表中,右擊需要添加標(biāo)注的圖層,單擊properties。
2).單擊labels選項(xiàng)卡。
3).單擊label field下拉箭頭,單擊作為標(biāo)注的字段。
4).單擊ok。5).單擊draw工具條上的label按鈕。應(yīng)該是只需單擊下拉箭頭選擇label按鈕。
6).單擊place label at position clicked。如果選擇了automatically find best placement,arcmap會(huì)自動(dòng)的為標(biāo)注尋找合適的位置。
7).單擊choose a style,然后單擊需要的標(biāo)注樣式。
8).在需要標(biāo)注的要素上單擊鼠標(biāo),標(biāo)注就添加上去了。
(先在draw工具條下新建標(biāo)注組方便管理,new annotation group)
34.標(biāo)注工具條和標(biāo)注管理器
如果圖層中有一些要素需要指定特殊的標(biāo)注屬性,需要在標(biāo)注管理器中生成其它的標(biāo)注類。
點(diǎn)擊左側(cè)面板上的一個(gè)圖層,在右側(cè)面板上為其添加一個(gè)新的標(biāo)注類。
個(gè)人認(rèn)為此方法雖然沒有轉(zhuǎn)為注記后的標(biāo)注靈活,但卻可以方便的實(shí)現(xiàn)自動(dòng)相對(duì)智能化的標(biāo)注,相比之下更省心,提高效率。35.在進(jìn)行地圖查詢或編輯的時(shí)候?yàn)槭裁磿?huì)總是選中所有的圖層
訣竅在這里(雖然是一點(diǎn)點(diǎn)小問題,但當(dāng)我第一次遇到這個(gè)問題時(shí)卻花費(fèi)了我不少時(shí)間,甚至于懷疑自己的數(shù)據(jù)有問題)
36.建立拓?fù)潢P(guān)系檢查圖斑
先根據(jù)需要在catalog中建立相應(yīng)的拓?fù)潢P(guān)系規(guī)則,然后在arcmap中進(jìn)行拓?fù)涮幚恚o助工具條topolygon,下圖所示為重疊圖斑檢查。(也可以在arctoolbox下的data management tools/topology來做)
有關(guān)geodatabase的topology規(guī)則
多邊形topology
1).must not overlay:?jiǎn)我仡?,多邊形要素相互不能重疊
2).must not have gaps:?jiǎn)我仡?,連續(xù)連接的多邊形區(qū)域中間不能有空白區(qū)(非數(shù)據(jù)區(qū))
3).contains point:多邊形+點(diǎn),多邊形要素類的每個(gè)要素的邊界以內(nèi)必須包含點(diǎn)層中至少一個(gè)點(diǎn)
4).boundary must be covered by:多邊形+線,多邊形層的邊界與線層重疊(線層可以有非重疊的更多要素)
5).must be covered by feature class of:多邊形+多邊形,第一個(gè)多邊形層必須被第二個(gè)完全覆蓋(省與全國(guó)的關(guān)系)
6).must be covered by:多邊形+多邊形,第一個(gè)多邊形層必須把第二個(gè)完全覆蓋(全國(guó)與省的關(guān)系)
7).must not overlay with:多邊形+多邊形,兩個(gè)多邊形層的多邊形不能存在一對(duì)相互覆蓋的要素
8).must cover each other:多邊形+多邊形,兩個(gè)多邊形的要素必須完全重疊
9).area boundary must be covered by boundary of:多邊形+多邊形,第一個(gè)多邊形的各要素必須為第二個(gè)的一個(gè)或幾個(gè)多邊形完全覆蓋
10).must be properly inside polygons:點(diǎn)+多邊形,點(diǎn)層的要素必須全部在多邊形內(nèi)
11).must be covered by boundary of:點(diǎn)+多邊形,點(diǎn)必須在多邊形的邊界上
線topology
1).must not have dangle:線,不能有懸掛節(jié)點(diǎn)
2).must not have pseudo-node:線,不能有偽節(jié)點(diǎn)
3).must not overlay:線,不能有線重合(不同要素間)
4).must not self overlay:線,一個(gè)要素不能自覆蓋
5).must not intersect:線,不能有線交叉(不同要素間)
6).must not self intersect:線,不能有線自交叉
7).must not intersect or touch interrior:線,不能有相交和重疊
8).must be single part:線,一個(gè)線要素只能由一個(gè)path組成 9).must not covered with:線+線,兩層線不能重疊
10).must be covered by feature class of:線+線,兩層線完全重疊
11).endpoint must be covered by:線+點(diǎn),線層中的終點(diǎn)必須和點(diǎn)層的部分(或全部)點(diǎn)重合
12).must be covered by boundary of:線+多邊形,線被多邊形邊界重疊
13).must be covered by endpoint of:點(diǎn)+線,點(diǎn)被線終點(diǎn)完全重合
14).point must be covered by line:點(diǎn)+線,點(diǎn)都在線上
topology工具條及功能介紹:
37.給多個(gè)要素同一賦值
選中你需要同一賦值的是所有圖斑,然后點(diǎn)擊atrributes,此時(shí)出現(xiàn)屬性修改對(duì)話框,點(diǎn)擊根目錄是對(duì)所有要素同一賦值,點(diǎn)擊下面的支目錄則可以分別賦值。(也可以用字段計(jì)算器實(shí)現(xiàn))38.如何根據(jù)確定的點(diǎn)畫出以他相應(yīng)的點(diǎn)
例如:我在地圖上已經(jīng)指導(dǎo)了一個(gè)一直點(diǎn),而其他的點(diǎn)在地圖上都是以他為中心畫出來的。學(xué)校
se60度,140米
意思是學(xué)校在中心點(diǎn)南偏東60度,距離是140米,這樣的點(diǎn)在arcmap中怎么加呢?我的方法有二分別如下。
1).確定已有一個(gè)點(diǎn)圖層,其中有學(xué)校,然后:
對(duì)該圖層開始編輯
選擇工具欄editor---direction-distance tool
以中心點(diǎn)為中心,先畫角度線(arcmap左下角會(huì)有角度提示),再畫距離/半徑(注:畫的過程中點(diǎn)擊a鍵可以輸入角度值,點(diǎn)擊d鍵可以輸入距離值)
確定,即可
如果找不到direction-distance tool 的同志請(qǐng)看下面
direction-distance tool is here
第二種方法就是直接編寫代碼實(shí)現(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 = (0)
dim pfcsr as ifeaturecursor
dim pft as ifeature
set pfcsr = (nothing, false)
set pft = ature
dim ppoint as ipoint
set ppoint = opy
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 = feature
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 = pnewpoint
next
set pflyr = nothing
set pfcsr = nothing
set pft = nothing
set ppoint = nothing
set pnewpoint = nothing end sub sub bbb()
'定義新加三個(gè)點(diǎn)的角度和距離
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
這中方法做起來需要一點(diǎn)編程經(jīng)驗(yàn),但是比上面那中一個(gè)一個(gè)的畫的方法要先進(jìn)多了,可以把所有的點(diǎn)錄入同時(shí)畫出來。
如果你不會(huì)vba編程,請(qǐng)看下面:
這是arcgis vba的程序,運(yùn)行的方法:
1),運(yùn)行arcmap,加載所需圖層; 2),tools菜單/macros(宏)/visual basic editor(vb編輯器),這樣打開vb編輯器
3),雙擊打開vb編輯器左上工程資源管理器中的project/arcmap對(duì)象/thisdocument,把上面的代碼粘進(jìn)去。注意看首行
option explicit如果有兩行,就刪除一行。
4),點(diǎn)擊vb編輯器工具欄的運(yùn)行按鈕運(yùn)行(或菜單 運(yùn)行/運(yùn)行子過程),就可以了,再激活arcmap可以看到發(fā)生了什么!
或者還有一種創(chuàng)建宏的方法(不過建議對(duì)arcgis vba不大熟的同志不要用這種方法):
1),運(yùn)行arcmap,加載所需圖層;
2),tools菜單/macros(宏)/macros,這樣打開宏編輯器
3),在宏名稱中輸入aaa,確定后,會(huì)打開vb編輯器,將看到有一個(gè)aaa的過程,沒有實(shí)體。你把上面的aaa過程中的代碼粘進(jìn)去,然后在前面加上 option explicit(這個(gè)別重復(fù)了哈)
dim dpoint(2, 1)as double 就可以。
4),點(diǎn)擊vb編輯器工具欄的運(yùn)行按鈕運(yùn)行(或菜單 運(yùn)行/運(yùn)行子過程),就可以了,再激活arcmap可以看到發(fā)生了什么!
39.這里說道了工具的使用,那么就簡(jiǎn)單的再介紹下sketch中的幾個(gè)工具吧
sketch construction tools的使用:
sketch tool:主要是用來創(chuàng)造線和面特征的節(jié)點(diǎn),在你完成了草圖之后,arcmap就會(huì)增加最后的線段,形成矢量圖。
arc tool:這個(gè)主要是幫你創(chuàng)造一個(gè)弧段的,選中這個(gè)工具后,先在弧段起點(diǎn)點(diǎn)一下,然后在弧段高度方向大致位置點(diǎn)一下(這個(gè)點(diǎn)是不可見的,只是給你確定弧段的高度),最后在弧段的終點(diǎn)點(diǎn)一下,就形成一條弧段了。direction-distance tool:這個(gè)主要是從已知某一個(gè)方向和某一個(gè)距離來確定一個(gè)點(diǎn)。首先點(diǎn)一個(gè)已知方向的點(diǎn),這是會(huì)有一條線出來,你確定好方向后,再點(diǎn)已知距離的點(diǎn),這是出來一個(gè)圓,確定距離后,直線和圓有交點(diǎn),這就是你要的點(diǎn),再上面點(diǎn)一下就ok!
distance-distance tool:這個(gè)和上面的一樣的道理,只是它都用距離來確定一個(gè)點(diǎn),也就是兩個(gè)圓確定你要的點(diǎn)。
endpoint arc tool:這也是創(chuàng)造弧段用的,與arc tool 工具不同的是,它是先在弧段的起點(diǎn)點(diǎn)一下,然后在弧段的終點(diǎn)點(diǎn)一下,再點(diǎn)一個(gè)點(diǎn)確定弧段的半徑。個(gè)人認(rèn)為這個(gè)工具要比arc tool工具更精確些。
intersection tool:就是利用兩條直線確定一個(gè)點(diǎn)。很簡(jiǎn)單一用就會(huì)!
midpoint tool:確定中點(diǎn)的工具,比如馬路的中點(diǎn),你可以先點(diǎn)一邊,再點(diǎn)馬路另一邊,這時(shí)馬路的中點(diǎn)自動(dòng)出現(xiàn)了。(畫道路中線太可以試試,不過得是直線道路咯,^_^)
tangent tool:相切弧段工具,它能夠在一條線段上畫出一條切線,只有你用其他工具畫了線段出來時(shí)你才可以用這個(gè)工具。
trace tool: 主要是用來在跟蹤已存在的特征,比如一棟房子,你要沿房子外圍畫一條線(比如圍墻),那么你使用這個(gè)工具就非常方便,首先開始時(shí)你必須按o鍵,設(shè)置下跟蹤的間距,如100,其中還有三個(gè)角點(diǎn)的方式:mitered是直角 bevelled 是鈍角rounded是圓角。(感覺那效果有點(diǎn)像cad的偏移咯)
40.如何標(biāo)注多個(gè)字段的屬性及分子式標(biāo)注
propertis/label field /expression
實(shí)例:“
輸出分?jǐn)?shù)線 vbcrlf 換行
效果圖:
引用gis空間站 兔八哥文章詳解
以前用arcgis label一般也就在圖層的properties里面定義一下label字體大小和粗細(xì)。這兩天遇到一個(gè)問題,需要在label中顯示多個(gè)字段的內(nèi)容,比如blockname和companyname。其實(shí)這個(gè)本來不是很難的問題,因?yàn)閘abel中支持vbscript,使用[blockname] & vbnewline & [companyname]。就可以實(shí)現(xiàn)標(biāo)注中第一行顯示blockname,第二行顯示companyname.現(xiàn)在問題出來了,出圖時(shí)候希望突出blockname效果,希望加粗顯示,而companyname使用一般字體??紤]了很長(zhǎng)時(shí)間終于從arcgis幫助中找到了相關(guān)的內(nèi)容,原來label的vbscript里面支持類似于html的vbscript標(biāo)簽,比如加粗就是用
除了加粗,arcgis中還支持下面的文本格式標(biāo)簽: font:
“
“
“
“
“
underline:
“
“” & [labelfield] & “”
small caps:
“
superscript
“” & [labelfield] & “”
subscript:
“” & [labelfield] & “”
character spacing(%):
“
word spacing(%):
“
leading(pts):
“ 需要注意的是,使用這些標(biāo)簽后,生成的label語(yǔ)句在verify按鈕中是不生效的,只對(duì)最終的顯示結(jié)果生效。其實(shí)問題還沒有最終解決,使用vbnewline生成的顯示結(jié)果,上下兩行缺省時(shí)居中對(duì)齊,現(xiàn)在希望它們左對(duì)齊顯示,還沒找到辦法。還有一個(gè)問題,就是arcgis中對(duì)點(diǎn)的label可以選擇label的位置,而對(duì)面沒有,缺省是放置在中間,現(xiàn)在希望放置在左上角,還沒有找到該怎么辦。 下面是一個(gè)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 = ” & [objectid]&strrightspace& [shape_area] end function ”"&chr(13)&chr(10)& 41.用點(diǎn)構(gòu)面 arctoolbox->samples->data management->features->create features from text file 點(diǎn)組成面,最重要的是點(diǎn)序的排列,因此對(duì)數(shù)據(jù)的組織有一定的要求。 42.幾個(gè)常用的vba代碼 在arcgis屬性表中增加需要的字段,并自動(dòng)賦值 使用方法 1打開屬性表,選擇計(jì)算的字段,右點(diǎn)選擇calculate values;2.選擇“是”,進(jìn)入field calculator; 2選擇advance選項(xiàng); 在pre-logic vba script code編輯框中輸入vba代碼; 4在下面編輯框中輸入賦值部分.1--點(diǎn)坐標(biāo)x vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppoint as ipoint set ppoint = pgeo 賦值部分: ppoint.x 2--點(diǎn)坐標(biāo)y vba部分: 同上 賦值部分: ppoint.y 坐標(biāo)值為文件存儲(chǔ)的固有值,和是否使用on the fly坐標(biāo)表示無關(guān)。返回當(dāng)前顯示的坐標(biāo)值參看8,9 3--多邊形周長(zhǎng) vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolygon as ipolygon set ppolygon = pgeo 賦值部分: 4--多邊形面積 vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolygon as ipolygon set ppolygon = pgeo dim parea as iarea set parea = ppolygon 賦值部分: 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 = id 賦值部分: ppoint.x 6--多邊形重心y vba部分: 同上 賦值部分: ppoint.y 7--polyline長(zhǎng)度 vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolyline as ipolyline set ppolyline = pgeo dim pcurve as ipolycurve set pcurve = ppolyline 賦值部分: 8--表示點(diǎn)坐標(biāo)x vba部分: dim pdoc as imxdocument set pdoc = thisdocument dim pspref as ispatialreference set pspref = lreference dim pclone as iclone set pclone = [shape] dim pgeo as igeometry set pgeo = dim ppoint as ipoint set ppoint = pgeo t pspref 賦值部分: ppoint.x 9--表示點(diǎn)坐標(biāo)y vba部分: 同上 賦值部分: ppoint.y 坐標(biāo)值為on the fly顯示的坐標(biāo),不是文件存儲(chǔ)的固有坐標(biāo) 10--連續(xù)編號(hào) vba部分: static lcount as long lcount=lcount+1 賦值部分: lcount(從1開始) lcount-1(從0開始) 計(jì)算面的中點(diǎn) arcgis中的工具總結(jié) 1.要素的剪切與延伸 實(shí)用工具 task 任務(wù)欄 extend/trim feature 剪切所得內(nèi)容與你畫線的方向有關(guān)。 2.自動(dòng)捕捉跟蹤工具 點(diǎn)擊editor工具欄中snapping來打開snapping environment對(duì)話框 捕捉設(shè)置中有3個(gè)選項(xiàng),vertex edge end 分別是節(jié)點(diǎn)、終點(diǎn)、和邊,選擇end應(yīng)該會(huì)捕捉端點(diǎn) 3.圖斑面積計(jì)算及長(zhǎng)度計(jì)算 應(yīng)用工具calculate area 或者使用vba代碼實(shí)現(xiàn) 新建字段并開啟advanced 寫入代碼,面積計(jì)算: dim output as double dim parea as iarea set parea = [shape] 在最后的一個(gè)空格里面寫入代碼(即:字段名) 長(zhǎng)度計(jì)算: dim output as double dim pcurve as icurve set pcurve = [shape] output = 4.剪切圖斑 task任務(wù)欄 cut polygon feature工具,需要sketch工具畫線輔助完成 5.配準(zhǔn)工具 spatial adjustment 工具 需要注意先要 set adjustment data 然后配準(zhǔn) 6.影像校正 georeferncing工具 7.要素變形 task 工具條中的reshape feature 配合sketch工具 8.添加節(jié)點(diǎn) modify feature 在需要加點(diǎn)的地方右鍵單擊insert vertex 也可單擊右鍵選擇properties 打開edit sketch properties對(duì)話框,在坐標(biāo)點(diǎn)位置右鍵插入節(jié)點(diǎn) 9.共享多邊形生成 auto-complete polygon 工具生成共享邊的多邊形,配合snapping environment更好。 10.畫島圖 1).使用任務(wù)欄中的sketch工具,當(dāng)畫完外面的一圈時(shí),右鍵 選擇finish part 然后畫中間的部分 再右鍵finish sketch 2).分別畫連個(gè)圖斑然后應(yīng)用editor 工具欄中的工具先intersect(圖斑重疊的地方創(chuàng)建一個(gè)新的圖斑)然后clip(剪切)即可。(補(bǔ)充其他工具:union,把多個(gè)圖斑聯(lián)合起來并形成一個(gè)新的連接在一起的圖斑,原圖斑無變化,聯(lián)合后的圖斑不繼承原任何圖斑的屬性;merge,把多個(gè)圖斑合并到其中一個(gè)圖斑上并繼承它的屬性,原圖斑變化;split用于間斷線段,但得知道具體的長(zhǎng)度,如果不知道那么長(zhǎng)度或者沒必要那么精確就直接用eeitor工具欄的split tool工具) 11.連接外界屬性數(shù)據(jù)(如:.xsl文件等) 利用join 工具可以方便的實(shí)現(xiàn)與外界屬性數(shù)據(jù)的關(guān)聯(lián),但這種關(guān)聯(lián)是依賴于外界數(shù)據(jù)庫(kù)本身的,需經(jīng)過重新導(dǎo)出之后即完全保存在相應(yīng)圖層屬性頁(yè)。在做外聯(lián)如excel等的時(shí)候?qū)?shù)據(jù)有一些要求,確保第一行包含字段名,這些字段名不能超過十個(gè)字母,不能出現(xiàn)特殊字符。文件去除一些不兼容的內(nèi)容再連接。 轉(zhuǎn)載esri論壇lucy1114帖子說明: 12.導(dǎo)出shape格式為其他軟件識(shí)別的打印格式如jepg等格式 file/export map 然后選擇相應(yīng)的圖片格式,此時(shí)也可設(shè)置答應(yīng)的分辨率 pdi 13.建立注記層 t to ananotation ,工具條 方法三.從其他地方轉(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ù)的設(shè)置。也可以嘗試下sketch工具條中的midpoint tool 后面有詳細(xì)的講解過程。 16.根據(jù)坐標(biāo)數(shù)據(jù)生成點(diǎn) 方法一.:[工具] >>[添加xy 數(shù)據(jù)],在“添加xy 數(shù)據(jù)”窗口中,選擇已添加的 xy 數(shù)據(jù)表,指定x 坐標(biāo)字段(東經(jīng))和y 坐標(biāo)字段(北緯),按“編輯”按鈕,選擇坐標(biāo)系統(tǒng)。一般gps系統(tǒng)采用的坐標(biāo)系統(tǒng)為wgs_1984。 方法二.直接用tool工具下的add xy 可以單個(gè)加點(diǎn) 17.用任意多邊形剪切柵格數(shù)據(jù)(矢量數(shù)據(jù)轉(zhuǎn)換為柵格數(shù)據(jù)) 在arccatalog下新建一個(gè)要素類(要素類型為:多邊形),命名為: 在arcmap中,加載柵格數(shù)據(jù):landuse、 打開 編輯器工具欄,開始編輯clippoly,根據(jù)要剪切的區(qū)域,繪制一個(gè)任意形狀的多 邊形。打開屬性表,修改多邊形的字段“id”的值為1,保存修改,停止編輯。 打開 空間分析工具欄 gis軟件應(yīng)用-arcgis 執(zhí)行命令:<空間分析>-<轉(zhuǎn)換>--<要素到柵格> 指定柵格大小:查詢要剪切的柵格圖 層landuse 的柵格大小,這里指定為25 指定輸出柵格的名稱為路徑 執(zhí)行命令: <空間分析>-<柵格計(jì)算器> 構(gòu)造表達(dá)式:[landuse]*[polyclip4-polyclip4],執(zhí)行柵格圖層:landuse 和 用以剪切 的柵格polyclip4 之間的相乘運(yùn)算 gis軟件應(yīng)用-arcgis 得到的結(jié)果即是以任意多邊形剪切的landuse數(shù)據(jù) 18.柵格重分類(raster reclassify) 通過柵格重分類操作可以將連續(xù)柵格數(shù)據(jù)轉(zhuǎn)換為離散柵格數(shù)據(jù) ate合并破碎多邊形 以下的操作將會(huì)把面積小于10000平方米的多邊形合并到周圍與之有最長(zhǎng)公共 邊的多邊形中: 執(zhí)行菜單命令[選擇]>>[通過屬性選擇],查詢”area”<=10000(平方米)的圖斑 被選中的多邊形以高亮方式顯示,這些小的圖斑將會(huì)被合并到與之相鄰且有最大公共邊 的多邊形。當(dāng)然也可以選擇合并到相鄰的面積最大的多邊形。 打開 arctoolbox,執(zhí)行 [消除] 命令 指定輸入圖層:tinslopef, 輸出要素類: eliminate(合并破碎多邊形)操作原理 20.重疊要素的選擇切換 目標(biāo):在覆蓋同一區(qū)域的多個(gè)要素中切換被選擇要素 操作步驟: 1).在編輯環(huán)境中選中覆蓋同一區(qū)域的多個(gè)要素中的一個(gè)要素 2).按下n鍵,被選要素就會(huì)自動(dòng)地切換到另一個(gè)圖層的要素上去(如圖1) 3).重復(fù)操作,直到選中目標(biāo)要素為止 21.編輯時(shí)一些常用的快捷鍵 一、公共快捷鍵(對(duì)所有編輯工具有效): 在編輯未完成時(shí)按快捷鍵e切換到選擇的環(huán)境中去 z 放大 x 縮小 c 漫游 v顯示節(jié)點(diǎn) ctrl+z 撤銷ctrl+y 重做 spacebar 暫停捕捉 二、編輯工具: shift:添加至/取消選擇 ctrl:移動(dòng)選擇錨 n:下一個(gè)被選要素 三、用于edit工具的與注記相關(guān)的快捷鍵: e:在sketch工具、edit工具和edit annotation工具間切換; 四、edit annotation工具: shift:添加至/取消選擇 ctrl:移動(dòng)選擇錨 n:下一個(gè)被選要素 r:切換至旋轉(zhuǎn)模式/從旋轉(zhuǎn)模式切換 f:切換至要素模式/從要素模式切換 e:在sketch工具、edit工具和edit annotation工具間切換 l:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度 o:在跟蹤要素模式下打開follow feature options 對(duì)話框 tab:在跟蹤要素模式下對(duì)注記放置的位置進(jìn)行左右邊的切換 p:在跟蹤要素模式下對(duì)注記放置的角度進(jìn)行平行和垂直方向的切換。 e:在sketch工具、edit工具和edit annotation工具間切換 l:在跟蹤要素模式下將選中的注記要素旋轉(zhuǎn)180度 o:在跟蹤要素模式下打開follow feature options 對(duì)話框 tab:在跟蹤要素模式下對(duì)注記放置的位置進(jìn)行左右邊的切換 p:在跟蹤要素模式下對(duì)注記放置的角度進(jìn)行平行和垂直方向的切換。 五、sketch工具: ctrl+a:方位 ctrl+f:偏轉(zhuǎn) ctrl+l:長(zhǎng)度 ctrl+d:x,y增量 ctrl+g:方位/長(zhǎng)度 ctrl+p:平行 ctrl+e:垂直 ctrl+t:切線 ctrl+delete:刪除草圖 f2:完成草圖 f6:絕對(duì)x,y坐標(biāo) f7:線段偏轉(zhuǎn) t:顯示容限 已經(jīng)輸入的命令可以通過esc取消。 六.鼠標(biāo)操作技巧 i.在使用【pan】工具時(shí),鼠標(biāo)單擊處將位于地圖的中心。 ii.在使用【zoom in / zoom out / pan】工具時(shí),按f6鍵可以循序在這3個(gè)工具間切換 iii.在toc中按住alt鍵,并單擊圖層,等效于縮放到圖層(zoom to layer) 22.對(duì)線要素標(biāo)注的增強(qiáng) (對(duì)線要素進(jìn)行標(biāo)注時(shí),如果標(biāo)注在線上,標(biāo)注和線會(huì)疊加顯示,效果不理想,下面叫介紹一種可以在顯示標(biāo)注的地方把線斷開的方法,這樣效果會(huì)美觀一些) 操作步驟: 1).把標(biāo)注轉(zhuǎn)成注記,保存在gdb中 2). 用arctoolbox中的制圖工具cartography tools->masking tools->intersecting layer masks,為注記創(chuàng)建模版,模版的大小用參數(shù)margin來決定 3).右鍵點(diǎn)擊數(shù)據(jù)框,在環(huán)境菜單中選擇高級(jí)繪制選項(xiàng)(advanced drawing options),用注記的模版圖層去遮蓋線圖層,確定 23.同一圖層使用clip實(shí)現(xiàn)圖斑的無縫拼接 當(dāng)一個(gè)圖斑的邊界確定,需要實(shí)現(xiàn)兩個(gè)圖斑的無縫拼接時(shí),可以把圖斑拉伸覆蓋確定邊界的圖斑的一部分,然后用下面的圖斑剪區(qū)上面的圖斑。 方法二:圖斑之間有小的縫隙,可以先在縫隙上任意補(bǔ)畫一個(gè)圖斑,然后合并(merge)圖斑,最后再剪切(clip)即可得到無縫的圖斑。 如下圖所示: 24.利用兩個(gè)相交圖斑創(chuàng)建新圖斑。 兩個(gè)圖斑都選中然后 eidtor 工具條intersect,此方法原圖斑不會(huì)被接切。 25.屬性表中選擇集與非選擇集的切換 options/switch selection 26.快速把選擇的要素另存為一個(gè)圖層并加載進(jìn)來。 先選責(zé)需要另存圖層的要素(直接選擇或者屬性表),然后在圖層上右鍵selection/create layer from selected features。 (以前都是直接export竟然沒有發(fā)現(xiàn)) 27.利用hyperlinks豐富數(shù)據(jù)庫(kù),為其添加超鏈接。 單擊rowse工具欄中identify按鈕。單擊地圖中一個(gè)要素,在identify results窗口右擊需要設(shè)置超鏈接的要素,然后點(diǎn)擊add hyperlink菜單。若要將一個(gè)web頁(yè)加為超鏈接,單擊項(xiàng),并輸入url。要鏈接到一個(gè)文檔,單擊link to a document,并輸入文檔路徑名。單擊tools工具欄中的hyperlink工具,并單擊圖上某一個(gè)要素即可實(shí)現(xiàn)。 使用一個(gè)屬性字段作為超鏈 在內(nèi)容表中右擊包含一個(gè)超鏈接字段的圖層,然后點(diǎn)擊properties ,單擊display選項(xiàng)卡。選中supprt inks using field選項(xiàng),單擊下拉箭頭并點(diǎn)擊一個(gè)字段。單擊document or url。單擊ok,單擊tools中的hyperlink按鈕,將鼠標(biāo)指移到一要素上并單擊以顯示其超鏈接。 中的sql語(yǔ)言 當(dāng)查詢arcinfocoverages, shape文件, info表以及dbase表時(shí),sql表達(dá)式中的字段名必須用雙引號(hào)擴(kuò)起。如:“area”,如果查詢的是個(gè)人地理數(shù)據(jù)庫(kù)數(shù)據(jù),則需要將字段名包含在方括號(hào)內(nèi),如:[area],如果查詢的是arcsde地理數(shù)據(jù)庫(kù)數(shù)據(jù)或是arcims要素類或arcims影象服務(wù)子層中的數(shù)據(jù),則不需要將字段名括起,如:area 有些運(yùn)算符和關(guān)鍵字也可能有所變化。 在查詢表達(dá)式中,字符串必須加單引號(hào),例如: [state_name]=‘california’ 除個(gè)人地理數(shù)據(jù)庫(kù)要素類和表之外,查詢表達(dá)式中的字符串是區(qū)分字母大小寫的。如果搜索不需要區(qū)分大小寫,可以使用sql函數(shù)將所有的值都轉(zhuǎn)換成大寫或者小寫。對(duì)于基于文件的數(shù)據(jù)源,例如shape文件或coverages,既可以使用upper函數(shù),也可以使用lower函數(shù)。 例如下面這個(gè)查詢將選出那些姓名的最后為jones或jones的顧客。 upper(“l(fā)ast_name”)= 'jones' 可以用like運(yùn)算符(不是 = 運(yùn)算符)與通配符一起構(gòu)建部分字符串查詢。 例如,表達(dá)式 [state_name] like 'miss*'將在美國(guó)州名中選擇mississippi和missouri。 *表示多個(gè)字符。 還比如,查詢表達(dá)式 [owner_name] like '?atherine smith' 將找出catherine smith和katherine smith。 ?表示單個(gè)字符。通配符的使用依賴于不同的數(shù)據(jù)庫(kù)。例子中使用的通配符只適用于個(gè)人地理數(shù)據(jù)庫(kù)。 可以使用null關(guān)鍵字來選擇那些在指定字段中值為null的要素和記錄。通常,null關(guān)鍵字的前面總有is或is not。 by location小結(jié) 按位置查找要素的方法 使用按位置選擇(select by location)對(duì)話框,可以根據(jù)要素間的相對(duì)空間位置進(jìn)行查找??梢允褂枚喾N方法,查找在同一圖層中或不同圖層間相互鄰近或疊置的點(diǎn)、線、多邊形等要素。 被…跨越邊界(are crossed by the outline of) 利用這種方法,選擇被另一圖層要素覆蓋的某個(gè)圖層上的要素。例如,搜索道路跨越的荒地,得到的結(jié)果是道路跨越其邊界的所有荒地。 相交(intersect) 與are crossed by the outline of類似,但是該方法可以選擇與參照要素接連的要素。例如,選擇與道路相交的荒地,選擇的結(jié)果將包括該道路在其邊界范圍之內(nèi)或在其邊界之上的所有荒地。 在…距離范圍內(nèi)(are within a distance of) 這一方法將選擇同一圖層或不同圖層上相鄰或鄰近的要素。例如,現(xiàn)有一個(gè)包括清潔井和污染井的圖層,使用該方法可以找出距離污染井500米范圍內(nèi)的所有清潔井。同樣,也可以找出距離污染井500米范圍內(nèi)其他圖層上的水庫(kù)和農(nóng)田。還可以用該選項(xiàng)選擇與其他要素相毗鄰的要素。例如,假如用戶已選定了公司可能購(gòu)買的地塊,現(xiàn)在想獲取鄰近地塊的信息。這種情況下,利用該選項(xiàng)選擇選中地塊零距離范圍內(nèi)的所有地塊即可。 中心在…里(have their center in) 這種方法選擇某一圖層上的要素,其中心點(diǎn)落在另一圖層要素中。 完全在…內(nèi)(are completely within) 這種方法選擇完全落在另一圖層多邊形內(nèi)部的某一圖層上的要素,例如,選擇林區(qū)里面的湖泊。通過指定一個(gè)緩沖距離,可以選擇落于多邊形內(nèi)部并距離多邊形邊界一定范圍內(nèi)的所有要素。例如,選擇林區(qū)內(nèi)部500米范圍內(nèi)的湖泊。 完全包含(completely contain) 這種方法選擇某一圖層上完全包含另一圖層上的要素的多邊形。例如,選擇內(nèi)部包含湖泊的林區(qū)。通過指定一個(gè)緩沖距離,可以選擇在其內(nèi)部一定范圍內(nèi)包含要素的多邊形。例如,對(duì)湖泊做緩沖區(qū),可以選擇距離湖泊500米范圍內(nèi)的林區(qū)。 與…有公共線段(share a line segment with) 這種方法選擇那些與其他要素具有公共線段、頂點(diǎn)或節(jié)點(diǎn)的要素。 與…等同(are identical to) 這種方法選擇與另一圖層中某一要素具有同樣幾何形狀的所有要素。這時(shí),要素類型必須相同。舉個(gè)例子:必須用多邊形選擇多邊形,用線段選擇線段,用點(diǎn)選擇點(diǎn)。 包含(contain) 這種方法選擇某一圖層中包含另一圖層中要素的要素。這種方法與完全包含(completely contain)方法的區(qū)別在于:要素間的邊界可以接觸。例如,使用包含(contain)方法,即使湖泊的邊界和包含該湖泊的森林的邊界接觸,森林也會(huì)被選中。但是在用完全包含(completely contain)方法時(shí),森林是不會(huì)選中的。 包含于(are contained by) 這種方法選擇某一圖層中被另一圖層中要素包含的要素。例如,選擇被鄉(xiāng)村包圍的城市。這種方法和完全包含于(are completely within)方法的區(qū)別在于,要素的邊界可以接觸。 與…接觸(touch the boundary of) 如果使用包含線的圖層來選擇要素,則該方法將選擇那些與此圖層里的線有公共線段,頂點(diǎn)或端點(diǎn)(節(jié)點(diǎn))的線和多邊形要素。如果跨越了線,則這些線和多邊形將不會(huì)被選中。 如果使用包含多邊形的圖層來選擇要素,則該方法將選擇那些與此圖層里的多邊形邊界有公共線段或頂點(diǎn)的線和多邊形要素。如果跨越了多邊形邊界,則這些線和多邊形將不會(huì)被選中。 31.將選中的要素放大至整個(gè)窗口 在內(nèi)容表中右擊包含選中要素的圖層,單擊selection菜單,并單擊zoom to selected features子菜單。 選中要素將放大至整個(gè)arcmap窗口。 32.顯示選中要素的屬性 在內(nèi)容表中右擊選中要素所在圖層,單擊open attribute table,單擊show selected records。 窗口中顯示出選中要素的屬性記錄。也可以打開屬性表在select和all之間切換。 33.通過單擊要素添加文本 1).在內(nèi)容表中,右擊需要添加標(biāo)注的圖層,單擊properties。 2).單擊labels選項(xiàng)卡。 3).單擊label field下拉箭頭,單擊作為標(biāo)注的字段。 4).單擊ok。 5).單擊draw工具條上的label按鈕。應(yīng)該是只需單擊下拉箭頭選擇label按鈕。 6).單擊place label at position clicked。如果選擇了automatically find best placement,arcmap會(huì)自動(dòng)的為標(biāo)注尋找合適的位置。 7).單擊choose a style,然后單擊需要的標(biāo)注樣式。 8).在需要標(biāo)注的要素上單擊鼠標(biāo),標(biāo)注就添加上去了。 (先在draw工具條下新建標(biāo)注組方便管理,new annotation group) 34.標(biāo)注工具條和標(biāo)注管理器 如果圖層中有一些要素需要指定特殊的標(biāo)注屬性,需要在標(biāo)注管理器中生成其它的標(biāo)注類。 點(diǎn)擊左側(cè)面板上的一個(gè)圖層,在右側(cè)面板上為其添加一個(gè)新的標(biāo)注類。 個(gè)人認(rèn)為此方法雖然沒有轉(zhuǎn)為注記后的標(biāo)注靈活,但卻可以方便的實(shí)現(xiàn)自動(dòng)相對(duì)智能化的標(biāo)注,相比之下更省心,提高效率。 35.在進(jìn)行地圖查詢或編輯的時(shí)候?yàn)槭裁磿?huì)總是選中所有的圖層 訣竅在這里(雖然是一點(diǎn)點(diǎn)小問題,但當(dāng)我第一次遇到這個(gè)問題時(shí)卻花費(fèi)了我不少時(shí)間,甚至于懷疑自己的數(shù)據(jù)有問題) 36.建立拓?fù)潢P(guān)系檢查圖斑 先根據(jù)需要在catalog中建立相應(yīng)的拓?fù)潢P(guān)系規(guī)則,然后在arcmap中進(jìn)行拓?fù)涮幚?,輔助工具條topolygon,下圖所示為重疊圖斑檢查。(也可以在arctoolbox下的data management tools/topology來做) 有關(guān)geodatabase的topology規(guī)則 多邊形topology 1).must not overlay:?jiǎn)我仡?,多邊形要素相互不能重疊 2).must not have gaps:?jiǎn)我仡?,連續(xù)連接的多邊形區(qū)域中間不能有空白區(qū)(非數(shù)據(jù)區(qū)) 3).contains point:多邊形+點(diǎn),多邊形要素類的每個(gè)要素的邊界以內(nèi)必須包含點(diǎn)層中至少一個(gè)點(diǎn) 4).boundary must be covered by:多邊形+線,多邊形層的邊界與線層重疊(線層可以有非重疊的更多要素) 5).must be covered by feature class of:多邊形+多邊形,第一個(gè)多邊形層必須被第二個(gè)完全覆蓋(省與全國(guó)的關(guān)系) 6).must be covered by:多邊形+多邊形,第一個(gè)多邊形層必須把第二個(gè)完全覆蓋(全國(guó)與省的關(guān)系) 7).must not overlay with:多邊形+多邊形,兩個(gè)多邊形層的多邊形不能存在一對(duì)相互覆蓋的要素 8).must cover each other:多邊形+多邊形,兩個(gè)多邊形的要素必須完全重疊 9).area boundary must be covered by boundary of:多邊形+多邊形,第一個(gè)多邊形的各要素必須為第二個(gè)的一個(gè)或幾個(gè)多邊形完全覆蓋 10).must be properly inside polygons:點(diǎn)+多邊形,點(diǎn)層的要素必須全部在多邊形內(nèi) 11).must be covered by boundary of:點(diǎn)+多邊形,點(diǎn)必須在多邊形的邊界上 線topology 1).must not have dangle:線,不能有懸掛節(jié)點(diǎn) 2).must not have pseudo-node:線,不能有偽節(jié)點(diǎn) 3).must not overlay:線,不能有線重合(不同要素間) 4).must not self overlay:線,一個(gè)要素不能自覆蓋 5).must not intersect:線,不能有線交叉(不同要素間) 6).must not self intersect:線,不能有線自交叉 7).must not intersect or touch interrior:線,不能有相交和重疊 8).must be single part:線,一個(gè)線要素只能由一個(gè)path組成 9).must not covered with:線+線,兩層線不能重疊 10).must be covered by feature class of:線+線,兩層線完全重疊 11).endpoint must be covered by:線+點(diǎn),線層中的終點(diǎn)必須和點(diǎn)層的部分(或全部)點(diǎn)重合 12).must be covered by boundary of:線+多邊形,線被多邊形邊界重疊 13).must be covered by endpoint of:點(diǎn)+線,點(diǎn)被線終點(diǎn)完全重合 14).point must be covered by line:點(diǎn)+線,點(diǎn)都在線上 topology工具條及功能介紹: 37.給多個(gè)要素同一賦值 選中你需要同一賦值的是所有圖斑,然后點(diǎn)擊atrributes,此時(shí)出現(xiàn)屬性修改對(duì)話框,點(diǎn)擊根目錄是對(duì)所有要素同一賦值,點(diǎn)擊下面的支目錄則可以分別賦值。(也可以用字段計(jì)算器實(shí)現(xiàn)) 38.如何根據(jù)確定的點(diǎn)畫出以他相應(yīng)的點(diǎn) 例如:我在地圖上已經(jīng)指導(dǎo)了一個(gè)一直點(diǎn),而其他的點(diǎn)在地圖上都是以他為中心畫出來的。學(xué)校 se60度,140米 意思是學(xué)校在中心點(diǎn)南偏東60度,距離是140米,這樣的點(diǎn)在arcmap中怎么加呢?我的方法有二分別如下。 1).確定已有一個(gè)點(diǎn)圖層,其中有學(xué)校,然后: 對(duì)該圖層開始編輯 選擇工具欄editor---direction-distance tool 以中心點(diǎn)為中心,先畫角度線(arcmap左下角會(huì)有角度提示),再畫距離/半徑(注:畫的過程中點(diǎn)擊a鍵可以輸入角度值,點(diǎn)擊d鍵可以輸入距離值) 確定,即可 如果找不到direction-distance tool 的同志請(qǐng)看下面 direction-distance tool is here 第二種方法就是直接編寫代碼實(shí)現(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 = (0) dim pfcsr as ifeaturecursor dim pft as ifeature set pfcsr = (nothing, false) set pft = ature dim ppoint as ipoint set ppoint = opy 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 = feature 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 = pnewpoint next set pflyr = nothing set pfcsr = nothing set pft = nothing set ppoint = nothing set pnewpoint = nothing end sub subbbb() '定義新加三個(gè)點(diǎn)的角度和距離 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 這中方法做起來需要一點(diǎn)編程經(jīng)驗(yàn),但是比上面那中一個(gè)一個(gè)的畫的方法要先進(jìn)多了,可以把所有的點(diǎn)錄入同時(shí)畫出來。 如果你不會(huì)vba編程,請(qǐng)看下面: 這是arcgis vba的程序,運(yùn)行的方法: 1),運(yùn)行arcmap,加載所需圖層; 2),tools菜單/macros(宏)/visual basic editor(vb編輯器),這樣打開vb編輯器 3),雙擊打開vb編輯器左上工程資源管理器中的project/arcmap對(duì)象/thisdocument,把上面的代碼粘進(jìn)去。注意看首行 option explicit如果有兩行,就刪除一行。 4),點(diǎn)擊vb編輯器工具欄的運(yùn)行按鈕運(yùn)行(或菜單 運(yùn)行/運(yùn)行子過程),就可以了,再激活arcmap可以看到發(fā)生了什么! 或者還有一種創(chuàng)建宏的方法(不過建議對(duì)arcgis vba不大熟的同志不要用這種方法): 1),運(yùn)行arcmap,加載所需圖層; 2),tools菜單/macros(宏)/macros,這樣打開宏編輯器 3),在宏名稱中輸入aaa,確定后,會(huì)打開vb編輯器,將看到有一個(gè)aaa的過程,沒有實(shí)體。你把上面的aaa過程中的代碼粘進(jìn)去,然后在前面加上 option explicit(這個(gè)別重復(fù)了哈) dim dpoint(2, 1)as double 就可以。 4),點(diǎn)擊vb編輯器工具欄的運(yùn)行按鈕運(yùn)行(或菜單 運(yùn)行/運(yùn)行子過程),就可以了,再激活arcmap可以看到發(fā)生了什么! 39.這里說道了工具的使用,那么就簡(jiǎn)單的再介紹下sketch中的幾個(gè)工具吧 sketch construction tools的使用: sketch tool:主要是用來創(chuàng)造線和面特征的節(jié)點(diǎn),在你完成了草圖之后,arcmap就會(huì)增加最后的線段,形成矢量圖。 arc tool:這個(gè)主要是幫你創(chuàng)造一個(gè)弧段的,選中這個(gè)工具后,先在弧段起點(diǎn)點(diǎn)一下,然后在弧段高度方向大致位置點(diǎn)一下(這個(gè)點(diǎn)是不可見的,只是給你確定弧段的高度),最后在弧段的終點(diǎn)點(diǎn)一下,就形成一條弧段了。 direction-distance tool:這個(gè)主要是從已知某一個(gè)方向和某一個(gè)距離來確定一個(gè)點(diǎn)。首先點(diǎn)一個(gè)已知方向的點(diǎn),這是會(huì)有一條線出來,你確定好方向后,再點(diǎn)已知距離的點(diǎn),這是出來一個(gè)圓,確定距離后,直線和圓有交點(diǎn),這就是你要的點(diǎn),再上面點(diǎn)一下就ok! distance-distance tool:這個(gè)和上面的一樣的道理,只是它都用距離來確定一個(gè)點(diǎn),也就是兩個(gè)圓確定你要的點(diǎn)。 endpoint arc tool:這也是創(chuàng)造弧段用的,與arc tool 工具不同的是,它是先在弧段的起點(diǎn)點(diǎn)一下,然后在弧段的終點(diǎn)點(diǎn)一下,再點(diǎn)一個(gè)點(diǎn)確定弧段的半徑。個(gè)人認(rèn)為這個(gè)工具要比arc tool工具更精確些。 intersection tool:就是利用兩條直線確定一個(gè)點(diǎn)。很簡(jiǎn)單一用就會(huì)! midpoint tool:確定中點(diǎn)的工具,比如馬路的中點(diǎn),你可以先點(diǎn)一邊,再點(diǎn)馬路另一邊,這時(shí)馬路的中點(diǎn)自動(dòng)出現(xiàn)了。(畫道路中線太可以試試,不過得是直線道路咯,^_^) tangent tool:相切弧段工具,它能夠在一條線段上畫出一條切線,只有你用其他工具畫了線段出來時(shí)你才可以用這個(gè)工具。 trace tool: 主要是用來在跟蹤已存在的特征,比如一棟房子,你要沿房子外圍畫一條線(比如圍墻),那么你使用這個(gè)工具就非常方便,首先開始時(shí)你必須按o鍵,設(shè)置下跟蹤的間距,如100,其中還有三個(gè)角點(diǎn)的方式:mitered是直角 bevelled 是鈍角rounded是圓角。(感覺那效果有點(diǎn)像cad的偏移咯) 40.如何標(biāo)注多個(gè)字段的屬性及分子式標(biāo)注 propertis/label field /expression 實(shí)例:“ 輸出分?jǐn)?shù)線 vbcrlf 換行 效果圖: 引用gis空間站 兔八哥文章詳解 以前用arcgis label一般也就在圖層的properties里面定義一下label字體大小和粗細(xì)。這兩天遇到一個(gè)問題,需要在label中顯示多個(gè)字段的內(nèi)容,比如blockname和companyname。其實(shí)這個(gè)本來不是很難的問題,因?yàn)閘abel中支持vbscript,使用[blockname] &vbnewline& [companyname]。就可以實(shí)現(xiàn)標(biāo)注中第一行顯示blockname,第二行顯示companyname.現(xiàn)在問題出來了,出圖時(shí)候希望突出blockname效果,希望加粗顯示,而companyname使用一般字體??紤]了很長(zhǎng)時(shí)間終于從arcgis幫助中找到了相關(guān)的內(nèi)容,原來label的vbscript里面支持類似于html的vbscript標(biāo)簽,比如加粗就是用 除了加粗,arcgis中還支持下面的文本格式標(biāo)簽: font: “ color: “ “ bold: “ italic: “ underline: “ all caps: “” & [labelfield] & “” small caps: “ superscript “” & [labelfield] & “” subscript: “” & [labelfield] & “” character spacing(%): “ word spacing(%): “ leading(pts): “ 需要注意的是,使用這些標(biāo)簽后,生成的label語(yǔ)句在verify按鈕中是不生效的,只對(duì)最終的顯示結(jié)果生效。 其實(shí)問題還沒有最終解決,使用vbnewline生成的顯示結(jié)果,上下兩行缺省時(shí)居中對(duì)齊,現(xiàn)在希望它們左對(duì)齊顯示,還沒找到辦法。還有一個(gè)問題,就是arcgis中對(duì)點(diǎn)的label可以選擇label的位置,而對(duì)面沒有,缺省是放置在中間,現(xiàn)在希望放置在左上角,還沒有找到該怎么辦。 下面是一個(gè)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.用點(diǎn)構(gòu)面 arctoolbox->samples->data management->features->create features from text file 點(diǎn)組成面,最重要的是點(diǎn)序的排列,因此對(duì)數(shù)據(jù)的組織有一定的要求。 42.幾個(gè)常用的vba代碼 在arcgis屬性表中增加需要的字段,并自動(dòng)賦值 使用方法 1打開屬性表,選擇計(jì)算的字段,右點(diǎn)選擇calculate values;2.選擇“是”,進(jìn)入field calculator; 2選擇advance選項(xiàng); 在pre-logic vba script code編輯框中輸入vba代碼; 4在下面編輯框中輸入賦值部分.1--點(diǎn)坐標(biāo)x vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppoint as ipoint set ppoint = pgeo 賦值部分: ppoint.x 2--點(diǎn)坐標(biāo)y vba部分: 同上 賦值部分: ppoint.y 坐標(biāo)值為文件存儲(chǔ)的固有值,和是否使用on the fly坐標(biāo)表示無關(guān)。返回當(dāng)前顯示的坐標(biāo)值參看8,9 3--多邊形周長(zhǎng) vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolygon as ipolygon set ppolygon = pgeo 賦值部分: 4--多邊形面積 vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolygon as ipolygon set ppolygon = pgeo dim parea as iarea set parea = ppolygon 賦值部分: 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 = id 賦值部分: ppoint.x 6--多邊形重心y vba部分: 同上 賦值部分: ppoint.y 7--polyline長(zhǎng)度 vba部分: dim pgeo as igeometry set pgeo = [shape] dim ppolyline as ipolyline set ppolyline = pgeo dim pcurve as ipolycurve set pcurve = ppolyline 賦值部分: 8--表示點(diǎn)坐標(biāo)x vba部分: dim pdoc as imxdocument set pdoc = thisdocument dim pspref as ispatialreference set pspref = lreference dim pclone as iclone set pclone = [shape] dim pgeo as igeometry set pgeo = dim ppoint as ipoint set ppoint = pgeo tpspref 賦值部分: ppoint.x 9--表示點(diǎn)坐標(biāo)y vba部分: 同上 賦值部分: ppoint.y 坐標(biāo)值為on the fly顯示的坐標(biāo),不是文件存儲(chǔ)的固有坐標(biāo) 10--連續(xù)編號(hào) vba部分: static lcount as long lcount=lcount+1 賦值部分: lcount(從1開始) lcount-1(從0開始) 計(jì)算面的中點(diǎn) dim output as double dim parea as iarea set parea = [shape] output = id.x(或y) 當(dāng)然這是很老的方法了,現(xiàn)在arcgis9.2以后都不需要用vba啦,右鍵屬性表字段然后直接選擇 caculate geometry就可以實(shí)現(xiàn)比如面積計(jì)算,x,y坐標(biāo)等的屬性賦值了咯。 43.在同一圖層如何對(duì)同一要素的不同部分以不同的符號(hào)表示 (注:要實(shí)現(xiàn)這種渲染需要兩段具有不同的屬性)44.自己做arcmap的圖例 在symbol property editor中進(jìn)行制作了 1)、先在style manager中的左側(cè)列表中,選擇相應(yīng)的style文件,文件,當(dāng)然也給出了c:documents and settings........................................目錄下用于用戶自定義的style文件 2)、展開style文件,選擇要?jiǎng)?chuàng)建symbol的類型,如:fill symbol(面填充)、line symbol(線)、marker symbol(點(diǎn))然后在右側(cè)的列表中鼠標(biāo)右鍵->new 3)、在彈出的symbol property editor窗體中,進(jìn)一步選擇marker symbol的類型,如:simple marker symbol、picture marker symbol等等 4)、這個(gè)時(shí)候就要根據(jù)需要開始設(shè)計(jì)符號(hào)的各種屬性了,由于不同種類的marker symbol有不同的屬性,因此,屬性也會(huì)不盡相同。 5)、另外介紹一個(gè)經(jīng)常需要或比較使用的步驟,我們需要設(shè)計(jì)的符號(hào)可以由esri提供的現(xiàn)有符號(hào)組合而成,那么我們則需要添加2個(gè)symbol layer,然后進(jìn)行2個(gè)symbol layer的疊加 6)、分別設(shè)置上述2個(gè)symbol layer的中的symbol的屬性,之后確認(rèn)保存,這樣會(huì)在style manager中看到我們新制作的符號(hào) 如圖: (注:以上內(nèi)容轉(zhuǎn)載自esri社區(qū) gis27) 45.計(jì)算屬性中相同的字段個(gè)數(shù) 選擇要計(jì)算的字段然后右鍵選擇summarize根據(jù)相應(yīng)的要求設(shè)置參數(shù)即可實(shí)現(xiàn)。功能示意如下圖: 46.自動(dòng)提取面的中點(diǎn)并加點(diǎn) arctoolbox->feature-> feature to point 47.合并屬性相同的相鄰圖斑 使用dissolve 當(dāng)選擇了create multipart feature時(shí),所有具有相同屬性的圖斑將鏈接在一起做為一個(gè)圖斑。 48.提取圖斑轉(zhuǎn)折點(diǎn)坐標(biāo) 如果沒有偽節(jié)點(diǎn)那么,選中一個(gè)線或者面,打開sketch properties,就可以看到節(jié)點(diǎn)坐標(biāo)。 還有一種方法就是:通過toolbox-datamanagement-feature-featureverticestopoints得到轉(zhuǎn)折點(diǎn)的圖層然后add xy coordinates,該點(diǎn)圖層的屬性表中就包含了x,y字段,將其導(dǎo)出,就得到轉(zhuǎn)折點(diǎn)坐標(biāo)了。 相對(duì)路徑 復(fù)制拷貝地圖文檔后再次打開會(huì)遇到圖層前一個(gè)!的標(biāo)識(shí)符號(hào),是因?yàn)榧虞d圖層的相對(duì)路徑變化了,需要重新指定圖層位置。文檔設(shè)置為相對(duì)路徑起到作用,具體做法如下: (1)file-->document properties-->打開對(duì)話框中,點(diǎn)擊data source options...按鈕; (2)選中store relative path names to data sources單選框,并勾選make relative paths the defalut of...前的復(fù)選框。 以上兩步操作即可。 在dissolve時(shí),出現(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 m: 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 it is possible that tool outputs may be strange or incorrect because one or more features in the input feature class have geometry 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 es with problems can be fixed in one of two ways: editing the feature class with the geometry problem, and fixing each individual problem of these problems, like non-simple geometry, can be fixed by double-clicking the feature in the editor and saving the g 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)了負(fù)值,想必是數(shù)據(jù)轉(zhuǎn)換的時(shí)候出現(xiàn)了問題。今天在論壇求證了一下,感謝各位的解答。 arcgis默認(rèn)順時(shí)針圖形為正,手工畫polygon的時(shí)候不管怎么畫結(jié)果都是順時(shí)針的。所以一般負(fù)值的出現(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后會(huì)自動(dòng)修復(fù)錯(cuò)誤,已解決。 此外,repair工具只能修復(fù)以下五種錯(cuò)誤: null geometry—the feature will be deleted from the feature segment—the geometry's short segment will be ect ring ordering—the geometry will be updated to have correct ring ect segment orientation—the geometry will be updated to have correct segment intersections—the geometry's segments that intersect will be split at their ed rings—the unclosed rings will be parts—the parts that are null or empty will be deleted.更多的錯(cuò)誤修復(fù)參照幫助中的 how to salvage a corrupt shapefile 米3 崇德博智,扶危定傾。 2016-2017春季學(xué)期 地理信息系統(tǒng) arcgis 教程 制作人:防災(zāi)科技學(xué)院 郭子愷 版權(quán)問題 禁止竊取 崇德博智,扶危定傾。 目錄 一、安裝----4 1.安裝程序 (1)desktop cn 安裝過程(2)license manager安裝過程(3)安裝漢化包 2.更改破解文件內(nèi)容并完成后續(xù)更改(1)更改破解文件(2)后續(xù)更改 二、基礎(chǔ)操作----19 1.進(jìn)入arcgis軟件 新建地圖 3.連接到文件夾 4.添加底圖 5.創(chuàng)建點(diǎn)文件、線文件、區(qū)文件 6.添加所需工作框 7.丟失的目錄、內(nèi)容列表和搜索 8.開始編輯和停止編輯 9.放大和縮小及拖動(dòng)圖層 三、繪圖----30 1.點(diǎn)要素 (1)選擇點(diǎn)的畫出形式(2)繪畫點(diǎn)及點(diǎn)的種類規(guī)劃(3)標(biāo)注 (4)點(diǎn)的拖動(dòng)更改位置 2.線要素 (1)繪制線和構(gòu)造工具的選擇(2)線段的切割 (3)線段控制點(diǎn)的添加(4)繪畫形式的選擇(5)線的id賦予 崇德博智,扶危定傾。 3.區(qū)要素 (1)區(qū)的繪畫和構(gòu)造工具的選擇(2)區(qū)的id賦予 四、圖件的輸出----57 1.查漏補(bǔ)缺 2.數(shù)據(jù)視圖改為布局視圖 3.插入圖例、比例尺和指北針 4.導(dǎo)出地圖 5.保存arcmap文檔 崇德博智,扶危定傾。 一、安裝 1.安裝程序(兩個(gè)主要程序及一個(gè)漢化包) 兩個(gè)主要程序安裝完成后都會(huì)彈出窗口關(guān)閉即可。 單機(jī)上圖文件夾 分別點(diǎn)開desktop cn文件夾和license manager文件夾 分別點(diǎn)擊此圖標(biāo)進(jìn)行安裝(一次只能安裝一個(gè)文件夾里的程序,無前后順序) (1)desktop cn 安裝過程(軟件較大需耐心等待,不要點(diǎn)擊取消退出安裝) 點(diǎn)擊下一步。崇德博智,扶危定傾。 點(diǎn)擊我接受許可協(xié)議,然后點(diǎn)擊下一步。 點(diǎn)擊完全安裝,然后點(diǎn)擊下一步。崇德博智,扶危定傾。 可更改安裝目錄,無需更改則可直接點(diǎn)擊下一步。 可更改安裝目錄,無需更改則可直接點(diǎn)擊下一步。崇德博智,扶危定傾。 點(diǎn)擊安裝。 等待安裝。崇德博智,扶危定傾。 點(diǎn)擊完成。崇德博智,扶危定傾。(2)license manager安裝過程 點(diǎn)擊next。 點(diǎn)擊i accept the license agreement,然后點(diǎn)擊next。崇德博智,扶危定傾。 可更改安裝目錄,或不更改然后直接點(diǎn)擊next。 點(diǎn)擊install。崇德博智,扶危定傾。 等待安裝。 點(diǎn)擊finish。崇德博智,扶危定傾。 點(diǎn)擊ok,安裝完成。崇德博智,扶危定傾。(3)安裝漢化包 點(diǎn)擊arcgis10.2破解文件 點(diǎn)擊該圖標(biāo)進(jìn)行安裝。 等待安裝完成后改程序自動(dòng)退出。崇德博智,扶危定傾。 2.更改破解文件內(nèi)容并完成后續(xù)更改 (1)更改破解文件 點(diǎn)開文件夾 打開service文件 出現(xiàn)圖一 (圖一) 將圖二中選中部分更改為計(jì)算機(jī)全名 (圖二) 崇德博智,扶危定傾。 提示:計(jì)算機(jī)全名找到(這里以win10系統(tǒng)為例) 點(diǎn)擊更改設(shè)置 右鍵找到屬性并打開 將選中位置復(fù)制到service文件中要替換的位置,保存并關(guān)閉文本。崇德博智,扶危定傾。 將改好后的這兩個(gè)文件復(fù)制到desktop cn和license manager安裝目錄下的(2)后續(xù)更改 文件夾中。 在開始菜單中找到該圖標(biāo)打開 選中標(biāo)記的屬性,然后將最后一個(gè)標(biāo)記改為自己的計(jì)算機(jī)全名,然后點(diǎn)擊確定。崇德博智,扶危定傾。 點(diǎn)擊確定退出。 在開始菜單中找到該圖標(biāo)打開 點(diǎn)擊停止,然后再點(diǎn)擊啟動(dòng),再點(diǎn)擊重新讀取許可,點(diǎn)擊確定退出。 安裝完成。崇德博智,扶危定傾。 二、基礎(chǔ)操作 1.進(jìn)入arcgis軟件 點(diǎn)擊該圖標(biāo)進(jìn)入arc軟件 新建地圖 繪圖基本窗口 點(diǎn)擊標(biāo)記位置中新建地圖下的我的模版,然后點(diǎn)擊確定或回車。崇德博智,扶危定傾。 3.連接到文件夾 將光標(biāo)放置在矩形標(biāo)記位置目錄出彈出目錄欄。 然后單擊右鍵文件夾連接下的連接到文件夾。 提醒:為了有一個(gè)良好的繪圖習(xí)慣和遵循規(guī)律以及日后對(duì)所畫圖層的保存和備案,請(qǐng)先創(chuàng)建一個(gè)新的文件夾用來存放被繪圖層和后期繪制的點(diǎn)線面文件。例如創(chuàng)建文件名為“圖層”。崇德博智,扶危定傾。 在該圖框中找到之前創(chuàng)建好的繪圖文件夾 添加完成后如圖所示。崇德博智,扶危定傾。 4.添加底圖 拓展開圖層文件夾,文件左鍵拖入中央空白區(qū)域,添加圖層。(注意:后面創(chuàng)建的點(diǎn)文件、線文件、區(qū)文件也可用這種方式添加) 或者點(diǎn)擊該圖標(biāo)。崇德博智,扶危定傾。 點(diǎn)擊文件夾連接。 點(diǎn)擊標(biāo)記處進(jìn)入連接好的文件夾內(nèi)。崇德博智,扶危定傾。 添加標(biāo)記處的圖層或者以后創(chuàng)建的點(diǎn)文件、線文件、區(qū)文件。 初次添加圖層會(huì)提示構(gòu)建金字塔,單機(jī)是通過。崇德博智,扶危定傾。 圖層置入完成。崇德博智,扶危定傾。 5.創(chuàng)建點(diǎn)文件、線文件、區(qū)文件 如圖右鍵連接好的“圖層”文件夾,點(diǎn)擊光標(biāo)中的shapefile。 (注意:如果出現(xiàn)下圖情況則重啟arcgis軟件則可去除該狀況) 崇德博智,扶危定傾。 出現(xiàn)圖框,根據(jù)標(biāo)記中,可更改文件名稱和要素類型。 如圖所示更改所需要素,分別創(chuàng)建點(diǎn)、線、面要素,選擇好后點(diǎn)擊確定即可完成創(chuàng)建。崇德博智,扶危定傾。 如圖創(chuàng)建好的點(diǎn)文件、線文件、區(qū)文件在此展現(xiàn)。 6.添加所需工作框 添加四處圖標(biāo)標(biāo)記的工作框,為日后所需。崇德博智,扶危定傾。 7.丟失的目錄、內(nèi)容列表和搜索 若是不小心點(diǎn)掉三個(gè)內(nèi)容的其中一個(gè),則可在標(biāo)記處添加回來。 8.開始編輯和停止編輯 點(diǎn)擊開始編輯,則可開始繪圖。開始編輯后停止編輯亮起,點(diǎn)擊停止編輯則可以停止繪圖。(注意:標(biāo)記下方有保存編輯內(nèi)容,一定要時(shí)時(shí)記得保存操作內(nèi)容,以防軟件崩潰,出現(xiàn)不可逆轉(zhuǎn)的失誤。) 崇德博智,扶危定傾。 9.放大和縮小及拖動(dòng)圖層 滾輪滑動(dòng)即可放大和縮小,按住滾輪下移動(dòng)鼠標(biāo)即可改變操作位置。崇德博智,扶危定傾。 三、繪圖 1.點(diǎn)要素 (1)選擇點(diǎn)的畫出形式 開始編輯后點(diǎn)擊標(biāo)記位置創(chuàng)建要素,并出現(xiàn)選擇界面。 點(diǎn)擊選擇界面中的點(diǎn)文件,再在下方選擇所需要的點(diǎn)類型。(注意:一般只需要點(diǎn),很難用到線末端的點(diǎn)。)崇德博智,扶危定傾。 (2)繪畫點(diǎn)及點(diǎn)的種類規(guī)劃 即可點(diǎn)出所需要的點(diǎn)。 (注意:點(diǎn)有很多不同類型,所以需要畫圖前對(duì)圖層進(jìn)行瀏覽并分出幾種不一樣的點(diǎn),對(duì)不同的點(diǎn)進(jìn)行不同的標(biāo)號(hào),然后再同種類型的點(diǎn)統(tǒng)一繪畫,然后更改id,再畫下一種點(diǎn),直至所有所需點(diǎn)都畫完。) (注意:我們所繪制的點(diǎn)可以分為以下幾種: 1.圖形點(diǎn) 2.標(biāo)記點(diǎn))(注意:圖形點(diǎn)中還存在不同的圖形,所以仍需不一樣的點(diǎn)給予不同的id) 如圖對(duì)標(biāo)記處點(diǎn)文件右鍵找到屬性表。 崇德博智,扶危定傾。 屬性表如圖顯示,在標(biāo)記處可看到id序列,分別對(duì)已經(jīng)畫好的第一種點(diǎn)賦予id-01號(hào),然后關(guān)閉屬性表,再繪畫第二種點(diǎn)。 繪畫好第二種點(diǎn)后如上操作再賦予第二種點(diǎn)id-02號(hào)。 (注意:因?yàn)樵搱D中圖形點(diǎn)單一只有圓圈點(diǎn)一種,所以本圖只存在一種圖形點(diǎn)和不顯示圖形的標(biāo)記點(diǎn)兩種,所以只需要賦予兩個(gè)id進(jìn)行區(qū)分,若其他圖件存在多種圖形點(diǎn),則就需要重復(fù)上面過程進(jìn)行設(shè)置id號(hào)。) 崇德博智,扶危定傾。 進(jìn)行id區(qū)分顯示,點(diǎn)擊標(biāo)記處點(diǎn)文件右鍵打開屬性。 點(diǎn)擊符號(hào)系統(tǒng),然后點(diǎn)擊類別。 崇德博智,扶危定傾。 點(diǎn)擊唯一值,再點(diǎn)擊添加所有值,然后確定退出。 如圖,不同id顯示出來,可分別進(jìn)行設(shè)置。 崇德博智,扶危定傾。 點(diǎn)擊該位置更改點(diǎn)形狀及其屬性。 單擊其中一個(gè),出現(xiàn)符號(hào)選擇器,然后可對(duì)點(diǎn)的形狀和屬性進(jìn)行選擇。 崇德博智,扶危定傾。 更改完成后,可看出各類id點(diǎn)自動(dòng)改為設(shè)置好的樣式。 (3)標(biāo)注 停止編輯,然后點(diǎn)擊標(biāo)記處點(diǎn)文件選擇屬性表打開,點(diǎn)開標(biāo)記處圖標(biāo)。 崇德博智,扶危定傾。 點(diǎn)擊添加字段。 在標(biāo)記名稱處輸入名稱,并在字段類型中選擇文本,然后點(diǎn)擊確定。 崇德博智,扶危定傾。 如圖所示文本字段“備注”顯示。 如excel一樣可對(duì)圖標(biāo)進(jìn)行縮短拉長(zhǎng),方便后續(xù)操作。 (注意:點(diǎn)擊編輯后才可進(jìn)行屬性表中備注文字的輸入) 崇德博智,扶危定傾。 點(diǎn)擊屬性表標(biāo)記處可看到對(duì)應(yīng)點(diǎn)亮起,方便一一對(duì)應(yīng)輸入備注文字。 輸入如下圖,完成后關(guān)閉即可。 崇德博智,扶危定傾。 然后點(diǎn)擊點(diǎn)文件右鍵選擇屬性。 進(jìn)入屬性圖框后,點(diǎn)擊標(biāo)注,然后勾選標(biāo)注此圖層中的要素。 崇德博智,扶危定傾。 點(diǎn)擊標(biāo)記處,選擇備注,再仿照word文檔中的文字更改方式對(duì)文字進(jìn)行更改,如大小、顏色、加粗、傾斜等。 點(diǎn)擊放置屬性。 崇德博智,扶危定傾。 出現(xiàn)放置屬性圖框,先擇更改位置,可更改標(biāo)注所出現(xiàn)在點(diǎn)的各個(gè)不同方向的位置。點(diǎn)擊確定后標(biāo)注顯示。 標(biāo)注顯示如圖。 崇德博智,扶危定傾。 (注意:如若需要標(biāo)注不同大小和顏色的標(biāo)注,打開標(biāo)注圖框后點(diǎn)擊標(biāo)記處。) (注意:然后點(diǎn)擊添加,輸入名稱后可通過更改不同名稱的標(biāo)注來顯示不同的標(biāo)注類型。) 崇德博智,扶危定傾。 (4)點(diǎn)的拖動(dòng)更改位置 用鼠標(biāo)點(diǎn)住選中的點(diǎn)進(jìn)行拖動(dòng)即可更改位置 崇德博智,扶危定傾。 2.線要素 (1)繪制線和構(gòu)造工具的選擇 選擇標(biāo)注中的線文件,然后選擇下面一種類型。 (注意:線的表達(dá)方式有很多種,可根據(jù)需求利用不同的形狀線進(jìn)行繪圖,以便于節(jié)省時(shí)間和提高精度。) 繪制線過程中,左鍵單擊畫出不同段的線。 崇德博智,扶危定傾。 左鍵雙擊結(jié)束所畫線。 如點(diǎn)的移動(dòng)一樣,可用標(biāo)記處的圖標(biāo),在選中線段后進(jìn)行移動(dòng)。 崇德博智,扶危定傾。 (2)線段的切割 通過該圖標(biāo)可進(jìn)行線的切割。 (3)線段控制點(diǎn)的添加 該圖標(biāo)可在線段上增添新的控制點(diǎn),改變線段形狀。 (注意:該操作是為了成圖有更好的觀賞度來改變線的彎曲度。) 崇德博智,扶危定傾。 (4)繪畫形式的選擇 圖中標(biāo)注位置可更改線段繪畫中的不同繪畫形式。 標(biāo)記的三種為常用類型。分別為:直線段、端點(diǎn)弧段、追蹤。 崇德博智,扶危定傾。 (5)線的id賦予 圖中存在多種類型的線段,同樣跟點(diǎn)要素一樣,可以賦予id,在一個(gè)線文件中顯示多種不同樣式的線要素。如圖,設(shè)置不同id,效仿點(diǎn)要素中的操作。 崇德博智,扶危定傾。 如圖,點(diǎn)擊屬性。 點(diǎn)擊符號(hào)系統(tǒng),類別,唯一值,再添加所有值,最后點(diǎn)擊確定退出。arcgis繪圖工具篇三
arcgis繪圖工具篇四
1.目錄
1.目錄...................................................................................................................................................................................................................1 2.用arcengine的工具條添加圖層要素...........................................................................................................................................................2 ine中對(duì)feature的編輯......................................................................................................................................................................5 e的概念..................................................................................................................................................................................................7 5.如何實(shí)現(xiàn)經(jīng)度緯度到平面坐標(biāo)的相互轉(zhuǎn)換?(轉(zhuǎn)載).................................................................................................................................7 ine中使用上下左右鍵移動(dòng)地圖功能的實(shí)現(xiàn)....................................................................................................................................9 7.緩沖區(qū)的創(chuàng)建.................................................................................................................................................................................................11 8.c#制作鷹眼全過程(引自esri中國(guó)社區(qū))...................................................................................................................................................13 ine中拓?fù)涞氖褂?......................................................................................................................................................................86 26.基于ao/ae獲取要素信息.......................................................................................................................................................................87 ine中拓?fù)涞氖褂?..........................................................................................................................................100 ifeatureselection:selectfeatures方法介紹..............................................................................................................................................105 常用數(shù)據(jù)入sde庫(kù)的代碼........................................................................................................................................................................107 arcengine開發(fā)感想.................................................................................................................................................................................112 geometry 對(duì)象淺析.................................................................................................................................................................................114 ae開發(fā)中的一些基本方法(1)數(shù)據(jù)連接................................................................................................................................................125 2.用arcengine的工具條添加圖層要素
發(fā)現(xiàn)ae比起其它的組件gis來要好用的多 但也有一些bt的地方
比如說ae沒有提供圖層編輯的工具條
但最近因?yàn)槌绦蚶镆砑訄D元 必須得開發(fā)圖層編輯的功能
于是去找了找資料
發(fā)現(xiàn)自帶的幫助里有一個(gè)mapediting的示例 但是從ao的示例改造而來 需要從按鈕寫起 想想如果這樣搞的話 倒不如直接用ao算了
一直想省點(diǎn)事
在ae自帶的工具條上做點(diǎn)文章
其實(shí)ae中也有一組相似的編輯按鈕,是用于編輯graphics的
自然就有了一個(gè)想法:能不能先生成一個(gè)graphic,然后將其加載進(jìn)來 代碼分享
private void form1_load(object sender, rgs e){ //清空?qǐng)D層
this..clearlayers();
//加載服務(wù)器sde地圖信息
rtyset proset = new tysetclass();//屬性集
pacefactory fact;//工作空間倉(cāng)庫(kù)
pace workspace;//工作空間
perty(“server”,“服務(wù)器名”);//服務(wù)器名
perty(“instance”,“端口”);//實(shí)例化端口
perty(“user”,“用戶名”);//sde用戶名
perty(“password”,“密碼”);//密碼
perty(“version”,“t”);//連接版本
fact = new kspacefactoryclass();//實(shí)例化為sde工作空間倉(cāng)庫(kù) workspace = (proset,(ng()));//填入屬性集
reworkspace featureworkspace;featureworkspace = workspace as reworkspace;//傳遞給feature工作空間
reclass featureclass;featureclass = atureclass(“”);//填充所需feature集合
elayer flayer = new elayerclass();eclass = featureclass;//將feature加載到圖層
.addlayer(flayer);//加載圖層 ();//更新空白區(qū)域
h();//刷新地圖視窗 }
private void form1_closed(object sender, rgs e){ tialize aoi = new ializeclass();wn();}
private void button1_click(object sender, rgs e){ igraphicscontainerselect graphicscontainerselect =(igraphicscontainerselect);
if(tselectioncount ==0)//判斷是否選中圖斑
{ (“請(qǐng)選中欲導(dǎo)入圖斑!”);return;} iworkspaceedit workspaceedit;ifeaturelayer featurelayer;ifeatureclass featureclass;ifeature feature;idataset dataset;
featurelayer =(ifeaturelayer)_layer(0);//選中導(dǎo)入圖層
featureclass = eclass;//該圖層的feature集
dataset =(idataset)featureclass;//該圖層的數(shù)據(jù)集
workspaceedit =(iworkspaceedit)ace;//關(guān)聯(lián)到編輯空間
workditing(true);//使之可編輯 workditoperation();//開始編輯
feature = feature();//創(chuàng)建空feature = edelement(0).geometry;//僅導(dǎo)入最新選中圖斑,即多選時(shí)只有一個(gè)可以導(dǎo)入
();itoperation();
iting(true);//結(jié)束編輯并保存
igraphicscontainer graphicscontainer =(igraphicscontainer)graphicscontainerselect;
allelements();//刪除graphic圖層
h();//刷新當(dāng)前視圖
(“ok”);} ine中對(duì)feature的編輯
對(duì)feature的編輯分為以下幾個(gè)部分 1.新建 2.修改 3.刪除
涉及到的接口有以下幾個(gè) iworkspaceedit ifeatureclass ifeaturecursor ifeature 其中iworkspaceedit用于啟動(dòng)編輯 開始編輯操作 結(jié)束編輯操作 結(jié)束編輯 ifeatureclass 是數(shù)據(jù)的所在地
ifeaturecursor 是一個(gè)游標(biāo) 提供訪問數(shù)據(jù)的接口和修改數(shù)據(jù)的接口 ifeature 是對(duì)象的代表 我們要編輯的目標(biāo) 編輯的過程如下: 1.添加一個(gè)feature //假設(shè)space是一個(gè)iworkspaceedit //參數(shù)表示是否需要使用undo/redo功能,該功能的粒度是editoperator.diting(false);ditoperator();//添加一個(gè)feature ifeature newfea=feature();//為feature 添加屬性 設(shè)置圖形 ();//保存屬性和圖形
itoperator();//結(jié)束編輯操作 //結(jié)束編輯過程
//參數(shù)表示是否保存編輯 iting(true);2.添加多個(gè)feature 添加多個(gè)feature也可以向上面一樣 使用多次就可以了
當(dāng)時(shí)也可以使用ifeaturecursor來添加數(shù)據(jù) 3.修改feature 添加feature中的修改屬性和圖形部分就是
每次修改后一定要調(diào)用store方法 這樣變化才可以保存下來 4.刪除
ifeature 有一個(gè)方法delete 可以用于刪除 當(dāng)時(shí)經(jīng)過測(cè)試發(fā)現(xiàn)對(duì)shapefile 會(huì)拋出異常來。
ifeaturecuror有一個(gè)deletefeature方法 可以用來刪除當(dāng)前的feature,經(jīng)測(cè)試
對(duì)所有的數(shù)據(jù)源類型都可以使用。
注意事項(xiàng)
1.不能設(shè)置feature的oid 2.不能設(shè)置feature的area 3.不能設(shè)置feature的lenght 4.不能設(shè)置feature的shape字段,需要調(diào)用單獨(dú)的方法來給feature關(guān)聯(lián)幾何圖形。e的概念
feature是二次開發(fā)中最常用的對(duì)象,feature是featureclass中一個(gè)記錄,從object中派生出來的,因此也具有屬性和方法,object又是從row中派生的,所以featureclass其實(shí)一張表,featured就是表中的一條記錄,feature可以保存空間數(shù)據(jù)對(duì)象,要素中的幾何型體對(duì)象定義了要素的類型,它可以保存的幾何型體對(duì)象有點(diǎn)、點(diǎn)集、多邊形、多義線。這些都是些簡(jiǎn)單的要素對(duì)象,在有些情況下要素還可以參與拓?fù)?、網(wǎng)絡(luò)運(yùn)算。feature相關(guān)接口
feature有派生出很多類,如:networkfeature、rastercatalogfeature、coverageannotationfeature、annotationfeature、dimensionfeature。feature的主要接口是ifeature,其中的extent用來返回要素對(duì)象的包絡(luò)線,顯示要素的空間范圍;featuretype返回要素的類型;shape返回要素的幾何型體對(duì)象;shapecopy得到幾何型體對(duì)象的一個(gè)拷貝。ifeaturebuffer中的shape得到緩沖要素的幾何型體對(duì)象
ifeatureedit中moveset、rotateset、deleteset分別是移動(dòng)、旋轉(zhuǎn)、刪除一個(gè)或者是多個(gè)要素組成的要素集上。split主要是用來分割幾何型體的,通過點(diǎn)分割線,通過多義線分割多邊形,分割后舊的被刪除,新的要素自動(dòng)產(chǎn)生。因?yàn)槊總€(gè)要素都有對(duì)應(yīng)的屬性,要素改變了,其對(duì)應(yīng)的屬性也相應(yīng)的要改變。splitattributes就是用來分割要素屬性字段中的值。該方法可以在split方法執(zhí)行后自動(dòng)執(zhí)行。ifeaturedraw中的invalidarea屬性得到一個(gè)繪畫的區(qū)域。draw在顯示設(shè)備上繪制要素
ifeaturechanges中originalshape得到要素的最初幾何類型,shapechanged指示要素的幾何類型是否改變。ifeaturesimplify中simplifygeometry按照該元素的拓?fù)湟?guī)則進(jìn)行拓?fù)湟恢?/p>
5.如何實(shí)現(xiàn)經(jīng)度緯度到平面坐標(biāo)的相互轉(zhuǎn)換?(轉(zhuǎn)載)
分類:webgis網(wǎng)絡(luò)地理信息系統(tǒng)研究
現(xiàn)在好多人在使用arcobject的時(shí)候都可能需要作經(jīng)緯度和平面坐標(biāo)的相互轉(zhuǎn)換。由于經(jīng)緯度是球面坐標(biāo),平面坐標(biāo)是x-y的笛卡爾坐標(biāo)系統(tǒng),所以這是一個(gè)看起來比較難的問題。
好多人一上來就搬出地圖學(xué)、地圖投影學(xué)或者測(cè)繪學(xué)中的投影公式(如高斯投影 或 墨卡托投影),又是基準(zhǔn)坐標(biāo)又是角度的搞的人頭都大了。
實(shí)際上要想實(shí)現(xiàn)這個(gè)功能非常easy。arc engine中的ipoint就可以進(jìn)行投影和反投影運(yùn)算了。投影過程(c#):
/// flatref 投影的坐標(biāo)系統(tǒng),這里的54013是世界投影,世界投影所有經(jīng)緯度都可以轉(zhuǎn)換為平面坐標(biāo),但是由于投影面積大失真也會(huì)比較大(相當(dāng)于把整個(gè)地球劈成一片片的,然后拉伸最后貼到平面上,失真當(dāng)然大了)。當(dāng)然也可以選擇精度更高的平面如:esrisrprojcs_beijing1954gk_23n
對(duì)應(yīng)數(shù)值21483 僅僅把北京附近的地球平面拉伸鋪在平面上,由于投影面積變小,所以投影經(jīng)度提高。但是由于面積變小,所以有些經(jīng)度緯度不能轉(zhuǎn)換,比如所美國(guó)的精度緯度用北京投影就投不了。
flatref = projectedcoordinatesystem(54013);
//沒什么說的,標(biāo)準(zhǔn)大地經(jīng)緯度,可以將x-y逆投影為經(jīng)度和緯度
earthref = geographiccoordinatesystem((int)geocs_nad1983);
/// 將經(jīng)緯度點(diǎn)轉(zhuǎn)換為平面坐標(biāo)。
private ipoint getproject(double x, double y)
{
ipoint pt = new pointclass();
rds(x, y);
igeometry geo =(igeometry)pt;
lreference = earthref;
t(flatref);
return pt;
}
/// 將平面坐標(biāo)轉(zhuǎn)換為經(jīng)緯度。
private ipoint getgeo(double x, double y)
{
ipoint pt = new pointclass();
rds(x, y);
igeometry geo =(igeometry)pt;
lreference = flatref;
t(earthref);
double xx = pt.x;
return pt;}實(shí)際上ipoint的投影和任何地圖都沒什么大關(guān)系,完全可以不用地圖,直接調(diào)用ipoint進(jìn)行投影的轉(zhuǎn)換
ine中使用上下左右鍵移動(dòng)地圖功能的實(shí)現(xiàn)
//閃爍目標(biāo)
public static void flashfeature(axmapcontrol mapcontrol,ifeature ifeature, imap imap){ iactiveview iactiveview = imap as iactiveview;if(iactiveview!= null){ rawing(0,(short)screencache);//根據(jù)幾何類型調(diào)用不同的過程
switch(i.geometrytype){ case ometrypolyline: flashline(mapcontrol, idisplay, i);break;case ometrypolygon: flashpolygon(mapcontrol, idisplay, i);break;case ometrypoint: flashpoint(mapcontrol, idisplay, i);break;default: break;} idisplay.finishdrawing();} } //閃爍線
static void flashline(axmapcontrol mapcontrol,iscreendisplay iscreendisplay,igeometry igeometry){ isimplelinesymbol ilinesymbol;isymbol isymbol;irgbcolor irgbcolor;ilinesymbol = new simplelinesymbol(); = 4;irgbcolor = new rgbcolor(); = 255; = irgbcolor;isymbol =(isymbol)ilinesymbol;2 = pnotxorpen;hape(igeometry, 3, 200, isymbol);} //閃爍面
static void flashpolygon(axmapcontrol mapcontrol, iscreendisplay iscreendisplay, igeometry igeometry){ isimplefillsymbol ifillsymbol;isymbol isymbol;irgbcolor irgbcolor;ifillsymbol = new simplefillsymbol(); = ssolid; = 12;irgbcolor = new rgbcolor(); = gb(100, 180, 180).toargb(); = irgbcolor;isymbol =(isymbol)ifillsymbol;2 = pnotxorpen;bol(isymbol);hape(igeometry, 3, 200, isymbol);} //閃爍點(diǎn)
static void flashpoint(axmapcontrol mapcontrol, iscreendisplay iscreendisplay, igeometry igeometry){ isimplemarkersymbol imarkersymbol;isymbol isymbol;irgbcolor irgbcolor;imarkersymbol = new simplemarkersymbol(); = scircle;irgbcolor = new rgbcolor(); = gb(0, 0, 0).toargb(); = irgbcolor;isymbol =(isymbol)imarkersymbol;2 = pnotxorpen;hape(igeometry, 3, 200, isymbol);} 7.緩沖區(qū)的創(chuàng)建
藍(lán)藍(lán)的小志 發(fā)表于 2005-6-5 10:07:08
本文以面圖層為例,并且把創(chuàng)建的緩沖區(qū)就存儲(chǔ)在面圖層中,當(dāng)然也可以把創(chuàng)建的緩沖區(qū)另存為一個(gè)新的圖層。程序運(yùn)行環(huán)境(.net+ao)
代碼如下:
private sub itopologicaloperator_buffer(byval pfeatlyr as relayer, byval distance as double, optional byval pfeatclass as reclass = nothing)'pfeatlyr 為面圖層 'distance緩沖距離
dim pfeatureclass as reclass
dim ptopooper as ogicaloperator
dim pbufferpoly as on
dim pfeatcursor as recursor
dim pfeature as re
try
pfeatureclass = eclass
pfeatcursor = (nothing, false)
pfeature = ature
do
if not(pfeature is nothing)then
ptopooper = ()
pbufferpoly = (distance)
'pfeature = feature
= pbufferpoly
()
pfeature = ature()
end if
loop until(pfeature is nothing)
catch
msgbox(ption, , “錯(cuò)誤提示”)
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中國(guó)社區(qū))
ontrol1是主控件,axmapcontrol2是鷹眼控件
2.1.鷹眼地圖資源載入
e void axmapcontrol1_onmapreplaced(object sender, imapcontrolevents2_onmapreplacedevent e)
4.{
5.//當(dāng)主地圖顯示控件的地圖更換時(shí),鷹眼中的地圖也跟隨更換
file(ntfilename);
= tent;
8.}
9.2.繪制鷹眼矩形框
e void axmapcontrol1_onextentupdated(object sender, imapcontrolevents2_onextentupdatedevent e)
11.{
12.// 得到新范圍
ope penv =(ienvelope)elope;
icscontainer pgra = as igraphicscontainer;
eview pav = pgra as iactiveview;
16.//在繪制前,清除axmapcontrol2中的任何圖形元素
allelements();
ngleelement prectangleele = new rectangleelementclass();
nt pele = prectangleele as ielement;
ry = penv;
21.//設(shè)置鷹眼圖中的紅線框
lor pcolor = new rgbcolorclass();
= 255;
= 0;
= 0;arency = 255;27.//產(chǎn)生一個(gè)線符號(hào)對(duì)象
ymbol poutline = new simplelinesymbolclass();
= 2;
= pcolor;
31.//設(shè)置顏色屬性
= new rgbcolorclass();
= 255;
= 0;
= 0;
arency = 0;
37.//設(shè)置填充符號(hào)的屬性
ymbol pfillsymbol = new simplefillsymbolclass();
= pcolor;
e = poutline;
hapeelement pfillshapeele = pele as ifillshapeelement;
= pfillsymbol;
ment((ielement)pfillshapeele, 0);
lrefresh(ewgraphics, null, null);
45.}
46.3.實(shí)現(xiàn)互動(dòng)
e void axmapcontrol2_onmousedown(object sender, imapcontrolevents2_onmousedownevent e)
48.{
ppt=new pointclass();
rds( ,);51.//改變主控件的視圖范圍
at(ppt);
53.} ine中拓?fù)涞氖褂?-
拓?fù)?itopology)的使用包括 1.建立拓?fù)?2.驗(yàn)證拓?fù)?/p>
3.編輯過程中保證拓?fù)涞恼_ 4.查詢系統(tǒng)中存在的拓?fù)?1.首先 來看看建立拓?fù)?/p>
topology實(shí)現(xiàn)了itopology這個(gè)接口 但是給類是不能用來創(chuàng)建對(duì)象的。
必須要通過調(diào)用 itopologycontainer::createtopology這個(gè)方法來建立一個(gè)topology featuredataset 實(shí)現(xiàn)了itopologycontainer這個(gè)接口。那么 這就是說拓?fù)渲荒茉谝粋€(gè)
featuredataset的范圍內(nèi)建立。而不能獨(dú)立存在于workspace中。這樣做的原因是需要保證 參與同一個(gè)拓?fù)涞膄eatureclass具有同一個(gè)投影坐標(biāo)系統(tǒng)。建立拓?fù)浜笮枰獙bjectclass 加入到拓?fù)渲腥?。這樣這個(gè)拓?fù)渚涂梢杂脕眚?yàn)證這幾個(gè)objectclass 的對(duì)象之間的關(guān)系了。驗(yàn)證關(guān)系就要有規(guī)則,規(guī)則是由itopologyrule來表達(dá)的。itopologyrule必須要被 加入到一個(gè)itopologyrulecontainer中去。而topology實(shí)現(xiàn)了這個(gè)接口。一個(gè)itopologyrule用來表達(dá)兩個(gè)objectclass的對(duì)象之間的某個(gè)關(guān)系。具體代碼參看接口就可以了。2.驗(yàn)證拓?fù)?/p>
itopology有一個(gè)方法 validatetopology 用來驗(yàn)證指定區(qū)域內(nèi)的拓?fù)?。需要注?沒有版本 的拓?fù)淇梢栽?任何時(shí)候驗(yàn)證。而有版本的拓?fù)浔仨氃诰庉嫽卦捴序?yàn)證。3.拓?fù)渚庉?1.移動(dòng)共用點(diǎn)
1.首先需要打開拓?fù)?建立拓?fù)鋱D(itopologygraph)代碼如下:
//topolayer 是一個(gè)打開的拓?fù)鋱D層 itopologygraph ptg=;(,false);2.然后 需要獲得當(dāng)前節(jié)點(diǎn)或者邊 這個(gè)操作要使用拓?fù)鋱D的點(diǎn)擊測(cè)試 itopologyelement topeele t(...ref topeele);這個(gè)方法在點(diǎn)擊測(cè)試成功的時(shí)候返回true.而且會(huì)通過topeele這個(gè)ref 參數(shù)將選中的元素(點(diǎn)或者邊)返回.3.還有一種獲取節(jié)點(diǎn)的方法
首先調(diào)用拓?fù)鋱D的select方法 選中點(diǎn)擊測(cè)試的元素()然后可以查詢拓?fù)鋱D的選中節(jié)點(diǎn)集合 就可以找到該節(jié)點(diǎn)(lection)4.為該元素使用一個(gè)feedback.//其中 pnode 就是當(dāng)前節(jié)點(diǎn) sr 是參考坐標(biāo)系 可以使用null //還有給feedback設(shè)置display m_pnodefeedback =itmovenodefeedback(pnode,false,sr);y= display;5.在鼠標(biāo)移動(dòng)的時(shí)候 調(diào)用feedback的moveto 方法。if(m_pnodefeedback!=null){
//activeview 是活動(dòng)的試圖
//首先要把將點(diǎn)坐標(biāo)轉(zhuǎn)換為地圖中的坐標(biāo)。//然后調(diào)用moveto 方法
ipoint pt=oint(x,y);(pt);} 6.在鼠標(biāo)釋放的時(shí)候 //獲取拓?fù)鋱D
itopologygraph ptg=;//轉(zhuǎn)換坐標(biāo) ipoint pt=oint(x,y);//獲得正在做拓?fù)渚庉嫷脑?/p>
itopologynode ptn=(itopologynode)m_ptopoelement;//實(shí)施拓?fù)渚庉?/p>
ovenode(ptn,pt,false);//提交拓?fù)渚庉嫿Y(jié)果 ienvelope pe;(out pe);4.查詢系統(tǒng)中的拓?fù)?/p>
還是itopologycontainer 這個(gè)接口 這個(gè)接口有featuredataset這個(gè)唯一的實(shí)現(xiàn)。createtopology 建立一個(gè)新的拓?fù)?/p>
defaultclustertolerance the default cluster tolerance as per the topology mclustertolerance the maximal cluster tolerance as per the topology mclustertolerance the minimal cluster tolerance as per the topology gy gybyid gybyname 通過名字打開拓?fù)?/p>
topologycount 拓?fù)涞臄?shù)目
10.為什么使用接口編程{轉(zhuǎn)載}
進(jìn)行接口的介紹,必須介紹一下程序語(yǔ)言發(fā)展的歷史才行,魯迅先生說過“治學(xué)先治史”,明白了程序語(yǔ)言發(fā)展的前世今生,才能知道為什么這么多語(yǔ)言為什么會(huì)這樣,為什么么會(huì)那樣?
計(jì)算機(jī)出現(xiàn)以后,科學(xué)家相繼開發(fā)了多種語(yǔ)言,從smalltalk,pascal,basic,c語(yǔ)言,c++,java,.net等等,這些語(yǔ)言的發(fā)展步伐,可以看作是從面向過程向面向?qū)ο蟀l(fā)展的一段歷史。很多面向?qū)ο蟮臅诮榻B自己的歷史的時(shí)候,都會(huì)給讀者介紹這一段歷史,并鼓吹oo編程是多么多么的優(yōu)異。問題是,很多剛開始學(xué)程序的人根本不知道為什么要有這個(gè)轉(zhuǎn)變,他們也很難理解oo語(yǔ)言中的虛函數(shù),接口等概念到底為了什么而提出來。
我們?cè)诹私膺@一段歷史以前,首先給大家介紹一個(gè)概念??“粒度”,什么是粒度?作者認(rèn)為所謂粒度其實(shí)就是一個(gè)程序中使用代碼單元的組合尺度,我們可以舉一個(gè)例子,沙礫??磚塊??房屋模板,我們?cè)O(shè)想去修建一座房子,其實(shí)有很多中修筑方法,如果你不閑麻煩,可以使用沙礫一點(diǎn)點(diǎn)地建筑,或者將沙礫燒制為磚塊,用磚塊來砌,甚至直接從工廠購(gòu)買房屋的門,窗,墻組件來堆砌。這三種不同的方法代表了三種不同的組合尺度。沙礫是最小的單位,使用它搭建小的房子說不定還可以,但是毫無疑問,我們必須使用很多很多“沙礫”,不便于管理;磚塊比沙礫聚合了一層,可以用來修建較大的房子了;房屋模板是最高的尺寸,使用它可以快速地搭建大規(guī)模的房屋。這三種尺度的區(qū)別和聯(lián)系,與我們編寫程序概念是有很大的相似之處的。
在早期學(xué)習(xí)pascal,老師告訴我們這種面向過程語(yǔ)言的最基本的單元是過程和函數(shù),它們是程序中的最小的組件。過程和函數(shù)可以實(shí)現(xiàn)最基本的代碼重用,當(dāng)我們把某些固定功能的代碼使用過程和函數(shù)編寫后,我們可以在程序中調(diào)用它們而不必在任何需要的地方都寫上這樣一段代碼,這樣的好處是顯而易見的。在一些小型的程序里面,使用過程和函數(shù)是合適的,但是在大中型程序中,它們的弊端就顯示出來,過程和函數(shù)的粒度太低了,如果我們一個(gè)系統(tǒng),有10000個(gè)函數(shù)和過程,我們的程序員將不得不花費(fèi)大量的時(shí)間去尋找和維護(hù)它們,10000個(gè)沒有任何關(guān)系的函數(shù)和過程的管理難度是顯而易見的,就好像10000個(gè)人的企業(yè)一樣,如果沒有部門和職務(wù),這還不亂了套?!
面向?qū)ο笳Z(yǔ)言的出現(xiàn),就是為了解決這個(gè)問題,別聽oo語(yǔ)言吹的天花亂墜,其實(shí)它出現(xiàn)就為一個(gè)理由??提高編程的粒度。面向?qū)ο笳Z(yǔ)言的基本單位是類 class,類封裝了很多數(shù)據(jù)成員和成員函數(shù),過程,將最小組件的提高了一個(gè)等級(jí),我們需要直接操作的不是過程和函數(shù)了,而是一個(gè)個(gè)更高層次上的類。我們把10000人分了很多部門,不同的部門負(fù)責(zé)不同的事宜,這樣公司終于可以走上正軌了。
做成了類class是否就萬(wàn)事大吉了呢?不一定,新的問題隨之而來,也許我們有一個(gè)部門的人很多,可以做很多事情,如何在部門內(nèi)部實(shí)現(xiàn)更好的管理呢?好比我們有一個(gè)類,它提供了很多種方法和屬性,這些方法和屬性其實(shí)可以分為一堆堆,為不同的功能服務(wù),但是我們的類并沒有做這個(gè)管理。在ao種,map對(duì)象擁有很多功能,比如管理圖層,管理元素,管理選擇集,進(jìn)行地圖顯示,每種不同的功能都有好多方法和屬性,現(xiàn)在這些屬性和方法是雜亂無章,沒有任何區(qū)別堆積在一個(gè)類里面的,當(dāng)我們的程序員需要尋找一個(gè)方法的時(shí)候,不得不一個(gè)個(gè)去尋找,很不方便。
這個(gè)時(shí)候,接口interface出現(xiàn)了,c++的發(fā)明者第一次提出純虛函數(shù)(其實(shí)就是接口)概念的時(shí)候,遭到了很多抵制,很多人都不明白接口的意義何在,我們用虛函數(shù)好好的,何必又出來個(gè)啥東西都沒有的空架子?說它是類吧,又不能實(shí)現(xiàn)產(chǎn)生一個(gè)對(duì)象;說它是對(duì)象吧,又沒有方法體來使用。接口出來干了一件好事,就是將類內(nèi)部進(jìn)行分類。對(duì)于map對(duì)象,我們可以做好幾個(gè)接口,這些接口中定義不同功能的方法,函數(shù)和屬性,map類實(shí)現(xiàn)這些接口,這樣我們可以使用接口定義,實(shí)現(xiàn)對(duì)象。因此,所謂接口就是一系列相關(guān)方法與屬性集合的定義。
dim pgraphicscontainer as igraphicscontainer pgraphicscontainer=ap pgraphicscontainer可以使用的屬性和方法就只能是它定義的那部分了,而不能使用管理元素等的接口定義的方法和屬性,那我們?nèi)绾问褂闷渌墓δ苣兀窟@就是所謂的qi(query interface)功能。從一個(gè)接口查詢另一個(gè)接口。
dim pgeofeaturelayer as igeofeaturelayer pgeofeaturelayer= pgraphicscontainer qi
好了,我們羅嗦了這么多,已經(jīng)走進(jìn)了com的概念了,在正式介紹com以前我們得最后羅嗦一點(diǎn):計(jì)算機(jī)語(yǔ)言的發(fā)展歷史,其實(shí)就是一部不斷提高組件粒度的歷史,不斷提高代碼重用的歷史。以前我們使用過程和函數(shù),后來我們使用類,現(xiàn)在我們使用接口,都是為了一個(gè)目的,讓我們操作的組件在具體和抽象之間尋找一個(gè)平衡點(diǎn)。太具體了,如過程和函數(shù),就沒有了框架;太抽象,如類,就無法分別。
一個(gè)代碼示例:
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;} } 這是邏輯的抽象 這是方法的具體 ine中閃爍目標(biāo)
//閃爍目標(biāo)
public static void flashfeature(axmapcontrol mapcontrol,ifeature ifeature, imap imap){ iactiveview iactiveview = imap as iactiveview;if(iactiveview!= null){ rawing(0,(short)screencache);//根據(jù)幾何類型調(diào)用不同的過程
switch(i.geometrytype){ case ometrypolyline: flashline(mapcontrol, idisplay, i);break;case ometrypolygon: flashpolygon(mapcontrol, idisplay, i);break;case ometrypoint: flashpoint(mapcontrol, idisplay, i);break;default: break;} idisplay.finishdrawing();} } //閃爍線
static void flashline(axmapcontrol mapcontrol,iscreendisplay iscreendisplay,igeometry igeometry){ isimplelinesymbol ilinesymbol;isymbol isymbol;irgbcolor irgbcolor;ilinesymbol = new simplelinesymbol(); = 4;irgbcolor = new rgbcolor(); = 255; = irgbcolor;isymbol =(isymbol)ilinesymbol;2 = pnotxorpen;hape(igeometry, 3, 200, isymbol);} //閃爍面
static void flashpolygon(axmapcontrol mapcontrol, iscreendisplay iscreendisplay, igeometry igeometry){ isimplefillsymbol ifillsymbol;isymbol isymbol;irgbcolor irgbcolor;ifillsymbol = new simplefillsymbol(); = ssolid; = 12;irgbcolor = new rgbcolor(); = gb(100, 180, 180).toargb(); = irgbcolor;isymbol =(isymbol)ifillsymbol;2 = pnotxorpen;bol(isymbol);hape(igeometry, 3, 200, isymbol);} //閃爍點(diǎn)
static void flashpoint(axmapcontrol mapcontrol, iscreendisplay iscreendisplay, igeometry igeometry){ isimplemarkersymbol imarkersymbol;isymbol isymbol;irgbcolor irgbcolor;imarkersymbol = new simplemarkersymbol(); = scircle;irgbcolor = new rgbcolor(); = gb(0, 0, 0).toargb(); = irgbcolor;isymbol =(isymbol)imarkersymbol;2 = pnotxorpen;hape(igeometry, 3, 200, isymbol);} 12.創(chuàng)建多個(gè)arcsde實(shí)例
編號(hào): 000037 相關(guān)產(chǎn)品及版本: arcsde 3.x,8.x,9.0平臺(tái): n/a 提交時(shí)間: 2004-08-23
修改時(shí)間: 2004-08-31 提交人: 吳樂茂 內(nèi)容摘要
有時(shí)候,我們需要有多于一個(gè)的arcsde實(shí)例同時(shí)運(yùn)行。只要存在多個(gè)數(shù)據(jù)庫(kù)實(shí)例,就可以實(shí)現(xiàn)這個(gè)目的。arcsde與rdbms之間必須是一個(gè)一一對(duì)應(yīng)的關(guān)系。arcsde會(huì)鎖定版本表,以保證每個(gè)數(shù)據(jù)庫(kù)實(shí)例只對(duì)應(yīng)一個(gè)arcsde實(shí)例。
過程描述
對(duì)于windows:
1.拷貝 %sdehome% 到一個(gè)新的位置。
2.用適當(dāng)?shù)膔dbms連接變量(如racle_sid) 文件。3.用新的實(shí)例名、端口號(hào)和網(wǎng)絡(luò)協(xié)議更新 %sdehome%文件。
4.添加服務(wù)名、端口號(hào)和網(wǎng)絡(luò)協(xié)議到 winntsystem32driversetcservices 文件中。須確認(rèn)所用的端口號(hào)沒有被用過。文件中的內(nèi)容。
6.如果需要,文件,以指定新實(shí)例的操作參數(shù)。
7.如果需要, 文件,以指定參數(shù)給在新實(shí)例的數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)時(shí)使用。
8.確認(rèn)sdehome 變量指向正確的新arcsde實(shí)例位置,并運(yùn)行給對(duì)應(yīng)數(shù)據(jù)庫(kù)使用的sdesetup 命令來創(chuàng)建新數(shù)據(jù)的存儲(chǔ)表。9.使用 “sdeservice-o create” 命令創(chuàng)建新的arcsde服務(wù)。
對(duì)于unix:
1.給新實(shí)例創(chuàng)建一個(gè)新的工作目錄。
2.拷貝 $sdehome 到新創(chuàng)建的工作目錄。
3.用適當(dāng)?shù)膔dbms 連接變量(如oracle_sid) 文件。4.用新的實(shí)例名、端口號(hào)和網(wǎng)絡(luò)協(xié)議更新 $sdehome/etc/ 文件。
5.添加服務(wù)名、端口號(hào)和網(wǎng)絡(luò)協(xié)議到 /etc/services 文件。須確認(rèn)所用的端口號(hào)沒有被用過。文件中的內(nèi)容。
7.如果需要,文件,以指定新實(shí)例的操作參數(shù)。
8.如果需要, 文件,以指定參數(shù)給在新實(shí)例的數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)時(shí)使用。
9.確認(rèn)sdehome 變量指向正確的新arcsde實(shí)例位置,并運(yùn)行給對(duì)應(yīng)數(shù)據(jù)庫(kù)使用的sdesetup 命令來創(chuàng)建新數(shù)據(jù)的存儲(chǔ)表。
常用arcsde命令 啟動(dòng)cmd 1.創(chuàng)建和刪除arcsde服務(wù)操作命令(sdeservice)創(chuàng)建arcsde for oracle9i服務(wù) sdeservice-o create-d oracle9i,sid-p sde-i esri_sde 刪除arcsde for oracle9i服務(wù) sdeservice-o delete-i esri_sde-d oracle9i,sid 注:-d 后面填寫數(shù)據(jù)庫(kù)類型及其sid sdeservice命令幫助 創(chuàng)建、刪除sde服務(wù)
服務(wù)操作命令(sdemon)
檢測(cè)服務(wù)狀態(tài)命令: sdemon-o status-i esri_sde 啟動(dòng)服務(wù)命令: sdemon-o start-i esri_sde-p sde 停止服務(wù)命令: sdemon-o shutdown-i esri_sde-p sde sdemon命令幫助
更多操作命令,請(qǐng)查看路徑“arcsdeora9iexebin”下的“*.exe”文件
13.空間查詢與空間分析功能
gis的面向用戶的應(yīng)用功能不僅僅表現(xiàn)在它能提供一些靜態(tài)的查詢、檢索數(shù)據(jù),更有意義的在于用戶可以根據(jù)需要建立一個(gè)應(yīng)用分析的模式,通過動(dòng)態(tài)的分析,從而為評(píng)價(jià)、管理和決策服務(wù)。這種分析功能可以在系統(tǒng)操作運(yùn)算功能的支持下或建立專門的分析軟件來實(shí)現(xiàn),如空間信息量測(cè)與分析、統(tǒng)計(jì)分析、地形分析、網(wǎng)絡(luò)分析、疊置分析、緩沖分析、決策支持等。系統(tǒng)本身是否具有建立各種應(yīng)用模型的功能是判別它好壞的重要標(biāo)志之一,因?yàn)檫@種功能在很大程度上決定了該系統(tǒng)在實(shí)際應(yīng)用中的靈活性和經(jīng)濟(jì)效益。
空間查詢和空間分析是從gis目標(biāo)之間的空間關(guān)系中獲取派生的信息和新的知識(shí),用以回答有關(guān)空間關(guān)系的查詢和應(yīng)用分析。
拓?fù)淇臻g查詢
在此操作中,用戶將地圖當(dāng)作查詢工具,而不僅僅是數(shù)據(jù)載體??臻g目標(biāo)之間的拓?fù)潢P(guān)系可以有兩類:一種是幾何元素的結(jié)點(diǎn)、弧段和面塊之間的關(guān)聯(lián)關(guān)系,用以描述和表達(dá)幾何元素間的拓?fù)潢P(guān)系;另一種是gis中地物之間的空間拓?fù)潢P(guān)系,可以通過關(guān)聯(lián)關(guān)系和位置關(guān)系隱含表達(dá),用戶需通過特殊的方法查詢。
這些空間關(guān)系主要有以下幾項(xiàng):面與面的關(guān)系,如檢索與某個(gè)面狀地物相鄰的所有多邊形及屬性;線與線的關(guān)系,如檢索與某一主干河相關(guān)聯(lián)的所有支流;點(diǎn)與點(diǎn)的關(guān)系,如檢索到某點(diǎn)一定距離內(nèi)的所有點(diǎn)狀地物;線與面的關(guān)系,如檢索某公路所經(jīng)過的所有縣市或某縣市內(nèi)的所有公路;點(diǎn)與線的關(guān)系,如某河流上的所有橋梁;點(diǎn)與面的關(guān)系,如檢索某市所有銀行分布點(diǎn)。
緩沖區(qū)分析
緩沖區(qū)用以確定圍繞某地要素繪出的定寬地區(qū),以滿足一定的分析條件。點(diǎn)的緩沖區(qū)是個(gè)圓餅,線的緩沖區(qū)是個(gè)條帶狀,多邊形的緩沖區(qū)則是個(gè)更大的相似多邊形。緩沖區(qū)分析是gis中基本的空間分析功能之一,尤其對(duì)于建立影響地帶是必不可少的。如道路規(guī)劃中建立緩沖區(qū)以確定道路兩邊若干距離內(nèi)的土地利用性質(zhì)。
疊加分析
疊加分析提供根據(jù)兩幅或兩幅以上圖層在空間上比較地圖要素和屬性的能力,通常有合成疊加和統(tǒng)計(jì)疊加之分,前者是根據(jù)兩組多邊形邊界的交點(diǎn)建立具有多重屬性的多邊形,后者則進(jìn)行多邊形范圍的屬性特征統(tǒng)計(jì)分析(如圖1-3所示)。合成疊加得到一張新的疊加圖,產(chǎn)生了許多新多邊形,每個(gè)多邊形都具有兩種以上的屬性。統(tǒng)計(jì)疊加的目的是統(tǒng)計(jì)一種要素在另一種要素中的分布特征。
距離分析及相鄰相接分析
距離分析提供了在地圖上距離的功能,相鄰分析確定哪些地圖要素與其它要素相接觸或相鄰,而相接分析則結(jié)合距離和相鄰分析兩者的針對(duì)性,提供確定地圖要素間鄰近或鄰接的功能。相鄰和相接分析廣泛應(yīng)用于環(huán)境規(guī)劃和影響評(píng)價(jià)的公共部門。大多數(shù)gis軟件目前不能直接進(jìn)行相鄰相接分析,而是通過先建立一定要求的緩沖區(qū),再與其它圖形要素進(jìn)行疊置分析的間接方法解決。地形分析功能
通過數(shù)字地形模型dtm,以離散分布的平面點(diǎn)來模擬連續(xù)分布的地形,再?gòu)闹袃?nèi)插提取各種地形分析數(shù)據(jù),地形分析包括以下內(nèi)容: 等高線分析
等高線圖是人們傳統(tǒng)上觀測(cè)地形的主要手段,可以從等高線上精確地獲得地形的起伏程度,區(qū)域內(nèi)各部分的高程等。透視圖分析
等高線雖然精確,但不夠直觀,用戶往往需要從直觀上觀察地形的概貌,所以gis通常具有繪制透視圖的功能,有些系統(tǒng)還能在三維空間格網(wǎng)上著色,使圖形更為逼真。坡度坡向分析
在dtm中計(jì)算坡度和坡向,派生出坡度坡向圖供地形分析(如日照分析、土地適宜性分析等)。斷面圖分析
用戶可以在斷面圖上考察該剖面地形的起伏并計(jì)算剖面面積,以便用于工程設(shè)計(jì)和工程量算。
地形表面面積和填挖方體積計(jì)算
利用dtm數(shù)據(jù),可以比較容易地求出所需要地區(qū)的地形表面面積以及施工區(qū)域內(nèi)填挖方的體積(土石方量)。
制圖功能、地理數(shù)據(jù)庫(kù)、空間查詢與空間分析能力是gis最具有獨(dú)特吸引力所在。而系統(tǒng)是否具有良好的用戶接口和各種應(yīng)用分析程序的支持也是至關(guān)重要的,但是應(yīng)由gis開發(fā)人員和用戶來共同完成的。
地理信息系統(tǒng)技術(shù)廣泛應(yīng)用于農(nóng)業(yè)、林業(yè)、國(guó)土資源、地礦、軍事、交通、測(cè)繪、水利、廣播電視、通訊、電力、公安、社區(qū)管理、教育、能源等幾乎所有的行業(yè),并正在走進(jìn)人們?nèi)粘5墓ぷ?、學(xué)習(xí)和生活中。
地理信息系統(tǒng)的主要任務(wù)是對(duì)與地理空間位置或區(qū)域有關(guān)的社會(huì)經(jīng)濟(jì)、人文景觀、自然資源及環(huán)境等多種信息進(jìn)行綜合管理和分析,中的空間關(guān)系
最近在做ao的一些東西,有些空間關(guān)系讓我搞不太懂,查到一個(gè)東西,還是很好的 名詞解釋:
boundary(邊界):
只有線和面才有邊界。面的邊界是指組成面的框架線;線的邊界是指線的二個(gè)端點(diǎn)(即起點(diǎn)和終點(diǎn),不包括中間部分的節(jié)點(diǎn));點(diǎn)沒有邊界。interior(內(nèi)部):
除去邊界后剩下的部分即是一個(gè)要素的內(nèi)部。因此線的內(nèi)部指除去端點(diǎn)后的部分;面的內(nèi)部是指除去框架線后的部分;點(diǎn)的內(nèi)部就是點(diǎn)本身。exterior(外部):
除去該要素后的剩余的空間范圍即是該要素的外部??臻g關(guān)系具體描述(queryable spatial relationships): 示意圖:
空間關(guān)系:
1, esrispatialreltouches(鄰接)應(yīng)用范圍:
除點(diǎn)與點(diǎn)之間的關(guān)系外,其它的要素之間都可以具有該關(guān)系。描述:
如果二個(gè)要素有相同的邊界,且它們內(nèi)部不相交的話,稱這二個(gè)要素之間的關(guān)系是鄰接的關(guān)系,圖1-
1、2-
1、3-
1、3-2,注意圖3-3中點(diǎn)與線是包涵的關(guān)系。
當(dāng)查詢要素和被查詢要素具有該關(guān)系時(shí),即spatialrel的值是esrispatialreltouches,則會(huì)返回查詢要素。2, esrispatialrelcrosses(交叉)應(yīng)用范圍:
線與面,線與線等。不能用于面與面(面與面相交部分是面,不能二個(gè)要素中的最高維數(shù)低一),面與點(diǎn),點(diǎn)與線(二個(gè)要素的維數(shù)差2)。描述:
如果二個(gè)要素的相交部分不為空,并且相交部分形狀的維數(shù)比兩個(gè)要素中最高維數(shù)低1(即線面交叉是線,線線交叉是點(diǎn))則稱這二個(gè)要素具有交叉關(guān)系,圖2-
4、4-1,圖2-1中中二條線的關(guān)系屬于鄰接關(guān)系,而不屬于交叉關(guān)系,因?yàn)樗鼈兊膬?nèi)部相交部分為空。當(dāng)查詢要素和被查詢要素具有該關(guān)系時(shí),即spatialrel的值是esrispatialrecrosses,則會(huì)返回查詢要素。3, esrispatialreloverlaps(重疊關(guān)系)應(yīng)用范圍:
線與線,面與面之間,其它的不具有該關(guān)系。描述:
二個(gè)同維的要素之間的相交部分的圖形具有與這二個(gè)要素相同的維數(shù)的,且不與任何一個(gè)要素完全相同,則稱這二個(gè)要素重疊。圖1-
2、2-2均是重疊關(guān)系,但是2-3中的二條線不是重疊關(guān)系,因?yàn)橄嘟坏牟糠峙c黃色的線完全相同。
當(dāng)查詢要素和被查詢要素具有該關(guān)系時(shí),即spatialrel的值是esrispatialreloverlaps,則會(huì)返回查詢要素。4,esrispatialrelwithin和esrispatialrelcontains(包涵)應(yīng)用范圍:
所有要素類之間均具有該關(guān)系。描述:
該關(guān)系可細(xì)分為一個(gè)要素完全位于另一個(gè)要素的內(nèi)部和一個(gè)要素完全包涵另外一個(gè)要素,它們是相對(duì)的關(guān)系。如果說要素1完全位于要素2的內(nèi)部,則要素2完全包涵要素1。
當(dāng)查詢的要素完全位于被查詢的要素內(nèi)部的話(即spatialrel的值是esrispatialrelwithin),則返回被查詢的要素;同時(shí)如果查詢的要素完全被被查詢的要素包括時(shí)(即spatialrel的值是esrispatialrelcontains)則返回被查詢的要素。5,esrispatialrelintersects(相交)描述:
相交關(guān)系是一個(gè)廣義的關(guān)系,包括上述4種關(guān)系。因此如果spatialrel的值是esrispatialrelintersects關(guān)系的話,只要查詢要素和被查詢要素之間滿足上述四種空間關(guān)系的任一種空間關(guān)系,即可返回被查詢的要素。6,esrispatialrelrelate 描述:
需要通過spatialreldescription屬性對(duì)二個(gè)要素的空間關(guān)系進(jìn)行定制,可以對(duì)二個(gè)要素的內(nèi)部,外部,邊界之間的相交的情況進(jìn)行描述,例如:字符串'****t***'代表的是二個(gè)要素共享邊界。
engine 中的相交分析的實(shí)現(xiàn)
在arcgis engine中實(shí)現(xiàn)點(diǎn)和面進(jìn)行相交分析,ect方法,不知道對(duì)不對(duì)???
用點(diǎn)和面進(jìn)行相交分析,主要目的是為了確定點(diǎn)在哪個(gè)區(qū)域內(nèi)!比如可以用一個(gè)井的點(diǎn)圖層和一個(gè)行政區(qū)劃的面圖層進(jìn)行相交分析,得到的是一個(gè)井的點(diǎn)圖層,而此圖層的屬性包含了兩個(gè)圖層的屬性,從而通過對(duì)屬性表的查詢,來確定在某個(gè)區(qū)域內(nèi)井的個(gè)數(shù)等等信息。以下代碼編譯通過,但是在運(yùn)行時(shí),就報(bào)錯(cuò),說是參數(shù)錯(cuò)誤,各位幫忙看看,謝謝!1
private void m_overlayer_click(object sender, rgs e)2
{ 3
try 4
{ 5
//分析層
ilayer player=_layer(0);7
ifeaturelayer pinputfeatlayer=player as ifeaturelayer;
itable pinputtable=player as itable;9
ifeatureclass pinputfeatclass=eclass;10 11
15
21
26
31
//疊加表
player=_layer(1);itable poverlaytable=player as itable;//疊加分析表
ifeatureclassname pfeatclassname=new featureclassnameclass();etype=simple;ieldname=“shape”;ype=ype;//工作空間名稱
iworkspacename pnewwsname=new workspacenameclass();acefactoryprogid = “ileworkspacefactory”;me = @“c:temp”;//數(shù)據(jù)集名稱
idatasetname pdatasetname=pfeatclassname as idatasetname;=“ss”;acename=pnewwsname;//幾何處理
ibasicgeoprocessor pbgp=new basicgeoprocessorclass();ifeatureclass poutputfeatclass=ect(pinputtable,false,poverlaytable,false,0.01,pfeatclassname);
//輸出要素層設(shè)置
ifeaturelayer poutputfeatlayer=new featurelayerclass();37
eclass=poutputfeatclass;38
=ame;39 40
er((ilayer)poutputfeatclass,0);41
();42
} 43
catch(exception ex)44
{ 45
(e);46
} 47
} 基本概念集錦
1、地理信息系統(tǒng)(geographic information system,即gis)——一門集計(jì)算機(jī)科學(xué)、信息學(xué)、地理學(xué)等多門科學(xué)為一體的新興學(xué)科,它是在計(jì)算機(jī)軟件和硬件支持下,運(yùn)用系統(tǒng)工程和信息科學(xué)的理論,科學(xué)管理和綜合分析具有空間內(nèi)涵的地理數(shù)據(jù),以提供對(duì)規(guī)劃、管理、決策和研究所需信息的空間信息系統(tǒng)。gis有以下子系統(tǒng):數(shù)據(jù)輸入子系統(tǒng),數(shù)據(jù)存儲(chǔ)和檢索子系統(tǒng),數(shù)據(jù)操作和分析子系統(tǒng),報(bào)告子系統(tǒng).信息系統(tǒng)
非空間的 空間的
管理信息系統(tǒng) 非地理學(xué)的 gis cad/cam 其他gis lis 社會(huì)經(jīng)濟(jì),人口普查 基于非地塊,基于地塊的2、比較gis與cad、cac間的異同。
cad——計(jì)算機(jī)輔助設(shè)計(jì),規(guī)則圖形的生成、編輯與顯示系統(tǒng),與外部描述數(shù)據(jù)無關(guān)。cac——計(jì)算機(jī)輔助制圖,適合地圖制圖的專用軟件,缺乏空間分析能力。
gis——地理信息系統(tǒng),集規(guī)則圖形與地圖制圖于一身,且有較強(qiáng)的空間分析能力。
3、圖層:將空間信息按其幾何特征及屬性劃分成的專題。
4、地理數(shù)據(jù)采集——實(shí)地調(diào)查、采樣;傳統(tǒng)的測(cè)量方法,如三角測(cè)量法、三邊測(cè)量法;全球定位系統(tǒng)(gps);現(xiàn)代遙感技術(shù);生物遙測(cè)學(xué);數(shù)字?jǐn)z影技術(shù);人口普查。
5、信息范例——傳統(tǒng)的制圖方法,稱為信息范例,即假定地圖本身是一個(gè)最終產(chǎn)品,通過使用符號(hào)、分類限制的選擇等方式交換空間信息的模式。這個(gè)范例是傳統(tǒng)的透視圖方法,由于原始而受到很多限制,地圖用戶不能輕易獲得預(yù)分類數(shù)據(jù)。也就是說,用戶只限于處理最終產(chǎn)品,而無法將數(shù)據(jù)重組為更有效的形式以適應(yīng)環(huán)境或需求的變化。
6、分析范例(整體范例)——存儲(chǔ)保存原始數(shù)據(jù)的屬性數(shù)據(jù),可根據(jù)用戶的需求進(jìn)行數(shù)據(jù)的顯示、重組和分類。整體范例是一種真正的用于制圖學(xué)和地理學(xué)的整體方法。
7、柵格——柵格結(jié)構(gòu)是最簡(jiǎn)單最直接的空間數(shù)據(jù)結(jié)構(gòu),是指將地球表面劃分為大小均勻緊密相鄰的網(wǎng)格陣列,每個(gè)網(wǎng)格作為一個(gè)象元或象素由行、列定義,并包含一個(gè)代碼表示該象素的屬性類型或量值,或僅僅包括指向其屬性記錄的指針。因此,柵格結(jié)構(gòu)是以規(guī)則的陣列來表示空間地物或現(xiàn)象分布的數(shù)據(jù)組織,組織中的每個(gè)數(shù)據(jù)表示地物或現(xiàn)象的非幾何屬性特征。特點(diǎn):屬性明顯,定位隱含,即數(shù)據(jù)直接記錄屬性本身,而所在的位置則根據(jù)行列號(hào)轉(zhuǎn)換為相應(yīng)的坐標(biāo),即定位是根據(jù)數(shù)據(jù)在數(shù)據(jù)集中的位置得到的,在柵格結(jié)構(gòu)中,點(diǎn)用一個(gè)柵格單元表示;線狀地物用沿線走向的一組相鄰柵格單元表示,每個(gè)柵格單元最多只有兩個(gè)相鄰單元在線上;面或區(qū)域用記有區(qū)域?qū)傩缘南噜彇鸥駟卧募媳硎荆總€(gè)柵格單元可有多于兩個(gè)的相鄰單元同屬一個(gè)區(qū)域。
8、矢量——它假定地理空間是連續(xù),通過記錄坐標(biāo)的方式盡可能精確地表示點(diǎn)、線、多邊形等地理實(shí)體,坐標(biāo)空間設(shè)為連續(xù),允許任意位置、長(zhǎng)度和面積的精確定義。對(duì)于點(diǎn)實(shí)體,矢量結(jié)構(gòu)中只記錄其在特定坐標(biāo)系下的坐標(biāo)和屬性代碼;對(duì)于線實(shí)體,用一系列坐標(biāo)對(duì)的連線表示;多邊形是指邊界完全閉合的空間區(qū)域,用一系列坐標(biāo)對(duì)的連線表示。
9、“拓?fù)洹保╰opology)一詞來源于希臘文,它的原意是“形狀的研究”。拓?fù)鋵W(xué)是幾何學(xué)的一個(gè)分支,它研究在拓?fù)渥儞Q下能夠保持不變的幾何屬性——拓?fù)鋵傩裕ㄍ負(fù)鋵傩裕阂粋€(gè)點(diǎn)在一個(gè)弧段的端點(diǎn),一個(gè)點(diǎn)在一個(gè)區(qū)域的邊界上;非拓?fù)鋵傩裕簝牲c(diǎn)之間的距離,弧段的長(zhǎng)度,區(qū)域的周長(zhǎng)、面積)。這種結(jié)構(gòu)應(yīng)包括:唯一標(biāo)識(shí),多邊形標(biāo)識(shí),外包多邊形指針,鄰接多邊形指針,邊界鏈接,范圍(最大和最小x、y坐標(biāo)值)。地理空間研究中三個(gè)重要的拓?fù)涓拍睿?)連接性:弧段在結(jié)點(diǎn)處的相互聯(lián)接關(guān)系;(2)多邊形區(qū)域定義:多個(gè)弧段首尾相連構(gòu)成了多邊形的內(nèi)部區(qū)域;(3)鄰接性:通過定義弧段的左右邊及其方向性來判斷弧段左右多邊形的鄰接性。
10、矢量的實(shí)體錯(cuò)誤——偽節(jié)點(diǎn):即需要假節(jié)點(diǎn)進(jìn)行識(shí)別的節(jié)點(diǎn),發(fā)生在線和自身相連接的地方(如島狀偽結(jié)點(diǎn)——顯示存在一個(gè)島狀多邊形,這個(gè)多邊形處于另一個(gè)更大的多邊形內(nèi)部),或發(fā)生在兩條線沿著平行路徑而不是交叉路徑相交的地方(節(jié)點(diǎn)——表示線與線間連接的特殊點(diǎn))。搖擺結(jié)點(diǎn):有時(shí)稱為搖擺,來源于3種可能的錯(cuò)誤類型:閉合失敗的多邊形;欠頭線,即結(jié)點(diǎn)延伸程度不夠,未與應(yīng)當(dāng)連接的目標(biāo)相連;過頭線,結(jié)點(diǎn)的線超出想與之連接的實(shí)體。碎多邊形:起因于沿共同邊界線進(jìn)行的不良數(shù)字化過程,在邊界線位置,線一定是不只一次地被數(shù)字化。高度不規(guī)則的國(guó)家邊境線,例如中美洲,特別容易出現(xiàn)這樣的數(shù)字變形。標(biāo)注錯(cuò)誤:丟失標(biāo)注和重復(fù)標(biāo)注。異常多邊形:具有丟失節(jié)點(diǎn)的多邊形。丟失的弧。
11、空間分析方法——
1、空間信息的測(cè)量:線與多邊形的測(cè)量、距離測(cè)量、形狀測(cè)量;
2、空間信息分類:范圍分級(jí)分類、鄰域功能、漫游窗口、緩沖區(qū);
3、疊加分析:多邊形疊加、點(diǎn)與多邊形、線與多邊形;
4、網(wǎng)絡(luò)分析:路徑分析、地址匹配、資源匹配;
5、空間統(tǒng)計(jì)分析:插值、趨勢(shì)分析、結(jié)構(gòu)分析;
6、表面分析:坡度分析、坡向分析、可見度和相互可見度分析。
12、歐拉數(shù)——最通常的空間完整性,即空洞區(qū)域內(nèi)空洞數(shù)量的度量,測(cè)量法稱為歐拉函數(shù),它只用一個(gè)單一的數(shù)描述這些函數(shù),稱為歐拉數(shù)。數(shù)量上,歐拉數(shù)=(空洞數(shù))-(碎片數(shù)-1),這里空洞數(shù)是外部多邊形自身包含的多邊形空洞數(shù)量,碎片數(shù)是碎片區(qū)域內(nèi)多邊形的數(shù)量。有時(shí)歐拉數(shù)是不確定的。
13、函數(shù)距離——描述兩點(diǎn)間距離的一種函數(shù)關(guān)系,如時(shí)間、摩擦、消耗等,將這些用于距離測(cè)量的方法集中起來,稱為函數(shù)距離。
14、曼哈頓距離——兩點(diǎn)在南北方向上的距離加上在東西方向上的距離,即d(i,j)=|xi-xj|+|yi-yj|。對(duì)于一個(gè)具有正南正北、正東正西方向規(guī)則布局的城鎮(zhèn)街道,從一點(diǎn)到達(dá)另一點(diǎn)的距離正是在南北方向上旅行的距離加上在東西方向上旅行的距離因此曼哈頓距離又稱為出租車距離,曼哈頓距離不是距離不變量,當(dāng)坐標(biāo)軸變動(dòng)時(shí),點(diǎn)間的距離就會(huì)不同。
15、鄰域功能——所謂鄰域是指具有統(tǒng)一屬性的實(shí)體區(qū)域或者焦點(diǎn)集中在整個(gè)地區(qū)的較小部分實(shí)體空間。鄰域功能就是在特定的實(shí)體空間中發(fā)現(xiàn)其屬性的一致性。它包括直接鄰域和擴(kuò)展鄰域。
16、緩沖區(qū)分析——是指根據(jù)數(shù)據(jù)庫(kù)的點(diǎn)、線、面實(shí)體基礎(chǔ),自動(dòng)建立其周圍一定寬度范圍內(nèi)的緩沖區(qū)多邊形實(shí)體,從而實(shí)現(xiàn)空間數(shù)據(jù)在水平方向得以擴(kuò)展的空間分析方法。緩沖區(qū)在某種程度上受控于目前存在的摩擦表面、地形、障礙物等,也就是說,盡管緩沖區(qū)建立在位置的基礎(chǔ)上,但是還有其他實(shí)質(zhì)性的成分。確定緩沖區(qū)距離的四種基本方法:隨機(jī)緩沖區(qū)、成因緩沖區(qū)、可測(cè)量緩沖區(qū)、合法授權(quán)緩沖區(qū)。
17、統(tǒng)計(jì)表面——表面是含有z值的形貌,z值又稱為高度值,它的位置被一系列x和y坐標(biāo)對(duì)定義且在區(qū)域范圍內(nèi)分布。z值也常被認(rèn)為是高程值,但是不必局限于這一種度量。實(shí)際上,在可定義的區(qū)域內(nèi)出現(xiàn)的任意可測(cè)量的數(shù)值(例如,序數(shù)、間隔和比率數(shù)據(jù))都可以認(rèn)為組成了表面。一般使用的術(shù)語(yǔ)是統(tǒng)計(jì)表面,因?yàn)樵诳紤]的范圍內(nèi)z值構(gòu)成了許多要素的統(tǒng)計(jì)學(xué)的表述(robinson et al., 1995)。
18、dem——數(shù)字高程模型(digital elevation model)。地形模型不僅包含高程屬性,還包含其它的地表形態(tài)屬性,如坡度、坡向等。dem通常用地表規(guī)則網(wǎng)格單元構(gòu)成的高程矩陣表示,廣義的dem還包括等高線、三角網(wǎng)等所有表達(dá)地面高程的數(shù)字表示。在地理信息系統(tǒng)中,dem是建立數(shù)字地形模型(digital terrain model)的基礎(chǔ)數(shù)據(jù),其它的地形要素可由dem直接或間接導(dǎo)出,稱為“派生數(shù)據(jù)”,如坡度、坡向。
19、空間插值——空間插值常用于將離散點(diǎn)的測(cè)量數(shù)據(jù)轉(zhuǎn)換為連續(xù)的數(shù)據(jù)曲面,以便與其它空間現(xiàn)象的分布模式進(jìn)行比較,它包括了空間內(nèi)插和外推兩種算法??臻g內(nèi)插算法:通過已知點(diǎn)的數(shù)據(jù)推求同一區(qū)域未知點(diǎn)數(shù)據(jù)??臻g外推算法:通過已知區(qū)域的數(shù)據(jù),推求其它區(qū)域數(shù)據(jù)。20、泰森多邊形——通過數(shù)學(xué)方法定義、平分點(diǎn)間的空間并以直線相連結(jié),在點(diǎn)狀物體間生成多邊形的方法。
21、線密度——用所有區(qū)域內(nèi)的線的總長(zhǎng)度除以區(qū)域的面積。
22、連通性——連通性是衡量網(wǎng)絡(luò)復(fù)雜性的量度,常用γ指數(shù)和α指數(shù)計(jì)算它。其中,γ指數(shù)等于給定空間網(wǎng)絡(luò)體節(jié)點(diǎn)連線數(shù)與可能存在的所有連線數(shù)之比;α指數(shù)用于衡量環(huán)路,節(jié)點(diǎn)被交替路徑連接的程度稱為α指數(shù),等于當(dāng)前存在的環(huán)路數(shù)與可能存在的最大環(huán)路數(shù)之比。
23、圖形疊加——將一個(gè)被選主題的圖形所表示的專題信息放在另一個(gè)被選主題的圖形所表示的專題信息之上。
24、柵格自動(dòng)疊加——基于網(wǎng)格單元的多邊形疊加是一個(gè)簡(jiǎn)單的過程,因?yàn)閰^(qū)域是由網(wǎng)格單元組成的不規(guī)則的塊,它共享相同的一套數(shù)值和相關(guān)的標(biāo)注。毫無疑問,網(wǎng)格單元為基礎(chǔ)的多邊形疊加缺乏空間準(zhǔn)確性,因?yàn)榫W(wǎng)格單元很大,但是類似于簡(jiǎn)單的點(diǎn)與多邊形和線與多邊形疊加的相同部分,由于它的簡(jiǎn)單性,因此可以獲得較高的靈活程度和處理速度。
25、拓?fù)涫噶刊B加——如何決定實(shí)體間功能上的關(guān)系,如定義由特殊線相連的左右多邊形,定義線段間的關(guān)系去檢查交通流量,或依據(jù)個(gè)別實(shí)體或相關(guān)屬性搜索已選擇實(shí)體。它也為疊加多個(gè)多邊形圖層建立了一種方法,從而確保連結(jié)著每個(gè)實(shí)體的屬性能夠被考慮,并且因此使多個(gè)屬性相結(jié)合的合成多邊形能夠被支持。這種拓?fù)浣Y(jié)果稱作最小公共地理單元(lcgu)。
26、矢量多邊形疊加——點(diǎn)與多邊形和線與多邊形疊加使用的主要問題是,線并不總是出現(xiàn)在整個(gè)區(qū)域內(nèi)。解決該問題的最強(qiáng)有力的辦法是讓軟件測(cè)定每組線的交叉點(diǎn),這就是所謂的結(jié)點(diǎn)。進(jìn)行矢量多邊形的疊加,其任務(wù)是基本相同的,除了必須計(jì)算重疊交叉點(diǎn)外,還要定義與之相聯(lián)系的多邊形線的屬性。
27、布爾疊加——一種以布爾代數(shù)為基礎(chǔ)的疊加操作。
28、制圖建?!靡灾该鲬?yīng)用命令組合來回答有關(guān)空間現(xiàn)象問題的處理。制圖模型是針對(duì)原始數(shù)據(jù)也包括導(dǎo)出數(shù)據(jù)和中間地圖數(shù)據(jù)進(jìn)行一系列交互有序的地圖操作來模擬空間決策的處理。
29、地理模型的類型——類似統(tǒng)計(jì)同類的描述性模型和與推理統(tǒng)計(jì)技術(shù)相關(guān)的規(guī)則性模型。
30、常見模型——
1、注重樣式與處理的問題長(zhǎng)時(shí)間以來用于解釋類似農(nóng)業(yè)活動(dòng)與運(yùn)輸成本間的關(guān)系——獨(dú)立狀態(tài)模型。
2、最初為預(yù)測(cè)工業(yè)位置點(diǎn)的空間分布的樣式而設(shè)計(jì)的weber模型,進(jìn)行改進(jìn)后可使參與者尋找最佳商業(yè)和服務(wù)位置——位置-分配模型。
3、建立在吸引力與到潛在市場(chǎng)的距離呈反比這一基礎(chǔ)上的經(jīng)濟(jì)地理模型——重力模型。
4、通過空間驗(yàn)證思想如今廣泛用于生態(tài)群落,通過地理空間跟蹤動(dòng)植物運(yùn)動(dòng)——改進(jìn)擴(kuò)散模型。
31、專題地圖——以表現(xiàn)某單一屬性的位置或若干選定屬性之間關(guān)系為主要目的的地圖。專題圖形設(shè)計(jì)的一般程序包括合適的符號(hào)和圖形對(duì)象的選擇、生成和放置,以明確突出研究主題的重要屬性和空間關(guān)系,同時(shí)還要考慮參考系統(tǒng)。gis專題地圖輸出的規(guī)則:不但要有精美的圖形,最重要的是去讀圖、分析地圖和理解地圖。
32、元數(shù)據(jù)——關(guān)于數(shù)據(jù)的數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)內(nèi)容的全面描述,其目的是促進(jìn)數(shù)據(jù)集的高效利用和充分共享。使用元數(shù)據(jù)的理由:性能上,完整性、可擴(kuò)展性、特殊性、安全性;功能上,差錯(cuò)功能、瀏覽功能、程序生成。
33、聚合——將單個(gè)數(shù)據(jù)元素進(jìn)行分類的大量數(shù)字處理過程。
34、克立金法——依靠地球自然表面隨距離的變化概率而確定高程的一種精確內(nèi)插方法。
35、四叉樹——一種壓縮數(shù)據(jù)結(jié)構(gòu),它把地理空間定量劃分為可變大小的網(wǎng)格,每個(gè)網(wǎng)格具有相同性質(zhì)的屬性。
36、比較工具型地理信息系統(tǒng)和應(yīng)用型地理信息系統(tǒng)的異同。
工具型地理信息系統(tǒng):是一種通用型gis,具有一般的功能和特點(diǎn),向用戶提供一個(gè)統(tǒng)一的操作平臺(tái)。一般沒有地理空間實(shí)體,而是由用戶自己定義。具有很好的二次開發(fā)功能。如:arcinfo、genamap、mapinfo、mapgis、geostar。
應(yīng)用型地理信息系統(tǒng):在較成熟的工具型gis軟件基礎(chǔ)上,根據(jù)用戶的需求和應(yīng)用目的而設(shè)計(jì)的用于解決一類或多類實(shí)際問題的地理信息系統(tǒng),它具有地理空間實(shí)體和解決特殊地理空間分布的模型。如lis、cgis、ugis。
37、詳細(xì)描述應(yīng)用型地理信息系統(tǒng)的開發(fā)過程
1、系統(tǒng)總體設(shè)計(jì):需求和可行性分析、數(shù)據(jù)模型設(shè)計(jì)、數(shù)據(jù)庫(kù)設(shè)計(jì)、方法設(shè)計(jì)
2、系統(tǒng)軟件設(shè)計(jì):開發(fā)語(yǔ)言、用戶界面、流程、交互
3、程序代碼編寫:投影、數(shù)據(jù)庫(kù)、輸入、編輯
4、系統(tǒng)的調(diào)試與運(yùn)行:α調(diào)試、β調(diào)試
5、系統(tǒng)的評(píng)價(jià)與維護(hù):功能評(píng)價(jià)、費(fèi)用評(píng)價(jià)、效益評(píng)價(jià)
38、空間信息系統(tǒng):以多媒體技術(shù)為依托,以空間數(shù)據(jù)為基礎(chǔ),以虛擬現(xiàn)實(shí)為手段的集空間數(shù)據(jù)的輸入、編輯、存儲(chǔ)、分析和顯示于一體的巨系統(tǒng),體由若干個(gè)子系統(tǒng)組成。
39、地理數(shù)據(jù)測(cè)量標(biāo)準(zhǔn)——命名(對(duì)數(shù)據(jù)命名,允許我們對(duì)把對(duì)象叫什么做出聲明,但不允許對(duì)兩個(gè)命名的對(duì)象進(jìn)行直接比較)、序數(shù)(提供對(duì)空間對(duì)象進(jìn)行邏輯對(duì)比的結(jié)果,但這種對(duì)比僅限于所談?wù)搯栴}的范圍內(nèi))、間隔(可以對(duì)待測(cè)項(xiàng)逐個(gè)賦值,能夠更為精確地估計(jì)對(duì)比物的不同點(diǎn))、比率(用途最廣的測(cè)量數(shù)據(jù)標(biāo)準(zhǔn),它是允許直接比較空間變量的惟一標(biāo)準(zhǔn))。
40、根據(jù)樣本進(jìn)行推理的取樣原則——未取樣位置的數(shù)據(jù)可以從已取樣位置的數(shù)據(jù)中推測(cè)出來;區(qū)域邊界內(nèi)的數(shù)據(jù)可以合并計(jì)算;一組空間單元中的數(shù)據(jù)能夠轉(zhuǎn)換成具有不同空間配置的另外一組空間單元數(shù)據(jù)。常用的方法:內(nèi)插法:當(dāng)有數(shù)值邊界或知道缺失部分兩端數(shù)值;外推法:當(dāng)缺失的數(shù)據(jù)一側(cè)有數(shù)值,而另一側(cè)每一數(shù)值。
開發(fā)中矢量圖層疊加求交分析
ae開發(fā)中矢量圖層疊加求交分析: ae開發(fā)中,矢量圖層疊加分析需要用到的主要類為basicgeoprocessor,其主要接口為ibasicgeoprocessor。ibasicgeoprocessor接口提供了基本的空間數(shù)據(jù)處理的方法和屬性,其中包括疊加求交(interset)和疊加求和(union)。下面提供疊加求交的開發(fā)實(shí)例: c#+ae9.1疊加求交示例代碼:
private void m_overlayer_click(object sender, rgs e)2
{ 3
try 4
{ 5
//分析層
ilayer player=_layer(0);7
ifeaturelayer pinputfeatlayer=player as ifeaturelayer;
itable pinputtable=player as itable;9
ifeatureclass pinputfeatclass=eclass;10 11
//疊加表
player=_layer(1);13
itable poverlaytable=player as itable;14 15
//疊加分析表
ifeatureclassname pfeatclassname=new featureclassnameclass();17
etype=simple;18
ieldname=“shape”;19
ype=ype;20 21
26
31
40
//工作空間名稱
iworkspacename pnewwsname=new workspacenameclass();
acefactoryprogid = “ileworkspacefactory”;
me = @“c:temp”;
//數(shù)據(jù)集名稱
idatasetname pdatasetname=pfeatclassname as idatasetname;
=“ss”;
acename=pnewwsname;
//幾何處理
ibasicgeoprocessor pbgp=new basicgeoprocessorclass();
ifeatureclass poutputfeatclass=ect(pinputtable,false,poverlaytable,false,0.01,pfeatclassname);
//輸出要素層設(shè)置
ifeaturelayer poutputfeatlayer=new featurelayerclass();
eclass=poutputfeatclass;
=ame;
er((ilayer)poutputfeatclass,0);
();} catch(exception ex){
(e);46
} 47
} 最近在研究ae中實(shí)現(xiàn)overlay的方法,終于發(fā)現(xiàn)了2個(gè)方法。(針對(duì)shapefile)方法一:利用itopology接口:
void coverlaydlg::overlay(ilayerptr inputlayer, ilayerptr overlaylayer,ifeatureclassptr ipnewclass){ int mode=sel();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->iveview();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();} 這種方法是一個(gè)一個(gè)feature的創(chuàng)建,存入featureclass接口中。方法二:利用ibasicgeoprocess接口 //把第一個(gè)圖層和第0個(gè)圖層疊置 ifeaturelayerptr ipfealay;ifeatureclassptr ipfeacls;hresult hr;ilayerptr iplay;imapptr ipmap(());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ù)。點(diǎn)與多邊形疊加:一種gis操作,點(diǎn)狀地圖上的每個(gè)點(diǎn)被賦予點(diǎn)所落入的多邊形內(nèi)的屬性數(shù)據(jù)。 線與多邊形疊加:一種gis操作,現(xiàn)狀地圖被疊加地圖上的多邊形邊界所分割,輸出地圖上每個(gè)弧段結(jié)合了來自線狀地圖和所落入多邊形的屬性。 多邊形與多邊形疊加:一種gis操作,其輸出地圖結(jié)合了來自輸入地圖和疊加地圖的多邊形邊界,生成一套新的多邊形,每個(gè)新的多邊形攜帶了兩幅地圖的屬性。 緩沖:一種gis操作,將落在所選地圖要素指定距離之內(nèi)的區(qū)域與之外的區(qū)域分開。相交(intersect):一種地圖疊加方法,僅保留那些落在輸入地圖和疊加地圖共同范圍的要素。聯(lián)合(union):保留輸入地圖和疊加地圖全部要素的一種多邊形與多邊形疊加方法。層疊置(identity):一種地圖疊加方法,僅保留那些落在由輸入地圖定義范圍內(nèi)的要素。模糊容差:用于gis軟件的距離容差,落在這一指定距離內(nèi)的點(diǎn)和線被強(qiáng)制捕捉到一起。 破碎多邊形:在地圖疊加中沿著兩個(gè)輸入地圖的共同邊界出現(xiàn)的極小多邊形。破碎多邊形往往來自數(shù)字化誤差。誤差傳遞:由于輸入地圖的誤差造成地圖疊加輸出中誤差的產(chǎn)生。最小制圖單元:由政府機(jī)構(gòu)或組織所指定的最小面積單元。 空間信息基本分析方法 2001-6-29 遠(yuǎn)圖開發(fā)室 地理信息系統(tǒng)(gis)具有很強(qiáng)的空間信息分析功能,這是區(qū)別于計(jì)算機(jī)地圖制圖系統(tǒng)的顯著特征之一。利用空間信息分析技術(shù),通過對(duì)原始數(shù)據(jù)模型的觀察和實(shí)驗(yàn),用戶可以獲得新的經(jīng)驗(yàn)和知識(shí),并以此作為空間行為的決策依據(jù)。 空間信息分析的內(nèi)涵極為豐富。作為gis的核心部分之一,空間信息分析在地理數(shù)據(jù)的應(yīng)用中發(fā)揮著舉足輕重的作用。疊置分析(overlay analysis)覆蓋疊置分析是將兩層或多層地圖要素進(jìn)行疊加產(chǎn)生一個(gè)新要素層的操作,其結(jié)果將原來要素分割生成新的要素,新要素綜合了原來兩層或多層要素所具有的屬性。也就是說,覆蓋疊置分析不僅生成了新的空間關(guān)系,還將輸入數(shù)據(jù)層的屬性聯(lián)系起來產(chǎn)生了新的屬性關(guān)系。覆蓋疊置分析是對(duì)新要素的屬性按一定的數(shù)學(xué)模型進(jìn)行計(jì)算分析,進(jìn)而產(chǎn)生用戶需要的結(jié)果或回答用戶提出的問題。1)多邊形疊置 這個(gè)過程是將兩層中的多邊形要素疊加,產(chǎn)生輸出層中的新多邊形要素,同時(shí)它們的屬性也將聯(lián)系起來,以滿足建立分析模型的需要。一般gis軟件都提供了三種多邊形疊置: (1)多邊形之和(union):輸出保留了兩個(gè)輸入的所有多邊形。 (2)多邊形之積(intersect):輸出保留了兩個(gè)輸入的共同覆蓋區(qū)域。 (3)多邊形疊合(identity):以一個(gè)輸入的邊界為準(zhǔn),而將另一個(gè)多邊形與之相匹配,輸出內(nèi)容是第一個(gè)多邊形區(qū)域內(nèi)二個(gè)輸入層所有多邊形。 多邊形疊置是個(gè)非常有用的分析功能,例如,人口普查區(qū)和校區(qū)圖疊加,結(jié)果表示了每一學(xué)校及其對(duì)應(yīng)的普查區(qū),由此就可以查到作為校區(qū)新屬性的重疊普查區(qū)的人口數(shù)。2)點(diǎn)與多邊形疊加 點(diǎn)與多邊形疊加,實(shí)質(zhì)是計(jì)算包含關(guān)系。疊加的結(jié)果是為每點(diǎn)產(chǎn)生一個(gè)新的屬性。例如,井位與規(guī)劃區(qū)疊加,可找到包含每個(gè)井的區(qū)域。3)線與