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

ArcGIS地統計分析總結[精選五篇]

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

第一篇:ArcGIS地統計分析總結

ArcGIS地統計分析(Geostatistical Analyst)1 介紹

1.1為什么使用ArcGIS Geostatistical Analyst

人為判斷總是會遺漏某些重要信息,同時也會無中生有。而ArcGIS Geostatistical Analyst提供客觀的數據驅動方法,定量預測數據變化趨勢和從空間數據中發掘特征模型。如果數據不夠精確或者模型不夠準確,這樣勢必影響輸出的地圖和從中得到的結論。而ArcGIS Geostatistical Analyst可以提供一個概率框架,來定量計算生成數據面時的不確定性。

元統計分析方法利用屬性數據之間的相關來推斷不同變量之間的聯系,ArcGIS Geostatistical Analyst可以聯合各種數據來做更精確的預測。ArcGIS Geostatistical Analyst可以有效地推測一些空間現象的未知部分,因此,對采樣計劃的設計和優化非常關鍵。

1.2使用ArcGIS Geostatistical Analyst的各個領域

這個模塊的應用對象不計其數,可以使用這個工具包開發任何一種地理數據集(比如坐標和屬性),下面列出幾個成功應用ArcGIS Geostatistical Analyst的典型領域:

氣象學家和統計學家應用ArcGIS Geostatistical Analyst來進行氣象數據分析。采礦行業廣泛的應用ArcGIS Geostatistical Analyst,涉及從最初的地質特征研究到產量控制的各個階段。

石油工業成功的應用ArcGIS Geostatistical Analyst,來分析包括地震數據和油井數據集成的空間數據,并且用來研究物理特性和地震屬性之間的相關關系。

在環境問題的研究中,ArcGIS Geostatistical Analyst的應用提供了一個分析空氣、土壤和地下水污染高效和一致的模型。演示、個例研究和研究教育論文提供了大量的應用ArcGIS Geostatistical Analyst的例子。同時,ArcGIS Geostatistical Analyst也成為評估漁業產量的一個標準方法。

精細農業所應用的土壤特性的圖形分析中,ArcGIS Geostatistical Analyst也得到廣泛應用。越來越多的農民或者農村顧問使用ArcGIS Geostatistical Analyst來增加作物產量、提高利潤、減小對環境的不利影響。

2基本原理

地統計學與經典統計學的共同之處在于:它們都是在大量采樣的基礎上,通過對樣本屬性值的頻率分布或均值、方差關系及其相應規則的分析,確定其空間分布格局與相關關系。但地統計學區別于經典統計學的最大特點即是:地統計學既考慮到樣本值的大小,又重視樣本空間位置及樣本間的距離,彌補了經典統計學忽略空間方位的缺陷。

地統計分析理論基礎包括前提假設、區域化變量、變異分析和空間估值。

2.1 前提假設(1)隨機過程

與經典統計學相同的是,地統計學也是在大量樣本的基礎上,通過分析樣本間的規律,探索其分布規律,并進行預測。地統計學認為研究區域中的所有樣本值都是隨機過程的結果,即所有樣本值都不是相互獨立的,它們是遵循一定的內在規律的。因此地統計學就是要揭示這種內在規律,并進行預測。

(2)正態分布

在統計學分析中,假設大量樣本是服從正態分布的,地統計學也不例外。在獲得數據后首先應對數據進行分析,若不符合正態分布的假設,應對數據進行變換,轉為符合正態分布的形式,并盡量選取可逆的變換形式。

(3)平穩性

對于統計學而言,重復的觀點是其理論基礎。統計學認為,從大量重復的觀察中可以進行預測和估計,并可以了解估計的變化性和不確定性。對于大部分的空間數據而言,平穩性的假設是合理的。這其中包括兩種平穩性:一是均值平穩,即假設均值是不變的并且與位置無關;另一類是與協方差函數有關的二階平穩和與半變異函數有關的內蘊平穩。二階平穩是假設具有相同的距離和方向的任意兩點的協方差是相同的,協方差只與這兩點的值相關而與它們的位置無關。內蘊平穩假設是指具有相同距離和方向的任意兩點的方差(即變異函數)是相同的。二階平穩和內蘊平穩都是為了獲得基本重復規律而作的基本假設,通過協方差函數和變異函數可以進行預測和估計預測結果的不確定性。

2.2 區域化變量

當一個變量呈現一定的空間分布時,稱之為區域化變量,它反映了區域內的某種特征或現象。區域化變量與一般的隨機變量不同之處在于,一般的隨機變量取值符合一定的概率分布,而區域化變量根據區域內位置的不同而取不同的值。而當區域化變量在區域內確定位置取值時,表現為一般的隨機變量,也就是說,它是與位置有關的隨機變量。在實際分析中,常采用抽樣的方式獲得區域化變量在某個區域內的值,即此時區域化變量表現為空間點函數:

Z?x??Z?xu,xv,xw?

根據其定義,區域化變量具有兩個顯著特征:即隨機性和結構性。首先,區域化變量是一個隨機變量,它具有局部的、隨機的、異常的特征;其次,區域化變量具有一定的結構特點,即變量在點x與偏離空間距離為h的點x+h處的值Z(x)和Z(x+h)具有某種程度的相似性,即自相關性,這種自相關性的程度依賴于兩點間的距離h及變量特征。除此之外,區域化變量還具有空間局限性(即這種結構性表現為一定范圍內)、不同程度的連續性和不同程度的各向異性(即各個方向表現出的自相關性有所區別)等特征。

2.3 變異分析

(1)協方差函數 協方差又稱半方差,表示兩隨機變量之間的差異。在概率論中,隨機變量X與Y的協方差定義為:

Cov?X,Y??E??X?E?X???Y?E?Y???

借鑒上式,地統計學中的協方差函數可表示為:

1N?h?C?h??Z?xi??Z?xi?Z?xi?h??Z?xi?h? ?N?h?i?1????

其中,Z(x)為區域化隨機變量,并滿足二階平穩假設,即隨機變量Z(x)的空間分布規律不因位移而改變;h為兩樣本點空間分隔距離;Z?xi?為Z(x)在空間點處xi的樣本值。

Z?xi?h?是Z(x)在處距離偏離h的樣本值[i=1,2,…,N(h)];N(h)是分隔距離為h時的樣本點對總數;Z?xi?和Z?xi?h?分別為Z?xi?和Z?xi?h?的樣本平均數,即:

1nZ?xi???Z?xi?

ni?1

1nZ?xi?h???Z?xi?h?

ni?1

(2)半變異函數 半變異函數又稱半變差函數、半變異矩,是地統計分析的特有函數。區域化變量Z(x)在點x和x+h處的值Z(x)與Z(x+h)差的方差的一半稱為區域化變量Z(x)的半變異函數,記為r(h),2r(h)稱為變異函數。

根據定義有:

1r?x,h??Var[Z(x)?Z(x?h)]

2112r?x,h??E[Z(x)?Z(x?h)]?{E[Z(x)]?E[Z(x?h)]}2 22

區域化變量Z(x)滿足二階平穩假設,因此對于任意的h有:

E[Z(x?h)]?E[Z(x)]

因此,半變異函數可改寫為:

1r?x,h??E[Z(x)?Z(x?h)]2

2由上式可知,半變異函數依賴于自變量x和h,當半變異函數r(x,h)僅僅依賴于距離h而與位置x無關時,r(x,h)可改寫為r(x),即:

1r?h??E[Z(x)?Z(x?h)]2

2具體表示為:

1N(h)2r?h??[Z(xi)?Z(xi?h)] ?2N(h)i?1

各變量的含義同前。也有將r(h)稱為變異函數,兩者使用上不引起本質上的差別。

(3)變異分析 半變異函數和協方差函數把統計相關系數的大小作為一個距離的函數,是地理學相近相似定理定量量化。

圖10.1和圖10.2顯示,半變異值的變化隨著距離的加大而增加,協方差隨著距離的加大

而減小。這主要是由于半變異函數和協方差函數都是事物空間相關系數的表現,當兩事物彼此距離較小時,它們是相似的,因此協方差值較大,而半變異值較小;反之,協方差值較小,而半變異值較大。此外,協方差函數和半變異函數隨著距離的加大基本呈反向變化特征,它們之間的近似關系表達式為:

r(h)?sill?C(h)

半變異函數曲線圖和協方差函數曲線反映了一個采樣點與其相鄰采樣點的空間關系。此外,它們對異常采樣點具有很好的探測作用,在ArcGIS地統計分析模塊中可以使用兩者的任意一個,一般采用半變異函數。在半變異曲線圖中有兩個非常重要的點:間隔為0時的點和半變異函數趨近平穩時的拐點,由這兩個點產生四個相應的參數:塊金值(Nugget)、變程(Range)、基臺值(Sill)、偏基臺值(Partial Sill)它們的含義表示如下:

塊金值(Nugget):理論上,當采樣點間的距離為0時,半變異函數值應為0,但由于存在測量誤差和空間變異,使得兩采樣點非常接近時,它們的半變異函數值不為0,即存在塊金值。測量誤差是儀器內在誤差引起的,空間變異是自然現象在一定空間范圍內的變化。它們任意一方或兩者共同作用產生了塊金值。

基臺值(Sill):當采樣點間的距離h增大時,半變異函數人r(h)從初始的塊金值達到一個相對穩定的常數時,該常數值稱為基臺值。當半變異函數值超過基臺值時,即函數值不隨采樣點間隔距離而改變時,空間相關性不存在。

偏基臺值(Partial Sill):基臺值與塊金值的差值變程(Range):當半變異函數的取值由初始的塊金值達到基臺值時采樣點的間隔距離稱為變程。變程表示了在某種觀測尺度下,空間相關性的作用范圍,其大小受觀測尺度的限定。在變程范圍內,樣點間的距離越小,其相似性,即空間相關性越大。當h>R時,區域化變量Z(x)的空間相關性不存在,即當某點與已知點的距離大于變程時,該點數據不能用于內插或外推。

當限定的樣本點間隔過小時,可能出現曲線圖上曲線為一近似平行于橫坐標的直線,此時半變異函數表現為純塊金效應。這是由于所限定的樣本間隔內,點與點的變化很大,即各個樣點是隨機的,不具備空間相關性,區域內樣點的平均值即是最佳估計值。此時只有增大樣本間隔,才能反映出樣本間的空間相關性。

空間相關性的強弱可由Partial_Sill/Sill來反映,該值越大,空間相關性越強,相應地,Nugget/Sill稱為基底效應,表示樣本間的變異特征,該值越大,表示樣本間的變異更多得是由隨機因素引起的。

2.4 空間估值

一個完整的地統計分析過程,或者說空間估值過程,一般為:首先是獲取原始數據,檢查、分析數據,找尋數據暗含的特點和規律,比如是否為正態分布、有沒有趨勢效應、各向異性等等;然后選擇合適的模型進行表面預測,這其中包括半變異模型的選擇和預測模型的選擇;最后檢驗模型是否合理或幾種模型進行對比。克里格插值

克里格插值(Kriging)又稱空間局部插值法,是以變異函數理論和結構分析為基礎,在有限區域內對區域化變量進行無偏最優估計的一種方法,是地統計學的主要內容之一。南非礦產工程師D.R.Krige(1951年)在尋找金礦時首次運用這種方法,法國著名統計學家G.Matheron隨后將該方法理論化、系統化,并命名為Kriging,即克里格方法。

克里格方法的適用范圍為區域化變量存在空間相關性,即如果變異函數和結構分析的結果表明區域化變量存在空間相關性,則可以利用克里格方法進行內插或外推;否則反之。其實質是利用區域化變量的原始數據和變異函數的結構特點,對未知樣點進行線性無偏、最優估計。無偏是指偏差的數學期望為0,最優是指估計值與實際值之差的平方和最小。也就是說,克里格方法是根據未知樣點有限鄰域內的若干已知樣本點數據,在考慮了樣本點的形狀、大小和空間方位,與未知樣點的相互空間位置關系,以及變異函數提供的結構信息之后,對未知樣點進行的一種線性無偏最優估計。

地統計分析的核心就是通過對采樣數據的分析、對采樣區地理特征的認識選擇合適的空間內插方法創建表面。插值方法按其實現的數學原理可以分為兩類:一是確定性插值方法,另一類是地統計插值,也就是克里格插值,如圖所示。

確定性插值方法以研究區域內部的相似性(如反距離加權插值法)、或者以平滑度為基礎(如徑向基函數插值法)由已知樣點來創建表面。地統計插值方法(例如克里格法)利用的則是已知樣點的統計特性。地統計插值方法不但能夠量化已知點之間的空間自相關性,而且能夠解釋說明采樣點在預測區域范圍內的空間分布情況。

確定性插值方法有可以分為兩種:即全局性插值方法和局部性插值方法,如圖10.4所示。全局性插值方法以整個研究區的樣點數據集為基礎來計算預測值,局部性插值方法則使用一個大研究區域內較小的空間區域內的已知樣點來計算預測值。

克里格方法與反距離權插值方法有些類似,兩者都通過對已知樣本點賦權重來求得未知樣點的值,可統一表示為:

Z(x0)???iZ(xi)i?1n

式中,Z(x0)為未知樣點的值,Z(xi)為未知樣點周圍的已知樣本點的值,λi為第i個已知樣本點對未知樣點的權重,n為已知樣本點的個數。

不同的是,在賦權重時,反距離權插值方法只考慮已知樣本點與未知樣點的距離遠近,而克里格方法不僅考慮距離,而且通過變異函數和結構分析,考慮了已知樣本點的空間分布及與未知樣點的空間方位關系。

空間插值方法根據是否能保證創建的表面經過所有的采樣點,又可以分為精確性插值和非精確性插值。精確性插值法預測值在樣點處的值與實測值相等,非精確性插值法預測值在樣點處的值與實測值一般不會相等。使用非精確性插值法可以避免在輸出表面上出現明顯的波峰或波谷。反距離權插值和徑向基插值屬于精確性插值方法,而全局多項式插值、局部多項式插值,以及克里格插值都屬于非精確性插值方法。

Z?xi? Z?xi?

Z?xi?h? Z?xi?h?

xi

第二篇:Arcgis使用總結

一、feature生成Tin

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

二、3D圖

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

三、散點關系圖

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

四、arcgis導出點XY坐標

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

五、由點坐標生成點

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

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

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

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

x,y

86.578,46.689

87.433,45.654

保存成txt就可以了。

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

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

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

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

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

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

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

第三篇:Arcgis Engine開發總結集錦

1.目錄

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

發現AE比起其它的組件GIS來要好用的多 但也有一些bt的地方

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

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

于是去找了找資料

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

一直想省點事

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

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

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

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

this.axMapControl1.Map.ClearLayers();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IGraphicsContainer GraphicsContainer =(IGraphicsContainer)GraphicsContainerSelect;

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

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

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

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

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

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

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

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

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

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

IFeature 有一個方法Delete 可以用于刪除 當時經過測試發現對Shapefile 會拋出異常來。

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

對所有的數據源類型都可以使用。

注意事項

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

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

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

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

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

5.如何實現經度緯度到平面坐標的相互轉換?(轉載)

分類:WebGIS網絡地理信息系統研究

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

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

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

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

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

flatref = pfactory.CreateProjectedCoordinateSystem(54013);

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

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

/// 將經緯度點轉換為平面坐標。

private IPoint GetProject(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = earthref;

geo.Project(flatref);

return pt;

}

/// 將平面坐標轉換為經緯度。

private IPoint GetGeo(double x, double y)

{

IPoint pt = new PointClass();

pt.PutCoords(x, y);

IGeometry geo =(IGeometry)pt;

geo.SpatialReference = flatref;

geo.Project(earthref);

double xx = pt.X;

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

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

//閃爍目標

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

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

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

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

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

藍藍的小志 發表于 2005-6-5 10:07:08

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

代碼如下:

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

Dim pFeatureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass

Dim pTopoOper As ESRI.ArcGIS.Geometry.ITopologicalOperator

Dim pBufferPoly As ESRI.ArcGIS.Geometry.IPolygon

Dim pFeatCursor As ESRI.ArcGIS.Geodatabase.IFeatureCursor

Dim pFeature As ESRI.ArcGIS.Geodatabase.IFeature

Try

pFeatureClass = pFeatLyr.FeatureClass

pFeatCursor = pFeatureClass.Search(Nothing, False)

pFeature = pFeatCursor.NextFeature

Do

If Not(pFeature Is Nothing)Then

pTopoOper = pFeature.Shape()

pBufferPoly = pTopoOper.Buffer(distance)

'pFeature = pFeatClass.CreateFeature

pFeature.Shape = pBufferPoly

pFeature.Store()

pFeature = pFeatCursor.NextFeature()

End If

Loop Until(pFeature Is Nothing)

Catch

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

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

End Try

pFeature = Nothing

pFeatCursor = Nothing

pBufferPoly = Nothing

pTopoOper = Nothing

pFeatureClass = Nothing

pFeatLyr = Nothing

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

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

2.1.鷹眼地圖資源載入

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

4.{

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

6.axMapControl2.LoadMxFile(axMapControl1.DocumentFilename);

7.axMapControl2.Extent = axMapControl2.FullExtent;

8.}

9.2.繪制鷹眼矩形框

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

11.{

12.// 得到新范圍

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

14.IGraphicsContainer pGra = axMapControl2.Map as IGraphicsContainer;

15.IActiveView pAv = pGra as IActiveView;

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

17.pGra.DeleteAllElements();

18.IRectangleElement pRectangleEle = new RectangleElementClass();

19.IElement pEle = pRectangleEle as IElement;

20.pEle.Geometry = pEnv;

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

22.IRgbColor pColor = new RgbColorClass();

23.pColor.Red = 255;

24.pColor.Green = 0;

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

28.ILineSymbol pOutline = new SimpleLineSymbolClass();

29.pOutline.Width = 2;

30.pOutline.Color = pColor;

31.//設置顏色屬性

32.pColor = new RgbColorClass();

33.pColor.Red = 255;

34.pColor.Green = 0;

35.pColor.Blue = 0;

36.pColor.Transparency = 0;

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

38.IFillSymbol pFillSymbol = new SimpleFillSymbolClass();

39.pFillSymbol.Color = pColor;

40.pFillSymbol.Outline = pOutline;

41.IFillShapeElement pFillShapeEle = pEle as IFillShapeElement;

42.pFillShapeEle.Symbol = pFillSymbol;

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

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

45.}

46.3.實現互動

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

48.{

49.IPoint pPt=new PointClass();

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

52.axMapControl1.CenterAt(pPt);

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

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

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

Topology實現了ITopology這個接口 但是給類是不能用來創建對象的。

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

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

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

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

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

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

//activeView 是活動的試圖

//首先要把將點坐標轉換為地圖中的坐標。//然后調用MoveTo 方法

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

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

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

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

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

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

TopologyCount 拓撲的數目

10.為什么使用接口編程{轉載}

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

計算機出現以后,科學家相繼開發了多種語言,從smalltalk,Pascal,Basic,C語言,C++,java,.net等等,這些語言的發展步伐,可以看作是從面向過程向面向對象發展的一段歷史。很多面向對象的書在介紹自己的歷史的時候,都會給讀者介紹這一段歷史,并鼓吹OO編程是多么多么的優異。問題是,很多剛開始學程序的人根本不知道為什么要有這個轉變,他們也很難理解OO語言中的虛函數,接口等概念到底為了什么而提出來。

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

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

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

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

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

Dim pGraphicsContainer as iGraphicsContainer pGraphicsContainer=application.document.ActiveView.focusMap pGraphicsContainer可以使用的屬性和方法就只能是它定義的那部分了,而不能使用管理元素等的接口定義的方法和屬性,那我們如何使用其它的功能呢?這就是所謂的QI(Query Interface)功能。從一個接口查詢另一個接口。

Dim pGeoFeatureLayer as iGeofeatureLayer pGeoFeatureLayer= pGraphicsContainer QI

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

一個代碼示例:

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

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

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

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

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

//閃爍目標

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

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

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

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

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

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

修改時間: 2004-08-31 提交人: 吳樂茂 內容摘要

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

過程描述

對于Windows:

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

2.用適當的RDBMS連接變量(如RACLE_SID)更新新的dbinit.sde 文件。3.用新的實例名、端口號和網絡協議更新 %SDEHOME%etcservices.sde文件。

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

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

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

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

對于UNIX:

1.給新實例創建一個新的工作目錄。

2.拷貝 $SDEHOME 到新創建的工作目錄。

3.用適當的RDBMS 連接變量(如ORACLE_SID)更新新的dbinit.sde 文件。4.用新的實例名、端口號和網絡協議更新 $SDEHOME/etc/services.sde 文件。

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

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

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

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

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

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

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

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

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

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

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

拓撲空間查詢

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

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

緩沖區分析

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

疊加分析

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

距離分析及相鄰相接分析

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

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

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

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

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

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

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

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

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

地理信息系統技術廣泛應用于農業、林業、國土資源、地礦、軍事、交通、測繪、水利、廣播電視、通訊、電力、公安、社區管理、教育、能源等幾乎所有的行業,并正在走進人們日常的工作、學習和生活中。

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

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

Boundary(邊界):

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

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

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

空間關系:

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

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

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

1、2-

1、3-

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

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

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

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

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

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

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

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

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

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

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

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

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

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

15.ArcGIS Engine 中的相交分析的實現

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

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

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

{ 3

try 4

{ 5

//分析層

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

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

15

21

26

31

//疊加表

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

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

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

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

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

//輸出要素層設置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();37

pOutputFeatLayer.FeatureClass=pOutputFeatClass;38

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;39 40

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

axMapControl1.Update();42

} 43

catch(Exception ex)44

{ 45

MessageBox.Show(ex.Message);46

} 47

} 16.GIS基本概念集錦

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

非空間的 空間的

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

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

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

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

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

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

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

7、柵格——柵格結構是最簡單最直接的空間數據結構,是指將地球表面劃分為大小均勻緊密相鄰的網格陣列,每個網格作為一個象元或象素由行、列定義,并包含一個代碼表示該象素的屬性類型或量值,或僅僅包括指向其屬性記錄的指針。因此,柵格結構是以規則的陣列來表示空間地物或現象分布的數據組織,組織中的每個數據表示地物或現象的非幾何屬性特征。特點:屬性明顯,定位隱含,即數據直接記錄屬性本身,而所在的位置則根據行列號轉換為相應的坐標,即定位是根據數據在數據集中的位置得到的,在柵格結構中,點用一個柵格單元表示;線狀地物用沿線走向的一組相鄰柵格單元表示,每個柵格單元最多只有兩個相鄰單元在線上;面或區域用記有區域屬性的相鄰柵格單元的集合表示,每個柵格單元可有多于兩個的相鄰單元同屬一個區域。

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

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

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

11、空間分析方法——

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

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

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

4、網絡分析:路徑分析、地址匹配、資源匹配;

5、空間統計分析:插值、趨勢分析、結構分析;

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

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

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

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

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

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

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

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

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

21、線密度——用所有區域內的線的總長度除以區域的面積。

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

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

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

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

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

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

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

29、地理模型的類型——類似統計同類的描述性模型和與推理統計技術相關的規則性模型。

30、常見模型——

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

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

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

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

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

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

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

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

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

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

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

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

37、詳細描述應用型地理信息系統的開發過程

1、系統總體設計:需求和可行性分析、數據模型設計、數據庫設計、方法設計

2、系統軟件設計:開發語言、用戶界面、流程、交互

3、程序代碼編寫:投影、數據庫、輸入、編輯

4、系統的調試與運行:α調試、β調試

5、系統的評價與維護:功能評價、費用評價、效益評價

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

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

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

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

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

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

{ 3

try 4

{ 5

//分析層

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

IFeatureLayer pInputFeatLayer=pLayer as IFeatureLayer;

ITable pInputTable=pLayer as ITable;9

IFeatureClass pInputFeatClass=pInputFeatLayer.FeatureClass;10 11

//疊加表

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

ITable pOverlayTable=pLayer as ITable;14 15

//疊加分析表

IFeatureClassName pFeatClassName=new FeatureClassNameClass();17

pFeatClassName.FeatureType=esriFeatureType.esriFTSimple;18

pFeatClassName.ShapeFieldName=“shape”;19

pFeatClassName.ShapeType=pInputFeatClass.ShapeType;20 21

26

31

40

//工作空間名稱

IWorkspaceName pNewWSName=new WorkspaceNameClass();

pNewWSName.WorkspaceFactoryProgID = “esriDataSourcesFile.ShapefileWorkspaceFactory”;

pNewWSName.PathName = @“C:temp”;

//數據集名稱

IDatasetName pDatasetName=pFeatClassName as IDatasetName;

pDatasetName.Name=“ss”;

pDatasetName.WorkspaceName=pNewWSName;

//幾何處理

IBasicGeoprocessor pBGP=new BasicGeoprocessorClass();

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

//輸出要素層設置

IFeatureLayer pOutputFeatLayer=new FeatureLayerClass();

pOutputFeatLayer.FeatureClass=pOutputFeatClass;

pOutputFeatLayer.Name=pOutputFeatClass.AliasName;

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

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

MessageBox.Show(ex.Message);46

} 47

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

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

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

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

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

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

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

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

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

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

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

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

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

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

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

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

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

www.tmdps.cn 2001-6-29 遠圖開發室

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

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

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

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

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

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

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

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

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

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

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

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

(5)站點(Stops),在路徑選擇中資源增減的站點,如庫房、汽車站等,其狀態屬性有要被運輸的資源需求,如產品數。

網絡中的狀態屬性有阻力和需求兩項,實際的狀態屬性可通過空間屬性和狀態屬性的轉換,根據實際情況賦到網絡屬性表中。1)路徑分析

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

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

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

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

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

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

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

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

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

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

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

MoranI指數,其計算公式如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for(long j=0;j

{

ipPutClass->GetFeature(i,&ipFeature1);

ipOutClass->GetFeature(j,&ipFeature2);

ipFeature1->get_Shape(&ipGeo1);

ipFeature2->get_Shape(&ipGeo2);

ipTo=ipGeo1;

switch(mode)

{

case 0:

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

break;

case 1:

ipTo->Union(ipGeo2,&ipNew);

break;

case 2:

ipTo->Difference(ipGeo2,&ipNew);

}

IFeaturePtr ipFeature;

ipNewClass->CreateFeature(&ipFeature);

ipFeature->putref_Shape(ipNew);

ipFeature->Store();

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

方法二:利用IBasicGeoprocess接口

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

IFeatureLayerPtr ipFeaLay;IFeatureClassPtr ipFeaCls;HRESULT hr;

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

ipFeaLay=ipLay;if(ipFeaLay){

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

if(FAILED(hr))return;

}

ITablePtr ipInPutTable(ipLay);hr=ipMap->get_Layer(1,&ipLay);

ipFeaLay=ipLay;if(ipFeaLay!=0)

hr=ipFeaLay->get_FeatureClass(&ipFeaCls);

ITablePtr ipOverlayTable(ipLay);

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

IBasicGeoprocessorPtr ipBGP(CLSID_BasicGeoprocessor);IFeatureClassPtr ipOutputFeaCls;hr=ipBGP->Intersect(ipInPutTable,VARIANT_FALSE,ipOverlayTable,VARIANT_FALSE,double(0),ipFeaClsName,&ipOutputFeaCls);

IFeatureLayerPtr ipOutputFeaLay(CLSID_FeatureLayer);ipOutputFeaLay->putref_FeatureClass(ipOutputFeaCls);BSTR OutFeaClsAliName;hr=ipOutputFeaCls->get_AliasName(&OutFeaClsAliName);if(FAILED(hr))return;hr=ipOutputFeaLay->put_Name(OutFeaClsAliName);if(FAILED(hr))return;hr=ipMap->AddLayer(ipOutputFeaLay);if(FAILED(hr))return;IActiveViewPtr ipAV(ipMap);ipAV->Refresh();

22.ArcEngine中實現捕捉功能

捕捉功能主要使用ArcEngine中的兩個接口

1.IHitTest用于作點擊測試

2.IFeatureCache 用于建立做緩存

由于數據庫中有多個FeatureClass,而每個FeatureClass又可以做多種點擊測試 所以這里有會有好幾種捕捉方案。

我們稱呼每一個可以執行捕捉的對象叫捕捉代理,所有的代理在一個捕捉環境中 方案1:每個代理負責測試一種FeatureClass的一種點擊方式 方案2:每個代理負責測試一種FeatureClass的所有點擊方式 方案3:一代理負責測試所有的FeatureClass的一種點擊方式 方案4:一個代理負責測試所有FeatureClass的所有點擊方式

在實際使用過程中 我們使用的是第一種方案。但是我個人認為第二種方案比較好。當然這只是個人推測 沒有測試數據證明。

下面給出第一種方案的代碼: ///

/// IFeatureSnapAgent 的摘要說明。

///

public interface IFeatureSnapAgent:ISnapAgent,ISnapAgentFeedback {

IFeatureCache FeatureCache

{

get;

}

IFeatureClass FeatureClass

{

get;

set;

}

esriGeometryHitPartType HitPartType

{

get;

set;

}

///

/// 為捕捉連接事件,當捕捉發生的時候,就會觸發事件。

///

///

void AddSnapedEventHandler(GeometrySnapedEventHandler handler);

///

/// 不再監聽捕捉事件

///

///

void RemoveSnapedEventHandler(GeometrySnapedEventHandler handler);} ///

/// 默認的要素捕捉代理

///

public class DefaultFeatureSnapAgent :IFeatureSnapAgent,IEditEvents,ESRI.ArcGIS.esriSystem.IPersistVariant

{

#region 構造函數

///

/// 為代理指定別名。注意該代理目前還沒有關聯到任何目標FeatureClass

/// 要使得該代理起作用,必須要為他設置FeatureClass.///

///

名稱(請確保唯一)

public DefaultFeatureSnapAgent(string name):this(name,null)

{

}

///

/// 將使用該FeatureClass的別名做代理的名稱

///

///

public DefaultFeatureSnapAgent(IFeatureClass feaClass):this(feaClass.AliasName,feaClass)

{

}

///

/// 完全初始化捕捉代理

///

///

名稱(請確保唯一)

///

目標FeatureClass

public DefaultFeatureSnapAgent(string name,IFeatureClass feaClass)

{

m_snapAgentName=name;

m_bCacheHasCreated=false;

m_hitPartType=esriGeometryHitPartType.esriGeometryPartNone;

this.m_isSnapWorking=true;

this.m_featureClass=feaClass;

this.m_snapFeedbackText="";

}

#endregion

#region IFeatureSnapAgent 成員

private event GeometrySnapedEventHandler

m_snapSubsciber;

///

/// FeatureClass緩沖區。

///

private IFeatureCache m_featureCache;

///

/// 該代理將捕捉在該FeatureClass上的Feature.和Geometry

///

private IFeatureClass m_featureClass;

///

/// 點擊測試的有效類型。

///

protected esriGeometryHitPartType m_hitPartType;

///

/// 緩沖區對象是否已經被創建了。跟是否建立了緩沖沒有關系。

///

private bool

m_bCacheHasCreated;

///

/// 緩沖區對象

///

public IFeatureCache FeatureCache

{

get

{

return m_featureCache;

}

}

///

第四篇:Arcgis中工具總結

1.要素的剪切與延伸

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

2.自動捕捉跟蹤工具

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

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

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

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

Dim Output as double

Dim pArea as Iarea

Set pArea = [shape]

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

長度計算:

Dim Output as double

Dim pCurve as ICurve

Set pCurve = [shape]

Output = pCurve.Length

4.剪切圖斑

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

5.配準工具

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

Georeferncing工具

7.要素變形

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

8.添加節點

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

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

9.共享多邊形生成

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

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

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

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

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

轉載ESRI論壇Lucy1114帖子說明:

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

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

13.建立注記層

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

14.查看特定區域范圍內的某種地物分布情況

Selection / select by location

15.如何用面生成中線

先把數據轉成coverage格式,workstion里有Centerline命令。

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

16.根據坐標數據生成點

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

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

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

17.用任意多邊形剪切柵格數據(矢量數據轉換為柵格數據)

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

在ArcMap中,加載柵格數據:Landuse、和ClipPoly.shp

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

打開 空間分析工具欄

GIS軟件應用-ArcGIS

執行命令:<空間分析>-<轉換>--<要素到柵格>

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

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

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

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

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

得到的結果即是以任意多邊形剪切的Landuse數據

18.柵格重分類(Raster Reclassify)

通過柵格重分類操作可以將連續柵格數據轉換為離散柵格數據

19.Eliminate合并破碎多邊形

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

邊的多邊形中:

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

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

打開 Arctoolbox,執行 [消除] 命令

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

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

20.重疊要素的選擇切換

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

操作步驟:

1).在編輯環境中選中覆蓋同一區域的多個要素中的一個要素

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

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

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

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

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

二、編輯工具:

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

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

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

四、Edit Annotation工具:

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

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

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

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

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

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

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

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

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

五、Sketch工具:

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

六.鼠標操作技巧

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

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

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

22.對線要素標注的增強

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

操作步驟:

1).把標注轉成注記,保存在GDB中

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

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

23.同一圖層使用Clip實現圖斑的無縫拼接

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

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

如下圖所示:

24.利用兩個相交圖斑創建新圖斑。

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

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

Options/switch selection

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

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

(以前都是直接export竟然沒有發現)

27.利用Hyperlinks豐富數據庫,為其添加超鏈接。

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

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

28.Arcmap中的SQL語言

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

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

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

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

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

UPPER(“LAST_NAME”)= 'JONES'

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

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

*表示多個字符。

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

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

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

29.Select by location小結

按位置查找要素的方法

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

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

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

相交(Intersect)

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

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

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

中心在?里(Have their center in)

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

完全在?內(Are completely within)

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

完全包含(Completely contain)

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

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

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

與?等同(Are identical to)

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

包含(Contain)

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

包含于(Are Contained by)

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

與?接觸(Touch the boundary of)

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

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

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

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

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

32.顯示選中要素的屬性

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

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

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

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

2).單擊Labels選項卡。

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

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

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

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

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

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

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

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

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

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

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

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

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

有關geodatabase的topology規則

多邊形topology

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

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

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

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

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

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

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

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

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

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

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

線topology

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

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

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

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

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

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

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

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

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

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

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

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

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

Topology工具條及功能介紹:

37.給多個要素同一賦值

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

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

SE60度,140米

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

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

對該圖層開始編輯

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

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

確定,即可

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

Direction-distance tool is here

第二種方法就是直接編寫代碼實現

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

Option Explicit

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

Call bbb

Dim aa As IMxDocument

Set aa = ThisDocument

Dim pFLyr As IFeatureLayer

GIS空間站 knight_sl)

Set pFLyr = aa.FocusMap.Layer(0)

Dim pFCsr As IFeatureCursor

Dim pFt As IFeature

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

Set pFt = pFCsr.NextFeature

Dim pPoint As IPoint

Set pPoint = pFt.ShapeCopy

Dim pNewPoint As IPoint

Dim X0 As Double, Y0 As Double

Dim X As Double, Y As Double

Dim dAngle As Double

Dim i As Long

For i = 0 To UBound(dPoint, 1)

Set pFt = pFLyr.FeatureClass.CreateFeature

Set pNewPoint = New Point

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

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

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

Set pFt.Shape = pNewPoint

pFt.Store

Next

Set pFLyr = Nothing

Set pFCsr = Nothing

Set pFt = Nothing

Set pPoint = Nothing

Set pNewPoint = Nothing End Sub Sub bbb()

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

dPoint(0, 0)= 10

dPoint(0, 1)= 150

dPoint(1, 0)= 30

dPoint(1, 1)= 170

dPoint(2, 0)= 120

dPoint(2, 1)= 200

End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sketch construction tools的使用:

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

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

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

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

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

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

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

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

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

Propertis/label field /expression

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

輸出分數線 VbCrLf 換行

效果圖:

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

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

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

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

” & [LABELFIELD] & “” Color:

” & [LABELFIELD] & “

” & [LABELFIELD] & “” Bold:

” & [LABELFIELD] & “” Italic:

” & [LABELFIELD] & “

Underline:

” & [LABELFIELD] & “” All caps:

” & [LABELFIELD] & “

Small caps:

” & [LABELFIELD] & “

Superscript

” & [LABELFIELD] & “

Subscript:

” & [LABELFIELD] & “

Character spacing(%):

” & [LABELFIELD] & “

Word spacing(%):

” & [LABELFIELD] & “

Leading(pts):

” & [LABELFIELD] & “

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

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

Function FindLabel([OBJECTID], [SHAPE_Area])

Dim nFMLength

Dim nFZLength

nFMLength = Len([SHAPE_Area])

nFZLength = Len([OBJECTID])

Dim strLeftSpace

Dim strRightSpace strLeftSpace

= ”“

strRightSpace= ”“

If nFMLength > nFZLength Then

For i=0 To

(nFMLength-nFZLength)/2

strLeftSpace =strLeftSpace +chr(32)

strRightSpace =strRightSpace + chr(32)

Next

End If

FindLabel =

&strLeftSpace

& [OBJECTID]&strRightSpace& [SHAPE_Area]

End Function

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

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

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

42.幾個常用的VBA代碼

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

使用方法

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

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

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

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPoint As IPoint

Set pPoint = pGeo

賦值部分: pPoint.X

2--點坐標Y

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

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

3--多邊形周長

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

賦值部分:

pPolygon.Length

4--多邊形面積

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

賦值部分:

pArea.Area

5--多邊形重心X

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolygon As IPolygon

Set pPolygon = pGeo

Dim pArea As IArea

Set pArea = pPolygon

Dim pPoint As IPoint

Set pPoint = pArea.Centroid

賦值部分: pPoint.X

6--多邊形重心Y

VBA部分: 同上

賦值部分: pPoint.Y

7--Polyline長度

VBA部分:

Dim pGeo As IGeometry

Set pGeo = [Shape]

Dim pPolyline As IPolyline

Set pPolyline = pGeo

Dim pCurve As IPolycurve

Set pCurve = pPolyline

賦值部分:

pCurve.Length

8--表示點坐標X

VBA部分:

Dim pDoc As IMxDocument

Set pDoc = ThisDocument

Dim pSpRef As ISpatialReference

Set pSpRef = pDoc.FocusMap.SpatialReference

Dim pClone As IClone

Set pClone = [Shape]

Dim pGeo As IGeometry

Set pGeo = pClone.Clone

Dim pPoint as IPoint

Set pPoint = pGeo

pGeo.Project pSpRef

賦值部分: pPoint.X

9--表示點坐標Y

VBA部分: 同上

賦值部分: pPoint.Y

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

10--連續編號

VBA部分:

Static lCount as long

lCount=lCount+1

賦值部分:

lCount(從1開始)

lCount-1(從0開始)

計算面的中點

第五篇:arcgis教案

崇德博智,扶危定傾。

2016-2017春季學期

地理信息系統

ARCGIS

教程

制作人:防災科技學院

郭子愷

版權問題

禁止竊取 崇德博智,扶危定傾。

目錄

一、安裝----4

1.安裝程序

(1)Desktop CN 安裝過程(2)License Manager安裝過程(3)安裝漢化包

2.更改破解文件內容并完成后續更改(1)更改破解文件(2)后續更改

二、基礎操作----19

1.進入arcgis軟件 2.arcgis新建地圖 3.連接到文件夾 4.添加底圖

5.創建點文件、線文件、區文件 6.添加所需工作框

7.丟失的目錄、內容列表和搜索 8.開始編輯和停止編輯 9.放大和縮小及拖動圖層

三、繪圖----30

1.點要素

(1)選擇點的畫出形式(2)繪畫點及點的種類規劃(3)標注

(4)點的拖動更改位置

2.線要素

(1)繪制線和構造工具的選擇(2)線段的切割

(3)線段控制點的添加(4)繪畫形式的選擇(5)線的id賦予

崇德博智,扶危定傾。

3.區要素

(1)區的繪畫和構造工具的選擇(2)區的id賦予

四、圖件的輸出----57

1.查漏補缺

2.數據視圖改為布局視圖

3.插入圖例、比例尺和指北針 4.導出地圖

5.保存arcmap文檔 崇德博智,扶危定傾。

一、安裝

1.安裝程序(兩個主要程序及一個漢化包)

兩個主要程序安裝完成后都會彈出窗口關閉即可。

單機上圖文件夾

分別點開Desktop CN文件夾和License Manager文件夾

分別點擊此圖標進行安裝(一次只能安裝一個文件夾里的程序,無前后順序)

(1)Desktop CN 安裝過程(軟件較大需耐心等待,不要點擊取消退出安裝)

點擊下一步。崇德博智,扶危定傾。

點擊我接受許可協議,然后點擊下一步。

點擊完全安裝,然后點擊下一步。崇德博智,扶危定傾。

可更改安裝目錄,無需更改則可直接點擊下一步。

可更改安裝目錄,無需更改則可直接點擊下一步。崇德博智,扶危定傾。

點擊安裝。

等待安裝。崇德博智,扶危定傾。

點擊完成。崇德博智,扶危定傾。(2)License Manager安裝過程

點擊next。

點擊I accept the license agreement,然后點擊next。崇德博智,扶危定傾。

可更改安裝目錄,或不更改然后直接點擊next。

點擊Install。崇德博智,扶危定傾。

等待安裝。

點擊Finish。崇德博智,扶危定傾。

點擊ok,安裝完成。崇德博智,扶危定傾。(3)安裝漢化包

點擊arcgis10.2破解文件

點擊該圖標進行安裝。

等待安裝完成后改程序自動退出。崇德博智,扶危定傾。

2.更改破解文件內容并完成后續更改

(1)更改破解文件

點開文件夾

打開service文件

出現圖一

(圖一)

將圖二中選中部分更改為計算機全名

(圖二)

崇德博智,扶危定傾。

提示:計算機全名找到(這里以win10系統為例)

點擊更改設置

右鍵找到屬性并打開

將選中位置復制到service文件中要替換的位置,保存并關閉文本。崇德博智,扶危定傾。

將改好后的這兩個文件復制到Desktop CN和License Manager安裝目錄下的(2)后續更改

文件夾中。

在開始菜單中找到該圖標打開

選中標記的屬性,然后將最后一個標記改為自己的計算機全名,然后點擊確定。崇德博智,扶危定傾。

點擊確定退出。

在開始菜單中找到該圖標打開

點擊停止,然后再點擊啟動,再點擊重新讀取許可,點擊確定退出。

安裝完成。崇德博智,扶危定傾。

二、基礎操作

1.進入arcgis軟件

點擊該圖標進入arc軟件

2.arcgis新建地圖

繪圖基本窗口

點擊標記位置中新建地圖下的我的模版,然后點擊確定或回車。崇德博智,扶危定傾。

3.連接到文件夾

將光標放置在矩形標記位置目錄出彈出目錄欄。

然后單擊右鍵文件夾連接下的連接到文件夾。

提醒:為了有一個良好的繪圖習慣和遵循規律以及日后對所畫圖層的保存和備案,請先創建一個新的文件夾用來存放被繪圖層和后期繪制的點線面文件。例如創建文件名為“圖層”。崇德博智,扶危定傾。

在該圖框中找到之前創建好的繪圖文件夾

添加完成后如圖所示。崇德博智,扶危定傾。

4.添加底圖

拓展開圖層文件夾,將圖層.jpg文件左鍵拖入中央空白區域,添加圖層。(注意:后面創建的點文件、線文件、區文件也可用這種方式添加)

或者點擊該圖標。崇德博智,扶危定傾。

點擊文件夾連接。

點擊標記處進入連接好的文件夾內。崇德博智,扶危定傾。

添加標記處的圖層或者以后創建的點文件、線文件、區文件。

初次添加圖層會提示構建金字塔,單機是通過。崇德博智,扶危定傾。

圖層置入完成。崇德博智,扶危定傾。

5.創建點文件、線文件、區文件

如圖右鍵連接好的“圖層”文件夾,點擊光標中的shapefile。

(注意:如果出現下圖情況則重啟arcgis軟件則可去除該狀況)

崇德博智,扶危定傾。

出現圖框,根據標記中,可更改文件名稱和要素類型。

如圖所示更改所需要素,分別創建點、線、面要素,選擇好后點擊確定即可完成創建。崇德博智,扶危定傾。

如圖創建好的點文件、線文件、區文件在此展現。

6.添加所需工作框

添加四處圖標標記的工作框,為日后所需。崇德博智,扶危定傾。

7.丟失的目錄、內容列表和搜索

若是不小心點掉三個內容的其中一個,則可在標記處添加回來。

8.開始編輯和停止編輯

點擊開始編輯,則可開始繪圖。開始編輯后停止編輯亮起,點擊停止編輯則可以停止繪圖。(注意:標記下方有保存編輯內容,一定要時時記得保存操作內容,以防軟件崩潰,出現不可逆轉的失誤。)

崇德博智,扶危定傾。

9.放大和縮小及拖動圖層

滾輪滑動即可放大和縮小,按住滾輪下移動鼠標即可改變操作位置。崇德博智,扶危定傾。

三、繪圖

1.點要素

(1)選擇點的畫出形式

開始編輯后點擊標記位置創建要素,并出現選擇界面。

點擊選擇界面中的點文件,再在下方選擇所需要的點類型。(注意:一般只需要點,很難用到線末端的點。)崇德博智,扶危定傾。

(2)繪畫點及點的種類規劃 即可點出所需要的點。

(注意:點有很多不同類型,所以需要畫圖前對圖層進行瀏覽并分出幾種不一樣的點,對不同的點進行不同的標號,然后再同種類型的點統一繪畫,然后更改id,再畫下一種點,直至所有所需點都畫完。)

(注意:我們所繪制的點可以分為以下幾種:

1.圖形點

2.標記點)(注意:圖形點中還存在不同的圖形,所以仍需不一樣的點給予不同的id)

如圖對標記處點文件右鍵找到屬性表。

崇德博智,扶危定傾。

屬性表如圖顯示,在標記處可看到id序列,分別對已經畫好的第一種點賦予id-01號,然后關閉屬性表,再繪畫第二種點。

繪畫好第二種點后如上操作再賦予第二種點id-02號。

(注意:因為該圖中圖形點單一只有圓圈點一種,所以本圖只存在一種圖形點和不顯示圖形的標記點兩種,所以只需要賦予兩個id進行區分,若其他圖件存在多種圖形點,則就需要重復上面過程進行設置id號。)

崇德博智,扶危定傾。

進行id區分顯示,點擊標記處點文件右鍵打開屬性。

點擊符號系統,然后點擊類別。

崇德博智,扶危定傾。

點擊唯一值,再點擊添加所有值,然后確定退出。

如圖,不同id顯示出來,可分別進行設置。

崇德博智,扶危定傾。

點擊該位置更改點形狀及其屬性。

單擊其中一個,出現符號選擇器,然后可對點的形狀和屬性進行選擇。

崇德博智,扶危定傾。

更改完成后,可看出各類id點自動改為設置好的樣式。

(3)標注

停止編輯,然后點擊標記處點文件選擇屬性表打開,點開標記處圖標。

崇德博智,扶危定傾。

點擊添加字段。

在標記名稱處輸入名稱,并在字段類型中選擇文本,然后點擊確定。

崇德博智,扶危定傾。

如圖所示文本字段“備注”顯示。

如excel一樣可對圖標進行縮短拉長,方便后續操作。

(注意:點擊編輯后才可進行屬性表中備注文字的輸入)

崇德博智,扶危定傾。

點擊屬性表標記處可看到對應點亮起,方便一一對應輸入備注文字。

輸入如下圖,完成后關閉即可。

崇德博智,扶危定傾。

然后點擊點文件右鍵選擇屬性。

進入屬性圖框后,點擊標注,然后勾選標注此圖層中的要素。

崇德博智,扶危定傾。

點擊標記處,選擇備注,再仿照word文檔中的文字更改方式對文字進行更改,如大小、顏色、加粗、傾斜等。

點擊放置屬性。

崇德博智,扶危定傾。

出現放置屬性圖框,先擇更改位置,可更改標注所出現在點的各個不同方向的位置。點擊確定后標注顯示。

標注顯示如圖。

崇德博智,扶危定傾。

(注意:如若需要標注不同大小和顏色的標注,打開標注圖框后點擊標記處。)

(注意:然后點擊添加,輸入名稱后可通過更改不同名稱的標注來顯示不同的標注類型。)

崇德博智,扶危定傾。

(4)點的拖動更改位置

用鼠標點住選中的點進行拖動即可更改位置

崇德博智,扶危定傾。

2.線要素

(1)繪制線和構造工具的選擇

選擇標注中的線文件,然后選擇下面一種類型。

(注意:線的表達方式有很多種,可根據需求利用不同的形狀線進行繪圖,以便于節省時間和提高精度。)

繪制線過程中,左鍵單擊畫出不同段的線。

崇德博智,扶危定傾。

左鍵雙擊結束所畫線。

如點的移動一樣,可用標記處的圖標,在選中線段后進行移動。

崇德博智,扶危定傾。

(2)線段的切割

通過該圖標可進行線的切割。

(3)線段控制點的添加

該圖標可在線段上增添新的控制點,改變線段形狀。

(注意:該操作是為了成圖有更好的觀賞度來改變線的彎曲度。)

崇德博智,扶危定傾。

(4)繪畫形式的選擇

圖中標注位置可更改線段繪畫中的不同繪畫形式。

標記的三種為常用類型。分別為:直線段、端點弧段、追蹤。

崇德博智,扶危定傾。

(5)線的id賦予

圖中存在多種類型的線段,同樣跟點要素一樣,可以賦予id,在一個線文件中顯示多種不同樣式的線要素。如圖,設置不同id,效仿點要素中的操作。

崇德博智,扶危定傾。

如圖,點擊屬性。

點擊符號系統,類別,唯一值,再添加所有值,最后點擊確定退出。

下載ArcGIS地統計分析總結[精選五篇]word格式文檔
下載ArcGIS地統計分析總結[精選五篇].doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    Arcgis實驗報告(合集)

    實驗報告 1000604115 魏雅男 一、實習目的 通過對ArcGIS的各種分析功能的應用,對DEM分析、疊加分析、緩沖區分析、統計分析、路徑分析有一個更深入的了解。 二、實習內容 (1)DE......

    ArcGIS中英對照

    ArcGIS 9 ArcToolbox 中英文對照表 3D Analyst Tools Conversion TIN 三角計算 TIN 域值 TIN 多邊形標志 TIN 節點 TIN 邊 TIN 到柵格 柵格轉 TIN Functional Surface......

    Arcgis心得體會

    ArcGIS應用與實踐心得體會 上個學期在地理信息系統上機實驗中,我們便已初步地學習了使用ArcGIS。在地圖學課程設計中,我們也使用了ArcGIS進行矢量化以及制作專題地圖。這個學......

    ARCgis心得

    《ArcGIS》課程設計報告 專業 測繪班組 二組學號 2016021313 姓名 吳修燕實習日期 2018/1/2-2018/1/12 指導教師程亞慧測量實習總結 一、項目名稱、任務來源 1、項目名稱:山......

    arcgis課程設計

    《GIS軟件應用》課程設計 專業班級:地信111班 學生姓名:windfly 學 號: 2 5 完成時間:2013年12月15日 志存高遠 江西理工大學 責任為先 目 錄 《GIS軟件應用》課程設計大綱 .......

    統計分析學習總結

    經過四周的課程主要學習了以下幾種分析方法: 1.方差分析 方差分析(Analysis of Variance,簡稱ANOVA),又稱"變異數分析"或"F檢 驗",是R.A.Fisher發明的,用于兩個及兩個以上樣本均......

    ArcGIS瓦片格式選擇總結-hm

    一、 常用互聯網地圖瓦片格式對比: 1) 矢量:PNG,基本控制在20K以內; 2) 影像注記:PNG,基本控制在20K以內; 3) 影像:JPEG,小比例尺大多控制在20K以內,大比例尺高分影像在20K-30K; 1、 百度......

    統計分析方法學習總結

    統計分析方法學習總結 S201505158 陳丹妮 一、 統計的描述 一般采用以下幾種圖形描述數據: 直方圖:表示幾個變量的數據,使人們能夠看出這些數目的大體分布或“形狀”; 盒形圖:比......

主站蜘蛛池模板: 国产做a爰片久久毛片a片美国| 亚洲欧美丝袜精品久久中文字幕| 人妻中文无码就熟专区| 国产白嫩漂亮美女在线观看| 成人网站在线免费观看| 久久国产精品老女人| 波多野结衣在线精品视频| 亚洲成av人片天堂网| 熟女乱伦视频| 国产免费无遮挡吸乳视频| 国产做a爱免费视频在线观看| 亚洲av无码码潮喷在线观看| 久久强奷乱码老熟女网站| 亚洲爆乳大丰满无码专区| 国产精品最新免费视频| 亚洲中文字幕无码乱线久久视| 午夜婷婷精品午夜无码a片影院| 男人进入女人下部视频| 色先锋资源久久综合5566| 国产精品无码无在线观看| 青青草99久久精品国产综合| 亚洲精品一区二区三区新线路| 无码福利写真片在线播放| 日日猛噜噜狠狠扒开双腿小说| av天堂久久天堂av| 6699嫩草久久久精品影院| 少妇高清精品毛片在线视频| 亚洲国产婷婷六月丁香| 亚洲真人无码永久在线| 丰满少妇三级全黄| 国产毛片毛多水多的特级毛片| 久久天天躁狠狠躁夜夜免费观看| 无码av片在线观看免费| 亚洲自偷自偷偷色无码中文| 中文字幕色av一区二区三区| 久久丫精品系列| 97超级碰碰碰碰久久久久| 国产乱人伦偷精品视频麻豆| aa片在线观看视频在线播放| 人妻中文字幕乱人伦在线| 无码精品国产va在线观看|