阅读:1347回复:0
[求助]mapgis明码格式面图层(wap)转shp格式
<P>wap数据格式</P>
<P>区文件结构</P> <P >区逻辑结构为:</P> <P > 文件头 弧段数 1号弧段 2号弧段……最后弧段 节点数 1号结点 2号结点……最后结点 区数 1号区 2号区…… 最后区</P> <P >具体为:</P> <P >A、<U>文件头</U>,8个字节</P> <P > WMAP9023 (老的文件为WMAP6023或WMAP7023和WMAP8023)</P> <P >B、<U>弧段数 </U> an</P> <P >C、<U>1号弧段</U></P> <P >线型号 辅助线型号 线色 线宽 X系数 Y系数 辅助色 图层 透明输出</P> <P >前节点号 后节点号 {若没有指向任何节点,则为0}</P> <P >左区号 右区号 {若没有区号,则为0}</P> <P > 线点数m1</P> <P > x1 y1</P> <P > x2 y2</P> <P > …</P> <P > xm1 ym1</P> <P > ………</P> <P > ID 线长度</P> <P > an号弧段</P> <P > 线型号 辅助线型号 线色 线宽 X系数 Y系数 辅助色 图层 透明输出</P> <P > 前节点号 后节点号 {若没有指向任何节点,则为0}</P> <P >左区号 右区号 {若没有区号,则为0}</P> <P > 线点数man</P> <P > x1 y1</P> <P > x2 y2</P> <P > …</P> <P > xman yman</P> <P > ID 线长度 </P> <P >D、<U>节点数</U> nn</P> <P >E、<U>1号节点</U></P> <P > x1 y1 </P> <P > 节点弧段数k</P> <P > 弧段号1 弧段号2…弧段号k</P> <P > ………</P> <P > nn号节点</P> <P > xnn ynn</P> <P > 节点弧段数knn</P> <P > 弧段号1 弧段号2…弧段号knn</P> <P >F、<U>区数</U> rn</P> <P >G、<U>1号区</U></P> <P > 区颜色 填充图案号 图案高 图案宽 笔宽 图案颜色 图层 透明输出 ID 面积 周长</P> <P > 区数据项数n</P> <P > 弧段1编号 {第1项}</P> <P > 弧段2编号 {第2项}</P> <P > …</P> <P > 弧段k编号 {第k项}</P> <P > 0 {第k+1项}</P> <P > 弧段k+1编号 {第k+2项}</P> <P > 弧段k+2编号 {第k+3项}</P> <P >…</P> <P > 最后弧段编号 {第n项}</P> <P > ……</P> <P > m号区</P> <P > 区颜色 填充图案号 图案高 图案宽 笔宽 图案颜色</P> <P > 图层 透明输出 ID 面积 周长</P> <P > 区数据项数nm</P> <P > 弧段1编号 {第1项}</P> <P > 弧段2编号 {第2项}</P> <P > …</P> <P > 弧段k编号 {第k项}</P> <P > 0 {第k+1项}</P> <P > 弧段k+1编号 {第k+2项}</P> <P >弧段k+2编号 {第k+3项}</P> <P > … </P> <P > 最后弧段编号 {第nm项}</P> <P > </P> <P > if (m_filename.Substring(m_filename.Length - 3, 3) == "wap") //面<BR> {<BR> line = m_reader.ReadLine();<BR> int i = Convert.ToInt32(line);<BR> IPointCollection ipRing = new Polygon();<BR> IFeature iFeature = null;<BR> object missing = Type.Missing;<BR> int linNO =3;<BR> int pntCount = 0;<BR> int pntNO = 0;<BR> int ringcount = 0;<BR> int elseNO = 0;<BR> while (!m_reader.EndOfStream)<BR> {<BR> line = m_reader.ReadLine();<BR> if (linNO == 6)<BR> {<BR> pntCount = Convert.ToInt16(line);<BR> }<BR> if (linNO > 6)<BR> {<BR> int nn = line.IndexOf(",");<BR> if (nn == -1)<BR> {<BR> pntCount = Convert.ToInt16(line);<BR> }<BR> if (linNO > elseNO + 5)<BR> {<BR> if (pntNO < pntCount)<BR> {<BR> ESRI.ArcGIS.Geometry.Point p = new ESRI.ArcGIS.Geometry.Point();<BR> string pt = line;<BR> int temp1 = pt.IndexOf(",");<BR> string pt2 = pt.Substring(temp1 + 1, pt.Length - temp1 - 1);<BR> pt = pt.Substring(0, temp1);<BR> double x = Convert.ToDouble(pt);<BR> double y = Convert.ToDouble(pt2);<BR> p.PutCoords(x, y);<BR> ipRing.AddPoint(p, ref missing, ref missing);<BR> pntNO++;<BR> }<BR> }<BR> if (pntNO == pntCount)<BR> {<BR> pntNO = 0;<BR> elseNO = linNO;<BR> AddNewShapeToFeatureClass((IGeometry)ipRing, ref iFeature, iFeatClass);<BR> ipRing = new Polygon();<BR> ringcount++;<BR> }<BR> }<BR> if (ringcount == i) break;<BR> linNO++;<BR> }<BR> return;<BR> }</P> <P >由于wap中的面数据是由弧段组成,我这样写的话,只能将wap中的弧段以面的形式表现出来,但这样明显是不对的,有高手可以帮帮忙啊?</P> |
|