Ejemplo n.º 1
0
 public int TryCeateObjectClass(IFeatureDataSet dataset, string Name, IFieldInfoCollection fields, string[] indexField, out IObjectClass oc)
 {
     oc = null;
     if (((dataset == null) || string.IsNullOrEmpty(Name)) || (fields == null))
     {
         return(-1);
     }
     try
     {
         string[] namesByType = dataset.GetNamesByType(gviDataSetType.gviDataSetObjectClassTable);
         if ((namesByType != null) && (Array.IndexOf <string>(namesByType, Name) != -1))
         {
             oc = dataset.OpenObjectClass(Name);
             return(0);
         }
         oc = dataset.CreateObjectClass(Name, fields);
         if (dataset == null)
         {
             return(-1);
         }
         IDbIndexInfo index = null;
         if (indexField != null)
         {
             foreach (string str in indexField)
             {
                 try
                 {
                     index = new DbIndexInfoClass
                     {
                         Name = string.Format("Index_{0}_{1}", oc.Id, str)
                     };
                     index.AppendFieldDefine(str, true);
                     oc.AddDbIndex(index);
                 }
                 catch (Exception exception)
                 {
                 }
             }
         }
         return(1);
     }
     catch (Exception exception2)
     {
         return(-1);
     }
 }
Ejemplo n.º 2
0
 public DbIndexBuffer(IDbIndexInfo info, IndexEditType type)
 {
     this.data = info;
     this.et   = type;
 }
Ejemplo n.º 3
0
 public myAttrIndex(IDbIndexInfo pDbIndex, bool bIsNew)
 {
     dbIndex = pDbIndex;
     IsNew   = bIsNew;
 }
Ejemplo n.º 4
0
        public FeatureClassIndexDlg(IFeatureClass pFc)
        {
            InitializeComponent();
            featureCls          = pFc;
            fcFields            = pFc.GetFields();
            featureCls.LockType = gviLockType.gviLockExclusiveSchema;

            List <string> geoFields = new List <string>();

            for (int l = 0; l < fcFields.Count; l++)
            {
                IFieldInfo myField = fcFields.Get(l);
                if (myField != null && myField.FieldType == gviFieldType.gviFieldGeometry)
                {
                    geoFields.Add(myField.Name);
                }
            }

            //读取FC的索引信息
            //属性索引
            IDbIndexInfoCollection DbIndexInfos = featureCls.GetDbIndexInfos();

            if (DbIndexInfos != null)
            {
                for (int k = 0; k < DbIndexInfos.Count; k++)
                {
                    IDbIndexInfo DbIndex = DbIndexInfos.Get(k);
                    if (DbIndex.FieldCount == 1)
                    {
                        string getName = DbIndex.GetFieldName(0);
                        int    ind     = fcFields.IndexOf(getName);
                        if (ind >= 0)
                        {
                            IFieldInfo unVaildField = fcFields.Get(ind);
                            if (unVaildField.FieldType == gviFieldType.gviFieldFID || unVaildField.FieldType == gviFieldType.gviFieldGeometry || unVaildField.FieldType == gviFieldType.gviFieldBlob)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }
                    }
                    AttrIndexList.Add(DbIndex.Name);
                    this.lb_AttrIndex.Items.Add(new myAttrIndex(DbIndex, false));
                }
            }

            //空间索引
            IIndexInfoCollection GridIndexInfos = featureCls.GetSpatialIndexInfos();

            if (GridIndexInfos != null)
            {
                GridIndexHash = new Hashtable(GridIndexInfos.Count);
                for (int k = 0; k < GridIndexInfos.Count; k++)
                {
                    IGridIndexInfo GridIndex = GridIndexInfos.Get(k) as IGridIndexInfo;
                    if (GridIndex != null)
                    {
                        GridIndexHash.Add(GridIndex.GeoColumnName, GridIndex);
                        CheckIndexEdit GridIndexItem = new CheckIndexEdit(GridIndex.GeoColumnName);
                        GridIndexItem.ExistIndex = new IndexAboutGeometry(GridIndex.L1, GridIndex.L2, GridIndex.L3, true);
                        GridIndexItem.NewIndex   = new IndexAboutGeometry(GridIndex.L1, GridIndex.L2, GridIndex.L3, true);
                        this.lb_SpatialIndexGeo.Items.Add(GridIndexItem);
                    }
                }

                foreach (string sGeoColumn in geoFields)
                {
                    if (GridIndexHash.ContainsKey(sGeoColumn))
                    {
                        continue;
                    }
                    CheckIndexEdit GridIndexItem = new CheckIndexEdit(sGeoColumn);
                    GridIndexItem.ExistIndex = null;
                    GridIndexItem.NewIndex   = new IndexAboutGeometry(0, 0, 0, false);
                    this.lb_SpatialIndexGeo.Items.Add(GridIndexItem);
                }
            }

            //渲染索引
            IIndexInfoCollection RenderIndexInfos = featureCls.GetRenderIndexInfos();

            if (RenderIndexInfos != null)
            {
                RenderIndexHash = new Hashtable(RenderIndexInfos.Count);
                for (int k = 0; k < RenderIndexInfos.Count; k++)
                {
                    IRenderIndexInfo RenderIndex = RenderIndexInfos.Get(k) as IRenderIndexInfo;
                    if (RenderIndex != null)
                    {
                        RenderIndexHash.Add(RenderIndex.GeoColumnName, RenderIndex);
                        CheckIndexEdit RenderIndexItem = new CheckIndexEdit(RenderIndex.GeoColumnName);
                        RenderIndexItem.ExistIndex = new IndexAboutGeometry(RenderIndex.L1, 0, 0, true);
                        RenderIndexItem.NewIndex   = new IndexAboutGeometry(RenderIndex.L1, 0, 0, true);
                        this.lb_RenderIndexGeo.Items.Add(RenderIndexItem);
                    }
                }

                foreach (string sGeoColumn in geoFields)
                {
                    if (RenderIndexHash.ContainsKey(sGeoColumn))
                    {
                        continue;
                    }
                    CheckIndexEdit RenderIndexItem = new CheckIndexEdit(sGeoColumn);
                    RenderIndexItem.ExistIndex = null;
                    RenderIndexItem.NewIndex   = new IndexAboutGeometry(0, 0, 0, false);
                    this.lb_RenderIndexGeo.Items.Add(RenderIndexItem);
                }

                //填充渲染索引的ListBoxControl控件,一个是lbc_FieldsAvailable,另一个是lbc_FieldsSelected
                for (int k = 0; k < fcFields.Count; k++)
                {
                    IFieldInfo fcField = fcFields.Get(k);
                    if (fcField.FieldType == gviFieldType.gviFieldFID || fcField.FieldType == gviFieldType.gviFieldGeometry || fcField.FieldType == gviFieldType.gviFieldBlob)
                    {
                        continue;
                    }
                    if (fcField.RegisteredRenderIndex)
                    {
                        this.lb_RenderField.Items.Add(new myFieldInfo(fcField));
                        RegRenderIndexFields.Add(fcField.Name);
                        RegRenderIndexHash.Add(fcField.Name, fcField);
                    }
                    else
                    {
                        this.lb_RenderAllField.Items.Add(new myFieldInfo(fcField));
                    }
                }
            }
        }
Ejemplo n.º 5
0
        private bool InitTempLib(IDataSource ds)
        {
            if (ds == null)
            {
                return(false);
            }
            IFieldInfoCollection fields     = null;
            IFieldInfo           newVal     = null;
            ISpatialCRS          spatialCRS = null;
            ITable          o   = null;
            IFeatureDataSet set = null;

            try
            {
                fields = new FieldInfoCollectionClass();
                newVal = new FieldInfoClass
                {
                    Name      = "ID",
                    Alias     = "编号",
                    FieldType = gviFieldType.gviFieldFID
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "LayerName",
                    Alias     = "图层名称",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 50
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "DataSetName",
                    Alias     = "数据集名称",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 100
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "FCName",
                    Alias     = "要素类名称",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 100
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "FCGuid",
                    Alias     = "要素类GUID",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 100
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "GeoType",
                    Alias     = "空间列几何类型",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 50
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "RenderStyle",
                    Alias     = "图层渲染样式",
                    FieldType = gviFieldType.gviFieldBlob
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "SourceFile",
                    Alias     = "数据来源",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 150
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "GroupId",
                    Alias     = "逻辑组ID",
                    FieldType = gviFieldType.gviFieldInt32
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "SourceType",
                    Alias     = "数据来源类型",
                    FieldType = gviFieldType.gviFieldString,
                    Length    = 50
                };
                fields.Add(newVal);
                newVal = new FieldInfoClass
                {
                    Name      = "CreateDate",
                    Alias     = "创建日期",
                    FieldType = gviFieldType.gviFieldDate
                };
                fields.Add(newVal);
                o = ds.CreateTable("Tb_TemporaryMgr", "ID", fields);
                if (o != null)
                {
                    IDbIndexInfo index = null;
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "LayerName")
                    };
                    index.AppendFieldDefine("LayerName", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "DatasetName")
                    };
                    index.AppendFieldDefine("DatasetName", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "FCName")
                    };
                    index.AppendFieldDefine("FCName", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "FCGuid")
                    };
                    index.AppendFieldDefine("FCGuid", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "GeoType")
                    };
                    index.AppendFieldDefine("GeoType", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "GroupId")
                    };
                    index.AppendFieldDefine("GroupId", false);
                    o.AddDbIndex(index);
                    index = new DbIndexInfoClass
                    {
                        Name = string.Format("{0}_{1}", "Tb_TemporaryMgr", "SourceType")
                    };
                    index.AppendFieldDefine("SourceType", false);
                    o.AddDbIndex(index);
                    Marshal.ReleaseComObject(o);
                }
                CRSFactory factory = new CRSFactoryClass();
                spatialCRS = factory.CreateFromWKT("UNKNOWNCS[\"unnamed\"]") as ISpatialCRS;
                set        = ds.CreateFeatureDataset("FeatureDataSet", spatialCRS);
                if (set != null)
                {
                    Marshal.ReleaseComObject(set);
                }
                return(true);
            }
            catch (Exception exception)
            {
                return(false);
            }
        }