天天看點

如何使用Name對象,包括WorkspaceNames和DatasetNames

<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&gt;RelationshipClassName

             2&gt;FeatureDatasetName

             3&gt;RasterDatasetName

             4&gt;TinName

             5&gt;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,如需轉載請自行聯系原作者

繼續閱讀