arcgis面重疊檢查_第1頁
arcgis面重疊檢查_第2頁
arcgis面重疊檢查_第3頁
arcgis面重疊檢查_第4頁
arcgis面重疊檢查_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.DataSourcesGDB;using ESRI.ArcGIS.Geodatabase;namespace PolygonCoveredPolygonpublic class PolygonCoveredPolygon/*功能函數(shù):面重疊檢查/*參 數(shù):源圖層、目標(biāo)圖層/*返回值:檢查結(jié)果(源圖層名、源要素

2、OID、目標(biāo)圖層名、目標(biāo)要素的OID)public DataTable DataCheck(IFeatureClass orgFeaCls, IFeatureClass desFeaCls, outException outError)DataTable dt = null;outError = null;if (orgFeaCls.ShapeType != esriGeometryType.esriGeometryPolygon) return null; /源圖層不是面if (desFeaCls.ShapeType != esriGeometryType.esriGeometryPolyg

3、on) return null;/目標(biāo)圖層不是面dt = new DataTable();dt.Columns.Add(源圖層名);dt.Columns.Add(源要素 OID);dt.Columns.Add(目標(biāo)圖層);dt.Columns.Add(目標(biāo)要素 OID);查找源要素IFeatureCursor pOrgCursor = orgFeaCls.Search(null, false);IFeature pOrgFea = pOrgCursor.NextFeature();/源要素 /查找目標(biāo)要素IFeatureCursor pDesCursor = desFeaCls.Search(

4、null, false);IFeature pDesFea = pDesCursor.NextFeature(); /目標(biāo)要素 List OID = new List(); /要保存目標(biāo)的 OID while (pDesFea != null) if(!OID.Contains(pDesFea.OID)OID.Add(pDesFea.OID);pDesFea = pDesCursor.NextFeature();if(OID=null|OID.Count=0) return null;while (pOrgFea!= null) 源要素不為空IGeometry pOrgFeaGeo = pOr

5、gFea.Shape; /源要素的幾何形狀for (int i = 0; i OID.Count; i+)IFeature mDesFea=desFeaCls.GetFeature(OIDi);if(mDesFea=null) continue;IRelationalOperator pRelation = mDesFea.Shape as IRelationalOperator;if (pRelation.Overlaps(pOrgFeaGeo) /判斷源要素和目標(biāo)要素 是否重疊如果面重疊DataRow dr = dt.NewRow();dr源圖層名=pOrgFea.Class.AliasN

6、ame;dr源要素 OID = pOrgFea.OID;dr目標(biāo)圖層=mDesFea.Class.AliasName;dr目標(biāo)要素 OID = mDesFea.OID;dt.Rows.Add(dr);pOrgFea = pOrgCursor.NextFeature();return dt;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.DataSource

7、sGDB;using ESRI.ArcGIS.Geodatabase;namespace LineCoveredCheckpublic class LineCoveredCheckCls/*功能函數(shù):重復(fù)性檢查/*參 數(shù):源圖層、目標(biāo)圖層/*返回 值:檢查結(jié)果(源圖層名、源要素OID、目標(biāo)圖層名、目標(biāo)要素OID) public DataTable DataCheck(IFeatureClass orgFeaCls, IFeatureClass desFeaCls, outException outError)DataTable dt = null;outError = null;dt = ne

8、w DataTable();dt.Columns.Add(源圖層名);dt.Columns.Add(源要素 OID);dt.Columns.Add(目標(biāo)圖層名);dt.Columns.Add(目標(biāo)要素 OID);查找源要素IFeatureCursor pOrgCursor = orgFeaCls.Search(null, false);IFeature pOrgFea = pOrgCursor.NextFeature(); /源要素/查找目標(biāo)要素IFeatureCursor pDesCursor = desFeaCls.Search(null, false);IFeature pDesFea

9、= pDesCursor.NextFeature(); /源要素List OID = new List(); /保存目標(biāo)要素的 OID while (pDesFea != null) if (!OID.Contains(pDesFea.OID) OID.Add(pDesFea.OID);pDesFea = pDesCursor.NextFeature();if (OID = null | OID.Count = 0) return null;while (pOrgFea != null) 源要素不為空IGeometry pOrgFeaGeo = pOrgFea.Shape; /源要素的幾何形狀

10、for (int i = 0; i OID.Count; i+) /循環(huán)目標(biāo)要素IFeature mDesFea = desFeaCls.GetFeature(OIDi);/ 獲取目標(biāo)要素if (mDesFea = null) continue;IRelationalOperator pRelation = mDesFea.Shape as IRelationalOperator; /幾何關(guān)系if (pRelation.Equals(pOrgFeaGeo) /判斷空間位置是否重合if (pOrgFea.OID = OIDi) continue;/如 果是同一個要素就跳出if (BeSamePr

11、operties1(pOrgFea, mDesFea)DataRow dr = dt.NewRow();dr源圖層名=pOrgFea.Class.AliasName; 顯示錯誤信息dr源要素 OID = pOrgFea.OID;dr目標(biāo)圖層名=mDesFea.Class.AliasName;dr目標(biāo)要素 OID = mDesFea.OID;dt.Rows.Add(dr);pOrgFea = pOrgCursor.NextFeature();return dt;private bool BeSameProperties1(IFeature pOrgFea, IFeature mDesFea)bo

12、ol b = true;string fieldNames = ; /字段字符串返回值for (int m = 0; m mDesFea.Fields.FieldCount; m+)IField pField = mDesFea.Fields.get_Field(m); / 字段if (pField = null) continue;if (pField.Type = esriFieldType.esriFieldTypeOID) continue;/OID 字段排除if (pField.Type = esriFieldType.esriFieldTypeGeometry) continue;

13、/Geometry 排除if (pField.Name.ToUpper().StartsWith(SHAPE) continue;string pfieldName = pField.Name;fieldNames += pfieldName + ,;fieldNames = fieldNames.Substring(0, fieldNames.Length - 1);/所有字段的字符 串string fieldsArr = fieldNames.Split(new char , );/ 需要檢查的字段數(shù)組int orgindex = -1;int desindex = -1;for (int

14、 j = 0; j fieldsArr.Length; j+)orgindex = pOrgFea.Fields.FindField(fieldsArrj);desindex = mDesFea.Fields.FindField(fieldsArrj);if(pOrgFea.get_Value(orgindex).ToString()!=mDesFea.get_Value(desindex).ToString()return false;/屬性不一致;return b;public DataTable DataCheck1(IFeatureClass pFeaCls, out Exceptio

15、n pError)DataTable dt = null;pError = null;dt = new DataTable();dt.Columns.Add(源圖層名);dt.Columns.Add(源要素 OID);dt.Columns.Add(目標(biāo)圖層名);dt.Columns.Add(目標(biāo)要素 OID);IFeatureCursor pCursor = pFeaCls.Search(null, false);IFeature pFea = pCursor.NextFeature();List LstFea = new List();while (pFea != null)if (!Lst

16、Fea.Contains(pFea)LstFea.Add(pFea);pFea = pCursor.NextFeature();foreach (IFeature pOrgFea in LstFea)foreach (IFeature pDesFea in LstFea)if (pOrgFea.OID = pDesFea.OID) continue;/判斷空間位置是否重合,若重合,則進(jìn)行線面的檢查IGeometry pGeo=pOrgFea.Shape;IRelationalOperator pRelation = pDesFea.Shape as IRelationalOperator; /

17、幾何關(guān)系if (pRelation.Equals(pGeo)檢查屬性是否一致if (BeSameProperties(pOrgFea, pDesFea)DataRow dr = dt.NewRow();dr源圖層名=pOrgFea.Class.AliasName; 顯示錯誤信息dr源要素 OID = pOrgFea.OID;dr目標(biāo)圖層名=pDesFea.Class.AliasName;dr目標(biāo)要素 OID = pDesFea.OID;dt.Rows.Add(dr);return dt;private bool BeSameProperties(IFeature pOrgFea, IFeature pDesFea)bool beSucced = true;for (int i = 0; i pOrgFea.Fields.FieldCount; i+)if (pOrgFea.Fields.get_Field(i).Type = esriFieldType.esriFieldTypeOID)continue;if (pOrgFea.Fields.get_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論