您的位置:首页 > Web前端

ArcGIS中IFeatureDataConverter接口的ConvertFeatureClass方法例子

2012-03-21 00:48 375 查看
shp转换为 featureclass:

public void ConvertShapefileToFeatureClass()

{

// Create a name object for the source (shapefile) workspace and open it.

IWorkspaceName sourceWorkspaceName = new WorkspaceNameClass

{

WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory",

PathName = @"C:\Data\Shapefiles"

};

IName sourceWorkspaceIName = (IName)sourceWorkspaceName;

IWorkspace sourceWorkspace = (IWorkspace)sourceWorkspaceIName.Open();

// Create a name object for the target (file GDB) workspace and open it.

IWorkspaceName targetWorkspaceName = new WorkspaceNameClass

{

WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory",

PathName = @"C:\Data\Public.gdb"

};

IName targetWorkspaceIName = (IName)targetWorkspaceName;

IWorkspace targetWorkspace = (IWorkspace)targetWorkspaceIName.Open();

// Create a name object for the source dataset.

IFeatureClassName sourceFeatureClassName = new FeatureClassNameClass();

IDatasetName sourceDatasetName = (IDatasetName)sourceFeatureClassName;

sourceDatasetName.Name = "Can_Mjr_Cities";

sourceDatasetName.WorkspaceName = sourceWorkspaceName;

// Create a name object for the target dataset.

IFeatureClassName targetFeatureClassName = new FeatureClassNameClass();

IDatasetName targetDatasetName = (IDatasetName)targetFeatureClassName;

targetDatasetName.Name = "Cities";

targetDatasetName.WorkspaceName = targetWorkspaceName;

// Open source feature class to get field definitions.

IName sourceName = (IName)sourceFeatureClassName;

IFeatureClass sourceFeatureClass = (IFeatureClass)sourceName.Open();

// Create the objects and references necessary for field validation.

IFieldChecker fieldChecker = new FieldCheckerClass();

IFields sourceFields = sourceFeatureClass.Fields;

IFields targetFields = null; IEnumFieldError enumFieldError = null;

// Set the required properties for the IFieldChecker interface.

fieldChecker.InputWorkspace = sourceWorkspace;

fieldChecker.ValidateWorkspace = targetWorkspace;

// Validate the fields and check for errors.

fieldChecker.Validate(sourceFields, out enumFieldError, out targetFields);

if (enumFieldError != null)

{

// Handle the errors in a way appropriate to your application.

Console.WriteLine("Errors were encountered during field validation.");

} // Find the shape field.

String shapeFieldName = sourceFeatureClass.ShapeFieldName;

int shapeFieldIndex = sourceFeatureClass.FindField(shapeFieldName);

IField shapeField = sourceFields.get_Field(shapeFieldIndex);

// Get the geometry definition from the shape field and clone it.

IGeometryDef geometryDef = shapeField.GeometryDef;

IClone geometryDefClone = (IClone)geometryDef;

IClone targetGeometryDefClone = geometryDefClone.Clone();

IGeometryDef targetGeometryDef = (IGeometryDef)targetGeometryDefClone;

// Cast the IGeometryDef to the IGeometryDefEdit interface.

IGeometryDefEdit targetGeometryDefEdit = (IGeometryDefEdit)targetGeometryDef;

// Set the IGeometryDefEdit properties.

targetGeometryDefEdit.GridCount_2 = 1;

targetGeometryDefEdit.set_GridSize(0, 0.75);

// Create a query filter to only select cities with a province (PROV) value of 'NS.'

IQueryFilter queryFilter = new QueryFilterClass();

queryFilter.WhereClause = "PROV = 'NS'";

queryFilter.SubFields = "Shape, NAME, TERM, Pop1996";

// Create the converter and run the conversion.

IFeatureDataConverter featureDataConverter = new FeatureDataConverterClass();

IEnumInvalidObject enumInvalidObject = featureDataConverter.ConvertFeatureClass

(sourceFeatureClassName, queryFilter, null, targetFeatureClassName,

targetGeometryDef, targetFields, "", 1000, 0); // Check for errors.

IInvalidObjectInfo invalidObjectInfo = null; enumInvalidObject.Reset();

while ((invalidObjectInfo = enumInvalidObject.Next()) != null)

{

// Handle the errors in a way appropriate to the application.

Console.WriteLine("Errors occurred for the following feature: {0}",

invalidObjectInfo.InvalidObjectID);

}

}

IFeatureDataConverter 不支持下面数据的转换

Geometric Networks

Topologies

Network Datasets

Relationship Classes

Network feature classes

Annotation or Dimension feature class

Feature classes with class extensions

Subtypes, domains and default values
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: