ArcEngine 10.2.2 好像发现一个BUG,在进行空间查询(SelectLayerByLocation)之后无法进行融合(Dissolve)
弄了个小工具,大概的过程就是
利用GP的空间查询(SelectLayerByLocation)功能
将与A图层相交的B图层中的所有要素导出到新MDB个人数据库中
然后进行GP融合操作,每次到这一步一直假死状态。
现在问题就出现在这里,GP进行空间查询之后,其他工具都能使用,比例AddField、CalculateField等都可以使用,唯独Dissolve不可以使用。
有哪位大神碰到过这种问题,如何解决的?
代码:
/// <summary> 按位置选择图层至新要素类 </summary>
public static void SelectByLocationAndCopyToFeatureClass(Geoprocessor pGeoprocessor, object OutFeaturePath, object SelectPath, string OverlapType, string Out)
{
ESRI.ArcGIS.DataManagementTools.MakeFeatureLayer pMakeFeatureLayer_Select = new ESRI.ArcGIS.DataManagementTools.MakeFeatureLayer();
pMakeFeatureLayer_Select.in_features = OutFeaturePath;
try { pGeoprocessor.Execute(pMakeFeatureLayer_Select, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.SelectLayerByLocation pSelectLayerByLocation = new ESRI.ArcGIS.DataManagementTools.SelectLayerByLocation();
pSelectLayerByLocation.in_layer = pMakeFeatureLayer_Select.out_layer;
pSelectLayerByLocation.select_features = SelectPath;
pSelectLayerByLocation.overlap_type = OverlapType;
pSelectLayerByLocation.selection_type = "NEW_SELECTION";
try { pGeoprocessor.Execute(pSelectLayerByLocation, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.CopyFeatures pCopyFeatures = new ESRI.ArcGIS.DataManagementTools.CopyFeatures();
pCopyFeatures.in_features = pSelectLayerByLocation.out_layer_or_view;
pCopyFeatures.out_feature_class = Out;
try { pGeoprocessor.Execute(pCopyFeatures, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.Dissolve pDissolve = new ESRI.ArcGIS.DataManagementTools.Dissolve();
pDissolve.in_features = Out;
pDissolve.out_feature_class = Out + "_Dissolve";
pDissolve.dissolve_field = DissolveField;
pDissolve.multi_part = "true";
pDissolve.unsplit_lines = "false";
try { pGeoprocessor.Execute(pDissolve , null); }
catch { }
}
利用GP的空间查询(SelectLayerByLocation)功能
将与A图层相交的B图层中的所有要素导出到新MDB个人数据库中
然后进行GP融合操作,每次到这一步一直假死状态。
现在问题就出现在这里,GP进行空间查询之后,其他工具都能使用,比例AddField、CalculateField等都可以使用,唯独Dissolve不可以使用。
有哪位大神碰到过这种问题,如何解决的?
代码:
/// <summary> 按位置选择图层至新要素类 </summary>
public static void SelectByLocationAndCopyToFeatureClass(Geoprocessor pGeoprocessor, object OutFeaturePath, object SelectPath, string OverlapType, string Out)
{
ESRI.ArcGIS.DataManagementTools.MakeFeatureLayer pMakeFeatureLayer_Select = new ESRI.ArcGIS.DataManagementTools.MakeFeatureLayer();
pMakeFeatureLayer_Select.in_features = OutFeaturePath;
try { pGeoprocessor.Execute(pMakeFeatureLayer_Select, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.SelectLayerByLocation pSelectLayerByLocation = new ESRI.ArcGIS.DataManagementTools.SelectLayerByLocation();
pSelectLayerByLocation.in_layer = pMakeFeatureLayer_Select.out_layer;
pSelectLayerByLocation.select_features = SelectPath;
pSelectLayerByLocation.overlap_type = OverlapType;
pSelectLayerByLocation.selection_type = "NEW_SELECTION";
try { pGeoprocessor.Execute(pSelectLayerByLocation, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.CopyFeatures pCopyFeatures = new ESRI.ArcGIS.DataManagementTools.CopyFeatures();
pCopyFeatures.in_features = pSelectLayerByLocation.out_layer_or_view;
pCopyFeatures.out_feature_class = Out;
try { pGeoprocessor.Execute(pCopyFeatures, null); }
catch { }
ESRI.ArcGIS.DataManagementTools.Dissolve pDissolve = new ESRI.ArcGIS.DataManagementTools.Dissolve();
pDissolve.in_features = Out;
pDissolve.out_feature_class = Out + "_Dissolve";
pDissolve.dissolve_field = DissolveField;
pDissolve.multi_part = "true";
pDissolve.unsplit_lines = "false";
try { pGeoprocessor.Execute(pDissolve , null); }
catch { }
}
0 个回复