maomaoqiu
路人甲
路人甲
  • 注册日期2007-10-25
  • 发帖数1
  • QQ
  • 铜币109枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1386回复:1

mapxtreme2004的一个奇怪的问题

楼主#
更多 发布于:2008-08-28 13:20
<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>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2008-08-29 10:05
<P>最好把你程序要实现的效果说写了,满屏幕的代码还一句句的看,没时间噶</P>
<P>图元的增加,修改和删除都是非事务性的,也就是说,所作的修改都永久性地对图层表数据产生影响.这可以使用户对多个图元进行操作后一次更新地图,但是在更新之前并不能看到更新后的效果</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部