阅读:1461回复:1
mapxtreme2004的一个奇怪的问题
<P>string sPath = Server.MapPath(@".\bin\Output.xml");<BR> FileStream fs = new FileStream(sPath,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);<BR> DataSet ds = new DataSet();<BR> StreamReader reader=new StreamReader(fs); <BR> ds.ReadXml(reader);<BR> fs.Close();</P>
<P> MapInfo.Data.Table mainTable = MapInfo.Engine.Session.Current.Catalog.GetTable("Road_Main");<BR> MapInfo.Data.Table minorTable = MapInfo.Engine.Session.Current.Catalog.GetTable("Road_Minor");</P> <P> string sOutPath = Server.MapPath(@".\bin\ImportRoadInfo.xml");<BR> FileStream fsOut = new FileStream(sOutPath,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite);<BR> XmlDocument xmlDoc = new XmlDocument();<BR> xmlDoc.Load(fsOut);<BR> fsOut.Close();</P> <P> for (int i=0;i<ds.Tables[0].Rows.Count;i++)<BR> {<BR> DataRow row = ds.Tables[0].Rows;<BR> int nEdgeID = Convert.ToInt32(row["EdgeID"].ToString()); <BR> string strSql = "Road_id="+ nEdgeID.ToString();<BR> <BR> MapInfo.Data.SearchInfo si = MapInfo.Data.SearchInfoFactory.SearchWhere(strSql);<BR> MapInfo.Data.Feature ftr = MapInfo.Engine.Session.Current.Catalog.SearchForFeature("Road_Main",si);<BR> if (ftr!=null)<BR> {<BR> ftr[6] = row[1].ToString(); //road level<BR> ftr[10] = Convert.ToInt32(row[2].ToString());<BR> <BR> //ftr.Update();</P> <P> XmlNodeList nodeList=xmlDoc.SelectSingleNode("RoadList").ChildNodes;<BR> foreach(XmlNode xn in nodeList)//遍历所有子节点<BR> {<BR> XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型<BR> XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点<BR> XmlNode xn1 = nls.Item(0);<BR> XmlNode xn2 = nls.Item(1);<BR> XmlNode xn3 = nls.Item(2);<BR> XmlNode xn4 = nls.Item(3);<BR> XmlElement xe1=(XmlElement)xn1;//转换类型<BR> XmlElement xe2=(XmlElement)xn2;//转换类型<BR> XmlElement xe3=(XmlElement)xn3;//转换类型<BR> XmlElement xe4=(XmlElement)xn4;//转换类型<BR> if (xe1.InnerText==nEdgeID.ToString())<BR> {<BR> xe3.InnerText = row[1].ToString(); //level<BR> xe4.InnerText = row[2].ToString();//speed<BR> break;<BR> }<BR> }<BR> }<BR> else<BR> {<BR> //主要道路图层中没有找到,需要在辅助道路图层中寻找<BR> si = MapInfo.Data.SearchInfoFactory.SearchWhere(strSql);<BR> ftr = MapInfo.Engine.Session.Current.Catalog.SearchForFeature("Road_Minor", si);<BR> if (ftr!=null)<BR> {<BR> ftr[6] = row[1].ToString(); //road level<BR> ftr[10] = Convert.ToInt32(row[2].ToString()); //road speed<BR> <BR> //ftr.Update(true);</P> <P> XmlNodeList nodeList=xmlDoc.SelectSingleNode("RoadList").ChildNodes;<BR> foreach(XmlNode xn in nodeList)//遍历所有子节点<BR> {<BR> XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型<BR> XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点<BR> XmlNode xn1 = nls.Item(0);<BR> XmlNode xn2 = nls.Item(1);<BR> XmlNode xn3 = nls.Item(2);<BR> XmlNode xn4 = nls.Item(3);<BR> XmlElement xe1=(XmlElement)xn1;//转换类型<BR> XmlElement xe2=(XmlElement)xn2;//转换类型<BR> XmlElement xe3=(XmlElement)xn3;//转换类型<BR> XmlElement xe4=(XmlElement)xn4;//转换类型<BR> if (xe1.InnerText==nEdgeID.ToString())<BR> {<BR> xe3.InnerText = row[1].ToString(); //level<BR> xe4.InnerText = row[2].ToString();//speed<BR> break;<BR> }<BR> }<BR> }<BR> }<BR> }</P> <P> //xmlDoc.Save(sOutPath);<BR> xmlDoc = null;<BR> ds.Clear();<BR> ds=null;<BR>如果把注释掉的xmlDoc.Save(sOutPath); 和 ftr.Update();加上,地图就显示不了,显示一个小叉叉<BR>去掉的话就能正常显示地图<BR>望高手帮忙解决一下,谢谢</P> |
|
1楼#
发布于:2008-08-29 10:05
<P>最好把你程序要实现的效果说写了,满屏幕的代码还一句句的看,没时间噶</P>
<P>图元的增加,修改和删除都是非事务性的,也就是说,所作的修改都永久性地对图层表数据产生影响.这可以使用户对多个图元进行操作后一次更新地图,但是在更新之前并不能看到更新后的效果</P> |
|
|