Beispiel #1
0
        private void RepairWithDataset(IDataLayer2 dataLayer, Moves.GisDataset oldDataset, Moves.GisDataset newDataset, AlertForm alert)
        {
            // This routine, can only repair workspace path, and dataset name.
            // The workspace type and data type must be the same.
            // This can be checked with the CSV verifier. Violations will be ignored in the CSV loader
            if (oldDataset.DatasourceType != newDataset.DatasourceType ||
                oldDataset.WorkspaceProgId != newDataset.WorkspaceProgId)
            {
                return;
            }
            var helper = (IDataSourceHelperLayer) new DataSourceHelper();

            if (oldDataset.DatasourceName == newDataset.DatasourceName)
            {
                helper.FindAndReplaceWorkspaceNamePath((ILayer)dataLayer, oldDataset.Workspace.Folder, newDataset.Workspace.Folder, false);
            }
            else
            {
                // I can't find a way to simply change the name of the dataset in a layer.
                // To set the data source of a layer I need to first open the data source (using the newDataset properties)
                // I can then use the Name (as IName) of the data source to fix the layer.
                IDataset dataset = TryOpenDataset(newDataset);
                if (dataset == null)
                {
                    alert.Text        = @"Error";
                    alert.msgBox.Text = $"Map Fixer is unable to repair the layer {((ILayer2)dataLayer).Name}. " +
                                        "Use the 'Set Data Source button' on the Source tab of the layer properties dialog to " +
                                        $"set the data source to {newDataset.Workspace.Folder}\\{newDataset.DatasourceName}";
                    alert.ShowDialog(new WindowWrapper(new IntPtr(ArcMap.Application.hWnd)));
                    return;
                }
                helper.ReplaceName((ILayer)dataLayer, dataset.FullName, false);
            }
        }
Beispiel #2
0
        public Tests()
        {
            _objectType = "Function";

               string baseDir = Directory.GetCurrentDirectory();
               Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

               AdapterSettings adapterSettings = new AdapterSettings();
               adapterSettings.AppendSettings(new AppSettingsReader("App.config"));

               FileInfo log4netConfig = new FileInfo("Log4net.config");
               log4net.Config.XmlConfigurator.Configure(log4netConfig);

               string twConfigFile = String.Format("{0}{1}.{2}.config",
             adapterSettings["AppDataPath"],
             adapterSettings["ProjectName"],
             adapterSettings["ApplicationName"]
               );

               AppSettingsReader twSettings = new AppSettingsReader(twConfigFile);
               adapterSettings.AppendSettings(twSettings);

               _dataLayer = new Bechtel.DataLayer.RestDataLayer2(adapterSettings);

               _filter = Utility.Read<DataFilter>(adapterSettings["FilterPath"]);

               //_scenarios = Utility.Read<Scenarios>("Scenarios.xml");
               _objectType = adapterSettings["ObjectType"];
               _modifiedProperty = adapterSettings["ModifiedProperty"];
               _modifiedValue = adapterSettings["ModifiedValue"];
               _objectDefinition = GetObjectDefinition(_objectType);
        }
Beispiel #3
0
        private void InitialComboxEx(ComboBoxEx cobox)
        {
            IMap       pMap       = pMapControl.Map;
            IEnumLayer pEnumLayer = pMap.get_Layers(null, true);

            pEnumLayer.Reset();
            ILayer pLayer = pEnumLayer.Next();

            while (pLayer != null)
            {
                cobox.Items.Add(pLayer.Name);
                //获取layer的完整路径
                IDataLayer2    pDatalayer   = pLayer as IDataLayer2;
                IDatasetName   pDatasetName = pDatalayer.DataSourceName as IDatasetName;
                IWorkspaceName pWPName      = pDatasetName.WorkspaceName;

                if (!pdic.ContainsKey(pLayer.Name))
                {
                    pdic.Add(pLayer.Name, pWPName.PathName + "\\" + pLayer.Name + ".shp");
                }
                if (!pdicLayer.ContainsKey(pLayer.Name))
                {
                    pdicLayer.Add(pLayer.Name, pLayer);
                }
                pLayer = pEnumLayer.Next();
            }
        }
Beispiel #4
0
        /// <summary>
        /// 移除图层右键菜单
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void removeLayer_ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IBasicMap          map           = null;
            ILayer             selectedLayer = null;
            object             unk           = null;
            object             data          = null;
            esriTOCControlItem item          = esriTOCControlItem.esriTOCControlItemNone;

            m_tocControl.GetSelectedItem(ref item, ref map, ref selectedLayer, ref unk, ref data);

            if (item == esriTOCControlItem.esriTOCControlItemLayer)
            {
                IDataLayer2 datalayer = selectedLayer as IDataLayer2;
                if (datalayer.DataSourceName.NameString != "")
                {
                    datalayer.Disconnect();
                }
                m_mapControl.Map.DeleteLayer(selectedLayer);
                if (m_attForm != null && selectedLayer is IFeatureLayer)
                {
                    m_attForm.att_removetable(selectedLayer as IFeatureLayer);
                }
            }
            this.Focus();
            m_mapControl.Focus();
        }
Beispiel #5
0
        public void ConnectSource(ILayer pLayer, string ConnectFloder, int mode)
        {
            switch (mode)
            {
            case 0:              //图层来源为gdb
                IFeatureLayer  pFlayer = pLayer as IFeatureLayer;
                IDataLayer2    pDLayer = pFlayer as IDataLayer2;
                IDatasetName   pDsName = pDLayer.DataSourceName as IDatasetName;
                IWorkspaceName ws      = pDsName.WorkspaceName;
                ws.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory";
                ws.PathName           = ConnectFloder;
                pDsName.WorkspaceName = ws;
                break;

            case 1:             //图层来源为shp文件
                IFeatureLayer  pFLayer = pLayer as IFeatureLayer;
                IDataLayer2    pDlayer = pFLayer as IDataLayer2;
                IDatasetName   pDsname = pDlayer.DataSourceName as IDatasetName;
                IWorkspaceName wsf     = pDsname.WorkspaceName;
                wsf.PathName          = ConnectFloder;
                pDsname.WorkspaceName = wsf;
                break;

            case 2:             //图层来源为栅格图像
                IRasterLayer   pRlayer  = pLayer as IRasterLayer;
                IDataLayer2    pDlayerr = pRlayer as IDataLayer2;
                IDatasetName   pDsnamer = pDlayerr.DataSourceName as IDatasetName;
                IWorkspaceName wsfr     = pDsnamer.WorkspaceName;
                wsfr.PathName          = ConnectFloder;
                pDsnamer.WorkspaceName = wsfr;
                break;
            }
        }
Beispiel #6
0
        private void frmSelectBand_Load(object sender, EventArgs e)
        {
            this.comboBox1.Items.Clear();
            IDataLayer2 dataLayer  = m_rasLayer as IDataLayer2;
            string      dataSource = dataLayer.DataSourceName.NameString;

            if (dataSource.Contains("RASTER")) //Îļþ
            {
                string            path = dataSource.Substring(dataSource.IndexOf('=') + 1, dataSource.IndexOf(';') - dataSource.IndexOf('=') - 2);
                string            name = dataSource.Substring(dataSource.LastIndexOf('=') + 1, dataSource.LastIndexOf(';') - dataSource.LastIndexOf('=') - 1);
                IWorkspaceFactory m_workspaceFactory = new RasterWorkspaceFactoryClass();
                IRasterWorkspace  rasterWorkspce     = m_workspaceFactory.OpenFromFile(path.Trim(), 0) as IRasterWorkspace;
                IRasterDataset    rasDataset         = rasterWorkspce.OpenRasterDataset(name.Trim());
                m_rc = rasDataset as IRasterBandCollection;
                for (int i = 0; i < m_rc.Count; i++)
                {
                    this.comboBox1.Items.Add(m_rc.Item(i).Bandname.ToString());
                }
            }
            else
            {
                string             name           = dataSource;
                IRasterWorkspaceEx rasterWorkspce = m_workSpace as IRasterWorkspaceEx;
                IRasterDataset     rasDataset     = rasterWorkspce.OpenRasterDataset(name);
                m_rc = rasDataset as IRasterBandCollection;
                for (int i = 0; i < m_rc.Count; i++)
                {
                    this.comboBox1.Items.Add(m_rc.Item(i).Bandname.ToString());
                }
            }
        }
Beispiel #7
0
        private void RepairWithLayerFile(int mapIndex, IDataLayer2 dataLayer, string newLayerFile, bool keepBrokenLayer, AlertForm alert)
        {
            // Add Layer File to ActiveView Snippet: (http://help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/index.html#//004900000050000000)
            IGxLayer gxLayer = new GxLayer();
            IGxFile  gxFile  = (IGxFile)gxLayer;

            gxFile.Path = newLayerFile;
            if (gxLayer.Layer != null)
            {
                // AddLayer will add the new layer at the most appropriate point in the TOC.
                //   This is much easier and potentially less confusing than adding at the old data location.
                ArcMap.Document.Maps.Item[mapIndex].AddLayer(gxLayer.Layer);
                if (!keepBrokenLayer)
                {
                    ArcMap.Document.Maps.Item[mapIndex].DeleteLayer((ILayer)dataLayer);
                }
            }
            else
            {
                // Notify the user that the LayerFile could not be opened (missing, corrupt, ...)
                alert.Text        = @"Error";
                alert.msgBox.Text = $"The layer file '{newLayerFile}' could not be opened.";
                alert.ShowDialog(new WindowWrapper(new IntPtr(ArcMap.Application.hWnd)));
            }
        }
Beispiel #8
0
        public override void OnDblClick()
        {
            IMapControl3 pMapCtrl = ClsGlobal.GetMapControl(m_hookHelper);

            if (pMapCtrl == null)
            {
                if (m_NewPolygonFeedback != null)
                {
                    m_NewPolygonFeedback.Stop();
                    m_NewPolygonFeedback = null;
                    return;
                }
            }
            IGeometry pGeometry = m_NewPolygonFeedback.Stop();

            m_NewPolygonFeedback = null;
            if (pGeometry == null)
            {
                return;
            }

            m_pClipPolygon = pGeometry as IPolygon;
            double dbNoDataValue = m_pFrmSetRasterNoDataValue.NoDataValue;

            //获取到无效值区域、无效值、栅格数据之后,开始设置
            ClsSetRasterRegionToDataValue pSetRasterToNoDataValue = new ClsSetRasterRegionToDataValue(m_pRasterLayer.Raster, m_pClipPolygon, dbNoDataValue);

            if (!pSetRasterToNoDataValue.SetRegionToNoDataValue())
            {
                MessageBox.Show("设置无效值出错!");
            }
            else
            {
                //MessageBox.Show("设置无效值成功!");
                //重新加载栅格数据
                try
                {
                    IRaster2        pSrcRaster2        = m_pRasterLayer.Raster as IRaster2;
                    IRasterDataset  pDstRasterDataset  = pSrcRaster2.RasterDataset;
                    IRasterPyramid3 pDstRasterPyramid3 = pDstRasterDataset as IRasterPyramid3;
                    if (pDstRasterPyramid3.Present)
                    {
                        IDataLayer2 pDataLayer = m_pRasterLayer as IDataLayer2;
                        pDataLayer.Disconnect();
                        pDstRasterPyramid3.DeletePyramid();
                        pDstRasterPyramid3.Create();
                        m_pRasterLayer.CreateFromDataset(pDstRasterDataset);
                    }

                    IMapControl3 pMapControl3 = ClsGlobal.GetMapControl(m_hookHelper);
                    pMapControl3.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            base.OnDblClick();
        }
Beispiel #9
0
        /// <summary>
        /// 重置图层数据源
        /// </summary>
        /// <param name="pLayer"></param>
        /// <param name="pNewWksp"></param>
        /// <returns></returns>
        public static bool ResetLayerDatasource(IDataLayer2 pLayer, IWorkspace pNewWksp)
        {
            if (pLayer == null || pNewWksp == null)
            {
                return(false);
            }

            //// 2012-06-15 张航宇
            //// 直接获取Layer的数据源名称,从新的Workspace打开FeatureClass进行替换
            //IDatasetName fClassName = pLayer.DataSourceName as IDatasetName;
            //if (fClassName != null)
            //{
            //    string strClassName = fClassName.Name;
            //    try
            //    {
            //        IFeatureClass fClass = (pNewWksp as IFeatureWorkspace).OpenFeatureClass(strClassName);
            //        pLayer.DataSourceName = (fClass as IDataset).FullName;
            //    }
            //    catch
            //    {
            //        return false;
            //    }
            //}

            IEnumDatasetName pEnumDsName = pNewWksp.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
            IDatasetName     pFtDsName   = pEnumDsName.Next();

            try
            {
                if (!pLayer.InWorkspace(pNewWksp))
                {
                    IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName;
                    // 2012-06-15 张航宇
                    // 修改对没有Dataset的Workspace,直接将Workspace重置
                    if (pOldName != null)
                    {
                        if (pOldName.FeatureDatasetName == null || pFtDsName == null)
                        {
                            (pOldName as IDatasetName).WorkspaceName = (pNewWksp as IDataset).FullName as IWorkspaceName;
                        }
                        else
                        {
                            pOldName.FeatureDatasetName = pFtDsName;
                            pOldName.FeatureDatasetName.WorkspaceName = ((IDataset)pNewWksp).FullName as IWorkspaceName;
                        }
                    }
                    pLayer.Connect(pOldName as IName);
                }
            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

                return(false);
            }
            return(true);
        }
Beispiel #10
0
        private Dictionary <int, List <IDataLayer2> > GetBrokenDataSources()
        {
            var   brokenDataSources = new Dictionary <int, List <IDataLayer2> >();
            IMaps maps = ArcMap.Document.Maps;

            for (int i = 0; i < maps.Count; i++)
            {
                IMap map = maps.Item[i];
                // ReSharper disable once RedundantArgumentDefaultValue
                IEnumLayer layerEnumerator = map.Layers[null];
                ILayer     layer;
                while ((layer = layerEnumerator.Next()) != null)
                {
                    if (layer is ILayer2 layer2)
                    {
                        IDataLayer2 dataLayer = null;
                        if (!layer2.Valid)
                        {
                            dataLayer = layer2 as IDataLayer2;
                        }
                        // An IMosaicLayer (raster mosaic dataset) will report valid when it is not; need to check the sub layers.
                        // Repairing the sub layers is insufficient.  The IMosaicLayer must be repaired (this will repair the sub layers as well)
                        // NOTE: It would be nice to remove the sub-layers (they will report invalid),
                        //       1) they do not need to be fixed if the parent layer is fixed (must do)
                        //       2) they will report as unfixable after the parent layer is fixed because the new, correct path isn't in the moves db
                        else if (layer is IMosaicLayer)
                        {
                            var groupLayer = layer as ICompositeLayer;
                            var groupCount = groupLayer?.Count ?? 0;
                            for (int j = 0; j < groupCount; j++)
                            {
                                // Checking the Valid property on a Mosaic sublayer as ILayer will crash; Casting to ILayer2 is works.  Why????
                                // The raster sub layer does not implement ILayer2.  That is ok, since the boundary and footprint will indicate validity
                                if (groupLayer?.Layer[j] is ILayer2 subLayer)
                                {
                                    if (!subLayer.Valid)
                                    {
                                        dataLayer = layer as IDataLayer2;
                                        break;
                                    }
                                }
                            }
                        }
                        if (dataLayer != null)
                        {
                            if (!brokenDataSources.ContainsKey(i))
                            {
                                brokenDataSources[i] = new List <IDataLayer2>();
                            }
                            brokenDataSources[i].Add(dataLayer);
                        }
                    }
                }
            }
            return(brokenDataSources);
        }
Beispiel #11
0
        private string GetLayerPath(ILayer pLayer)
        {
            string         path        = null;
            IDataLayer2    dataLyr     = pLayer as IDataLayer2;
            IDatasetName   datasetName = dataLyr.DataSourceName as IDatasetName;
            IWorkspaceName ws          = datasetName.WorkspaceName;

            path = ws.PathName + "\\" + pLayer.Name;
            return(path);
        }
Beispiel #12
0
        public XmlProjectionEngine(AdapterSettings settings, IDataLayer2 dataLayer, Mapping mapping)
            : base(settings, dataLayer, mapping)
        {
            _individualsCache = new Dictionary <string, List <string> >();

            string baseUri = _settings["GraphBaseUri"];
            string project = _settings["ProjectName"];
            string app     = _settings["ApplicationName"];

            _appNamespace = Utility.FormEndpointBaseURI(_uriMaps, baseUri, project, app);
        }
Beispiel #13
0
        private Moves.GisDataset GetDataset(IDataLayer2 dataLayer)
        {
            //TODO: dataLayer.DataSourceName is an IName.  Are we guaranteed this cast will not throw an exception?
            var            datasetName   = (IDatasetName)dataLayer.DataSourceName;
            IWorkspaceName workspaceName = datasetName.WorkspaceName;

            //TODO: If the workspace.PathName is null (probably true for SDE or OleDB) then the GisDataset ctor will throw an exception.
            // Maybe check IWorkspaceName.Type != esriWorkspaceType.esriRemoteDatabaseWorkspace (esriFileSystemWorkspace and esriLocalDatabaseWorkspace are ok)
            // Looking at ~6300 data sources in Theme Manager, all have a pathName, for SDE it is the connection file, for web services it is the URL
            return(new Moves.GisDataset(workspaceName.PathName, workspaceName.WorkspaceFactoryProgID,
                                        datasetName.Name, datasetName.Type.ToString()));
        }
Beispiel #14
0
        /// <summary>
        /// 从图层中获取,要素的路径
        /// </summary>
        /// <param name="pLayer"></param>
        /// <returns></returns>
        public string LayerToShapefilePath(ILayer pLayer)
        {
            string filename = "";

            IDataLayer2    pDLayer = (IDataLayer2)pLayer;
            IDatasetName   pDsName = (IDatasetName)(pDLayer.DataSourceName);
            string         dsname  = pDsName.Name;
            IWorkspaceName ws      = pDsName.WorkspaceName;

            //filename = ws.PathName+"\\"+dsname+".shp";
            filename = ws.PathName + "\\" + dsname;
            return(filename);
        }
Beispiel #15
0
        /// <summary>
        /// 关闭主窗口
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            //try
            //{

            //检查编辑状态
            if (pEngineEditor != null && pEngineEditor.HasEdits() == false)
            {
                pEngineEditor.StopEditing(false);
            }
            else
            {
                if (pEngineEditor != null)
                {
                    if (MessageBox.Show("Save Edits?", "Save Prompt", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        pEngineEditor.StopEditing(true);
                    }
                    else
                    {
                        pEngineEditor.StopEditing(false);
                    }
                }
            }
            //恢复光标
            ICommand t_editcommand = new ESRI.ArcGIS.Controls.ControlsEditingEditToolClass();

            t_editcommand.OnCreate(m_mapControl.Object);
            m_mapControl.CurrentTool = t_editcommand as ITool;
            t_editcommand.OnClick();

            m_editinglayer.Caption = "当前图层:";
            map_edittools.Visible  = false;

            //移除图层并解除图层锁
            for (int i = m_mapControl.Map.LayerCount - 1; i >= 0; i--)
            {
                IDataLayer2 datalayer = m_mapControl.get_Layer(i) as IDataLayer2;
                if (datalayer.DataSourceName.NameString != "")
                {
                    datalayer.Disconnect();
                }
                m_mapControl.DeleteLayer(i);
            }
            //}
            //catch (Exception err)
            //{

            //    MessageBox.Show(err.Message);
            //}
        }
Beispiel #16
0
        public test()
        {
            string baseDir = Directory.GetCurrentDirectory();
            Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

            AdapterSettings adapterSettings = new AdapterSettings();
            adapterSettings.AppendSettings(new AppSettingsReader("App.config"));

            _dataLayer = new Bechtel.iRING.SPR.SPRDataLayer(adapterSettings);
            _objectType = adapterSettings["ObjectType"];
            _objectDefinition = GetObjectDefinition(_objectType);
            _dataLayer.GetDictionary();
            //_dataLayer.RefreshAll();
        }
Beispiel #17
0
        public Tests()
        {
            string baseDir = Directory.GetCurrentDirectory();
              Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

              AdapterSettings adapterSettings = new AdapterSettings();
              adapterSettings.AppendSettings(new AppSettingsReader("App.config"));

              FileInfo log4netConfig = new FileInfo("Log4net.config");
              log4net.Config.XmlConfigurator.Configure(log4netConfig);

              _dataLayer = new ebDataLayer(adapterSettings);
              _scenarios = Utility.Read<Scenarios>("Scenarios.xml");
        }
Beispiel #18
0
        /// <summary>
        /// 11.3 修改数据源
        /// </summary>
        private void addDataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog OpenSHP = new FolderBrowserDialog();

            if (DialogResult.OK == OpenSHP.ShowDialog())
            {
                IDataLayer2    pDLayer = (IDataLayer2)pLayer;
                IDatasetName   pDsName = (IDatasetName)(pDLayer.DataSourceName);
                IWorkspaceName ws      = pDsName.WorkspaceName;
                string         ShpPath = OpenSHP.SelectedPath;
                ws.PathName           = ShpPath;
                pDsName.WorkspaceName = ws;
            }
        }
Beispiel #19
0
        public Tests()
        {
            string baseDir = Directory.GetCurrentDirectory();
              Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

              AdapterSettings adapterSettings = new AdapterSettings();
              adapterSettings["ProjectName"] = project;
              adapterSettings["ApplicationName"] = app;

              string appConfigPath = string.Format("App_Data\\{0}.{1}.config", project, app);
              adapterSettings.AppendSettings(new AppSettingsReader(appConfigPath));

              _dataLayer = new SPPIDDataLayer(adapterSettings);
              _scenarios = org.iringtools.utility.Utility.Read<Scenarios>("Scenarios.xml");
        }
Beispiel #20
0
        public test()
        {
            string baseDir = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

            AdapterSettings adapterSettings = new AdapterSettings();

            adapterSettings.AppendSettings(new AppSettingsReader("App.config"));

            _dataLayer        = new Bechtel.iRING.SPR.SPRDataLayer(adapterSettings);
            _objectType       = adapterSettings["ObjectType"];
            _objectDefinition = GetObjectDefinition(_objectType);
            _dataLayer.GetDictionary();
            //_dataLayer.RefreshAll();
        }
Beispiel #21
0
        public List <string> GetLayerPath()
        {
            List <string> LayerPathList = new List <string>();
            ILayer        pEnumLayer;

            for (int i = 0; i < FrmGISMain.mainMap.LayerCount; i++)
            {
                pEnumLayer = FrmGISMain.mainMap.get_Layer(i);
                IDataLayer2    dlayer    = pEnumLayer as IDataLayer2;
                IDatasetName   ds        = dlayer.DataSourceName as IDatasetName;
                IWorkspaceName ws        = ds.WorkspaceName;
                string         layerpath = ws.PathName + pEnumLayer.Name;
                LayerPathList.Add(layerpath);
            }
            return(LayerPathList);
        }
Beispiel #22
0
        public Tests()
        {
            string baseDir = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

            AdapterSettings adapterSettings = new AdapterSettings();

            adapterSettings.AppendSettings(new AppSettingsReader("App.config"));

            FileInfo log4netConfig = new FileInfo("Log4net.config");

            log4net.Config.XmlConfigurator.Configure(log4netConfig);

            _dataLayer = new ebDataLayer(adapterSettings);
            _scenarios = Utility.Read <Scenarios>("Scenarios.xml");
        }
Beispiel #23
0
        /// <summary>
        /// 重置图层数据源
        /// </summary>
        /// <param name="pLayer"></param>
        /// <param name="pNewWksp"></param>
        /// <returns></returns>
        public static bool ResetLayerDatasource2(IDataLayer2 pLayer, IWorkspace pNewWksp)
        {
            if (pLayer == null || pNewWksp == null)
            {
                return(false);
            }
            IEnumDataset pEnumDsName = pNewWksp.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            IDataset     pFtDsName   = pEnumDsName.Next();
            IEnumDataset pEnumDs     = pFtDsName.Subsets;

            try
            {
                if (!pLayer.InWorkspace(pNewWksp))
                {
                    IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName;

                    if (pOldName != null)
                    {
                        IDatasetName dsName = pOldName as IDatasetName;
                        IDataset     pDs    = null;
                        while ((pDs = pEnumDs.Next()) != null)
                        {
                            if (dsName.Name.Equals(pDs.Name, StringComparison.OrdinalIgnoreCase) ||
                                pDs.Name.Contains(dsName.Name.ToUpper()))
                            {
                                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                                if (pFeatureLayer == null)
                                {
                                    return(true);
                                }
                                pFeatureLayer.FeatureClass = pDs as IFeatureClass;
                                return(true);
                            }
                        }
                    }
                }
            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

                return(false);
            }
            return(true);
        }
Beispiel #24
0
        public Tests()
        {
            string baseDir = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory(baseDir.Substring(0, baseDir.LastIndexOf("\\bin")));

            AdapterSettings adapterSettings = new AdapterSettings();

            adapterSettings["ProjectName"]     = project;
            adapterSettings["ApplicationName"] = app;

            string appConfigPath = string.Format("App_Data\\{0}.{1}.config", project, app);

            adapterSettings.AppendSettings(new AppSettingsReader(appConfigPath));

            _dataLayer = new SPPIDDataLayer(adapterSettings);
            _scenarios = org.iringtools.utility.Utility.Read <Scenarios>("Scenarios.xml");
        }
Beispiel #25
0
        static void Main(string[] args)
        {
            AdapterSettings settings = new AdapterSettings();

            settings["WhereClauseAlias"] = "_t";
            sampleDL = new SampleSQLDataLayer(settings);

            #region test get
            // from iRING service point of view
            IList <IDataObject> dataObjects = sampleDL.Get("LINES", null);

            Console.WriteLine("Object Count: " + dataObjects.Count);
            foreach (IDataObject dataObject in dataObjects)
            {
                DebugDataObject(dataObject, "LINES");
            }
            #endregion

            #region test post
            foreach (IDataObject dataObject in dataObjects)
            {
                ((GenericDataObject)dataObject).ObjectType = "LINES";

                // make tag different by appending timestamp on it
                string tag    = dataObject.GetPropertyValue("TAG").ToString();
                string newTag = tag + DateTime.Now.ToString();

                if (newTag.Length > 100)
                {
                    newTag = newTag.Substring(0, 100);
                }

                dataObject.SetPropertyValue("TAG", newTag);
            }

            // from iRING service point of view
            Response response = sampleDL.Post(dataObjects);

            Console.WriteLine("Post result: " + response.Level.ToString());
            #endregion

            Console.WriteLine("Test completed!");
            Console.ReadKey();
        }
Beispiel #26
0
        /// <summary>
        /// Occurs when this command is clicked
        /// </summary>
        public override void OnClick()
        {
            // TODO: Add CmdRasterTransZ.OnClick implementation
            IMapControl3 pMapCtr = (((IToolbarControl)m_hookHelper.Hook).Buddy) as IMapControl3;

            if (pMapCtr != null)
            {
                FrmRasterTransZ m_frmRasterTranZ = new FrmRasterTransZ();
                if (m_frmRasterTranZ.ShowDialog() == DialogResult.OK)
                {
                    if (m_frmRasterTranZ.istrue == true)
                    {
                        ClsRasterOp     pRasterOp      = new ClsRasterOp();
                        IRaster2        pRaster2       = pRasterLayer.Raster as IRaster2;
                        IRasterDataset2 pRasterDataset = pRaster2.RasterDataset as IRasterDataset2;
                        pRasterOp.ChangeRasterValue(pRasterDataset, m_frmRasterTranZ.a, m_frmRasterTranZ.b);
                        //此处要判断图层是否存在金字塔,如果存在则需要重新创建
                        IRasterPyramid3 pDstRasterPyramid3 = pRasterDataset as IRasterPyramid3;
                        if (pDstRasterPyramid3.Present)
                        {
                            IDataLayer2 pDataLayer = pRasterLayer as IDataLayer2;
                            pDataLayer.Disconnect();

                            pDstRasterPyramid3.DeletePyramid();
                            pDstRasterPyramid3.Create();

                            pRasterLayer.CreateFromDataset(pRasterDataset);
                        }
                        //更新图层渲染方式
                        ChangeStrechRender(pRasterLayer);
                        pMapCtr.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
                        if (m_axTocControl != null)
                        {
                            m_axTocControl.SetBuddyControl(pMapCtr);
                            m_axTocControl.Update();
                            m_axTocControl.ActiveView.Refresh();
                        }
                    }
                }
            }
        }
Beispiel #27
0
        static void Main(string[] args)
        {
            AdapterSettings settings = new AdapterSettings();
              settings["WhereClauseAlias"] = "_t";
              sampleDL = new SampleSQLDataLayer(settings);

              #region test get
              // from iRING service point of view
              IList<IDataObject> dataObjects = sampleDL.Get("LINES", null);

              Console.WriteLine("Object Count: " + dataObjects.Count);
              foreach (IDataObject dataObject in dataObjects)
              {
            DebugDataObject(dataObject, "LINES");
              }
              #endregion

              #region test post
              foreach (IDataObject dataObject in dataObjects)
              {
            ((GenericDataObject)dataObject).ObjectType = "LINES";

            // make tag different by appending timestamp on it
            string tag = dataObject.GetPropertyValue("TAG").ToString();
            string newTag = tag + DateTime.Now.ToString();

            if (newTag.Length > 100)
              newTag = newTag.Substring(0, 100);

            dataObject.SetPropertyValue("TAG", newTag);
              }

              // from iRING service point of view
              Response response = sampleDL.Post(dataObjects);

              Console.WriteLine("Post result: " + response.Level.ToString());
              #endregion

              Console.WriteLine("Test completed!");
              Console.ReadKey();
        }
Beispiel #28
0
        /// <summary>
        /// 获取矢量图层文件路径
        /// </summary>
        /// <param name="inFeatureLayer">输入矢量图层</param>
        /// <returns>文件路径</returns>
        public static string GetFeatureFilePath(IFeatureLayer inFeatureLayer)
        {
            string       directory   = null;
            string       fileName    = null;
            IDataLayer2  pDataLayer  = (IDataLayer2)inFeatureLayer;
            IDatasetName datasetName = pDataLayer.DataSourceName as IDatasetName;

            if (datasetName != null)
            {
                IDatasetName   pDatasetName   = datasetName;
                IWorkspaceName pWorkspaceName = pDatasetName.WorkspaceName;
                directory = pWorkspaceName.PathName; //文件目录
                fileName  = inFeatureLayer.Name;     //文件名
            }

            if (fileName == null || directory == null)
            {
                return(null);
            }
            return(directory + @"\" + fileName + ".shp");
        }
Beispiel #29
0
 private void LoopCloseAllLayer(ILayer layer)
 {
     if (layer is ICompositeLayer)
     {
         ICompositeLayer cplayer = layer as ICompositeLayer;
         for (int j = cplayer.Count - 1; j >= 0; j--)
         {
             LoopCloseAllLayer(cplayer.get_Layer(j));
         }
     }
     if (layer is IDataLayer2)
     {
         IDataLayer2 pDataLayer = (IDataLayer2)layer;
         pDataLayer.Disconnect();
     }
     if (layer is IFeatureLayer)
     {
         IFeatureClass fc = (layer as IFeatureLayer).FeatureClass;
         TokayWorkspace.ComRelease(fc);
         fc = null;
     }
     this.Map.DeleteLayer(layer);
 }
Beispiel #30
0
        /// <summary>
        /// Called when the user clicks a command.
        /// </summary>
        /// <remarks>Note to inheritors: override OnClick and use this method to
        ///             perform the actual work of the custom command.</remarks>
        public override void OnClick()
        {
            try
            {
                ILayer currentLayer = CommandAPI.GetCurrentLayer(this.m_hookHelper);
                if (currentLayer != null)
                {
                    if (!(currentLayer is MapServerRESTLayer))
                    {
                        IDataLayer2 pDataLayer = currentLayer as IDataLayer2;
                        pDataLayer.Disconnect();
                    }

                    this.m_hookHelper.ActiveView.FocusMap.DeleteLayer(currentLayer);
                    (this.m_hookHelper.ActiveView.FocusMap as IActiveView).Refresh();
                    GFS.BLL.EnviVars.instance.TOCControl.Update();
                }
            }
            catch (Exception ex)
            {
                //logger.Log(LogLevel.Error, EventType.UserManagement, AppMessage.MSG0104, ex);
                GFS.BLL.Log.WriteLog(typeof(CmdRemoveLayer), ex);
            }
        }
Beispiel #31
0
        private void loadSourceTab()
        {
            //Extent
            IEnvelope pEnvelope = ((IGeoDataset)((IFeatureLayer)pLayer).FeatureClass).Extent;

            this.txtExtentTop.Text    = pEnvelope.YMax.ToString();
            this.txtExtentButtom.Text = pEnvelope.YMin.ToString();
            this.txtExtentLeft.Text   = pEnvelope.XMin.ToString();
            this.txtExtentRight.Text  = pEnvelope.XMax.ToString();
            //DataSource
            StringBuilder strDataSource = new StringBuilder();

            strDataSource.Append("DataType:");
            IFeatureLayer pFeatureLayer = (IFeatureLayer)this.pLayer;

            strDataSource.Append(pFeatureLayer.DataSourceType);
            IDataLayer2 pDataLayer2 = (IDataLayer2)this.pLayer;

            strDataSource.Append(":\n");
            strDataSource.Append(pDataLayer2.DataSourceName.NameString);

            IGeoDataset                 pGeoDataset       = (IGeoDataset)this.pLayer;
            ISpatialReference           pSpatialReference = pGeoDataset.SpatialReference;
            IProjectedCoordinateSystem5 pProCoorSys       = pSpatialReference as IProjectedCoordinateSystem5;

            if (pProCoorSys != null)
            {
                strDataSource.Append("\nProjected Corrdinate System:");
                strDataSource.Append(pProCoorSys.Name);
                strDataSource.Append("\nProjection:");
                strDataSource.Append(pProCoorSys.Projection.Name);
                strDataSource.Append("\nFalse_Easting:");
                strDataSource.Append(pProCoorSys.FalseEasting);
                //strDataSource.AppendFormat("F8", pProCoorSys.FalseEasting);
                strDataSource.Append("\nFalse_Northing:");
                strDataSource.Append(pProCoorSys.FalseNorthing);
                strDataSource.Append("\nCentral_Meridian:");
                strDataSource.Append(pProCoorSys.get_CentralMeridian(true));
                strDataSource.Append("\nStandard)Parallel_1:");
                strDataSource.Append(pProCoorSys.StandardParallel1);
                strDataSource.Append("\nStandard_Parallel_2:");
                strDataSource.Append(pProCoorSys.StandardParallel2);
                strDataSource.Append("\nLatitude_Of_Origin:");
                strDataSource.Append(pProCoorSys.LatitudeOfOrigin);
                strDataSource.Append("\nLinear_Unit:");
                strDataSource.Append(pProCoorSys.CoordinateUnit.Name);
                strDataSource.Append("\n");
            }

            //IGeographicCoordinateSystem pGeoCoorSys = pProCoorSys.GeographicCoordinateSystem;
            IGeographicCoordinateSystem pGeoCoorSys = pSpatialReference as IGeographicCoordinateSystem;

            if (pGeoCoorSys != null)
            {
                strDataSource.Append("\nGeographic Coordinate System:");
                strDataSource.Append(pGeoCoorSys.Name);
                strDataSource.Append("\nDatum:");
                strDataSource.Append(pGeoCoorSys.Datum.Name);
                strDataSource.Append("\nPrime_Meridian:");
                strDataSource.Append(pGeoCoorSys.PrimeMeridian.Longitude);
                strDataSource.Append("\nAangular_Unit:");
                strDataSource.Append(pGeoCoorSys.CoordinateUnit.Name);
            }

            this.txtDataSource.Text = strDataSource.ToString();
        }
Beispiel #32
0
        /// <summary>
        /// 重置图层数据源
        /// </summary>
        /// <param name="pLayer"></param>
        /// <param name="pNewWksp"></param>
        /// <returns></returns>
        public static bool ResetLayerDatasource(IDataLayer2 pLayer, IWorkspace pNewWksp)
        {
            if (pLayer == null || pNewWksp == null) return false;

            //// 2012-06-15 张航宇
            //// 直接获取Layer的数据源名称,从新的Workspace打开FeatureClass进行替换
            //IDatasetName fClassName = pLayer.DataSourceName as IDatasetName;
            //if (fClassName != null)
            //{
            //    string strClassName = fClassName.Name;
            //    try
            //    {
            //        IFeatureClass fClass = (pNewWksp as IFeatureWorkspace).OpenFeatureClass(strClassName);
            //        pLayer.DataSourceName = (fClass as IDataset).FullName;
            //    }
            //    catch
            //    {
            //        return false;
            //    }
            //}

            IEnumDatasetName pEnumDsName = pNewWksp.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
            IDatasetName pFtDsName = pEnumDsName.Next();
            try
            {
                if (!pLayer.InWorkspace(pNewWksp))
                {
                    IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName;
                    // 2012-06-15 张航宇
                    // 修改对没有Dataset的Workspace,直接将Workspace重置
                    if (pOldName != null)
                    {
                        if (pOldName.FeatureDatasetName == null || pFtDsName == null)
                        {
                            (pOldName as IDatasetName).WorkspaceName = (pNewWksp as IDataset).FullName as IWorkspaceName;
                        }
                        else
                        {
                            pOldName.FeatureDatasetName = pFtDsName;
                            pOldName.FeatureDatasetName.WorkspaceName = ((IDataset)pNewWksp).FullName as IWorkspaceName;
                        }
                    }
                    pLayer.Connect(pOldName as IName);
                }
            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

                return false;
            }
            return true;
        }
Beispiel #33
0
        /// <summary>
        /// 重置图层数据源
        /// </summary>
        /// <param name="pLayer"></param>
        /// <param name="pNewWksp"></param>
        /// <returns></returns>
        public static bool ResetLayerDatasource2(IDataLayer2 pLayer, IWorkspace pNewWksp)
        {
            if (pLayer == null || pNewWksp == null) return false;
            IEnumDataset pEnumDsName = pNewWksp.get_Datasets(esriDatasetType.esriDTFeatureDataset);
            IDataset pFtDsName = pEnumDsName.Next();
            IEnumDataset pEnumDs = pFtDsName.Subsets;
            try
            {
                if (!pLayer.InWorkspace(pNewWksp))
                {
                    IFeatureClassName pOldName = pLayer.DataSourceName as IFeatureClassName;

                    if (pOldName != null)
                    {
                        IDatasetName dsName = pOldName as IDatasetName;
                        IDataset pDs = null;
                        while ((pDs = pEnumDs.Next()) != null)
                        {
                            if (dsName.Name.Equals(pDs.Name, StringComparison.OrdinalIgnoreCase) ||
                                pDs.Name.Contains(dsName.Name.ToUpper()))
                            {
                                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;
                                if (pFeatureLayer == null) return true;
                                pFeatureLayer.FeatureClass = pDs as IFeatureClass;
                                return true;
                            }
                        }
                    }
                }
            }
            catch (Exception exp)
            {
                Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString());

                return false;
            }
            return true;
        }
Beispiel #34
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            /*FileInfo openpath = new FileInfo(textBox1.Text);
             * string ss = openpath.Directory.ToString();//路径的父目录
             *
             * ILayer pLayer;
             * pLayer = m_mapControl.Map.get_Layer(comboBox1.SelectedIndex);
             * IFeatureLayer pInputFeatureLayer;
             * pInputFeatureLayer = pLayer as IFeatureLayer;
             * IFeatureClass pInputFeatureClass = pInputFeatureLayer.FeatureClass;
             *
             *
             * ITable pInputTable;
             * pInputTable = pInputFeatureClass as ITable;
             *
             *
             * pInputFeatureClass = pInputFeatureLayer.FeatureClass;
             *
             * pLayer = m_mapControl.Map.get_Layer(comboBox2.SelectedIndex);
             * IFeatureLayer pOverlayFeatureLayer;
             * pOverlayFeatureLayer = pLayer as IFeatureLayer;
             * IFeatureClass pOverlayFeatureClass;
             * pOverlayFeatureClass = pOverlayFeatureLayer.FeatureClass;
             *
             * ITable pOverlayTable;
             * pOverlayTable = pOverlayFeatureClass as ITable;
             *
             *
             * //IFeatureClass pOverlayFeatureClass;
             * //pOverlayFeatureClass = pOverlayFeatureLayer.FeatureClass;
             *
             * if (pInputTable == null)
             * {
             *  MessageBox.Show("输入图层为空");
             *  return;
             * }
             *
             * if (pOverlayTable == null)
             * {
             *  MessageBox.Show("叠置图层为空");
             *  return;
             * }
             *
             * IFeatureClassName pFeatureClassName;
             * pFeatureClassName = new FeatureClassNameClass();
             * pFeatureClassName.FeatureType = esriFeatureType.esriFTSimple;
             * pFeatureClassName.ShapeFieldName = "Shape";
             * pFeatureClassName.ShapeType = pInputFeatureClass.ShapeType;
             *
             * IWorkspaceName pNewWSName;
             * pNewWSName = new WorkspaceNameClass();
             * pNewWSName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory";
             * pNewWSName.PathName = ss;
             *
             * IDatasetName pDatasetName;
             * pDatasetName = pFeatureClassName as IDatasetName;
             * pDatasetName.Name = openpath.Name;  //"Intersect_Result";
             * pDatasetName.WorkspaceName = pNewWSName;
             *
             * double tol = 0.1;
             *
             * IBasicGeoprocessor pBGP;
             * pBGP = new BasicGeoprocessorClass();
             * pBGP.SpatialReference = m_mapControl.Map.SpatialReference;
             * IFeatureClass pOutputFeatureClass;
             * IFeatureLayer pOutputFeatLayer;
             * pOutputFeatLayer = new FeatureLayerClass();
             * int n = listBox1.SelectedIndex;
             *
             * if (n>= 0 && n< 3)
             * {
             *  switch (n)
             *  {
             *      case(0):
             *          pOutputFeatureClass = pBGP.Intersect(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName);
             *          pOutputFeatLayer.FeatureClass = pOutputFeatureClass;
             *          pOutputFeatLayer.Name = pOutputFeatureClass.AliasName;
             *          m_mapControl.Map.AddLayer(pOutputFeatLayer);
             *          break;
             *      case(1):
             *          pOutputFeatureClass = pBGP.Union(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName);
             *          pOutputFeatLayer.FeatureClass = pOutputFeatureClass;
             *          pOutputFeatLayer.Name = pOutputFeatureClass.AliasName;
             *          m_mapControl.Map.AddLayer(pOutputFeatLayer);
             *          break;
             *      case(2):
             *          pOutputFeatureClass = pBGP.Clip(pInputTable, false, pOverlayTable, false, tol, pFeatureClassName);
             *          pOutputFeatLayer.FeatureClass = pOutputFeatureClass;
             *          pOutputFeatLayer.Name = pOutputFeatureClass.AliasName;
             *          m_mapControl.Map.AddLayer(pOutputFeatLayer);
             *          break;
             *  }
             * }*/
            //Geoprocessor processor = new Geoprocessor();
            IFeatureLayer  inputLyr    = m_mapControl.Map.get_Layer(comboBox1.SelectedIndex) as IFeatureLayer;
            IDataLayer2    dataLy      = inputLyr as IDataLayer2;
            IDatasetName   inputdsName = dataLy.DataSourceName as IDatasetName;
            IWorkspaceName inputws     = inputdsName.WorkspaceName as IWorkspaceName;
            string         input       = inputws.PathName + "\\" + inputLyr.Name;

            IFeatureLayer  overlayLyr    = m_mapControl.Map.get_Layer(comboBox2.SelectedIndex) as IFeatureLayer;
            IDataLayer2    dataOverlay   = overlayLyr as IDataLayer2;
            IDatasetName   overlayDsName = dataOverlay.DataSourceName as IDatasetName;
            IWorkspaceName overlayWs     = overlayDsName.WorkspaceName;
            string         overlay       = overlayWs.PathName + "\\" + overlayLyr.Name;

            string output = textBox1.Text;

            Geoprocessor processor = new Geoprocessor();

            processor.OverwriteOutput = true;
            IGPProcess process = null;

            switch (listBox1.SelectedIndex)
            {
            case 0:
                Intersect intersect = new Intersect();
                intersect.in_features       = "'" + input + "'" + ";" + "'" + overlay + "'";
                intersect.out_feature_class = output;
                intersect.output_type       = "INPUT";
                intersect.join_attributes   = "ALL";
                //intersect.cluster_tolerance=0.1;
                process = intersect;
                break;

            case 1:
                Union union = new Union();
                union.in_features       = "'" + input + "'" + ";" + "'" + overlay + "'";
                union.out_feature_class = @"" + output;
                union.join_attributes   = "ALL";
                //union.cluster_tolerance = 0.1;
                process = union;
                break;

            case 2:
                Erase erase = new Erase();
                erase.in_features       = "'" + input + "'";
                erase.erase_features    = "'" + overlay + "'";
                erase.out_feature_class = output;
                //erase.cluster_tolerance = 0.1;
                process = erase;
                break;
            }
            processor.Validate(process, true);
            processor.Execute(process, null);
            this.Dispose();

            FileInfo          fi      = new FileInfo(textBox1.Text);
            string            pathDir = fi.Directory.FullName;
            string            name    = fi.Name;
            IWorkspaceFactory wsf     = new ShapefileWorkspaceFactoryClass();
            IFeatureWorkspace fws     = wsf.OpenFromFile(pathDir, 0) as IFeatureWorkspace;
            IFeatureClass     featCls = fws.OpenFeatureClass(name);
            IFeatureLayer     layer   = new FeatureLayerClass();

            layer.FeatureClass = featCls;
            layer.Name         = featCls.AliasName;
            m_mapControl.Map.AddLayer(layer as ILayer);
        }
Beispiel #35
0
        public static bool SwitchSource(IDataLayer2 pDataLayer, IPropertySet pSDEConnectionProps, string newDatasetName)
        {
            bool retVal = false;
            try
            {
                IDatasetName pDatasetName;
                IWorkspaceName pWorkspaceName = new WorkspaceNameClass();
                pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory";

                pWorkspaceName.ConnectionProperties = pSDEConnectionProps;

                pDatasetName = (IDatasetName)pDataLayer.DataSourceName;
                pDatasetName.WorkspaceName = pWorkspaceName;

                pDatasetName.Name = newDatasetName; //e.g. //ISDUT.TA_XXXX;

                pDataLayer.Disconnect();
                pDataLayer.DataSourceName = (IName)pDatasetName;
                pDataLayer.Connect(null);
                retVal = true;
            }
            catch(Exception ex)
            {
                Debug.WriteLine(ex.Message + "\n" + ex.StackTrace);
            }
            return retVal;
        }