uint32 IntersectionInfoCache::setIntersectionInfoMap(uint8 inlinkdir, uint64 inlinkid) //给地图设置路口信息 { int32 linkindex = RGDataManagerInstance->realLinkId2Idx(inlinkid); RoadLinkInfo* curlink = RGDataManagerInstance->GetRoadInfoPtr(linkindex); NodeInfo Nodeinfo; uint32 index = (inlinkdir == 1) ? curlink->s_inersection_form_index : curlink->e_inersection_form_index; if(index == 0xFFFFFFFF) { bool start = (inlinkdir == 1) ? true : false; get_node_info(curlink, Nodeinfo, start); if(Nodeinfo.inlinks.empty() || Nodeinfo.outlinks.empty()) { cout << "ERROR: Intersection node_info is empty!" << endl; uint32_t tileid = (uint32)(inlinkid>>32); uint16_t URID = (uint16)((inlinkid & 0x00000000FFFF0000)>>16); uint16_t TPID = (uint16)(inlinkid & 0x000000000000FFFF); cout<<"URID:"<<URID<<" tileid:"<< tileid << " TPID:" << TPID << " dir:" << inlinkdir <<endl; } index = intersection_form_index; std::vector<IntersectionLinkInfo>& interseclinks = map_intersectionInfo_[intersection_form_index].links; //inlink makeIntersectionInfo(true, Nodeinfo.inlinks, interseclinks); //outlink makeIntersectionInfo(false, Nodeinfo.outlinks, interseclinks); LinePoint centerpoint = {0.0, 0.0}; double radius = 0.0; vector<LinePoint> shapepoints;//各link的交点坐标 calcInsectionCenterPoint(interseclinks, shapepoints, centerpoint); float radiusMeter = 0.0; calcInsectionCenterRadius(shapepoints, centerpoint, radius, radiusMeter); calcLinkOrder(interseclinks, centerpoint, radius); std::sort( interseclinks.begin(), interseclinks.end() ); intersection_form_index++; //路口index加1 } return index; }
时间: 2024-03-28 20:37:03 浏览: 63
这段代码是一个函数,作用是给地图设置路口信息。具体来说,它接受两个参数:一个是inlinkdir,表示入口道路的方向;另一个是inlinkid,表示入口道路的ID。然后,它根据这些信息找到对应的道路信息,计算出路口的中心点、半径以及各个连接道路的顺序信息,并将这些信息存储在一个IntersectionInfoCache类的map_intersectionInfo_成员变量中。如果输入的inlinkid无法在地图中找到对应的道路信息,则会输出错误信息并返回0xFFFFFFFF。
具体实现上,它首先根据inlinkdir和inlinkid找到对应的道路信息,然后获取该道路的起点或终点,进一步获取该点的入口和出口道路信息。如果该点没有入口或出口道路,则输出错误信息并返回0xFFFFFFFF。否则,它计算出路口的中心点、半径以及各个连接道路的顺序信息,并将这些信息存储在IntersectionInfoCache类的map_intersectionInfo_成员变量中。最后,它返回该路口信息在map_intersectionInfo_中的索引值。
阅读全文