Пример #1
0
        private void objectLoaderToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Stopwatch myWatch = Stopwatch.StartNew();

            IObjectLoader objectLoader       = new ObjectLoaderClass();
            IFeatureClass sourceFeatureClass = getFeatureClass("esriDataSourcesGDB.FileGDBWorkspaceFactory", fileGDBPath, sourceFCName);
            IFeatureClass targetFeatureClass = getFeatureClass("esriDataSourcesGDB.SdeWorkspaceFactory", sdePath, targetFCName);

            string sInFieldList = targetFeatureClass.Fields.get_Field(0).Name;

            for (int i = 1; i < targetFeatureClass.Fields.FieldCount; i++)
            {
                sInFieldList = sInFieldList + "," + targetFeatureClass.Fields.get_Field(i).Name;
            }

            IQueryFilter queryFilter = new QueryFilterClass();

            queryFilter.WhereClause = queryClause;
            queryFilter.SubFields   = sInFieldList;

            IEnumInvalidObject invalidObject;

            objectLoader.LoadObjects(null, sourceFeatureClass as ITable, queryFilter, targetFeatureClass as ITable, targetFeatureClass.Fields, false, 0, false, false, 1000, out invalidObject);
            IFeatureClassManage targetFeatureClassManage = targetFeatureClass as IFeatureClassManage;

            targetFeatureClassManage.UpdateExtent();

            myWatch.Stop();
            string time = myWatch.Elapsed.TotalSeconds.ToString();

            MessageBox.Show(time + " Seconds");
        }
Пример #2
0
        public static bool LoadData_Loader(ITable sourceTable, ITable targetTable, out JTLoadDataError[] errors)
        {
            if (sourceTable == null || targetTable == null)
            {
                throw new ArgumentNullException();
            }

            IFields sFields = sourceTable.Fields;
            IFields tFields = targetTable.Fields;

            string sourceFieldsStr = string.Empty;

            var tFieldCount = tFields.FieldCount;

            if (tFieldCount > 0)
            {
                for (int i = 0; i < tFieldCount; i++)
                {
                    var tField = tFields.Field[i];
                    if (!tField.Editable)
                    {
                        continue;
                    }
                    var tFieldname  = tField.Name;
                    var sFieldIndex = sFields.FindField(tFieldname);
                    if (sFieldIndex >= 0)
                    {
                        sourceFieldsStr += tFieldname + ",";
                    }
                    else
                    {
                        sourceFieldsStr += "'',";
                    }
                }
            }

            IObjectLoader objectLoader = new ObjectLoaderClass();
            IQueryFilter  qf           = new QueryFilterClass {
                SubFields = sourceFieldsStr,
            };

            objectLoader.LoadObjects(null, sourceTable, qf, targetTable, tFields, false, 0, false, false, 20, out IEnumInvalidObject enumInvalidObject);

            var listErrors = new List <JTLoadDataError>();
            IInvalidObjectInfo invalidObject = null;

            while ((invalidObject = enumInvalidObject.Next()) != null)
            {
                listErrors.Add(new JTLoadDataError(invalidObject.InvalidObjectID, invalidObject.ErrorDescription));
            }

            ComReleaser.ReleaseComObject(tFields);
            ComReleaser.ReleaseComObject(sFields);
            ComReleaser.ReleaseComObject(objectLoader);
            ComReleaser.ReleaseComObject(qf);

            errors = listErrors.ToArray();
            return(errors.Length <= 0);
        }
Пример #3
0
        /// <summary>
        /// Test 6s
        /// </summary>
        /// <param name="sourceTable"></param>
        /// <param name="targetTable"></param>
        /// <param name="errors"></param>
        /// <param name="queryClause"></param>
        /// <returns></returns>
        public static bool LoadData_Loader(ITable sourceTable, ITable targetTable, out JTLoadDataError[] errors, string queryClause = null)
        {
            if (sourceTable == null || targetTable == null)
            {
                throw new ArgumentNullException();
            }
            IFields sFields         = sourceTable.Fields;
            IFields tFields         = targetTable.Fields;
            string  sourceFieldsStr = string.Empty;
            var     tFieldCount     = tFields.FieldCount;

            if (tFieldCount > 0)
            {
                sourceFieldsStr = tFields.Field[0].Name;
                for (int i = 1; i < tFieldCount; ++i)
                {
                    sourceFieldsStr += "," + tFields.Field[i].Name;
                }
            }
            IObjectLoader objectLoader = new ObjectLoaderClass();
            IQueryFilter  qf           = new QueryFilterClass {
                SubFields = sourceFieldsStr, WhereClause = queryClause,
            };

            objectLoader.LoadObjects(null, sourceTable, qf, targetTable, tFields, false, 0, false, false, 20, out IEnumInvalidObject enumInvalidObject);
            var listErrors = new List <JTLoadDataError>();
            IInvalidObjectInfo invalidObject = null;

            while ((invalidObject = enumInvalidObject.Next()) != null)
            {
                listErrors.Add(new JTLoadDataError(invalidObject.InvalidObjectID, invalidObject.ErrorDescription));
            }
            ComReleaser.ReleaseComObject(invalidObject);
            ComReleaser.ReleaseComObject(qf);
            ComReleaser.ReleaseComObject(objectLoader);
            ComReleaser.ReleaseComObject(tFields);
            ComReleaser.ReleaseComObject(sFields);
            errors = listErrors.ToArray();
            return(errors.Length <= 0);
        }