?? 利用vc+mo最短路徑算法--gis開發(fā).htm
字號(hào):
<!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開發(fā)</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="為什么沒完呢? " name=description><LINK title=RSS
href="/blog/user1/1560/rss2.xml" type=application/rss+xml rel=alternate><LINK
href="利用vc+mo最短路徑算法--GIS開發(fā)_files/OblogUserDefault4.css" type=text/css
rel=stylesheet>
<SCRIPT src="利用vc+mo最短路徑算法--GIS開發(fā)_files/main.js" type=text/javascript></SCRIPT>
</HEAD>
<BODY>
<SCRIPT src="利用vc+mo最短路徑算法--GIS開發(fā)_files/ad_usertopjs.htm"></SCRIPT>
<LINK href="利用vc+mo最短路徑算法--GIS開發(fā)_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開發(fā)_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開發(fā)_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開發(fā)_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開發(fā)_files/default_log_title_bg.jpg><IMG
alt=Diary src="利用vc+mo最短路徑算法--GIS開發(fā)_files/Diary.gif"
align=absMiddle><STRONG>利用vc+mo最短路徑算法</STRONG><BR>[ zhaogis 發(fā)表于
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>//
定義網(wǎng)絡(luò)上的一節(jié)點(diǎn)<BR>class NetPoint <BR>{<BR>public:<BR> double x; //
X坐標(biāo)<BR> double y; // Y坐標(biāo)</P>
<P>public:<BR> NetPoint()<BR> {<BR> x =
0;<BR> y = 0;<BR> }</P>
<P> NetPoint( double X, double Y)<BR> {<BR> x =
X;<BR> y =
Y;<BR> }<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>//
定義網(wǎng)絡(luò)上的一條線<BR>class NetLine<BR>{<BR>// 屬性<BR>public
:<BR> CList<NetPoint, NetPoint&> m_pCoords; //
線段包含的節(jié)點(diǎn)的坐標(biāo)<BR>private:<BR> CMoMapLayer m_layer; //
圖層對(duì)象</P>
<P>// 構(gòu)造函數(shù)<BR>public:<BR> NetLine(CMoMapLayer
layer);<BR> ~NetLine();</P>
<P> // 計(jì)算線的幾何長(zhǎng)度<BR> double CalcLength(); <BR> //
通過線的id得到線數(shù)據(jù)<BR> BOOL GetLineData(int id); <BR> //
得到距離某點(diǎn)最近的線段,返回該線段的id<BR> int GetNearestLineData( double x,
double y); <BR> // 判斷兩點(diǎn)是否重合<BR> BOOL IsPtCoincide(
NetPoint ptFirst, NetPoint ptSecond );<BR> //
得到最鄰近的點(diǎn)<BR> void GetNearestPoint(NetPoint ptP, NetPoint ptA,
NetPoint ptB,
<BR>
NetPoint* ptNearest, double* dDistance );<BR> void
GetNearestPoint(NetPoint point, NetPoint* ptNearestPoint,
<BR>
int* nSegmentIndex, double* dLeastDistance);<BR> //
獲得根據(jù)給定點(diǎn)分裂線得到的兩個(gè)部分的比例<BR> BOOL
GetSplitRatioByNearestPoint(NetPoint point, NetPoint* ptNearest,
<BR>
double* dRatio
);<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>//
定義網(wǎng)絡(luò)上的一條邊<BR>class NetEdge<BR>{<BR>public:<BR> int
nLink; // 連接的弧段索引(數(shù)組下標(biāo)索引)<BR> float fAngle; // 水平夾角</P>
<P>public:<BR> NetEdge()<BR> {<BR> nLink =
-1;<BR> fAngle =
0;<BR> }<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>//
定義網(wǎng)絡(luò)上的一節(jié)點(diǎn),包含了與該節(jié)點(diǎn)相連的弧段信息<BR>class NetNode : public
NetPoint<BR>{ <BR>public:<BR> // 與該點(diǎn)連接的弧段數(shù)組,
弧段按角度排序<BR> CList<NetEdge, NetEdge&> m_arrLinks;
<BR> <BR>public:<BR> NetNode()
<BR> {<BR> x = 0;<BR> y =
0;<BR> }<BR> NetNode(double X, double Y)
<BR> {<BR> x = X;<BR> y =
Y;<BR> }</P>
<P> void operator=(const NetNode& netNode)
<BR> {<BR> x = netNode.x;<BR> y =
netNode.y;<BR> for(int i=0;
i<netNode.m_arrLinks.GetCount();
i++)<BR> {<BR> NetEdge neg =
netNode.m_arrLinks.GetAt(<BR>
netNode.m_arrLinks.FindIndex(i));<BR> m_arrLinks.AddTail(neg);<BR> }<BR> }</P>
<P> // 加入一個(gè)連接的弧段(調(diào)用前需確定弧段是連接在該點(diǎn)上的)<BR> BOOL Add( int
nLink, double dAngle );<BR> // 刪除一個(gè)已連接的弧段<BR> BOOL Remove(
int nLink );<BR> // 得到一個(gè)連接弧段的角度<BR> double GetLinkAngle(
int nLink
);<BR>};<BR>//-----------------------------------------------------------------------------------------<BR>//
網(wǎng)絡(luò)弧段(鏈)類<BR>class NetLink<BR>{<BR>public:<BR> int
m_GeoID; //
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -