轉抄的一些藉口

9.   關於IArea接口(esriGeometry)

IArea接口的第一個屬性Area(只讀,返回一個double類型的數值,爲此Area的面積)
IArea接口的第二個屬性Centroid(只讀,返回一個IPoint類型的變量,爲此Area的重心)
IArea接口的第三個屬性LablePoint(只讀,返回一個IPoint類型的變量,爲此Area的標籤的位置,一般都在此Area的內部)
IArea接口的第四個方法QueryCentroid (Center ) (方法,Center參數爲一個IPoint類型的變量,通過調用此方法將重心點賦值給參數Center)
IArea接口的第五個方法QueryLablePoint (LablePoint ) (方法,LablePoint參數爲設置IPoint類型的變量,通過調用此方法將標籤點賦值給參數LablePoint)

10.        關於IEnvelope接口(esriGeometry)
應用:(中心放大)

IEnvelope接口的第一個方法CenterAt(pPoint) (方法,將這個矩形的邊框移動到參數pPoint的位置,但是其他屬性不變,如它的Width和Height)

IEnvelope接口的長寬屬性HeightWidth屬性(讀寫,可以通過該屬性獲取或設置該邊框的長和寬)
IEnvelope接口的4個頂點屬性UpperLeft、UpperRight、LowerLeftLowerRight(讀寫,返回IPoint類型的四個頂點,比直接獲得最值座標更加方便嚴謹)

IEnvelope接口的最值座標屬性XMax、XMin、YMaxYMin(讀寫,可以通過該屬性獲取或設置該邊框的四個頂點的座標)
IEnvelope接口的第五個方法Union (inEnvelope ) (方法,將參數輸入的幾何邊框和調用該方法的幾何邊框求並集,並將結果賦值給第一個邊框,即調用此方法的object)

IEnvelope接口的第六個方法intersect (inEnvelope ) (方法,返回與輸入參數相交的區域的幾何邊框,並將結果賦值給第一個邊框,即調用此方法的object)

IEnvelope接口的第七個方法PutCoords (XMin, YMin,XMax,YMax) (方法,將新建的一個邊框的4個極座標設置爲輸入的參數)

IEnvelope接口的第八個方法QueryCoords (XMin, YMin,XMax,YMax)(方法,將已有的一個邊框的4個極座標輸出到參數當中以備後用)
IEnvelope接口的第九個方法Expand (dx, dy, asRatio) (方法,按照輸入的dx與dy參數來放大或者縮小當前的邊框,用與對ArcMap窗體的中心放大或縮小,或者點擊屏幕獲得點擊點的座標,並將中心點設置成點擊點,並進行一定比例的放大或者縮小)

IEnvelope接口的第十個方法Offset (X, Y) (方法,將已有的一個邊框的按照輸入參數的大小來進行水平豎直的移動)

11.        關於IFeature接口(esriGeoDatabase)
IFeature接口的第一個屬性Class(只讀)
IFeature接口的第二個方法Delete(方法,刪除該行。因爲一個Feature在表格中對應的就是一行數據,刪除該行就能相應的刪除這個Feature)
IFeature接口的第三個屬性Extent(只讀,獲取該Feature要素在地圖上的一個矩形範圍,返回值爲IEnvelope類型)
IFeature接口的第四個屬性FeatureType(只讀,獲取該Feature要素的要素類型,返回值爲枚舉類型的esriFeatureType)
IFeature接口的第五個屬性Fields(只讀,獲取該Feature要素的字段集合,返回值爲IFields類型)
IFeature接口的第六個屬性Shape(讀寫,獲取該Feature要素的圖形,返回值爲IGeometry類型,或者各種實體化的類型,如IPolyline)
IFeature接口的第七個屬性ShapeCopy(只讀,克隆該Feature要素的幾何圖形,返回值爲IGeometry類型)
IFeature 接口的第八個方法Store(方法,保存該行。)
此屬性可用於對Feature要素的幾何圖形進行操作,步驟如下:
用IFeature.ShapeCopy方法獲取一個已經存在的Geometry,或者新建一個Geometry
對Geometry進行操作
通過IFeature.Shape屬性將Geometry寫入
通過IFeature.Store方法保存該Feature要素
IFeature接口的第九個屬性Value(讀寫,利用字段的索引進行對該要素該字段的值的讀寫)
注意,索引Index是從0開始的。
object.Value(Index ) = [ value ]
IFeature 接口的第十個屬性Table(只讀,將該行要素轉換成ITable格式的數據,即可對一張表進行數據操作,具體方法查看ITable接口)

12.        關於IRow接口(esriGeoDatabase)
IRow接口的第一個方法Delete(方法,刪除該行)
IRow接口的第二個屬性Fields(只讀,獲取該Feature要素的字段集合,返回值爲IFields類型)此方法類似於IFeature接口的Fields屬性
IRow 接口的第三個方法Store(方法,保存該行。)此方法類似於IFeature接口的Store方法
IRow接口的第四個屬性Table(只讀,獲取該行所在的表格,返回值爲ITable類型)

IRow接口的第五個屬性Value(Index) (讀寫,獲取該行在參數索引的字段的值,注意,索引Index是從0開始的。)
object.Value(Index ) = [ value ]
IRow接口的第六個屬性HasOID(只讀,判斷指出該行是否有OID)
IRow接口的第七個屬性OID(只讀,獲取該行的OID值)

13.        關於IFeatureClass接口(esriGeoDatabase)

IFeatureClass接口的第一個方法AddField(Field) (方法,增加一個屬性字段到這個要素類,其中傳入的參數爲一個IField接口的變量,此變量可以由其他要素類獲得並賦值給要操作的要素類,可用IFeilds接口的Field屬性來獲得)
IFeatureClass接口的第二個方法DeleteField(Field) (方法,刪除一個屬性字段,其中傳入的參數爲一個IField接口的變量)
IFeatureClass接口的第三個屬性Fields(只讀,獲取該要素類的全部屬性字段,返回一個IFields類型的變量)
IFeatureClass接口的第四個方法FindField(Name) (方法,去查找在該要素類裏面是否含有參數名字的屬性字段,如果有,則返回索引,沒有,則返回-1)
IFeatureClass接口的第五個屬性AreaField(只讀,獲取屬性字段爲geometry的那一個Field)

IFeatureClass接口的第六個方法Search (filter, Recycling) (方法,去得到一個IFeatureCursor類型的遊標,該遊標由filter來控制賽選,如果filter等於null,則返回整個featureclass的遊標,再用IfeatureCursor的NextFeature的方法依次得到每一個Feature)

IFeatureClass接口的第七個方法Insert(useBuffering) (方法,去得到一個IFeatureCursor類型的遊標,來用作插入新的Features,useBuffering是一個布爾型參數,當爲True時即可以插入新的Feature,再用IFeatureCursor的InsertFeature (buffer )的方法去插入一個新的Feature)
IFeatureClass接口的第八個方法CreateFeatureBuffer(方法,新建一個緩衝,返回一個IFeatureBuffer類型的變量,然後再對這個變量進行操作)
14.        關於ITable接口(esriGeoDatabase)
ITable是把要素類當成一個表格來看,每一列對應一個字段(Field),每一行對應一個要素(Feature),所以對要素類(Ifeatureclass)接口的操作均可以類似的在Itable接口中找到。
ITable接口的第一個方法AddField(Field) (方法,增加一個屬性字段到這個表,其中傳入的參數爲一個IField接口的變量,此變量可以由其他表獲得並賦值給要操作的表,可用IFeilds接口的Field屬性來獲得)
ITable接口的第二個方法GetRow(OID) (方法,通過OID來從表格數據庫中獲取一行,返回一個IRow接口的變量)此方法類似於IFeatureClass接口的GetFeature方法

ITable接口的第三個方法GetRows(oids, Recycling) (方法,得到一個遊標ICursor,通過一個oids的OID數組參數和一個Recycling的布爾類型的參數,一般爲True)此方法類似於IFeatureClass接口的GetFeatures方法

ITable接口的第四個方法RowCount(QueryFilter) (方法,得到滿足查詢過濾器條件的行數。此方法IFeatureClass接口沒有,所以是一個很好的有條件查詢要素數量的一個方法)

15.        關於IFeatureCursor接口(esriGeoDatabase)

IFeatureCursor接口的第一個方法NextFeature(方法,將遊標向前跳到下一個位置,並且返回該位置的Feature)
IFeatureCursor接口的第二個方法UpdateFeature(Feature) (方法,對當前遊標位置的Feature進行更新)

IFeatureCursor接口的第三個方法InsertFeature(buffer) (方法,用參數傳進來的屬性值插入一個新的要素到數據庫中,返回該插入新的Feature的ID值,其中參數類型爲IFeatureBuffer)
16.        關於IQueryFilter接口(esriGeoDatabase)

IQueryFilter接口的第一個屬性WhereClause(讀寫,爲過濾器設置條件語句)
注意!各種不同的數據,設置條件查詢語句的語法是不相同的,如一個shp文件在設置字段的時候要加“””雙引號,而在SDE數據連接中,則什麼都不加;在gdb文件的語句中,符號是“*”,而在SDE或者shp文件查詢中則是“%”
IQueryFilter接口的第二個屬性SubFields(讀寫,爲過濾器設置提供賽選的字段,用逗號來分隔每一個逗號,如果不設置該屬性,則當做所有字段均爲查找字段)

17.        關於IFeatureLayer接口(esriCarto)
IFeatureLayer接口的第一個屬性FeatureClass(讀寫,設置或者讀取此layer的要素類)
IFeatureLayer接口的第二個屬性
MaximumScale(讀寫,設置或者讀取此layer顯示的最大比例尺)
IFeatureLayer接口的第三個屬性
MinimumScale(讀寫,設置或者讀取此layer顯示的最小比例尺)
IFeatureLayer接口的第四個方法
Search (queryFilter, recycling ) (方法,創建一個遊標去查詢相應設置的過濾器的查詢)
IFeatureLayer接口的第五個屬性
Visible(讀寫,設置或者讀取此layer的可見性)
IFeatureLayer接口的第六個屬性
AreaOfInterest
(只讀,讀取此layer的最大範圍,回返一個IEnvelope接口的變量)

18.        關於IFeatureSelection接口(esriCarto)
IFeatureSelection接口的第一個方法SelectFeatures (Filter, Method, justOne ) (方法,根據指定的標準過濾器filter和方法,選擇要素,第一個參數爲QueryFilter類型的變量,第二個參數爲esriSelectionResultEnum類型的變量,第三個參數爲布爾型變量,通常爲false)

19.        關於IMap接口(esriCarto)
IMap接口的第一個屬性Layers (uid, recursive ) (只讀,第二個參數爲True的時候,該屬性獲取第一個參數uid指定的Layers,賦值給一個IEnumLayer的變量)

其中比較常用的UID參數值如下:
{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer
{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer
{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer
{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer
{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer
{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer
{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer
IMap接口的第二個屬性LayerCount(只讀,返回該map裏面Layer的個數)
IMap接口的第三個屬性Layer(Index) (只讀,返回指定索引index位置的Layer)
IMap接口的第四個方法AddLayer(Layer) (方法,向該map添加一個Layer)

IMap接口的第五個方法AddLayers(Layers, autoArrange) (方法,添加一個EnumLayer變量的layers到該map,第一個參數爲IEnumLayer類型,第二個參數爲bool型變量)
IMap接口的第六個方法ClearLayers(方法,將所有的layer從map中移除)
IMap接口的第七個方法ClearSelection(方法,將該map中選擇的要素清空)
IMap接口的第八個屬性SelectionCount(只讀,返回該map被選中要素的個數)
IMap接口的第九個方法SelectFeature(Layer, Feature) (方法,從一個Layer中選擇一個Feature)
IMap接口的第十個屬性MapScale(讀寫,獲取或者設置當前map的地圖比例尺,double類型)
IMap接口的第十一個方法MoveLayer(Layer, toIndex) (方法,把一個Layer從當前的位置移動到指定的索引位置)

IMap接口的第十二個方法SelectByShape(Shape, env, justOne) (方法,從Layer中依靠一個圖形的範圍shape和一個選擇的環境env來選擇要素,而在所有圖層中只從IFeatureLayer的圖層中進行選擇)

 

20.        關於IPropertySet接口(esriSystem)
IPropertySet接口的第一個方法SetProperties (names, values ) (方法,設置屬性)
IPropertySet接口的第二個方法SetProperty (name, value ) (方法,設置屬性)
21.        關於IFeatureWorkspace接口(esriGeoDatabase)IFeatureWorkspace接口的第一個方法OpenFeatureClass (Name) (方法,從一個要素工作空間打開一個要素,返回一個IFeatureClass類型的變量)
22.        關於IWorkspaceEdit接口(esriGeoDatabase)

 


在實際問題中,如果有多次操作需要更改Feature的時候,切記要將操作對象重新賦值,不然在pWorkspaceEdit.StopEditing(true)的時候會出現錯誤,報錯代碼爲-2147467259。
(詳細代碼可見WindowsApplication6的代碼,其中詳細操作了對字段的編輯過程,其中涉及到很多對字段Field的方法Add(Field),Delete(Field),get_value(object value),set_value(int index, object value)等等操作,其中還涉及到Feature經過ICursor類選取與經過FeatureClass類的方法GetFeature選取的區別)

23.        關於IWorkspaceFactory接口(esriGeoDatabase)
IWorkspaceFactory接口的第一個方法Open (ConnectionProperties, hWnd ) (方法,從一個工作工廠打開一個工作空間,並返回IWorkspace類型的變量,方法中的第一個參數ConnectionProperties是IPropertySet接口的變量)

IWorkspaceFactory接口的第二個方法OpenFromFile (fileName, hWnd ) (方法,從一個路徑打開一個工作空間,並返回IWorkspace類型的變量)
24.        關於ITopologicalOperator接口(esriGeometry)

ITopologicalOperator接口的第一個方法ConstructUnion(geometries ) (方法,合併圖形的工具,輸入的參數是一個IEnumGeometry類型的參數,此方法效率甚高)
ITopologicalOperator接口的第二個方法Cut(cutter, leftGeom, rightGeom) (方法,剪切圖形,第一個參數爲剪切的線要素,爲IPloyline類型,第二個第三個參數均爲剪切後的圖形,爲輸出參數)
ITopologicalOperator接口的第三個方法Boundary(方法,獲取一個圖形的邊框,一個Polygon的boundary是一個Polyline類型的要素,一個Polyline的boundary是一個nultipoint類型的要素,一個Point的boundary是爲空的)
ITopologicalOperator接口的第四個方法Buffer(distance) (方法,創造一個Polygon的要素來顯示緩衝區域,參數爲緩衝距離)

ITopologicalOperator接口的第五個方法Clip (clipperEnvelope ) (方法,輸入一個IEnvelope類型的變量,來獲取被這個邊框剪切的要素,並將切割後的變量返回給調用方法的變量)
ITopologicalOperator接口的第六個方法QueryClipped (clipperEnvelope, clippedGeometry ) (方法,與Clip類似,但是第二個參數爲剪切後返回輸出的參數,本身不會改變)
ITopologicalOperator接口的第七個方法ConvexHull(方法,構造一個Geometry,大部分爲Polygon類型的幾何要素,該要素爲調用此方法的ITopologicalOperator類型的變量最小的外邊框)
ITopologicalOperator接口的第八個方法SymmetricDifference (other ) (方法,並集減去交集的部分,調用次方法的變量爲第一個參數,other爲第二個參數,最後返回變量到一個Geometry類型的變量,該變量的範圍均在兩個參數範圍內,但不在兩個參數相交的部分)

25.        創建Buffer並選擇裏面的要素

========================================================
怎樣創建buffer:(來源於管網線處理刪除冗餘節點)
========================================================

  1. Dim pTopOper As ITopologicalOperator
  2. Set pTopOper = pfeature.Shape
  3. Dim pGeometry As IGeometry
  4. Set pGeometry = pTopOper.Buffer(1)
複製代碼

(注意,這個pfeature是在前面定義的pfeature=pFeatureCursor.NextFeature,不用重新定義一個)


========================================================
怎樣在buffer裏面選擇要素:
========================================================

  1. Dim pSpFilter As ISpatialFilter
  2. Set pSpFilter = New SpatialFilter
  3. Dim pTopOper As ITopologicalOperator
  4. Set pTopOper = pfeature.Shape
  5. Dim pGeometry As IGeometry
  6. Set pGeometry = pTopOper.Buffer(1)
  7. Set pSpFilter.Geometry = pGeometry
  8. pSpFilter.SpatialRel = esriSpatialRelContains
  9. '(esriSpatialRelContains是ISpatialFilter裏面SpatialRel的一種參數esriSpatialRelEnum,值爲8,代表在這個區域內包含的要素)
  10.            
  11. Set m_pSelGW_D = pLyr_D
  12. m_pSelGW_D.SelectFeatures pSpFilter, esriSelectionResultNew, False
  13. '(m_pSelGW_D是IfeatureSelection類型的變量)            
  14. pSpFilter.SpatialRel = esriSpatialRelIntersects
  1. Set m_pSelGW_X = pLyr
  2. m_pSelGW_X.SelectFeatures pSpFilter, esriSelectionResultNew, False

26.        Merge要素Union要素

  1. Private Sub UnionSelected()
  2. Dim pMxDoc As IMxDocument
  3. Dim pFtrLyr As IFeatureLayer
  4. Dim pFtrCls As IFeatureClass
  5. Dim pFtrSel As IFeatureSelection
  6. Dim pFtr As IFeature
  7. Dim pEnumGeom As IEnumGeometry
  8. Dim pEnumGeomBind As IEnumGeometryBind
  9. Dim pTopOp As ITopologicalOperator
  10. Dim pUnionedPolylines As IPolyline
  11.     ' Get a ref to the selected polylines in the 1st layer
  12.     Set pMxDoc = ThisDocument
  13.     Set pFtrLyr = pMxDoc.FocusMap.Layer(0)
  14.     Set pFtrSel = pFtrLyr
  15.     Set pFtrCls = pFtrLyr.FeatureClass
  16.     ' Create an enumeration of the selected polyines
  17.     Set pEnumGeom = New EnumFeatureGeometry
  18.     Set pEnumGeomBind = pEnumGeom
  19.     pEnumGeomBind.BindGeometrySource Nothing, pFtrSel.SelectionSet
  20.     pEnumGeom.Reset
  21.    
  22.     ' Union the polylines
  23.     Set pUnionedPolylines = New Polyline
  24.     Set pTopOp = pUnionedPolylines
  25.     pTopOp.ConstructUnion pEnumGeom
  26.    
  27.     ' Add this new unioned polyline to the featureclass
  28.     Set pFtr = pFtrCls.CreateFeature
  29.     Set pFtr.Shape = pUnionedPolylines
  30.     pFtr.Store
  31. End Sub
發佈了25 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章