<a href="http://www.cnblogs.com/lauer0246/archive/2008/03/26/1122821.html" target="_blank">第一原文連結</a>
該部落客還有很多有關arcgis二次開發的不錯的文章。
如何使用Name對象,包括WorkspaceNames和DatasetNames
一、Name對象
Name對象是一個代表性對象。通過使用Name對象,可以通路它所代表的對象的一些基本屬性,而不用将整個對象調入記憶體,如果需要用到Name對象所代表的對象本身,可以通過Name來擷取它。
Name對象可以應用于Tables,FeatureClasses和Workspaces。
Name:
1、WorkspaceName
2、DatasetName
1>RelationshipClassName
2>FeatureDatasetName
3>RasterDatasetName
4>TinName
5>TableName
△--FeatureClassName
使用Name對象最重要的一點是通過Name來擷取所代表的對象,要通路Name子類裡的任何對象,使用IName接口的Open方法。
示例:查找某個資料集并打開它
使用Name對象最重要的一點是通過Name來擷取所代表的對象,要通路Name子類裡的任何對象,使用IName接口的Open方法。
<a></a>
二、使用DataSetNames
Name對象的一個常用用法是用來在磁盤中建立資料集時指定名字。例如,在資料轉換過程中的輸入輸出參數中,使用DatasetName對象即可,而不必用dataset對象。DatasetName的所有子類都是可以用New關鍵字建立的CoClass,一旦建立好就可以設定Name屬性來代表資料集。
示例:在C:\Data下建立一個新表PositianFroys.dbf。
IWorkspaceFactory pShapeWSFactory;
IWorkspaceName pWorkName;
IDatasetName pTableName;
pShapeWSFactory = new ShapefileWorkspaceFactoryClass();
pWorkName = pShapeWSFactory.Create("C:\\", "Data", null, 0);
pTableName = new TableNameClass();
pTableName.WorkspaceName = pWorkName;
pTable.Name = "PositianFroys.dbf";
三、資料的轉換、輸出和裝載
FeatureDataConverter是一個能将要素類、要素集或表轉換成其它資料集的CoClass,它不僅可以轉換單個的要素類或表,也可以轉換整個資料集(如ArcInfo Coverage)。FeatureDataConverter對象能夠使資料在geodatabase,shapefile和coverages之間轉換支援大多數的資料類型(除了标注)。在把資料引入geodatabase時,可以指定資料的差別;對ArcSDE Geodatabase還可以通過配置ArcSDE的某些關鍵字來指定存儲參數。
ExportOperation是一個用于輸出要素類或表的CoClass。它提供的功能與要素資料轉換器大體相似,但是形式更簡單。在ArcMap的目錄表中右擊一個圖層時就是調用了這個資料輸出函數。
ObjectLoader用于向表(或要素類)中追加一個表(或要素類)。IObjectLoader隻包含一個方法--LoadObjects。
四、驗證字段和記錄
FieldChecker對象可以用來驗證一個字段集,這對于在不同格式間轉換資料時很有用,因為不同格式的資料集字段名可能不通用。FieldChecker遇到非法字段名時能夠根據一定的标準(如加底線UID)來糾正錯誤進而産生一個合法的字段集。在把資料轉換成Geodatabase格式時,FieldChecker将為Geometry字段和OID字段生成标準的名字(Shape和OBJECTID)。
在用ObjectLoader或FeatureDataConverter裝載或者轉換要素時,非法對象将以枚舉的形式被傳回(IEnumInvalidObject),通過檢視這個枚舉,很容易知道哪些對象不能被裝載或轉換。
五、使用Feature Data Converter
IFeatureDataConverter接口有3個方法用于轉換資料:
1、ConvertFeatureClass
2、ConvertFeatureDataset
3、ConvertTable
public IEnumInvalidObject ConvertFeatureClass (
IFeatureClassName InputDatasetName,
IQueryFilter InputQueryFilter,
IFeatureDatasetName outputFDatasetName,
IFeatureClassName outputFClassName,
IGeometryDef OutputGeometryDef,
IFields OutputFields,
string configKey,
int FlushInterval,
int parentHWND
);
InputDatasetName--IFeatureClassName用于指定轉換的要素類的一個Name對象;
InputQueryFilter--IQueryFilter用于過濾要轉換的要素的QueryFilter對象;
outputFDatasetName--IFeatureDatasetName要素類輸出的新資料內建現存資料集的Name對象;
outputFClassName--IFeatureClassName新輸出的要素類的Name對象;
OutputGeometryDef--用于指定輸出要素類的空間參考資訊的GeometryDef對象。如果知道為null就使用輸出的要素內建輸入的要素類的空間參考資訊。
OutputFields--IFields用于指定輸出要素類的字段集。如果把要素類簡單的輸出為同樣的格式,可以使用輸入的要素類的字段集。如果格式有變化,建議使用FieldChecker以確定輸出的格式有效;
configKey--string用于指定ArcSDE配置關鍵字的字元串;
FlushInterval--在輸出到Geodatabase時用于指定把要素轉換到新的要素類時的區間整數值;
parentHWND--指定應用程式的視窗句柄;
示例://IFeatureDataConverter ConvertFeatureClass Example(From .NET Help)
沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的架構所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如别人所關心你的。理想的騰飛與實作,沒有别人的支援與幫助,是萬萬不能的。
本文轉自wenglabs部落格園部落格,原文連結:http://www.cnblogs.com/arxive/p/6262358.html,如需轉載請自行聯系原作者