欢迎来到天天文库
浏览记录
ID:13355211
大小:149.00 KB
页数:5页
时间:2018-07-22
《最佳路径分析总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第一步:在View类里声明一个路径分析类的对象:public:CSePathAnalystm_PathAnalyst;//定义一个路径分析类对象第二步:调用SetDatasetNetwork方法,具体方法如下:⑴得到网络分析数据集CSeDatasetVector*pDatasetNetwork=NULL;CSeDataSource*pDataSource=theApp.m_WorkSpace.GetDataSourceByAlias(_T("新世界阳光花园"));if(pDataSource!=NULL){CSeDatasetVector*pDataset=(CSeDatasetVector*
2、)pDataSource->GetDataset(_T("道路网络"));pDatasetNetwork=pDataset;}⑵设置网络分析数据集boolm_setNetWork=m_PathAnalyst.SetDatasetNetwork(pDatasetNetwork);⑶设置分析模型m_bRuleParamSetted=true;//判断是否设置分析模型成功,成功的话在LbuttunDown里不成功m_bRuleParamSetted=false;m_nAction=10;//值为时表明为路径分析模式,在在LbuttunDown里用到判断操作的模式m_MapWnd.SetAction(
3、CSeDrawParameters::uaNull);//此时将地图上的操作设为空操作⑷在C路径分析View::OnLButtonDown(UINTnFlags,CPointpoint)里进行路径分析if(m_nAction==10)//如果操作为路径分析模式的话{//路径搜索if(m_bRuleParamSetted)//已经设置了路径分析参数{//设置路径分析模式和模型后CSeDatasetVector*pSeDatasetNetwork=m_PathAnalyst.GetDatasetNetwork();if(pSeDatasetNetwork)//如果网络数据集存在的话{//获取网络数
4、据集的节点子数据集CSeDatasetVector*pSeDatasetNode=pSeDatasetNetwork->GetChildDataset();if(pSeDatasetNode)//如果网络数据集的节点子数据集存在的话{CPointpntNode;//得到的一个最近的点CPointpntMouse=CPoint(point);//获取鼠标点对象//将像素坐标转换为地图坐标m_MapWnd.GetDrawParam()->ClientToMap(&pntMouse);//获取鼠标点击点最近的节点longnNodeID=pSeDatasetNetwork->FindNearestNo
5、de(pntMouse,pntNode);//pntMouse点击点,pntNode得到的最近的点if(nNodeID>=0)//如果找到相应节点{if(m_nFromNodeID==-1)//路径分析的起始点{m_nFromNodeID=nNodeID;//将得到的最近节点ID赋值给起始点IDm_pntToNode=m_pntFromNode=pntNode;//起始点坐标m_pntFromNode=pntNode;//刷新跟踪层,等待将分析的路径放入if(m_MapWnd.m_TrackingLayer.GetCount()>0){m_MapWnd.m_TrackingLayer.Rele
6、aseAll();m_MapWnd.RefreshTrackingLayer(false);}//显示起始点(为实现)//显示起始点(为实现)}else//在执行完上面的If语句后,开始设置路径分析的终止点{m_pntToNode=pntNode;//将得到的最近点的点的坐标给终止点坐标//DisplayNodePoint(m_pntToNode);//显示终止点未实现CDWordArrayarrIDs;//路径的各个弧段ID【输出】CDWordArraypntIDs;//路径的各个节点ID【输出】doubledPathLength=0.0;//路径的长度//开始分析m_PathAnalyst
7、.Analyse(m_nFromNodeID,nNodeID,arrIDs,dPathLength,pntIDs);CSeGeometry*pSeGeometry=NULL;CSeDatasetVector*pSeDtV=NULL;longnCount=arrIDs.GetSize();//获取分析后路径弧段的个数if(nCount==0){//如果没有弧度,即没有找到路径//AfxMessage
此文档下载收益归作者所有