阅读:1184回复:0
[求助]重新加载地图数据的问题
<P>在更新数据的时候出现不能更新的问题。就是在运行程序中,如果其他用户改变服务器的地图数据,我再重新加载地图数据还是原来的数据(都是同一版本),但是重新运行程序就可以了,这是怎么回事?</P>
<P>//=======================================================================<BR> //重新加载地图<BR> //创建时间:06-07-13<BR> //最后修改时间:<BR> //输入参数:userVersion 以该版本加载地图数据<BR>//=======================================================================<BR> public bool ReLoadMap(String userVersion)<BR> {<BR> <BR> //connect to the server of sde<BR> try<BR> {<BR> layersContainer.SetBuddyControl(null);<BR> <BR> //删除所有图层<BR> if (map != null) map.ClearLayers(); <BR> if (eyeMap != null) eyeMap.ClearLayers();<BR> if (!bDataChanged) return true;<BR> IPropertySet iProSet = new PropertySet();<BR> iProSet.SetProperty("SERVER", systemP.sdeIP);<BR> iProSet.SetProperty("INSTANCE", systemP.sdeServiceName);<BR> iProSet.SetProperty("DATABASE", systemP.serviceName);<BR> iProSet.SetProperty("USER", dataInfo.userName);<BR> iProSet.SetProperty("PASSWORD", dataInfo.userPassword);<BR> iProSet.SetProperty("VERSION", userVersion);</P> <P> IWorkspaceFactory iWorkspace = new SdeWorkspaceFactory();</P> <P> IFeatureWorkspace iFeatureWs = null;<BR> int index = 0;<BR> for (index = 0; index < 10; index++)<BR> {<BR> try<BR> {<BR> iFeatureWs = (IFeatureWorkspace)iWorkspace.Open(iProSet, 0);<BR> if (iWorkspace != null) break;<BR> }<BR> catch (Exception)<BR> {<BR> return false;<BR> }<BR> }<BR> if (iFeatureWs == null)<BR> {<BR> MessageBox.Show("加载图层出错,请重新运行本程序");<BR> return false;<BR> }<BR> pWs = iFeatureWs;</P> <P> if (iFeatureWs != null)<BR> {<BR> //IWorkspace iWps = iFeatureWs as IWorkspace;<BR> IFeatureDataset iDataset1 = iFeatureWs.OpenFeatureDataset("基础图层");<BR> if (iDataset1 == null) return false;<BR> IEnumDataset iEnDataset = iDataset1.Subsets;<BR> IDataset iDataset = iEnDataset.Next();</P> <P> while (iDataset != null)<BR> {<BR> IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);<BR> //IDataset iDataset = iFeatureCls as IDataset;<BR> IFeatureLayer iFeatureLyr = new FeatureLayer();<BR> iFeatureLyr.FeatureClass = iFeatureCls;<BR> iFeatureLyr.Name = iDataset.Name;</P> <P> map.AddLayer(iFeatureLyr, 0);<BR> if (iFeatureLyr.Name != "SDE.建筑_region") eyeMap.AddLayer(iFeatureLyr, 0);<BR> iDataset = iEnDataset.Next();<BR> </P> <P> }<BR> iDataset1 = iFeatureWs.OpenFeatureDataset("电力专业图层");<BR> if (iDataset1 == null) return false;<BR> iEnDataset = iDataset1.Subsets;<BR> iDataset = iEnDataset.Next();</P> <P> while (iDataset != null)<BR> {<BR> IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);<BR> //IDataset iDataset = iFeatureCls as IDataset;<BR> IFeatureLayer iFeatureLyr = new FeatureLayer();<BR> iFeatureLyr.FeatureClass = iFeatureCls;<BR> iFeatureLyr.Name = iDataset.Name;</P> <P> map.AddLayer(iFeatureLyr, 0);<BR> //m_hawkMap.AddLayer(iFeatureLyr, 0);<BR> iDataset = iEnDataset.Next();<BR> </P> <P> }<BR> }<BR> else<BR> {<BR> return false;<BR> //MessageBox.Show("没有数据层!");<BR> }<BR> layersContainer.SetBuddyControl(map);</P> <P><BR> }<BR> catch (Exception e2)<BR> {<BR> //记录操作并写入文件<BR> AppendLogFile("读出数据层失败! " + e2.Message, false);<BR> return false;<BR> //MessageBox.Show(ex.Message);<BR> }</P> <P> layersContainer.SetBuddyControl(map); <BR> }</P> |
|