|
阅读:1298回复:0
请问如何获得NETWORK中所有的JUNCTION?
这里是我的代码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个星期了。。。。
|
|