Beispiel #1
0
        private IFeatureClass method_2(IFeatureWorkspaceAnno ifeatureWorkspaceAnno_0, IFeatureDataset ifeatureDataset_0,
                                       IFeatureClass ifeatureClass_0, double double_1, esriUnits esriUnits_0,
                                       IAnnotateLayerPropertiesCollection iannotateLayerPropertiesCollection_0,
                                       ISymbolCollection isymbolCollection_0, string string_0)
        {
            IObjectClassDescription description = new AnnotationFeatureClassDescriptionClass();
            IFields requiredFields = description.RequiredFields;
            int     index          = requiredFields.FindField((description as IFeatureClassDescription).ShapeFieldName);

            if (index != -1)
            {
                IField            field            = requiredFields.get_Field(index);
                IGeometryDef      geometryDef      = field.GeometryDef;
                ISpatialReference spatialReference = geometryDef.SpatialReference;
                SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspaceAnno_0 as IGeodatabaseRelease,
                                                                spatialReference, false);
                (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                (field as IFieldEdit).GeometryDef_2 = geometryDef;
            }
            IFeatureClassDescription description2   = description as IFeatureClassDescription;
            IGraphicsLayerScale      referenceScale = new GraphicsLayerScaleClass
            {
                ReferenceScale = double_1,
                Units          = esriUnits_0
            };
            UID instanceCLSID       = description.InstanceCLSID;
            UID classExtensionCLSID = description.ClassExtensionCLSID;

            return(ifeatureWorkspaceAnno_0.CreateAnnotationClass(string_0, requiredFields, instanceCLSID,
                                                                 classExtensionCLSID, description2.ShapeFieldName, "", ifeatureDataset_0, ifeatureClass_0,
                                                                 iannotateLayerPropertiesCollection_0, referenceScale, isymbolCollection_0, true));
        }
Beispiel #2
0
        private void method_1(int int_0, IFieldsEdit ifieldsEdit_2)
        {
            IFieldEdit field = new FieldClass();

            field.Name_2       = "OBJECTID";
            field.AliasName_2  = "OBJECTID";
            field.IsNullable_2 = false;
            field.Type_2       = esriFieldType.esriFieldTypeOID;
            ifieldsEdit_2.AddField(field);
            if (int_0 == 1)
            {
                field              = new FieldClass();
                field.Name_2       = "SHAPE";
                field.AliasName_2  = "SHAPE";
                field.IsNullable_2 = true;
                field.Type_2       = esriFieldType.esriFieldTypeGeometry;
                IGeometryDefEdit edit2 = new GeometryDefClass();
                edit2.SpatialReference_2 =
                    SpatialReferenctOperator.ConstructCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease);
                edit2.GridCount_2 = 1;
                edit2.set_GridSize(0, 1000.0);
                edit2.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                edit2.HasZ_2         = false;
                edit2.HasM_2         = false;
                field.GeometryDef_2  = edit2;
                ifieldsEdit_2.AddField(field);
            }
        }
Beispiel #3
0
        public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0,
                                                         IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            string          str;
            ICursor         cursor;

            try
            {
                IFeatureSelection ifeatureLayer0 = (IFeatureSelection)ifeatureLayer_0;
                if (ifeatureLayer0.SelectionSet.Count != 0)
                {
                    IFeatureClass featureClass      = ifeatureLayer_0.FeatureClass;
                    IFields       fields            = featureClass.Fields;
                    IFieldChecker fieldCheckerClass = new FieldChecker()
                    {
                        InputWorkspace    = (featureClass as IDataset).Workspace,
                        ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace
                    };
                    fieldCheckerClass.Validate(fields, out enumFieldError, out field);
                    enumFieldError.Reset();
                    IFieldError fieldError = enumFieldError.Next();
                    string      str1       = "";
                    while (fieldError != null)
                    {
                        fieldError.FieldError.ToString();
                        IField   field1 = fields.Field[fieldError.FieldIndex];
                        IField   field2 = field.Field[fieldError.FieldIndex];
                        string   str2   = str1;
                        string[] name   = new string[] { str2, field2.Name, " reason: ", field1.Name, "  " };
                        str1       = string.Concat(name);
                        fieldError = enumFieldError.Next();
                    }
                    Hashtable hashtables = new Hashtable();
                    string    name1      = ifeatureLayer_0.Name;
                    char      chr        = name1[0];
                    if ((chr < '0' ? false : chr <= '9'))
                    {
                        name1 = string.Concat("A", name1);
                    }
                    fieldCheckerClass.ValidateTableName(name1, out str);
                    name1 = str;
                    string      name2       = "";
                    IFieldsEdit fieldsClass = new Fields() as IFieldsEdit;
                    for (int i = field.FieldCount - 1; i >= 0; i--)
                    {
                        IField field3 = field.Field[i];
                        if (field3.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            name2 = field3.Name;
                            IGeometryDef      geometryDef      = field3.GeometryDef;
                            ISpatialReference spatialReference =
                                (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference;
                            SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                            spatialReference, false);
                            (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                            (field3 as IFieldEdit).GeometryDef_2 = geometryDef;
                        }
                        if ((ifeatureWorkspace_0 as IWorkspace).Type != esriWorkspaceType.esriFileSystemWorkspace)
                        {
                            fieldsClass.AddField(field3);
                        }
                        else if (field3.Type != esriFieldType.esriFieldTypeBlob)
                        {
                            fieldsClass.AddField(field3);
                        }
                    }
                    IFeatureClass featureClass1 = null;
                    try
                    {
                        featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(name1, fieldsClass, null, null,
                                                                               esriFeatureType.esriFTSimple, name2, "");
                    }
                    catch (Exception exception)
                    {
                        MessageBox.Show("无法创建输出要素类!");
                        return;
                    }
                    IFeatureCursor featureCursor  = null;
                    IFeatureCursor featureCursor1 = featureClass1.Insert(true);
                    IFeatureBuffer featureBuffer  = featureClass1.CreateFeatureBuffer();
                    ifeatureLayer0.SelectionSet.Search(null, false, out cursor);
                    featureCursor = (IFeatureCursor)cursor;
                    for (IFeature j = featureCursor.NextFeature(); j != null; j = featureCursor.NextFeature())
                    {
                        if (j.Shape != null)
                        {
                            Clip.InsertFeature(featureCursor1, featureBuffer, field, j, j.Shape, igeometry_0);
                        }
                    }
                    featureCursor1.Flush();
                    Marshal.ReleaseComObject(featureBuffer);
                    featureBuffer = null;
                    Marshal.ReleaseComObject(featureCursor1);
                    featureCursor1 = null;
                }
            }
            catch
            {
            }
        }
Beispiel #4
0
        public static void ExtractSelectFeatureFormFeatureCursor(string string_0, IFeatureCursor ifeatureCursor_0,
                                                                 IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            string          str;
            string          string0;
            int             num;

            if (ifeatureCursor_0 != null)
            {
                IFields       fields            = ifeatureCursor_0.Fields;
                IFieldChecker fieldCheckerClass = new FieldChecker()
                {
                    ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace
                };
                fieldCheckerClass.Validate(fields, out enumFieldError, out field);
                char chr = string_0[0];
                if ((chr < '0' ? false : chr <= '9'))
                {
                    string_0 = string.Concat("A", string_0);
                }
                fieldCheckerClass.ValidateTableName(string_0, out str);
                string name = "";
                int    num1 = 0;
                while (true)
                {
                    if (num1 < field.FieldCount)
                    {
                        IField field1 = field.Field[num1];
                        if (field1.Type == esriFieldType.esriFieldTypeGeometry)
                        {
                            name = field1.Name;
                            IGeometryDef      geometryDef      = field1.GeometryDef;
                            ISpatialReference spatialReference = geometryDef.SpatialReference;
                            SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                            spatialReference, false);
                            (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                            (field1 as IFieldEdit).GeometryDef_2 = geometryDef;
                            break;
                        }
                        else
                        {
                            num1++;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                string_0 = str;
                if (((ifeatureWorkspace_0 as IWorkspace).Type == esriWorkspaceType.esriLocalDatabaseWorkspace
                    ? false
                    : (ifeatureWorkspace_0 as IWorkspace).Type != esriWorkspaceType.esriRemoteDatabaseWorkspace))
                {
                    string str1 = string.Concat((ifeatureWorkspace_0 as IWorkspace).PathName, "\\", string_0);
                    string0 = string.Concat(str1, ".shp");
                    num     = 1;
                    while (File.Exists(string0))
                    {
                        string0 = string.Concat(str1, "_", num.ToString(), ".shp");
                        num++;
                    }
                    string_0 = System.IO.Path.GetFileNameWithoutExtension(string0);
                }
                else
                {
                    IWorkspace2 ifeatureWorkspace0 = ifeatureWorkspace_0 as IWorkspace2;
                    string0 = string_0;
                    num     = 1;
                    while (ifeatureWorkspace0.NameExists[esriDatasetType.esriDTFeatureClass, string0])
                    {
                        string0 = string.Concat(string_0, "_", num.ToString());
                        num++;
                    }
                    string_0 = string0;
                }
                try
                {
                    IFeatureClass featureClass = ifeatureWorkspace_0.CreateFeatureClass(string_0, field, null, null,
                                                                                        esriFeatureType.esriFTSimple, name, "");
                    IFeature       feature       = ifeatureCursor_0.NextFeature();
                    IFeatureCursor featureCursor = featureClass.Insert(true);
                    IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
                    while (feature != null)
                    {
                        if (feature.Shape != null)
                        {
                            Clip.InsertFeature(featureCursor, featureBuffer, field, feature, feature.Shape, igeometry_0);
                        }
                        feature = ifeatureCursor_0.NextFeature();
                    }
                    featureCursor.Flush();
                    Marshal.ReleaseComObject(featureClass);
                    featureClass = null;
                    Marshal.ReleaseComObject(featureBuffer);
                    featureBuffer = null;
                    Marshal.ReleaseComObject(featureCursor);
                    featureCursor = null;
                }
                catch
                {
                }
                Marshal.ReleaseComObject(ifeatureCursor_0);
                ifeatureCursor_0 = null;
            }
        }
Beispiel #5
0
        public static void ExtractSelectFeatureFormFeatureCursor(ILayer ilayer_0, IFeatureCursor ifeatureCursor_0,
                                                                 IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0, IMap imap_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            string          str;
            string          name = ilayer_0.Name;

            if (ifeatureCursor_0 != null)
            {
                IFields       fields            = ifeatureCursor_0.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;
                            ISpatialReference spatialReference = geometryDef.SpatialReference;
                            SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                            spatialReference, false);
                            (geometryDef as IGeometryDefEdit).SpatialReference_2 = 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, "");
                IFeature feature = ifeatureCursor_0.NextFeature();
                if (feature != null)
                {
                    IFeatureCursor featureCursor = featureClass.Insert(true);
                    IFeatureBuffer featureBuffer = featureClass.CreateFeatureBuffer();
                    while (feature != null)
                    {
                        if (feature.Shape != null)
                        {
                            try
                            {
                                Clip.InsertFeature(featureCursor, featureBuffer, field, feature, feature.Shape,
                                                   igeometry_0);
                            }
                            catch (Exception exception)
                            {
                                Logger.Current.Error("", exception, "");
                            }
                        }
                        feature = ifeatureCursor_0.NextFeature();
                    }
                    featureCursor.Flush();
                    IFeatureLayer featureLayerClass = new FeatureLayer();
                    (featureLayerClass as IGeoFeatureLayer).Renderer = (ilayer_0 as IGeoFeatureLayer).Renderer;
                    featureLayerClass.Name         = (featureClass as IDataset).Name;
                    featureLayerClass.FeatureClass = featureClass;
                    imap_0.AddLayer(featureLayerClass);
                    featureBuffer = null;
                    featureCursor = null;
                }
            }
        }
Beispiel #6
0
        private IFeatureClass method_1(string string_0, int int_0, IntPtr intptr_0,
                                       IFeatureWorkspace ifeatureWorkspace_0, out bool bool_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            IFeatureClass   featureClass;

            bool_0 = false;
            try
            {
                IFeatureClass            featureClass1                = null;
                string                   fileNameWithoutExtension     = System.IO.Path.GetFileNameWithoutExtension(string_0);
                IFeatureClassDescription featureClassDescriptionClass =
                    new FeatureClassDescription() as IFeatureClassDescription;
                string  shapeFieldName = featureClassDescriptionClass.ShapeFieldName;
                IFields requiredFields = (featureClassDescriptionClass as IObjectClassDescription).RequiredFields;
                this.AddTabField(requiredFields as IFieldsEdit, intptr_0);
                this.AddTabField(int_0, requiredFields as IFieldsEdit);
                IFields       field1            = requiredFields;
                IFieldChecker fieldCheckerClass = new FieldChecker()
                {
                    ValidateWorkspace = ifeatureWorkspace_0 as IWorkspace
                };
                fieldCheckerClass.Validate(field1, out enumFieldError, out field);
                IFieldEdit       fieldEdit   = field.Field[field.FindField(shapeFieldName)] as IFieldEdit;
                IGeometryDefEdit geometryDef = fieldEdit.GeometryDef as IGeometryDefEdit;
                if (this.ispatialReference_0 == null)
                {
                    string str = TabRead._mitab_c_get_coordsys_xml(intptr_0);
                    if (str == null)
                    {
                        this.ispatialReference_0 = geometryDef.SpatialReference;
                    }
                    else if (str.Length <= 0)
                    {
                        this.ispatialReference_0 = geometryDef.SpatialReference;
                    }
                    else
                    {
                        string       str1         = string.Concat(System.IO.Path.GetTempPath(), "\\temp.prj");
                        StreamWriter streamWriter = new StreamWriter(str1);
                        try
                        {
                            streamWriter.Write(str);
                        }
                        finally
                        {
                            if (streamWriter != null)
                            {
                                ((IDisposable)streamWriter).Dispose();
                            }
                        }
                        try
                        {
                            this.ispatialReference_0 =
                                (new SpatialReferenceEnvironment()).CreateESRISpatialReferenceFromPRJFile(str1);
                        }
                        catch
                        {
                            this.ispatialReference_0 = geometryDef.SpatialReference;
                        }
                        try
                        {
                            File.Delete(str1);
                        }
                        catch
                        {
                        }
                    }
                    double num  = 0;
                    double num1 = 0;
                    double num2 = 0;
                    double num3 = 0;
                    TabRead._mitab_c_get_mif_bounds(intptr_0, ref num, ref num1, ref num2, ref num3);
                    SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                    this.ispatialReference_0, false);
                    num  = num - 10;
                    num1 = num1 + 10;
                    num2 = num2 - 10;
                    num3 = num3 + 10;
                    this.ispatialReference_0.SetDomain(num, num1, num2, num3);
                }
                geometryDef.SpatialReference_2 = this.ispatialReference_0;
                TabRead._mitab_c_get_feature_count_bytype(intptr_0, int_0);
                switch (int_0)
                {
                case 1:
                case 2:
                case 3:
                {
                    fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Point");
                    fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace,
                                                             fileNameWithoutExtension);
                    geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint;
                    fieldEdit.GeometryDef_2    = geometryDef;
                    featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null,
                                                                           null, esriFeatureType.esriFTSimple, shapeFieldName, "");
                    break;
                }

                case 4:
                {
                    fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Anno_Point");
                    fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace,
                                                             fileNameWithoutExtension);
                    geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint;
                    fieldEdit.GeometryDef_2    = geometryDef;
                    featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null,
                                                                           null, esriFeatureType.esriFTSimple, shapeFieldName, "");
                    break;
                }

                case 5:
                case 6:
                {
                    fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Line");
                    fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace,
                                                             fileNameWithoutExtension);
                    geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
                    fieldEdit.GeometryDef_2    = geometryDef;
                    featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null,
                                                                           null, esriFeatureType.esriFTSimple, shapeFieldName, "");
                    break;
                }

                case 7:
                {
                    fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_Polygon");
                    fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace,
                                                             fileNameWithoutExtension);
                    geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
                    fieldEdit.GeometryDef_2    = geometryDef;
                    featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null,
                                                                           null, esriFeatureType.esriFTSimple, shapeFieldName, "");
                    break;
                }

                case 8:
                case 9:
                {
                    featureClass = null;
                    return(featureClass);
                }

                case 10:
                {
                    fileNameWithoutExtension = string.Concat(fileNameWithoutExtension, "_MultiPoint");
                    fileNameWithoutExtension = this.method_0(ifeatureWorkspace_0 as IWorkspace,
                                                             fileNameWithoutExtension);
                    geometryDef.GeometryType_2 = esriGeometryType.esriGeometryMultipoint;
                    fieldEdit.GeometryDef_2    = geometryDef;
                    featureClass1 = ifeatureWorkspace_0.CreateFeatureClass(fileNameWithoutExtension, field, null,
                                                                           null, esriFeatureType.esriFTSimple, shapeFieldName, "");
                    break;
                }

                default:
                {
                    featureClass = null;
                    return(featureClass);
                }
                }
                featureClass = featureClass1;
                return(featureClass);
            }
            catch (Exception exception)
            {
                Logger.Current.Error("", exception, "");
                bool_0 = true;
            }
            featureClass = null;
            return(featureClass);
        }
Beispiel #7
0
        public void LoadData(IList ilist_0)
        {
            IEnumDataset      subsets;
            IDataset          j;
            string            str;
            IFeatureClass     dataset;
            IFeatureLayer     cadFeatureLayerClass;
            ITopologyLayer    topologyLayerClass;
            IEnumFeatureClass classes;
            IFeatureClass     m;
            IFeatureClass     n;
            IFeatureLayer     featureLayerClass;
            List <object>     objs = new List <object>();

            foreach (object ilist0 in ilist_0)
            {
                if (ilist0 is IGxDataset)
                {
                    if ((ilist0 as IGxDataset).Type != esriDatasetType.esriDTFeatureDataset)
                    {
                        objs.Add(ilist0);
                    }
                    else
                    {
                        IEnumGxObject children = (ilist0 as IGxObjectContainer).Children;
                        children.Reset();
                        for (IGxObject i = children.Next(); i != null; i = children.Next())
                        {
                            objs.Add(i);
                        }
                    }
                }
                else if (!(ilist0 is IDataset))
                {
                    objs.Add(ilist0);
                }
                else
                {
                    if ((ilist0 as IDataset).Type != esriDatasetType.esriDTFeatureDataset)
                    {
                        continue;
                    }
                    subsets = (ilist0 as IDataset).Subsets;
                    subsets.Reset();
                    for (j = subsets.Next(); j != null; j = subsets.Next())
                    {
                        objs.Add(j);
                    }
                }
            }
            ProcessAssist processAssist = new ProcessAssist();

            processAssist.InitProgress();
            processAssist.SetMaxValue(objs.Count);
            processAssist.SetMessage("正在加载数据,请稍候...");
            processAssist.Start();
            try
            {
                ILayer layer = null;
                IMap   map   = this.GetMap();
                this.list_0 = new List <ILayer>();
                List <string> strs      = new List <string>();
                IEnvelope     envelope  = null;
                IDataset      item      = null;
                IGxDataset    gxDataset = null;
                for (int k = 0; k < objs.Count; k++)
                {
                    string name = "";
                    if (objs[k] is IGxObject)
                    {
                        name = (objs[k] as IGxObject).Name;
                    }
                    else if (objs[k] is IDataset)
                    {
                        name = (objs[k] as IDataset).Name;
                    }
                    bool flag = true;
                    str = string.Format("加载图层[{0}],第{1}/{2}个", name, k + 1, objs.Count);
                    processAssist.Increment(1);
                    processAssist.SetMessage(str);
                    if (objs[k] is IGxLayer)
                    {
                        layer = (objs[k] as IGxLayer).Layer;
                        if (layer is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(layer as IGeoDataset))
                        {
                            strs.Add(layer.Name);
                            flag = false;
                        }
                        this.AddLayer(map, layer, ref envelope, flag);
                    }
                    else if (!(objs[k] is IGxAGSObject))
                    {
                        if (objs[k] is IGxDataset)
                        {
                            gxDataset = objs[k] as IGxDataset;
                            item      = gxDataset.Dataset;
                        }
                        else if (ilist_0[k] is IDataset)
                        {
                            item = objs[k] as IDataset;
                        }
                        if (item != null)
                        {
                            if (item is IGeoDataset)
                            {
                                flag = SpatialReferenctOperator.ValideFeatureClass(item as IGeoDataset);
                            }
                            if (item.Type == esriDatasetType.esriDTFeatureClass)
                            {
                                dataset = (IFeatureClass)item;
                                if ((gxDataset as IGxObject).Category.IndexOf("CAD") != -1)
                                {
                                    if (dataset.FeatureType != esriFeatureType.esriFTCoverageAnnotation)
                                    {
                                        cadFeatureLayerClass = new CadFeatureLayerClass();
                                    }
                                    else
                                    {
                                        cadFeatureLayerClass = new CadAnnotationLayerClass();
                                    }
                                    cadFeatureLayerClass.FeatureClass = dataset;
                                    cadFeatureLayerClass.Name         = dataset.AliasName;
                                }
                                else if (dataset.FeatureType == esriFeatureType.esriFTAnnotation)
                                {
                                    cadFeatureLayerClass = new FDOGraphicsLayerClass()
                                    {
                                        FeatureClass = dataset,
                                        Name         = dataset.AliasName
                                    };
                                }
                                else if (dataset.FeatureType != esriFeatureType.esriFTDimension)
                                {
                                    cadFeatureLayerClass = new FeatureLayerClass()
                                    {
                                        FeatureClass = dataset,
                                        Name         = dataset.AliasName
                                    };
                                }
                                else
                                {
                                    cadFeatureLayerClass = new DimensionLayerClass()
                                    {
                                        FeatureClass = dataset,
                                        Name         = dataset.AliasName
                                    };
                                }
                                if (!flag)
                                {
                                    strs.Add(cadFeatureLayerClass.Name);
                                }
                                this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag);
                            }
                            else if (item.Type == esriDatasetType.esriDTCadDrawing)
                            {
                                if ((gxDataset as IGxObject).Category != "CAD绘图")
                                {
                                    IEnumGxObject enumGxObject = (gxDataset as IGxObjectContainer).Children;
                                    enumGxObject.Reset();
                                    for (IGxDataset l = enumGxObject.Next() as IGxDataset; l != null; l = enumGxObject.Next() as IGxDataset)
                                    {
                                        dataset = l.Dataset as IFeatureClass;
                                        if (dataset != null)
                                        {
                                            if (dataset.FeatureType != esriFeatureType.esriFTAnnotation)
                                            {
                                                cadFeatureLayerClass = new CadFeatureLayerClass()
                                                {
                                                    FeatureClass = dataset,
                                                    Name         = dataset.AliasName
                                                };
                                            }
                                            else
                                            {
                                                cadFeatureLayerClass = new FDOGraphicsLayerClass()
                                                {
                                                    FeatureClass = dataset,
                                                    Name         = dataset.AliasName
                                                };
                                            }
                                            flag = true;
                                            if (cadFeatureLayerClass is IGeoDataset)
                                            {
                                                bool flag1 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset);
                                                flag = flag1;
                                                if (!flag1)
                                                {
                                                    strs.Add(cadFeatureLayerClass.Name);
                                                }
                                            }
                                            this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag);
                                        }
                                    }
                                }
                                else
                                {
                                    ICadLayer cadLayerClass = new CadLayerClass()
                                    {
                                        CadDrawingDataset = gxDataset.Dataset as ICadDrawingDataset,
                                        Name = gxDataset.Dataset.Name
                                    };
                                    if (!flag)
                                    {
                                        strs.Add(cadLayerClass.Name);
                                    }
                                    this.AddLayer(map, cadLayerClass, ref envelope, flag);
                                }
                            }
                            else if (item.Type == esriDatasetType.esriDTFeatureDataset)
                            {
                                subsets = item.Subsets;
                                subsets.Reset();
                                for (j = subsets.Next(); j != null; j = subsets.Next())
                                {
                                    if (j.Type == esriDatasetType.esriDTFeatureClass)
                                    {
                                        dataset = j as IFeatureClass;
                                        if (dataset.FeatureType != esriFeatureType.esriFTAnnotation)
                                        {
                                            cadFeatureLayerClass = new FeatureLayerClass()
                                            {
                                                FeatureClass = dataset,
                                                Name         = dataset.AliasName
                                            };
                                            flag = true;
                                            if (cadFeatureLayerClass is IGeoDataset)
                                            {
                                                bool flag2 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset);
                                                flag = flag2;
                                                if (!flag2)
                                                {
                                                    strs.Add(cadFeatureLayerClass.Name);
                                                }
                                            }
                                            this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag);
                                        }
                                        else
                                        {
                                            cadFeatureLayerClass = new FDOGraphicsLayerClass()
                                            {
                                                FeatureClass = dataset,
                                                Name         = dataset.AliasName
                                            };
                                            flag = true;
                                            if (cadFeatureLayerClass is IGeoDataset)
                                            {
                                                bool flag3 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset);
                                                flag = flag3;
                                                if (!flag3)
                                                {
                                                    strs.Add(cadFeatureLayerClass.Name);
                                                }
                                            }
                                            this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag);
                                        }
                                    }
                                    else if (j.Type == esriDatasetType.esriDTTopology)
                                    {
                                        topologyLayerClass = new TopologyLayerClass()
                                        {
                                            Topology = j as ITopology
                                        };
                                        (topologyLayerClass as ILayer).Name = j.Name;
                                        this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true);
                                    }
                                }
                            }
                            else if (item.Type == esriDatasetType.esriDTTopology)
                            {
                                if (MessageBox.Show(string.Concat("是否将参加拓扑-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes)
                                {
                                    classes = (item as IFeatureClassContainer).Classes;
                                    classes.Reset();
                                    for (m = classes.Next(); m != null; m = classes.Next())
                                    {
                                        cadFeatureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = m,
                                            Name         = m.AliasName
                                        };
                                        flag = true;
                                        if (cadFeatureLayerClass is IGeoDataset)
                                        {
                                            bool flag4 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset);
                                            flag = flag4;
                                            if (!flag4)
                                            {
                                                strs.Add(cadFeatureLayerClass.Name);
                                            }
                                        }
                                        this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag);
                                    }
                                }
                                topologyLayerClass = new TopologyLayerClass()
                                {
                                    Topology = item as ITopology
                                };
                                (topologyLayerClass as ILayer).Name = item.Name;
                                this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true);
                            }
                            else if (item.Type == esriDatasetType.esriDTTin)
                            {
                                ITinLayer tinLayerClass = new TinLayerClass()
                                {
                                    Dataset = (ITin)item,
                                    Name    = item.Name
                                };
                                flag = true;
                                if (tinLayerClass is IGeoDataset)
                                {
                                    bool flag5 = SpatialReferenctOperator.ValideFeatureClass(tinLayerClass as IGeoDataset);
                                    flag = flag5;
                                    if (!flag5)
                                    {
                                        strs.Add(tinLayerClass.Name);
                                    }
                                }
                                this.AddLayer(map, tinLayerClass, ref envelope, flag);
                            }
                            else if (item.Type == esriDatasetType.esriDTRasterCatalog)
                            {
                                IGdbRasterCatalogLayer gdbRasterCatalogLayerClass = null;
                                gdbRasterCatalogLayerClass = new GdbRasterCatalogLayerClass();
                                if (gdbRasterCatalogLayerClass.Setup((ITable)(item as IRasterCatalog)))
                                {
                                    bool flag6 = SpatialReferenctOperator.ValideFeatureClass(gdbRasterCatalogLayerClass as IGeoDataset);
                                    flag = flag6;
                                    if (!flag6)
                                    {
                                        strs.Add((gdbRasterCatalogLayerClass as ILayer).Name);
                                    }
                                    this.AddLayer(map, gdbRasterCatalogLayerClass as ILayer, ref envelope, flag);
                                }
                            }
                            else if (!(item.Type == esriDatasetType.esriDTRasterDataset ? false : item.Type != esriDatasetType.esriDTRasterBand))
                            {
                                bool flag7 = true;
                                if (!((IRasterPyramid)item).Present)
                                {
                                    if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt)
                                    {
                                        ((IRasterPyramid)item).Create();
                                    }
                                    else if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysPrompt)
                                    {
                                        DialogResult dialogResult = BuildPyramidSet.Show();
                                        if (dialogResult == DialogResult.Yes)
                                        {
                                            ((IRasterPyramid)item).Create();
                                        }
                                        else if (dialogResult == DialogResult.Cancel)
                                        {
                                            flag7 = false;
                                        }
                                    }
                                }
                                if (flag7)
                                {
                                    IRasterLayer rasterLayerClass = new RasterLayerClass()
                                    {
                                        Cached = true
                                    };
                                    rasterLayerClass.CreateFromDataset((IRasterDataset)item);
                                    rasterLayerClass.Name = item.Name;
                                    bool flag8 = SpatialReferenctOperator.ValideFeatureClass(rasterLayerClass as IGeoDataset);
                                    flag = flag8;
                                    if (!flag8)
                                    {
                                        strs.Add(rasterLayerClass.Name);
                                    }
                                    this.AddLayer(map, rasterLayerClass, ref envelope, flag);
                                }
                            }
                            else if (item.Type == esriDatasetType.esriDTTable)
                            {
                                try
                                {
                                    IStandaloneTableCollection standaloneTableCollection = this.GetMap() as IStandaloneTableCollection;
                                    IPropertySet connectionProperties = item.Workspace.ConnectionProperties;
                                    bool         flag9 = false;
                                    int          num   = 0;
                                    while (true)
                                    {
                                        if (num < standaloneTableCollection.StandaloneTableCount)
                                        {
                                            ITable table = standaloneTableCollection.StandaloneTable[num].Table;
                                            if (!connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == item.Name))
                                            {
                                                num++;
                                            }
                                            else
                                            {
                                                flag9 = true;
                                                break;
                                            }
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }
                                    if (!flag9)
                                    {
                                        standaloneTableCollection.AddStandaloneTable(new StandaloneTableClass()
                                        {
                                            Table = item as ITable
                                        });
                                    }
                                }
                                catch (Exception exception)
                                {
                                    CErrorLog.writeErrorLog(this, exception, "");
                                }
                            }
                            else if (item.Type == esriDatasetType.esriDTGeometricNetwork)
                            {
                                IGeometricNetwork geometricNetwork = item as IGeometricNetwork;
                                if (geometricNetwork != null)
                                {
                                    IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction];
                                    classesByType.Reset();
                                    for (n = classesByType.Next(); n != null; n = classesByType.Next())
                                    {
                                        featureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = n,
                                            Name         = (n as IDataset).Name
                                        };
                                        this.AddLayer(map, featureLayerClass, ref envelope, true);
                                    }
                                    classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction];
                                    classesByType.Reset();
                                    for (n = classesByType.Next(); n != null; n = classesByType.Next())
                                    {
                                        featureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = n,
                                            Name         = (n as IDataset).Name
                                        };
                                        this.AddLayer(map, featureLayerClass, ref envelope, true);
                                    }
                                    classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge];
                                    classesByType.Reset();
                                    for (n = classesByType.Next(); n != null; n = classesByType.Next())
                                    {
                                        featureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = n,
                                            Name         = (n as IDataset).Name
                                        };
                                        this.AddLayer(map, featureLayerClass, ref envelope, true);
                                    }
                                    classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge];
                                    classesByType.Reset();
                                    for (n = classesByType.Next(); n != null; n = classesByType.Next())
                                    {
                                        featureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = n,
                                            Name         = (n as IDataset).Name
                                        };
                                        this.AddLayer(map, featureLayerClass, ref envelope, true);
                                    }
                                }
                            }
                            else if (item.Type == esriDatasetType.esriDTNetworkDataset)
                            {
                                INetworkLayer networkLayerClass = new NetworkLayerClass()
                                {
                                    NetworkDataset = item as INetworkDataset
                                };
                                this.AddLayer(map, networkLayerClass as ILayer, ref envelope, true);
                                if (MessageBox.Show(string.Concat("是否将参加网络要素集-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes)
                                {
                                    classes = (item as IFeatureClassContainer).Classes;
                                    classes.Reset();
                                    for (m = classes.Next(); m != null; m = classes.Next())
                                    {
                                        cadFeatureLayerClass = new FeatureLayerClass()
                                        {
                                            FeatureClass = m,
                                            Name         = m.AliasName
                                        };
                                        this.AddLayer(map, cadFeatureLayerClass, ref envelope, true);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        IMapServerLayer mapServerLayerClass = new MapServerLayerClass();
                        mapServerLayerClass.ServerConnect((objs[k] as IGxAGSObject).AGSServerObjectName, (objs[k] as IGxAGSObject).DefaultMapName);
                        this.AddLayer(map, mapServerLayerClass as ILayer, ref envelope, false);
                    }
                }
                processAssist.End();
                bool layerCount = this.GetMap().LayerCount > 0;
                if (strs.Count > 0)
                {
                    MessageBox.Show("警告:数据范围不一致。\r\n 一个或多个添加的图层范围与关联的空间坐标系范围不一致。请检查数据问题。存在问题图层信息请查看错误日志!", "管理平台", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    StringBuilder stringBuilder = new StringBuilder();
                    foreach (string str1 in strs)
                    {
                        if (stringBuilder.Length > 0)
                        {
                            stringBuilder.Append(",");
                        }
                        stringBuilder.Append(str1);
                    }
                    CErrorLog.writeErrorLog(stringBuilder, null, "图层范围不一致!");
                }
                foreach (ILayer list0 in this.list_0)
                {
                    list0.Visible = true;
                }
                if (layerCount && envelope != null)
                {
                    IMap map1 = this.GetMap();
                    ISpatialReference spatialReference = map1.SpatialReference;
                    if ((spatialReference is IUnknownCoordinateSystem || envelope.SpatialReference is IUnknownCoordinateSystem || envelope.SpatialReference == null ? false : spatialReference != null))
                    {
                        envelope.Project(spatialReference);
                    }
                    (map1 as IActiveView).Extent = envelope;
                    (map1 as IActiveView).Refresh();
                }
                if (this.m_pApp != null)
                {
                    this.m_pApp.MapDocumentChanged();
                }
                else if (ApplicationRef.Application != null)
                {
                    ApplicationRef.Application.MapDocumentChanged();
                }
            }
            catch (Exception exception1)
            {
                str = exception1.ToString();
            }
            if (this.onLoadCompleteHand_0 != null)
            {
                this.onLoadCompleteHand_0();
            }
        }
        private IFeatureClass method_1()
        {
            IFeatureClass class2 = null;

            if (this.iname_0 == null)
            {
                return(null);
            }
            object          obj2      = this.iname_0.Open();
            IWorkspace      workspace = null;
            IFeatureDataset dataset   = null;

            if (obj2 is IWorkspace)
            {
                workspace = obj2 as IWorkspace;
            }
            else if (obj2 is IFeatureDataset)
            {
                dataset   = obj2 as IFeatureDataset;
                workspace = dataset.Workspace;
            }
            IObjectClassDescription description = null;

            description = new FeatureClassDescriptionClass();
            IFieldsEdit requiredFields = description.RequiredFields as IFieldsEdit;
            IFieldEdit  field          = null;
            IFieldEdit  edit3          = null;
            int         index          = requiredFields.FindField((description as IFeatureClassDescription).ShapeFieldName);

            edit3 = requiredFields.get_Field(index) as IFieldEdit;
            IGeometryDefEdit geometryDef = edit3.GeometryDef as IGeometryDefEdit;

            if (this.cboGeometryType.SelectedIndex == 0)
            {
                geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint;
            }
            else if (this.cboGeometryType.SelectedIndex == 1)
            {
                geometryDef.GeometryType_2 = esriGeometryType.esriGeometryMultipoint;
            }
            else if (this.cboGeometryType.SelectedIndex == 2)
            {
                geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolyline;
            }
            else if (this.cboGeometryType.SelectedIndex == 3)
            {
                geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPolygon;
            }
            ISpatialReference spatialReference = geometryDef.SpatialReference;

            if (this.txtCoordinate.Tag is ISpatialReference)
            {
                spatialReference = this.txtCoordinate.Tag as ISpatialReference;
            }
            geometryDef.HasZ_2 = this.chkHasZ.Checked;
            geometryDef.HasM_2 = this.chkHasM.Checked;
            SpatialReferenctOperator.ChangeCoordinateSystem(workspace as IGeodatabaseRelease, spatialReference, false);
            geometryDef.SpatialReference_2 = spatialReference;
            esriFeatureType esriFTSimple = esriFeatureType.esriFTSimple;

            field             = new FieldClass();
            field.Name_2      = "Code";
            field.AliasName_2 = "要素编号";
            field.Type_2      = esriFieldType.esriFieldTypeInteger;
            requiredFields.AddField(field);
            string name = this.method_0(workspace, this.txtFeatureClassName.Text);

            try
            {
                if (dataset == null)
                {
                    class2 = (workspace as IFeatureWorkspace).CreateFeatureClass(name, requiredFields, null, null,
                                                                                 esriFTSimple, "Shape", "");
                }
                else
                {
                    class2 = dataset.CreateFeatureClass(name, requiredFields, null, null, esriFTSimple, "Shape", "");
                }
            }
            catch (Exception exception)
            {
                Logger.Current.Error("", exception, "");
            }
            return(class2);
        }
Beispiel #9
0
        private void method_0(ILayer ilayer_0)
        {
            bool flag;

            ilayer_0.Visible = false;
            this.list_1.Add(ilayer_0);
            bool flag1 = true;

            if (ilayer_0 is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(ilayer_0 as IGeoDataset))
            {
                this.list_0.Add(ilayer_0.Name);
                flag1 = false;
            }
            if (flag1)
            {
                bool flag2 = true;
                if (ilayer_0 is IGeoFeatureLayer)
                {
                    IFeatureClass featureClass = (ilayer_0 as IGeoFeatureLayer).FeatureClass;
                    flag2 = featureClass.FeatureCount(null) > 0;
                }
                else if (ilayer_0 is IFDOGraphicsLayer)
                {
                    ITable attributeTable = (ilayer_0 as IAttributeTable).AttributeTable;
                    flag2 = attributeTable.RowCount(null) > 0;
                }
                if (flag2)
                {
                    if (this.ienvelope_0 != null)
                    {
                        IEnvelope areaOfInterest = ilayer_0.AreaOfInterest;
                        if ((areaOfInterest.SpatialReference is IUnknownCoordinateSystem ||
                             this.ienvelope_0.SpatialReference is IUnknownCoordinateSystem ||
                             this.ienvelope_0.SpatialReference == null
                            ? false
                            : areaOfInterest.SpatialReference != null))
                        {
                            if (!(areaOfInterest.SpatialReference is IUnknownCoordinateSystem) ||
                                !(this.ienvelope_0.SpatialReference is IUnknownCoordinateSystem))
                            {
                                flag = (this.ienvelope_0.SpatialReference != null
                                    ? true
                                    : areaOfInterest.SpatialReference != null);
                            }
                            else
                            {
                                flag = false;
                            }
                            if (flag)
                            {
                                areaOfInterest.Project(this.ienvelope_0.SpatialReference);
                                this.ienvelope_0.Union(areaOfInterest);
                            }
                            else
                            {
                                this.ienvelope_0.Union(areaOfInterest);
                            }
                        }
                    }
                    else
                    {
                        this.ienvelope_0 = ilayer_0.AreaOfInterest;
                    }
                }
            }
            if (this.object_0 is IMapLayers2)
            {
                this.method_2(this.object_0 as IMapLayers2, ilayer_0, flag1);
            }
            else if (this.object_0 is IMap)
            {
                this.method_3(this.object_0 as IMap, ilayer_0, flag1);
            }
            else if (this.object_0 is IGroupLayer)
            {
                this.method_5(this.object_0 as IGroupLayer, ilayer_0, flag1);
            }
            if (this.InMapCtrl != null && this.iapplication_0.MapControl.Map == this.object_0 &&
                this.iapplication_0.MapControl.Map.LayerCount > this.InMapCtrl.Map.LayerCount)
            {
                int layerIndexInMap = CommonHelper.GetLayerIndexInMap(this.iapplication_0.MapControl.Map as IBasicMap,
                                                                      ilayer_0);
                (this.InMapCtrl.Map as IMapLayers).InsertLayer(ilayer_0, true, layerIndexInMap);
            }
        }
Beispiel #10
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if ((this.string_0 != null) && (this.string_0.Length != 0))
     {
         if (this.bool_0)
         {
             MessageBox.Show("输出要素类已存在,请重新指定输出要素类名!");
         }
         else if (this.ispatialReference_0 == null)
         {
             MessageBox.Show("请输入投影坐标系!");
         }
         else if (this.ispatialReference_0 is IGeographicCoordinateSystem)
         {
             MessageBox.Show("请输入投影坐标系!");
         }
         else if (this.ispatialReference_0 is IUnknownCoordinateSystem)
         {
             MessageBox.Show("请输入投影坐标系!");
         }
         else
         {
             double num = 1000.0;
             this.string_0 = System.IO.Path.GetFileName(this.txtOutFeat.Text);
             ISpatialReference spatialReference = ((IGeoDataset)this.idataset_0).SpatialReference;
             (this.ispatialReference_0 as IControlPrecision2).IsHighPrecision =
                 (spatialReference as IControlPrecision2).IsHighPrecision;
             if (spatialReference.HasXYPrecision())
             {
                 double num2;
                 double num3;
                 double num4;
                 double num5;
                 spatialReference.GetDomain(out num2, out num3, out num4, out num5);
                 new PointClass();
                 if (!(spatialReference is IUnknownCoordinateSystem))
                 {
                     IEnvelope extent;
                     if (spatialReference is IProjectedCoordinateSystem)
                     {
                         extent = ((IGeoDataset)this.idataset_0).Extent;
                         extent.PutCoords(num2, num4, num3, num5);
                         extent.Project(this.ispatialReference_0);
                         if (!extent.IsEmpty)
                         {
                             this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin,
                                                                extent.YMax);
                             num = extent.Width / 2.0;
                         }
                     }
                     else if (spatialReference is IGeographicCoordinateSystem)
                     {
                         extent = ((IGeoDataset)this.idataset_0).Extent;
                         extent.Project(this.ispatialReference_0);
                         if (!extent.IsEmpty)
                         {
                             this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin,
                                                                extent.YMax);
                             num = extent.Width / 2.0;
                         }
                     }
                 }
             }
             if (spatialReference.HasZPrecision())
             {
                 double num6;
                 double num7;
                 spatialReference.GetZDomain(out num6, out num7);
                 this.ispatialReference_0.SetZDomain(num6, num7);
             }
             if (spatialReference.HasMPrecision())
             {
                 double num8;
                 double num9;
                 spatialReference.GetZDomain(out num8, out num9);
                 this.ispatialReference_0.SetZDomain(num8, num9);
             }
             SpatialReferenctOperator.ChangeCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease,
                                                             this.ispatialReference_0, false);
             this.progressBar1.Visible = true;
             this.int_2 = this.int_3;
             this.progressBar1.Value = this.int_3;
             SRLibCommonFunc.m_pfrm  = this;
             if (this.idataset_0 is IFeatureClass)
             {
                 SRLibCommonFunc.Project((IFeatureClass)this.idataset_0, this.ispatialReference_0,
                                         this.iworkspace_0, this.string_0, num);
             }
             else if (this.idataset_0 is IFeatureDataset)
             {
                 SRLibCommonFunc.Project((IFeatureDataset)this.idataset_0, this.ispatialReference_0,
                                         this.iworkspace_0, this.string_0);
             }
             this.progressBar1.Visible = false;
             this.string_0             = "";
             this.idataset_0           = null;
             this.iworkspace_0         = null;
             this.txtInputFeat.Text    = "";
             this.txtOutFeat.Text      = "";
         }
     }
 }
Beispiel #11
0
 private void method_1(IName iname_2, string string_1)
 {
     try
     {
         double            num              = 1000.0;
         IDataset          dataset          = iname_2.Open() as IDataset;
         ISpatialReference spatialReference = ((IGeoDataset)dataset).SpatialReference;
         (this.ispatialReference_0 as IControlPrecision2).IsHighPrecision =
             (spatialReference as IControlPrecision2).IsHighPrecision;
         if (spatialReference.HasXYPrecision())
         {
             double num2;
             double num3;
             double num4;
             double num5;
             spatialReference.GetDomain(out num2, out num3, out num4, out num5);
             new PointClass();
             if (!(spatialReference is IUnknownCoordinateSystem))
             {
                 IEnvelope extent;
                 if (spatialReference is IProjectedCoordinateSystem)
                 {
                     extent = ((IGeoDataset)dataset).Extent;
                     extent.PutCoords(num2, num4, num3, num5);
                     extent.Project(this.ispatialReference_0);
                     if (!extent.IsEmpty)
                     {
                         this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax);
                         num = extent.Width / 2.0;
                     }
                 }
                 else if (spatialReference is IGeographicCoordinateSystem)
                 {
                     extent = ((IGeoDataset)dataset).Extent;
                     extent.Project(this.ispatialReference_0);
                     if (!extent.IsEmpty)
                     {
                         this.ispatialReference_0.SetDomain(extent.XMin, extent.XMax, extent.YMin, extent.YMax);
                         num = extent.Width / 2.0;
                     }
                 }
             }
         }
         if (spatialReference.HasZPrecision())
         {
             double num6;
             double num7;
             spatialReference.GetZDomain(out num6, out num7);
             this.ispatialReference_0.SetZDomain(num6, num7);
         }
         if (spatialReference.HasMPrecision())
         {
             double num8;
             double num9;
             spatialReference.GetZDomain(out num8, out num9);
             this.ispatialReference_0.SetZDomain(num8, num9);
         }
         SpatialReferenctOperator.ChangeCoordinateSystem(this.iworkspace_0 as IGeodatabaseRelease,
                                                         this.ispatialReference_0, false);
         this.int_2 = this.int_3;
         this.progressBar1.Value = this.int_3;
         SRLibCommonFunc.m_pfrm  = this;
         if (dataset is IFeatureClass)
         {
             if (this.iname_0 is IFeatureDatasetName)
             {
                 SRLibCommonFunc.Project((IFeatureClass)dataset, this.ispatialReference_0,
                                         this.iname_0 as IFeatureDatasetName, string_1, num);
             }
             else
             {
                 SRLibCommonFunc.Project((IFeatureClass)dataset, this.ispatialReference_0, this.iworkspace_0,
                                         string_1, num);
             }
         }
         else if (dataset is IFeatureDataset)
         {
             SRLibCommonFunc.Project((IFeatureDataset)dataset, this.ispatialReference_0, this.iworkspace_0,
                                     string_1);
         }
         dataset = null;
     }
     catch (Exception exception)
     {
         MessageBox.Show("无法对" + (iname_2 as IDatasetName).Name + "作变换,请查看错误日志文件!");
         Logger.Current.Error("", exception, "");
     }
 }
Beispiel #12
0
 public static void ExtractSelectFeatureFormLayer(IFeatureLayer ifeatureLayer_0,
                                                  IFeatureWorkspace ifeatureWorkspace_0, IGeometry igeometry_0)
 {
     try
     {
         IFeatureSelection featureSelection = (IFeatureSelection)ifeatureLayer_0;
         if (featureSelection.SelectionSet.Count != 0)
         {
             IFeatureClass featureClass = ifeatureLayer_0.FeatureClass;
             IFields       fields       = featureClass.Fields;
             IFieldChecker fieldChecker = new FieldChecker();
             fieldChecker.InputWorkspace    = (featureClass as IDataset).Workspace;
             fieldChecker.ValidateWorkspace = (ifeatureWorkspace_0 as IWorkspace);
             IEnumFieldError enumFieldError;
             IFields         fields2;
             fieldChecker.Validate(fields, out enumFieldError, out fields2);
             enumFieldError.Reset();
             IFieldError fieldError = enumFieldError.Next();
             string      text       = "";
             while (fieldError != null)
             {
                 fieldError.FieldError.ToString();
                 IField field  = fields.get_Field(fieldError.FieldIndex);
                 IField field2 = fields2.get_Field(fieldError.FieldIndex);
                 string text2  = text;
                 text = string.Concat(new string[]
                 {
                     text2,
                     field2.Name,
                     " reason: ",
                     field.Name,
                     "  "
                 });
                 fieldError = enumFieldError.Next();
             }
             new Hashtable();
             string text3 = ifeatureLayer_0.Name;
             string text4;
             fieldChecker.ValidateTableName(text3, out text4);
             text3 = text4;
             string      shapeFieldName = "";
             IFieldsEdit fieldsEdit     = new Fields() as IFieldsEdit;
             for (int i = fields2.FieldCount - 1; i >= 0; i--)
             {
                 IField field3 = fields2.get_Field(i);
                 if (field3.Type == esriFieldType.esriFieldTypeGeometry)
                 {
                     shapeFieldName = field3.Name;
                     IGeometryDef      geometryDef      = field3.GeometryDef;
                     ISpatialReference spatialReference =
                         (geometryDef.SpatialReference as IClone).Clone() as ISpatialReference;
                     SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspace_0 as IGeodatabaseRelease,
                                                                     spatialReference, false);
                     (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                     (field3 as IFieldEdit).GeometryDef_2 = geometryDef;
                 }
                 if ((ifeatureWorkspace_0 as IWorkspace).Type == esriWorkspaceType.esriFileSystemWorkspace)
                 {
                     if (field3.Type != esriFieldType.esriFieldTypeBlob)
                     {
                         fieldsEdit.AddField(field3);
                     }
                 }
                 else
                 {
                     fieldsEdit.AddField(field3);
                 }
             }
             IFeatureClass featureClass2 = null;
             try
             {
                 featureClass2 = ifeatureWorkspace_0.CreateFeatureClass(text3, fieldsEdit, null, null,
                                                                        esriFeatureType.esriFTSimple, shapeFieldName, "");
             }
             catch (Exception)
             {
                 System.Windows.Forms.MessageBox.Show("无法创建输出要素类!");
                 return;
             }
             IFeatureCursor featureCursor = featureClass2.Insert(true);
             IFeatureBuffer featureBuffer = featureClass2.CreateFeatureBuffer();
             ICursor        cursor;
             featureSelection.SelectionSet.Search(null, false, out cursor);
             IFeatureCursor featureCursor2 = (IFeatureCursor)cursor;
             for (IFeature feature = featureCursor2.NextFeature();
                  feature != null;
                  feature = featureCursor2.NextFeature())
             {
                 if (feature.Shape != null)
                 {
                     ClipHelper.InsertFeature(featureCursor, featureBuffer, fields2, feature, feature.Shape,
                                              igeometry_0);
                 }
             }
             featureCursor.Flush();
             Marshal.ReleaseComObject(featureBuffer);
             Marshal.ReleaseComObject(featureCursor);
         }
     }
     catch
     {
     }
 }
Beispiel #13
0
        private void method_1(IFeatureClass ifeatureClass_0, IWorkspace iworkspace_0)
        {
            IEnumFieldError enumFieldError;
            IFields         field;
            int             i;
            IField          field1;
            string          str;
            string          aliasName = ifeatureClass_0.AliasName;

            string[] strArrays = aliasName.Split(new char[] { '.' });
            aliasName = strArrays[(int)strArrays.Length - 1];
            IFields       fields            = ifeatureClass_0.Fields;
            IFieldChecker fieldCheckerClass = new FieldChecker()
            {
                ValidateWorkspace = iworkspace_0
            };

            fieldCheckerClass.Validate(fields, out enumFieldError, out field);
            List <SDEToShapefile.FieldMap> fieldMaps = new List <SDEToShapefile.FieldMap>();

            for (i = 0; i < fields.FieldCount; i++)
            {
                field1 = fields.Field[i];
                if (field1.Type != esriFieldType.esriFieldTypeBlob)
                {
                    IField field2 = field.Field[i];
                    fieldMaps.Add(new SDEToShapefile.FieldMap(field1.Name, field2.Name));
                }
            }
            for (i = field.FieldCount - 1; i >= 0; i--)
            {
                field1 = field.Field[i];
                if (field1.Type == esriFieldType.esriFieldTypeBlob)
                {
                    (field as IFieldsEdit).DeleteField(field1);
                }
            }
            fieldCheckerClass.ValidateTableName(aliasName, out str);
            aliasName = string.Concat(this.string_0, "\\", str);
            if (File.Exists(string.Concat(aliasName, ".shp")))
            {
                File.Delete(string.Concat(aliasName, ".shp"));
            }
            if (File.Exists(string.Concat(aliasName, ".shx")))
            {
                File.Delete(string.Concat(aliasName, ".shx"));
            }
            if (File.Exists(string.Concat(aliasName, ".dbf")))
            {
                File.Delete(string.Concat(aliasName, ".dbf"));
            }
            int              num         = field.FindField(ifeatureClass_0.ShapeFieldName);
            IFieldEdit       fieldEdit   = field.Field[num] as IFieldEdit;
            IGeometryDefEdit geometryDef = fieldEdit.GeometryDef as IGeometryDefEdit;

            if (ifeatureClass_0.FeatureType == esriFeatureType.esriFTAnnotation)
            {
                geometryDef.GeometryType_2 = esriGeometryType.esriGeometryPoint;
            }
            ISpatialReference spatialReference = geometryDef.SpatialReference;

            SpatialReferenctOperator.ChangeCoordinateSystem(iworkspace_0 as IGeodatabaseRelease, spatialReference, true);
            geometryDef.SpatialReference_2 = spatialReference;
            fieldEdit.GeometryDef_2        = geometryDef;
            try
            {
                IFeatureClass featureClass = (iworkspace_0 as IFeatureWorkspace).CreateFeatureClass(str, field, null,
                                                                                                    null, esriFeatureType.esriFTSimple, ifeatureClass_0.ShapeFieldName, "");
                this.method_2(ifeatureClass_0 as ITable, featureClass as ITable, fieldMaps, 800);
            }
            catch
            {
            }
        }
Beispiel #14
0
 private void method_1(IGeodatabaseRelease igeodatabaseRelease_0, ISpatialReference ispatialReference_2)
 {
     SpatialReferenctOperator.ChangeCoordinateSystem(igeodatabaseRelease_0, ispatialReference_2, true);
 }
Beispiel #15
0
 private ISpatialReference method_0(IGeodatabaseRelease igeodatabaseRelease_0)
 {
     return(SpatialReferenctOperator.ConstructCoordinateSystem(igeodatabaseRelease_0));
 }
Beispiel #16
0
        private void NewDatasetSpatialRefPage_Load(object sender, EventArgs e)
        {
            string[] directories;
            int      num;
            TreeNode node2;

            string[] files;
            int      num2;
            TreeNode node3;
            ISpatialReferenceFactory3 factory = new SpatialReferenceEnvironmentClass();
            TreeNode node = new TreeNode("地理坐标系文件夹", 0, 1);

            this.treeView1.Nodes.Add(node);
            string startupPath = Application.StartupPath;
            string path        = System.IO.Path.Combine(startupPath, @"Coordinate Systems\Geographic Coordinate Systems");

            if (Directory.Exists(path))
            {
                directories = Directory.GetDirectories(path);
                for (num = 0; num < directories.Length; num++)
                {
                    node2 = new TreeNode(System.IO.Path.GetFileName(directories[num]), 0, 1);
                    node.Nodes.Add(node2);
                    files = Directory.GetFiles(directories[num]);
                    num2  = 0;
                    while (num2 < files.Length)
                    {
                        if (System.IO.Path.GetExtension(files[num2]).ToLower() == ".prj")
                        {
                            node3 = new TreeNode(System.IO.Path.GetFileName(files[num2]), 2, 2)
                            {
                                Tag = factory.CreateESRISpatialReferenceFromPRJFile(files[num2])
                            };
                            node2.Nodes.Add(node3);
                        }
                        num2++;
                    }
                }
            }
            node = new TreeNode("投影坐标系文件夹", 0, 1);
            this.treeView1.Nodes.Add(node);
            path = System.IO.Path.Combine(startupPath, @"Coordinate Systems\Projected Coordinate Systems");
            if (Directory.Exists(path))
            {
                directories = Directory.GetDirectories(path);
                for (num = 0; num < directories.Length; num++)
                {
                    node2 = new TreeNode(System.IO.Path.GetFileName(directories[num]), 0, 1);
                    node.Nodes.Add(node2);
                    string[] strArray3 = Directory.GetDirectories(directories[num]);
                    for (int i = 0; i < strArray3.Length; i++)
                    {
                        TreeNode node4 = new TreeNode(System.IO.Path.GetFileName(strArray3[i]), 0, 1);
                        node2.Nodes.Add(node4);
                        files = Directory.GetFiles(strArray3[i]);
                        for (num2 = 0; num2 < files.Length; num2++)
                        {
                            if (System.IO.Path.GetExtension(files[num2]).ToLower() == ".prj")
                            {
                                node3 = new TreeNode(System.IO.Path.GetFileName(files[num2]), 2, 2)
                                {
                                    Tag = factory.CreateESRISpatialReferenceFromPRJFile(files[num2])
                                };
                                node4.Nodes.Add(node3);
                            }
                        }
                    }
                }
            }
            node = new TreeNode("未知坐标系统", 2, 2)
            {
                Tag =
                    SpatialReferenctOperator.ConstructCoordinateSystem(
                        NewObjectClassHelper.m_pObjectClassHelper.Workspace as IGeodatabaseRelease)
            };
            this.treeView1.Nodes.Add(node);
        }