首页 / 浏览问题 / 组件GIS / 问题详情
iobject c++获取高程数据报错
56EXP 2023年09月08日
UGDatasetRaster* pRaster = NULL;
    pRaster = (UGDatasetRaster*)pWorkspace->GetDataSource(0)->GetDataset(_U("MosaicResult"));

if(pRaster==NULL){

return;

}

    for(int i=0;i<plist.length();i++){
        posblh bl=plist.at(i);
        posblh rebl;
        UGPoint2D pt2d;
        transBLtoGeOGraphic(bl.b,bl.l,pt2d);
        UGPoint pdf;
        pRaster->XYToGrid(pt2d,pdf);

        UGdouble dheight=0;
        dheight= pdemdataset->GetValue(pdf.x,pdf.y);
        rebl.b=bl.b;
        rebl.l=bl.l;
        rebl.h=dheight;
        replist.append(rebl);
    }
    return replist;

当执行到GetValue函数时提示The inferior stopped because it received a signal from the Operating System,提示报错

terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check

我现在是这样做的,将多个高程数据进行栅格镶嵌,对镶嵌后的数据集进行高程查询,就会报上述的错误,但是,针对原始高程数据进行查询时则不会报错,感觉是高程进行栅格镶嵌时导致数据有问题,应该怎么做?

1个回答

建议你可以将代码跟踪后拿到具体的点坐标信息,然后再桌面iDesktopX或者是iDesktop上面去根据这个坐标构建一个点,然后用桌面【查询坐标值】这个功能去查询一下对应位置的高程值,看看是否能够成功获取
4,620EXP 2023年09月11日
...