ivan1983
路人甲
路人甲
  • 注册日期2006-12-14
  • 发帖数10
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2669回复:2

[求助]怎样生成曲线图

楼主#
更多 发布于:2007-10-08 10:12
<P>arcengine9.2+ vs2005.net+ C#</P>
<P>情况是这样: 数据在orcale中, 每个地区有很多指标,每个指标都有好几年的数据值, 现在想将这些数据从orcale中读过来,然后以曲线图的形式(一个指标一条曲线,x轴是时间,y轴是指标值)显示到对应地区的地图上.</P>
<P>arcgis好象没有提供绘制曲线图(像饼图渲染那样的)的功能.</P>
<P>我的思路是: 将这些数据读过来后,每条曲线生成一个polyline,添加到一个新的图层中,全部添加完后,再渲染一下,将此图层visiable=true了.</P>
<P>现在遇到的问题是: 选择部分指标生成曲线图没有问题, 选择有些指标就会报错,说: 对 COM 组件的调用返回了错误 HRESULT E_FAIL</P>
<P>位置在:  addCurveFeatCursor.InsertFeature(addCurveFeatBuffer); 这条语句.</P>
<P>请问有人知道是什么原因造成的么? 或者有什么简单的方法来满足我的功能需求么,非常感谢!!  查了好多资料,都未果....     我怀疑是不是因为对geodatabase中此图层的table操作过于频繁造成的结果....瞎猜的</P>
<P>部分源码在二楼</P>
喜欢0 评分0
ivan1983
路人甲
路人甲
  • 注册日期2006-12-14
  • 发帖数10
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-10-08 10:16
回复:(ivan1983)[求助]怎样生成曲线图
<P>        private void addCurve(IPolyline pPolyLine, string strTitle)<BR>        {<BR>            IFields pFlds;<BR>            IGeoFeatureLayer addCurveGeoFeatlayer;<BR>            IFeatureLayer addCurveFeatlayer;<BR>            addCurveFeatlayer = (IFeatureLayer)MapControl1.get_Layer(0);<BR>            for(int nLayer=0; nLayer<MapControl1.LayerCount; nLayer++)<BR>            {<BR>                addCurveFeatlayer = (IFeatureLayer)MapControl1.get_Layer(nLayer);<BR>                if(addCurveFeatlayer.Name == "曲线图")<BR>                {<BR>                    break;<BR>                }<BR>            }<BR>            addCurveGeoFeatlayer = (IGeoFeatureLayer)addCurveFeatlayer;<BR>            IFeatureClass addCurveFeatClass;<BR>            addCurveFeatClass = addCurveFeatlayer.FeatureClass;<BR>            IFeatureCursor addCurveFeatCursor;<BR>            IFeatureBuffer addCurveFeatBuffer;</P>
<P>            object Missing = Type.Missing;<BR>            addCurveFeatCursor = addCurveFeatClass.Insert(true);<BR>            addCurveFeatBuffer = addCurveFeatClass.CreateFeatureBuffer();</P>
<P>            IGeometryCollection pGeoColl; ;</P>
<P>            pGeoColl = (IGeometryCollection)pPolyLine;<BR>            addCurveFeatBuffer.Shape = pPolyLine;<BR>            pFlds = addCurveFeatClass.Fields;</P>
<P>            addCurveFeatBuffer.set_Value(pFlds.FindField("TypeName"), strTitle);<BR>            addCurveFeatBuffer.set_Value(pFlds.FindField("xPoint"), pPolyLine.FromPoint.X);<BR>            addCurveFeatCursor.InsertFeature(addCurveFeatBuffer);<BR>            addCurveFeatCursor.Flush();<BR>            System.Runtime.InteropServices.Marshal.ReleaseComObject(addCurveFeatCursor);      }</P>
<P>代码本身好象没有什么问题,因为我测试好多遍了,只是这个需要调用好多次来绘制所有的曲线有时才会出错...有时就OK.  晕死了</P>
举报 回复(0) 喜欢(0)     评分
wgskaoyan
路人甲
路人甲
  • 注册日期2007-05-30
  • 发帖数7
  • QQ
  • 铜币113枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2009-10-18 15:15
楼主的问题解决了吗,本人也遇到了这样的问题,需要调用数据库在AE中绘制,实现曲线拟合,不知道如何下手,希望给予方法和代码的帮助,感激不尽<img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部