默认头像
路人甲
路人甲
  • 注册日期2006-06-04
  • 发帖数28
  • QQ
  • 铜币198枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1200回复:0

[求助]重新加载地图数据的问题

楼主#
更多 发布于:2006-07-17 16:45

在更新数据的时候出现不能更新的问题。就是在运行程序中,如果其他用户改变服务器的地图数据,我再重新加载地图数据还是原来的数据(都是同一版本),但是重新运行程序就可以了,这是怎么回事?

//=======================================================================
       //重新加载地图
       //创建时间:06-07-13
       //最后修改时间:
       //输入参数:userVersion 以该版本加载地图数据
//=======================================================================
       public bool ReLoadMap(String userVersion)
       {
           
           //connect to the server of sde
           try
           {
               layersContainer.SetBuddyControl(null);
               
               //删除所有图层
               if (map != null) map.ClearLayers();
               if (eyeMap != null) eyeMap.ClearLayers();
               if (!bDataChanged) return true;
               IPropertySet iProSet = new PropertySet();
               iProSet.SetProperty("SERVER", systemP.sdeIP);
               iProSet.SetProperty("INSTANCE", systemP.sdeServiceName);
               iProSet.SetProperty("DATABASE", systemP.serviceName);
               iProSet.SetProperty("USER", dataInfo.userName);
               iProSet.SetProperty("PASSWORD", dataInfo.userPassword);
               iProSet.SetProperty("VERSION", userVersion);

               IWorkspaceFactory iWorkspace = new SdeWorkspaceFactory();

               IFeatureWorkspace iFeatureWs = null;
               int index = 0;
               for (index = 0; index < 10; index++)
               {
                   try
                   {
                       iFeatureWs = (IFeatureWorkspace)iWorkspace.Open(iProSet, 0);
                       if (iWorkspace != null) break;
                   }
                   catch (Exception)
                   {
                       return false;
                   }
               }
               if (iFeatureWs == null)
               {
                   MessageBox.Show("加载图层出错,请重新运行本程序");
                   return false;
               }
               pWs = iFeatureWs;

               if (iFeatureWs != null)
               {
                   //IWorkspace iWps = iFeatureWs as IWorkspace;
                   IFeatureDataset iDataset1 = iFeatureWs.OpenFeatureDataset("基础图层");
                   if (iDataset1 == null) return false;
                   IEnumDataset iEnDataset = iDataset1.Subsets;
                   IDataset iDataset = iEnDataset.Next();

                   while (iDataset != null)
                   {
                       IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);
                       //IDataset iDataset = iFeatureCls as IDataset;
                       IFeatureLayer iFeatureLyr = new FeatureLayer();
                       iFeatureLyr.FeatureClass = iFeatureCls;
                       iFeatureLyr.Name = iDataset.Name;

                       map.AddLayer(iFeatureLyr, 0);
                       if (iFeatureLyr.Name != "SDE.建筑_region") eyeMap.AddLayer(iFeatureLyr, 0);
                       iDataset = iEnDataset.Next();
                       

                   }
                   iDataset1 = iFeatureWs.OpenFeatureDataset("电力专业图层");
                   if (iDataset1 == null) return false;
                   iEnDataset = iDataset1.Subsets;
                   iDataset = iEnDataset.Next();

                   while (iDataset != null)
                   {
                       IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);
                       //IDataset iDataset = iFeatureCls as IDataset;
                       IFeatureLayer iFeatureLyr = new FeatureLayer();
                       iFeatureLyr.FeatureClass = iFeatureCls;
                       iFeatureLyr.Name = iDataset.Name;

                       map.AddLayer(iFeatureLyr, 0);
                       //m_hawkMap.AddLayer(iFeatureLyr, 0);
                       iDataset = iEnDataset.Next();
                       

                   }
               }
               else
               {
                   return false;
                   //MessageBox.Show("没有数据层!");
               }
               layersContainer.SetBuddyControl(map);


           }
           catch (Exception e2)
           {
               //记录操作并写入文件
               AppendLogFile("读出数据层失败! " + e2.Message, false);
               return false;
               //MessageBox.Show(ex.Message);
           }

          layersContainer.SetBuddyControl(map);                      
       }

喜欢0 评分0
默认头像

返回顶部