示例#1
0
        private static bool Store(
            EditOperation.IEditContext editContext,
            IDictionary <Feature, Geometry> result)
        {
            foreach (KeyValuePair <Feature, Geometry> keyValuePair in result)
            {
                Feature  feature  = keyValuePair.Key;
                Geometry geometry = keyValuePair.Value;

                if (geometry.IsEmpty)
                {
                    throw new Exception("One or more result geometries have become empty.");
                }

                feature.SetShape(geometry);
                feature.Store();

                editContext.Invalidate(feature);

                feature.Dispose();
            }

            _msg.InfoFormat("Successfully stored {0} updated features.", result.Count);

            return(true);
        }
        private static void StoreShape(KeyValuePair <Feature, Geometry> keyValuePair,
                                       EditOperation.IEditContext editContext)
        {
            Feature  feature  = keyValuePair.Key;
            Geometry geometry = keyValuePair.Value;

            StoreShape(feature, geometry, editContext);
        }
        private static void StoreShape(Feature feature,
                                       Geometry geometry,
                                       EditOperation.IEditContext editContext)
        {
            if (geometry.IsEmpty)
            {
                throw new Exception("One or more updates geometries have become empty.");
            }

            feature.SetShape(geometry);
            feature.Store();

            editContext.Invalidate(feature);
        }
        public static bool StoreTx(
            EditOperation.IEditContext editContext,
            [CanBeNull] IDictionary <Feature, Geometry> updates,
            [CanBeNull] IDictionary <Feature, IList <Geometry> > copies = null)
        {
            _msg.DebugFormat("Saving {0} updates and {1} inserts...", updates?.Count ?? 0,
                             copies?.Count ?? 0);

            if (updates != null && updates.Count > 0)
            {
                foreach (KeyValuePair <Feature, Geometry> keyValuePair in updates)
                {
                    StoreShape(keyValuePair, editContext);
                }

                _msg.InfoFormat("Successfully stored {0} updated feature(s).", updates.Count);
            }

            if (copies != null && copies.Count > 0)
            {
                foreach (KeyValuePair <Feature, IList <Geometry> > keyValuePair in copies)
                {
                    Feature          originalFeature = keyValuePair.Key;
                    IList <Geometry> newGeometries   = keyValuePair.Value;

                    FeatureClass featureClass = originalFeature.GetTable();

                    foreach (Geometry newGeometry in newGeometries)
                    {
                        RowBuffer rowBuffer = DuplicateRow(originalFeature);

                        SetShape(rowBuffer, newGeometry, featureClass);

                        Feature newFeature = featureClass.CreateRow(rowBuffer);

                        StoreShape(newFeature, newGeometry, editContext);
                    }
                }

                _msg.InfoFormat("Successfully created {0} new feature(s).", copies.Count);
            }

            return(true);
        }