Элементы-фантомы

0 голосов
спросил 18 Фев, 08 от Piton (520 баллов) в категории Программные продукты Esri
Странное какое-то поведение  в связке ArcGis 9.2 - ArcSDE - Oracle.
После серии вставок и удалений элементов через функции ArcGis Server в базе обнаружились линии-фантомы. Они не выделяются ни в ArcCatalog, ни в ArcMap, данных по ним нет ни при просмотре таблиц через AC Preview Table, ни при просмотре слоев черехз AM-Open Attribute Table, ни даже в соответствующих таблицах Оракла. Но тем не менее, они замечательно отображаются на экране. Что это за глюк и как его бороть?Shocked

2 Ответы

0 голосов
ответил 29 Фев, 08 от Grigoriy (127,020 баллов)
Да, наверняка, инопланетяне приложили свои щупальца! image
А какую версию базы Вы редактировали (в серии вставок и удалений) и какую смотрите?
0 голосов
ответил 11 Июнь, 08 от Piton (520 баллов)
   А кто его знает какую версию... Вот кусок кода, которым производится изменение элементов

public void EditFeature(string Id, IGeometry igeom, string layerName, params DatasetParameter[] parameters)
        {
            IServerContext context = GetServerContext();
            try
            {
               IMapServer ms = context.ServerObject as IMapServer;
               IMapServerObjects pMapServerObjs = ms as IMapServerObjects;
               IMap pMap = pMapServerObjs.get_Map(ms.DefaultMapName);
               IFeatureLayer pFLayer = null;
               ILayer il = BaseServerTools.GetLayerByName(layerName,pMap);
               if (il == null)
                    throw new GISLayerNotFoundException(null,layerName);
               pFLayer = il as IFeatureLayer;
               IFeatureClass pFeatureClass = pFLayer.FeatureClass;

               IDataset dataset = pFeatureClass as IDataset;
               IWorkspace workspace = dataset.Workspace;
               IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspace;
               try
               {
                    workspaceEdit.StartEditing(false);
                    workspaceEdit.StartEditOperation();
                    IFeature f = GetFeature(pFeatureClass, Convert.ToInt32(Id));
                    if (f == null)
                    {
                        workspaceEdit.StopEditOperation();
                        workspaceEdit.StopEditing(false);
                        return;
                    }
                    if (parameters != null)
                    {
                        foreach (DatasetParameter d in parameters)
                        {
                            f.set_Value(pFeatureClass.FindField(d.FieldName), d.FieldValue);
                        }
                    }
                    if (igeom != null)
                    {
                        f.Shape = igeom;
                    }
                    f.Store();
                    workspaceEdit.StopEditOperation();
                    workspaceEdit.StopEditing(true);
               }

               catch (Exception ex)
               {
                    workspaceEdit.StopEditOperation();
                    workspaceEdit.StopEditing(false);
                    throw new GISOperationException(ex, GISOperationType.Update);
               }
            }
            finally
            {
               ReleaseContext(context);
            }
        }
Что-то неправильно? И как сюда прикрутить версионность?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...