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); } }
public DbIndexBuffer(IDbIndexInfo info, IndexEditType type) { this.data = info; this.et = type; }
public myAttrIndex(IDbIndexInfo pDbIndex, bool bIsNew) { dbIndex = pDbIndex; IsNew = bIsNew; }
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)); } } } }
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); } }