예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        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
            {
            }
        }