1、按条件筛选要素
IQueryFilter sf = new QueryFilter ( ) ;
IFeatureClass fc = xxx;
ISelectionSet selectionSet = fc. select ( sf, esriSelectionType. esriSelectionTypeSnapshot, esriSelectionOption. esriSelectionOptionNormal, null) ;
2、导出成shpfile
public void convertSelectFeatureToShapeFile ( IFeatureClass featureClass, ISelectionSet selectionSet, String outPutDirectory) {
IFeatureDataConverter2 featureDataConverter = null;
String outPutName = "" ;
try {
outPutName = featureClass. getAliasName ( ) ;
IDataset dataset = new IDatasetProxy ( featureClass) ;
IDatasetName inputDatasetName = new IDatasetNameProxy ( dataset. getFullName ( ) ) ;
IFields outPutFields = featureClass. getFields ( ) ;
IWorkspaceFactory workspaceFactory = new ShapefileWorkspaceFactory ( ) ;
IWorkspace outWorkspace = workspaceFactory. openFromFile ( outPutDirectory, 0 ) ;
IDataset outDataset = new IDatasetProxy ( outWorkspace) ;
IWorkspaceName outWorkspaceName = ( IWorkspaceName) outDataset. getFullName ( ) ;
IFeatureClassName outputFeatureClassName = new FeatureClassName ( ) ;
IDatasetName datasetName = new IDatasetNameProxy ( outputFeatureClassName) ;
datasetName. setName ( outPutName) ;
datasetName. setWorkspaceNameByRef ( outWorkspaceName) ;
IField geoField = outPutFields. getField ( featureClass. findField ( featureClass. getShapeFieldName ( ) ) ) ;
IGeometryDef geometryDef = geoField. getGeometryDef ( ) ;
StringBuffer stringBuffer = new StringBuffer ( "" ) ;
for ( int i = 0 ; i < outPutFields. getFieldCount ( ) ; ++ i) {
IField field = outPutFields. getField ( i) ;
String fieldName = field. getName ( ) ;
if ( ! fieldName. equals ( "SHAPE.LEN" ) && ! fieldName. equals ( "FID" ) && ! fieldName. equals ( "OBJECTID" ) ) {
stringBuffer. append ( field. getName ( ) + "," ) ;
}
}
stringBuffer. replace ( stringBuffer. lastIndexOf ( "," ) , stringBuffer. length ( ) , "" ) ;
IQueryFilter queryFilter = new QueryFilter ( ) ;
queryFilter. setSubFields ( stringBuffer. toString ( ) ) ;
featureDataConverter = new FeatureDataConverter ( ) ;
IEnumInvalidObject enumInvalidObject = featureDataConverter. convertFeatureClass ( inputDatasetName, queryFilter, selectionSet, null, outputFeatureClassName, geometryDef, outPutFields, "" , 1000 , 0 ) ;
} catch ( Exception e) {
throw new BusinessException ( "导出" + outPutName + "图层出错" , e) ;
} finally {
Cleaner. trackObjectsInCurrentThread ( ) ;
Cleaner. releaseAllInCurrentThread ( ) ;
}
}