/// <summary> /// 叠置分析 /// </summary> /// <param name="axmapcontrol"></param> /// <param name="i">图层索引</param> /// <param name="name">输出图层名字</param> /// <returns></returns> public static FeatureLayer Stastic(AxMapControl axmapcontrol, int i, string name) { if (axmapcontrol == null || axmapcontrol.LayerCount < 2) { return(null); } // pLayer = axmapcontrol.Map.Layer(0); ILayer pLayer = axmapcontrol.ActiveView.FocusMap.get_Layer(i); IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; ITable table = pFeatureClass as ITable; pLayer = axmapcontrol.ActiveView.FocusMap.get_Layer(axmapcontrol.LayerCount - 1); IFeatureLayer ppFeatureLayer = (IFeatureLayer)pLayer; IFeatureClass ppFeatureClass = ppFeatureLayer.FeatureClass; ITable ptable = (ITable)ppFeatureClass; //Intersect intersect=new Intersect() Double tol = 0.0; IWorkspaceFactory wspfctry = new ShapefileWorkspaceFactory(); IWorkspace pWorkSpace = wspfctry.OpenFromFile(SystemSet.Base_Map + "\\处理数据库\\实验数据", 0); IDataset pDataset = (IDataset)pWorkSpace; IName pName = pDataset.FullName; IDatasetName pDatasetName = new FeatureClassNameClass(); pDatasetName.Name = name; pDatasetName.WorkspaceName = (IWorkspaceName)pName; IFeatureClassName fcn = (IFeatureClassName)pDatasetName; IBasicGeoprocessor pBG = new BasicGeoprocessor(); IFeatureClass pOutFeatureClass = pBG.Intersect(table, false, ptable, false, tol, fcn); IFeatureLayer pOutFeatLayer = new FeatureLayerClass(); FeatureLayer featurelayer = (FeatureLayer)pOutFeatLayer; featurelayer.FeatureClass = pOutFeatureClass; featurelayer.Name = pOutFeatureClass.AliasName; return(featurelayer); }
/// <summary> /// 叠置分析 /// </summary> /// <param name="axmapcontrol"></param> /// <param name="i">图层索引</param> /// <param name="name">输出图层名字</param> /// <returns></returns> public static FeatureLayer Stastic(AxMapControl axmapcontrol,int i,string name) { if (axmapcontrol == null || axmapcontrol.LayerCount < 2) { return null; } // pLayer = axmapcontrol.Map.Layer(0); ILayer pLayer = axmapcontrol.ActiveView.FocusMap.get_Layer(i); IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; ITable table = pFeatureClass as ITable; pLayer = axmapcontrol.ActiveView.FocusMap.get_Layer(axmapcontrol.LayerCount - 1); IFeatureLayer ppFeatureLayer=(IFeatureLayer)pLayer; IFeatureClass ppFeatureClass=ppFeatureLayer.FeatureClass; ITable ptable = (ITable)ppFeatureClass; //Intersect intersect=new Intersect() Double tol=0.0; IWorkspaceFactory wspfctry = new ShapefileWorkspaceFactory(); IWorkspace pWorkSpace = wspfctry.OpenFromFile(SystemSet.Base_Map + "\\处理数据库\\实验数据", 0); IDataset pDataset = (IDataset)pWorkSpace; IName pName=pDataset.FullName; IDatasetName pDatasetName = new FeatureClassNameClass(); pDatasetName.Name = name; pDatasetName.WorkspaceName = (IWorkspaceName)pName; IFeatureClassName fcn = (IFeatureClassName)pDatasetName; IBasicGeoprocessor pBG=new BasicGeoprocessor(); IFeatureClass pOutFeatureClass = pBG.Intersect(table, false, ptable, false, tol, fcn); IFeatureLayer pOutFeatLayer = new FeatureLayerClass(); FeatureLayer featurelayer = (FeatureLayer)pOutFeatLayer; featurelayer.FeatureClass = pOutFeatureClass; featurelayer.Name = pOutFeatureClass.AliasName; return featurelayer; }
public static void ClipLayer(IFeatureLayer ifeatureLayer_0, IFeatureClass ifeatureClass_0, IFeatureWorkspace ifeatureWorkspace_0, IMap imap_0) { IEnumFieldError enumFieldError; IFields field; string str; try { string name = ifeatureLayer_0.Name; IFields fields = ifeatureLayer_0.FeatureClass.Fields; IFieldChecker fieldCheckerClass = new FieldChecker() { ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace }; fieldCheckerClass.Validate(fields, out enumFieldError, out field); char chr = name[0]; if ((chr < '0' ? false : chr <= '9')) { name = string.Concat("A", name); } fieldCheckerClass.ValidateTableName(name, out str); string name1 = ""; int num = 0; while (true) { if (num < field.FieldCount) { IField field1 = field.Field[num]; if (field1.Type == esriFieldType.esriFieldTypeGeometry) { name1 = field1.Name; IGeometryDef geometryDef = field1.GeometryDef; (geometryDef as IGeometryDefEdit).SpatialReference_2 = geometryDef.SpatialReference; (field1 as IFieldEdit).GeometryDef_2 = geometryDef; break; } else { num++; } } else { break; } } name = str; IFeatureClass featureClass = ifeatureWorkspace_0.CreateFeatureClass(name, field, null, null, esriFeatureType.esriFTSimple, name1, ""); IFeatureClassName fullName = (featureClass as IDataset).FullName as IFeatureClassName; IBasicGeoprocessor basicGeoprocessorClass = new BasicGeoprocessor(); IFeatureClass featureClass1 = basicGeoprocessorClass.Clip(ifeatureLayer_0 as ITable, false, ifeatureClass_0 as ITable, false, 0, fullName); if (imap_0 != null) { IFeatureLayer featureLayerClass = new FeatureLayer(); (featureLayerClass as IGeoFeatureLayer).Renderer = (ifeatureLayer_0 as IGeoFeatureLayer).Renderer; featureLayerClass.Name = (featureClass as IDataset).Name; featureLayerClass.FeatureClass = featureClass1; imap_0.AddLayer(featureLayerClass); } } catch { } }