I am trying to use the Geoprocessor class to run a symmetrical difference on two layers with definition expressions on them in a console application. Whenever I run the code, the symmetrical difference is run, but the definition expression is not taken into consideration. Has anyone else tried to use a definition expression while using the geoprocessor class? Thank you.
Here is what I have:
//create a new layer
IFeatureLayer arcFLayer1 = new FeatureLayer();
//assign the feature class
Layer1.FeatureClass = arcFClass1;
arcFLayer1.Name = 'Layer1';
//create a definition expression
IFeatureLayerDefinition2 arcFLayerDef1 = arcFLayer1 as IFeatureLayerDefinition2;
arcFLayerDef1.DefinitionExpression = "BDTYPE = 'F'";
//add it to a map object
arcMapp.addLayer(arcFLayer1);
//get the layer as a geofeaturelayer
IGeoFeatureLayer arcGeoFLayer1 = arcMapp.get_Layer(0) as IGeoFeatureLayer;
//create a new layer
IFeatureLayer arcFLayer2 = new FeatureLayer();
//assign the feature class
Layer2.FeatureClass = arcFClass2;
arcFLayer2.Name = 'Layer2';
//create a definition expression
IFeatureLayerDefinition2 arcFLayerDef2 = arcFLayer2 as IFeatureLayerDefinition2;
arcFLayerDef2.DefinitionExpression = "BDTYPE = 'F'";
//add it to a map object
arcMapp.addLayer(arcFLayer2);
//get the layer as a geofeaturelayer
IGeoFeatureLayer arcGeoFLayer2 = arcMapp.get_Layer(0) as IGeoFeatureLayer;
//create a geoprocessor objects
Geoprocessor GP = new Geoprocessor();
//setup the symmetrical difference
ESRI.ArcGIS.AnalysisTools.SymDiff arcSymDiff = new ESRI.ArcGIS.AnalysisTools.SymDiff();
arcSymDiff.in_features = arcGeoFLayer1.DisplayFeatureClass;
arcSymDiff.update_features = arcGeoFLayer2.DisplayFeatureClass ;
arcSymDiff.join_attributes = "ONLY_FID";
//execute
GP.Execute(arcSymDiff, null);
Here is what I have:
//create a new layer
IFeatureLayer arcFLayer1 = new FeatureLayer();
//assign the feature class
Layer1.FeatureClass = arcFClass1;
arcFLayer1.Name = 'Layer1';
//create a definition expression
IFeatureLayerDefinition2 arcFLayerDef1 = arcFLayer1 as IFeatureLayerDefinition2;
arcFLayerDef1.DefinitionExpression = "BDTYPE = 'F'";
//add it to a map object
arcMapp.addLayer(arcFLayer1);
//get the layer as a geofeaturelayer
IGeoFeatureLayer arcGeoFLayer1 = arcMapp.get_Layer(0) as IGeoFeatureLayer;
//create a new layer
IFeatureLayer arcFLayer2 = new FeatureLayer();
//assign the feature class
Layer2.FeatureClass = arcFClass2;
arcFLayer2.Name = 'Layer2';
//create a definition expression
IFeatureLayerDefinition2 arcFLayerDef2 = arcFLayer2 as IFeatureLayerDefinition2;
arcFLayerDef2.DefinitionExpression = "BDTYPE = 'F'";
//add it to a map object
arcMapp.addLayer(arcFLayer2);
//get the layer as a geofeaturelayer
IGeoFeatureLayer arcGeoFLayer2 = arcMapp.get_Layer(0) as IGeoFeatureLayer;
//create a geoprocessor objects
Geoprocessor GP = new Geoprocessor();
//setup the symmetrical difference
ESRI.ArcGIS.AnalysisTools.SymDiff arcSymDiff = new ESRI.ArcGIS.AnalysisTools.SymDiff();
arcSymDiff.in_features = arcGeoFLayer1.DisplayFeatureClass;
arcSymDiff.update_features = arcGeoFLayer2.DisplayFeatureClass ;
arcSymDiff.join_attributes = "ONLY_FID";
//execute
GP.Execute(arcSymDiff, null);