Illegal Index in LinkNeighbors错误

wxjiao 2009-04-15 09:23:27
运行程序的时候出现了以下错误。
ArcInfo input file "Linkmap" error

warning: Illegal Index in LinkNeighbors:(0,13):0(0)
warning: Illegal Index in LinkNeighbors:(0,14):0(0)
warning: Illegal Index in LinkNeighbors:(1,13):0(0)
warning: Illegal Index in LinkNeighbors:(1,14):0(0)


下面的代码包含了对错误信息的提示,if( !GMR(rr,rc,il) ) { sprintf(gMsgStr,"Illegal Index in LinkNeighbors: (%d,%d): %d(%x)",ir,ic,il,dir); gPrintErr(); }。这段代码里是不是什么地方不合适了,怎样才能修复这个错误啊。

int FrameLink::LinkNeighborsUsingMap( TMap* m ) {
TLayer* l = TModel::I().Grid()->getCellLayer();
int rr, rc;
unsigned int C0, C1;
for( TCell* c = fCurrentGrid->first(); c; fCurrentGrid->next(c) ) {
int ir = l->getCellLocCoord(TLayer::kRows,c);
int ic = l->getCellLocCoord(TLayer::kCols,c);
byte dir = m->BValue( ir, ic, 0 );
Grid_Direction il = (Grid_Direction) dir;
if( !GMR(rr,rc,il) ) { sprintf(gMsgStr,"Illegal Index in LinkNeighbors: (%d,%d): %d(%x)",ir,ic,il,dir); gPrintErr(); }
else {
C0 = ir+rr; C1 = ic+rc;
TCell* cR = l->getCell(C0,C1);
if( cR ) {
MakeLink(c,cR,l);
if( fLinkMap ) {
fLinkMap->SetValue(ir,ic,(unsigned long)il);
}
RegisterLink( ir, ic, C0, C1, l );
if(gDebug > 1 ) {
sprintf(gMsgStr,"add(%d,%d), ",ir,ic);
gPrintLog();
}
}
}
}
return 0;
}
...全文
112 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxjiao 2009-04-15
  • 打赏
  • 举报
回复
int FrameLink::RiverLink( ) {

TLayer* l = TModel::I().Grid()->getCellLayer();
if( fSetupMap[2] ) {

sprintf(gMsgStr,"Linking Tree Network Frame using map %s ",fMapName[2].chars()); gPrintScreen();
LinkNeighborsUsingMap(fSetupMap[2]);

} else {

if( fSetupMap[0] == NULL ) {
gPrintErr( SName() + ": Error, No River map specified in FluxLink!" ); return 0;
}
if( fCurrentGrid == NULL ) {
gPrintErr( SName() + ": Error, No grid specified in FluxLink!" ); return 0;
}
if( ((Region2&)(*(fSetupMap[0]))) != ((Region2&)(*(fCurrentGrid->RegionMap())))) {
gPrintErr( SName() + ": Error, Wrong region for River map specified in FluxLink!" ); return 0;
}
if( fSetupMap[1] ) {
if( ((Region2&)(*(fSetupMap[1]))) != ((Region2&)(*(fCurrentGrid->RegionMap())))) {
gPrintErr( SName() + ": Error, Wrong region for Elevation map specified in FluxLink!" ); return 0;
}
}
.........
ArcInfo input file "Linkmap" error不是系统提示的错误,系统提示的是info:linking tree network frame using map ~/flowdir.asc
然后下面就是warning: Illegal Index in LinkNeighbors:(0,13):0(0)
warning: Illegal Index in LinkNeighbors:(0,14):0(0)
warning: Illegal Index in LinkNeighbors:(1,13):0(0)
warning: Illegal Index in LinkNeighbors:(1,14):0(0)

goodname 2009-04-15
  • 打赏
  • 举报
回复
我觉得你先解决
ArcInfo input file "Linkmap" error
,也许这个没了,其他的就没了。

这并不能说明是代码就有问题。
wxjiao 2009-04-15
  • 打赏
  • 举报
回复
其中相关的GMR函数是

inline int GMR(int& rr, int& rc, Grid_Direction index)
{
switch(index) {
case SE: rr= 1; rc= 1; break;
case SS: rr= 1; rc= 0; break;
case SW: rr= 1; rc=-1; break;
case WW: rr= 0; rc=-1; break;
case NW: rr=-1; rc=-1; break;
case NN: rr=-1; rc= 0; break;
case NE: rr=-1; rc= 1; break;
case EE: rr= 0; rc= 1; break;
default: return 0;
}
return 1;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧