matoo
路人甲
路人甲
  • 注册日期2008-09-20
  • 发帖数1
  • QQ
  • 铜币107枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1298回复:0

请问如何获得NETWORK中所有的JUNCTION?

楼主#
更多 发布于:2009-09-11 12:48
这里是我的代码VC的,可以获得EID,但是读不出每个点的GEOMETRY,请问该怎么解决?谢谢<BR><BR>IGeometricNetworkPtr ipGeoNW;<BR>IEnumFeatureClassPtr ipEnumFC;<BR>IFeatureClassPtr ipFCl;<BR>IFeaturePtr ipFea;<BR>INetworkPtr ipNetw;<BR>INetElementsPtr ipNetEle;<BR>long FCID,OID,EID;<BR>//先是网络的初始化赋值<BR>ipGeoNW=m_GeoNetwork;  <BR>ipGeoNW->get_ClassesByType(esriFTSimpleJunction,;ipEnumFC);//这里是找出JUNC的FEATURECLASS,对么?<BR>ipGeoNW->get_Network(;ipNetw);<BR>ipNetEle=ipNetw;<BR>ipEnumFC->Next(;ipFCl); //用NEXT把FEATURE提出来<BR>ipFCl->get_FeatureClassID(;FCID);//获得FCID<BR><BR>//先是用FEATURECURSOR做游标,但是游标里面只读出来两个FEATURE,然后WHILE的时候一直死循环,请问JUNCTION难道不能用FEATURE的方法读取么?<BR>ipFCl->Search(NULL,false,;ipFeaCur);<BR>ipFeaCur->NextFeature(;ipFea);<BR>VARIANT_BOOL IsContained=VARIANT_FALSE;<BR><BR><BR>//这里改来方法,用ROW来读每个数据记录<BR><BR>ITablePtr ipTab(ipFCl);<BR>ICursorPtr ipCur;<BR>IRowPtr ipRow;<BR>long rowcount;<BR>ipTab->Search(NULL,false,;ipCur);<BR>ipTab->RowCount(NULL,;rowcount);<BR>ipCur->NextRow(;ipRow); <BR><BR><BR>while(ipRow)<BR>{<BR>  ipFea->get_OID(;OID);<BR>  ipNetEle->GetEID(FCID,OID,0,esriETJunction,;EID);<BR>  ipGeoNW->get_GeometryForJunctionEID(EID,;ipTempJunction);<BR>  ipCheckPoint->Contains(ipTempJunction,;IsContained);<BR><BR>  if(IsContained)<BR>  {<BR>   IPointPtr ipCont(ipTempJunction);<BR>   ipSelJunction->AddPoint(ipCont,;vtMissing,;vtMissing);  //判断读出的JUNC是否在一个面中  };<BR>  ipCur->NextRow(;ipRow);<BR>}<BR>循环中NEXTROW重新赋值没有成功,我的意思是没有更新ROW,但是没有报错,请问问题是出在来哪里呢?是游标的问题么?还是方法没对?<BR><BR>麻烦大家指正,这个问题已经困扰我1个星期了。。。。
喜欢0 评分0
游客

返回顶部