⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 利用vc+mo最短路径算法--gis开发.htm

📁 Mapobjecst最短路径的计算方法,
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0059)http://www.gis8.net/blog/user1/1560/archives/2006/9864.html -->
<HTML><HEAD><TITLE>利用vc+mo最短路径算法--GIS开发</TITLE>
<META http-equiv=Content-Language content=zh-CN>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.3790.2954" name=GENERATOR>
<META content=zhaogis, name=author>
<META content=利用vc+mo最短路径算法 name=keyword>
<META content="为什么没完呢?&nbsp; &nbsp;" name=description><LINK title=RSS 
href="/blog/user1/1560/rss2.xml" type=application/rss+xml rel=alternate><LINK 
href="利用vc+mo最短路径算法--GIS开发_files/OblogUserDefault4.css" type=text/css 
rel=stylesheet>
<SCRIPT src="利用vc+mo最短路径算法--GIS开发_files/main.js" type=text/javascript></SCRIPT>
</HEAD>
<BODY>
<SCRIPT src="利用vc+mo最短路径算法--GIS开发_files/ad_usertopjs.htm"></SCRIPT>
<LINK href="利用vc+mo最短路径算法--GIS开发_files/styles.css" type=text/css rel=stylesheet>
<TABLE cellSpacing=0 cellPadding=0 width=780 align=center border=0>
  <TBODY>
  <TR>
    <TD><IMG height=160 src="利用vc+mo最短路径算法--GIS开发_files/header.jpg" 
    width=780></TD></TR></TBODY></TABLE>
<TABLE borderColor=#e7e7e7 cellSpacing=0 cellPadding=6 width=780 align=center 
border=0>
  <TBODY>
  <TR>
    <TD class=sidebar>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title colSpan=2>User Login</TD></TR>
        <TR class=panel-content>
          <TD align=middle colSpan=2>
            <DIV id=ob_login></DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title colSpan=2>Calendar</TD></TR>
        <TR class=panel-content>
          <TD align=middle colSpan=2>
            <DIV id=calendar>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title colSpan=2>Placard</TD></TR>
        <TR class=panel-content>
          <TD align=middle colSpan=2>
            <DIV id=placard>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=0 width="99%" border=0>
        <TBODY>
        <TR>
          <TD class=panel-title><IMG 
            src="利用vc+mo最短路径算法--GIS开发_files/Categoriesbj.gif" 
        align=absMiddle></TD></TR>
        <TR>
          <TD class=panel-content align=middle>
            <DIV id=subject>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title>Latest Topics</TD></TR>
        <TR>
          <TD class=panel-content>
            <DIV id=newblog>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title>Latest Comments</TD></TR>
        <TR>
          <TD class=panel-content>
            <DIV id=comment>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title>Latest Messages</TD></TR>
        <TR>
          <TD class=panel-content>
            <DIV id=newmessage>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title>Blog Statistics</TD></TR>
        <TR>
          <TD class=panel-content>
            <DIV id=info>页面载入中....</DIV></TD></TR></TBODY></TABLE>
      <TABLE class=panel cellSpacing=1 cellPadding=4 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=panel-title>Links</TD></TR>
        <TR>
          <TD class=panel-content>
            <DIV id=links>页面载入中....</DIV>
            <SCRIPT 
src="利用vc+mo最短路径算法--GIS开发_files/ad_userlinksjs.htm"></SCRIPT>
          </TD></TR></TBODY></TABLE></TD>
    <TD class=mainbox>
      <TABLE height=5 cellSpacing=6 cellPadding=0 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD>Welcome to <SPAN 
      id=blogname>页面载入中....</SPAN></TD></TR></TBODY></TABLE><BR>
      <TABLE class=textbox cellSpacing=1 cellPadding=6 width="99%" align=center 
      border=0>
        <TBODY>
        <TR>
          <TD class=textbox-title 
          background=利用vc+mo最短路径算法--GIS开发_files/default_log_title_bg.jpg><IMG 
            alt=Diary src="利用vc+mo最短路径算法--GIS开发_files/Diary.gif" 
            align=absMiddle><STRONG>利用vc+mo最短路径算法</STRONG><BR>[ zhaogis 发表于 
            2006-3-3 0:22:16 ]</TD></TR>
        <TR>
          <TD class=textbox-content>
            <P>//***************************************************************************//</P>
            <P>//netlayer.h文件</P>
            <P>#pragma once</P>
            <P>#i nclude 
            "MoMapLayer.h"<BR>//-----------------------------------------------------------------------------------------<BR>// 
            定义网络上的一节点<BR>class NetPoint <BR>{<BR>public:<BR>&nbsp;double x; // 
            X坐标<BR>&nbsp;double y; // Y坐标</P>
            <P>public:<BR>&nbsp;NetPoint()<BR>&nbsp;{<BR>&nbsp;&nbsp;x = 
            0;<BR>&nbsp;&nbsp;y = 0;<BR>&nbsp;}</P>
            <P>&nbsp;NetPoint( double X, double Y)<BR>&nbsp;{<BR>&nbsp;&nbsp;x = 
            X;<BR>&nbsp;&nbsp;y = 
            Y;<BR>&nbsp;}<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>// 
            定义网络上的一条线<BR>class NetLine<BR>{<BR>// 属性<BR>public 
            :<BR>&nbsp;CList&lt;NetPoint, NetPoint&amp;&gt; m_pCoords; // 
            线段包含的节点的坐标<BR>private:<BR>&nbsp;CMoMapLayer m_layer;&nbsp; // 
            图层对象</P>
            <P>// 构造函数<BR>public:<BR>&nbsp;NetLine(CMoMapLayer 
            layer);<BR>&nbsp;~NetLine();</P>
            <P>&nbsp;// 计算线的几何长度<BR>&nbsp;double CalcLength(); <BR>&nbsp;// 
            通过线的id得到线数据<BR>&nbsp;BOOL GetLineData(int id); <BR>&nbsp;// 
            得到距离某点最近的线段,返回该线段的id<BR>&nbsp;int GetNearestLineData( double x, 
            double y); <BR>&nbsp;// 判断两点是否重合<BR>&nbsp;BOOL IsPtCoincide( 
            NetPoint ptFirst, NetPoint ptSecond );<BR>&nbsp;// 
            得到最邻近的点<BR>&nbsp;void GetNearestPoint(NetPoint ptP, NetPoint ptA, 
            NetPoint ptB, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            NetPoint* ptNearest, double* dDistance );<BR>&nbsp;void 
            GetNearestPoint(NetPoint point, NetPoint* ptNearestPoint, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            int* nSegmentIndex, double* dLeastDistance);<BR>&nbsp;// 
            获得根据给定点分裂线得到的两个部分的比例<BR>&nbsp;BOOL 
            GetSplitRatioByNearestPoint(NetPoint point, NetPoint* ptNearest, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            double* dRatio 
            );<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>// 
            定义网络上的一条边<BR>class NetEdge<BR>{<BR>public:<BR>&nbsp;int&nbsp;&nbsp; 
            nLink;&nbsp; // 连接的弧段索引(数组下标索引)<BR>&nbsp;float fAngle; // 水平夹角</P>
            <P>public:<BR>&nbsp;NetEdge()<BR>&nbsp;{<BR>&nbsp;&nbsp;nLink = 
            -1;<BR>&nbsp;&nbsp;fAngle = 
            0;<BR>&nbsp;}<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>// 
            定义网络上的一节点,包含了与该节点相连的弧段信息<BR>class NetNode : public 
            NetPoint<BR>{&nbsp;&nbsp;<BR>public:<BR>&nbsp;// 与该点连接的弧段数组, 
            弧段按角度排序<BR>&nbsp;CList&lt;NetEdge, NetEdge&amp;&gt; m_arrLinks; 
            <BR>&nbsp;&nbsp;<BR>public:<BR>&nbsp;NetNode() 
            &nbsp;<BR>&nbsp;{<BR>&nbsp;&nbsp;x = 0;<BR>&nbsp;&nbsp;y = 
            0;<BR>&nbsp;}<BR>&nbsp;NetNode(double X, double Y) 
            <BR>&nbsp;{<BR>&nbsp;&nbsp;x = X;<BR>&nbsp;&nbsp;y = 
            Y;<BR>&nbsp;}</P>
            <P>&nbsp;void operator=(const NetNode&amp; netNode) 
            <BR>&nbsp;{<BR>&nbsp;&nbsp;x = netNode.x;<BR>&nbsp;&nbsp;y = 
            netNode.y;<BR>&nbsp;&nbsp;for(int i=0; 
            i&lt;netNode.m_arrLinks.GetCount(); 
            i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;NetEdge neg = 
            netNode.m_arrLinks.GetAt(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            netNode.m_arrLinks.FindIndex(i));<BR>&nbsp;&nbsp;&nbsp;m_arrLinks.AddTail(neg);<BR>&nbsp;&nbsp;}<BR>&nbsp;}</P>
            <P>&nbsp;// 加入一个连接的弧段(调用前需确定弧段是连接在该点上的)<BR>&nbsp;BOOL Add( int 
            nLink, double dAngle );<BR>&nbsp;// 删除一个已连接的弧段<BR>&nbsp;BOOL Remove( 
            int nLink );<BR>&nbsp;// 得到一个连接弧段的角度<BR>&nbsp;double GetLinkAngle( 
            int nLink 
            );<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>// 
            网络弧段(链)类<BR>class NetLink<BR>{<BR>public:<BR>&nbsp;int 
            m_GeoID;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -