亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shortpath.bas

?? 用VB為二次開發語言
?? BAS
字號:
Attribute VB_Name = "Module5"
Option Explicit
'繪最短路徑圖
Public Sub ShortPathPlot(TheOutPath As String, TableNameT As String, nNode As Integer, LonNode() As Double, LatNode() As Double, NoNode() As Integer, nNodeShortPath As Integer, NodeShortPath() As Integer)
    Dim Columns() As String, ColumnsType() As String, ColumnsN As Integer
    Dim I As Integer, J As Integer
    Dim LineTemp As String
    Dim Lon1 As Double, Lon2 As Double, Lat1 As Double, Lat2 As Double
    Dim Node1 As Integer, Node2 As Integer
    Dim V(1 To 2) As String

    Screen.MousePointer = 11

    ColumnsN = 2
    ReDim Columns(1 To ColumnsN), ColumnsType(1 To ColumnsN)

    Columns(1) = "節點1編碼"
    ColumnsType(1) = "SmallInt"
        
    Columns(2) = "節點2編碼"
    ColumnsType(2) = "SmallInt"

    TableName = TableNameT
    Call MIFMID_Open(TheOutPath + TableName, Columns, ColumnsType, ColumnsN)
    Call MIFMID_MakePen(2, 2, QBColors(12))

    Node1 = NodeShortPath(1)
    Lon1 = LonNode(Node1)
    Lat1 = LatNode(Node1)
    For I = 2 To nNodeShortPath
        Node2 = NodeShortPath(I)
        Lon2 = LonNode(Node2)
        Lat2 = LatNode(Node2)
        
        V(1) = NoNode(Node1)
        V(2) = NoNode(Node2)
    
        Call MIFMID_CreateLine(Lon1, Lat1, Lon2, Lat2)
        Call OutMID(V)
        
        Lon1 = Lon2
        Lat1 = Lat2
    Next I

    '新表存盤
    Call MIFMID_Close

    TheInFile = TheOutPath + TableName + ".MIF"
    TheOutFile = TheOutPath + TableName + ".TAB"

    MapInfo.Do "Import """ & TheInFile & """ Type ""MIF"" Into """ & TheOutFile & """ Overwrite"
    
    TheInFile = TheOutPath + TableName + ".MIF"
    Kill TheInFile
    TheInFile = TheOutPath + TableName + ".MID"
    Kill TheInFile
   
    mapWinID = CLng(MapInfo.Eval("FrontWindow()"))
    If (mapWinID > 0) Then
        MapInfo.Do "Add Map Layer " & TableName
    End If

    Screen.MousePointer = 0
End Sub
'讀節點數據
Public Sub ShortPathData(TheInFileNode As String, TheInFileLine As String, LonNode() As Double, LatNode() As Double, NoNode() As Integer, nNode As Integer, LineNode() As Integer, LineDis() As Double, nLineNode As Integer, LinkN() As Integer, LinkNi() As Integer, LinkDis() As Double, LinkNo() As Integer)
Dim I As Integer, J As Integer, N As Integer, NN As Integer
Dim LineTemp As String
Dim Lon1 As Double, Lon2 As Double, Lat1 As Double, Lat2 As Double
Dim Node1 As Integer, Node2 As Integer
Dim NodeNo1 As Integer, NodeNo2 As Integer
Dim LineNodeNo1() As Integer, LineNodeNo2() As Integer

'Begin讀節點數據
nNode = 0
Open TheInFileNode For Input As #1
Do While Not EOF(1)
    Line Input #1, LineTemp
    nNode = nNode + 1
Loop
Close (1)

ReDim LonNode(1 To nNode), LatNode(1 To nNode), NoNode(1 To nNode)
Open TheInFileNode For Input As #1
For I = 1 To nNode
    Input #1, LatNode(I), LonNode(I), LineTemp
    NoNode(I) = Val(LineTemp)
Next I
Close (1)
'End讀節點數據


'Begin讀Line數據
nLineNode = 0
Open TheInFileLine For Input As #1
Do While Not EOF(1)
    Line Input #1, LineTemp
    nLineNode = nLineNode + 1
Loop
Close (1)

ReDim LineNode(1 To 2, 1 To nLineNode), LineDis(1 To nLineNode)
ReDim LineNodeNo(1 To 2, 1 To nLineNode)

Open TheInFileLine For Input As #1
For I = 1 To nLineNode
    Input #1, LineNode(1, I), LineNode(2, I), LineDis(I)
Next I
Close (1)
'End讀Line數據

'Begin計算距離
For I = 1 To nLineNode
    'Begin搜索Line對應節點
    Node1 = LineNode(1, I)
    Node2 = LineNode(2, I)
    NodeNo1 = 0
    NodeNo2 = 0
    For J = 1 To nNode
        If (NoNode(J) = Node1) Then
            NodeNo1 = J
        End If
        If (NoNode(J) = Node2) Then
            NodeNo2 = J
        End If
        If (NodeNo1 > 0 And NodeNo2 > 0) Then Exit For
    Next J
    'End搜索Line對應節點
    If (NodeNo1 = 0 Or NodeNo2 = 0) Then
        MsgBox "節點" + Format(NodeNo1, "####0 ") + Format(NodeNo2, "####0") + "不存在", vbOKOnly, "關于節點"
    End If
    
    LineNodeNo(1, I) = NodeNo1
    LineNodeNo(2, I) = NodeNo2
    
    'Begin開始計算距離
    Lon1 = LonNode(NodeNo1)
    Lat1 = LatNode(NodeNo1)
    Lon2 = LonNode(NodeNo2)
    Lat2 = LatNode(NodeNo2)
    If (LineDis(I) <= 0) Then
        LineDis(I) = 111.199 * Sqr((Lat1 - Lat2) ^ 2 + ((Lon1 - Lon2) * Cos((Lat1 + Lat2) * 0.00872665)) ^ 2)
    End If
    'End開始計算距離
Next I
'End計算距離

ReDim LinkN(1 To nNode), LinkNi(1 To nNode + 1), LinkDis(1 To nLineNode * 3), LinkNo(1 To nLineNode * 3)
'Begin開始搜索與節點相連的Line
LinkNi(1) = 1
NN = 0
For I = 1 To nNode
    N = 0
    For J = 1 To nLineNode
        If (LineNode(1, J) = NoNode(I)) Then
            N = N + 1
            
            NN = NN + 1
            LinkDis(NN) = LineDis(J)
            LinkNo(NN) = LineNodeNo(2, J)
        ElseIf (LineNode(2, J) = NoNode(I)) Then
            N = N + 1
            
            NN = NN + 1
            LinkDis(NN) = LineDis(J)
            LinkNo(NN) = LineNodeNo(1, J)
        End If
    Next J
    LinkN(I) = N
    LinkNi(I + 1) = LinkNi(I) + N
    If (N = 0) Then
        MsgBox "節點" + Format(NoNode(I), "###0") + "無線路!", vbOKOnly, "關于搜索與節點相連的線路"
    End If
Next I
'End開始搜索與節點相連的Line
End Sub


'NoNode1                    起始點編碼
'NoNode2                    結束點編碼
'nNode                      為網中最大的節點數
'NoNode(i)                  節點編碼
'LinkN(i)                   與i點相連Line個數
'LinkNi(i)                  與i點相連Line端點存放序號
'iLL=LinkNi(LL) - i + 1
'LinkNo(iLL)                與i點相連Line端點順序編號
'LinkList(iLL)              與i點相連Line端點距離
'nNodeShortPath             最短路徑節點數
'NodeShortPath              最短路徑節點序號
Public Sub ShortPathSearch(NoNode1 As Integer, NoNode2 As Integer, nNode As Integer, NoNode() As Integer, LinkN() As Integer, LinkNi() As Integer, LinkNo() As Integer, LinkDis() As Double, nNodeShortPath As Integer, NodeShortPath() As Integer, ShortPath As Double)
Dim II As Integer, I As Integer, J As Integer, LL As Integer, iLL As Integer
Dim iNode As Integer
Dim S As Single, MinS As Single, MinPoint As Integer
Dim NodeCheck() As Boolean  '標記已經查過的點
Dim NodeUse() As Boolean    '標記已經作為結果點使用過的點
Dim RS() As Single          '假設從起點到任一點的距離都為無窮大
Dim result() As Single      '存放結果長度
Dim ResultNo() As Integer   '存放結果節點編號
Dim iResult As Integer
Dim No() As Integer
Dim StartNo As Integer, EndNo As Integer

'Begin根據編碼,搜索序號
StartNo = 0
EndNo = 0
For I = 1 To nNode
    If (NoNode(I) = NoNode1) Then
        StartNo = I
    End If
    If (NoNode(I) = NoNode2) Then
        EndNo = I
    End If
    If (StartNo > 0 And EndNo > 0) Then Exit For
Next I
'End根據編碼,搜索序號

ReDim NodeCheck(1 To nNode), NodeUse(1 To nNode)
ReDim RS(1 To nNode), result(1 To nNode), ResultNo(1 To nNode)

For I = 1 To nNode
    NodeCheck(I) = False                    '標記未經查過的點。
    NodeUse(I) = False                      '標記未作為結果點使用過的點
    RS(I) = 1E+38                           '假設從起點到任一點的距離都為無窮大
Next I

LL = StartNo                                '設置開始點。
NodeUse(LL) = True                          '標記開始點為真。即已經作為結果點使用過。
J = 0
For iNode = 1 To nNode
    '先從與開始點相連的起點尋找
    For I = 1 To LinkN(LL)                  '以與LL點相連的起點的個數循環
        iLL = LinkNi(LL) + I - 1
        iResult = LinkNo(iLL)               '找出與LL點相連的起點的點號
        If NodeCheck(iResult) = False Then  '如果沒查過,則進行
            S = LinkDis(iLL) + result(LL)   '找出長度并求和
            If NodeUse(iResult) = True Then '如果已經作為結果點,判斷哪一個長
                If S <= RS(iResult) Then    '如果這一點到起點的長度比現在的路線長,替代
                    RS(iResult) = S
                    result(iResult) = S     '設置到這點的最短路徑長度
                    ResultNo(iResult) = LL
                End If
            Else                            '如果上面的條件都不符合,則進行下面的語句
                NodeCheck(iResult) = True
                RS(iResult) = S
                result(iResult) = S
                ResultNo(iResult) = LL
                
                J = J + 1                   '每找到一個點加一,為了下面的判斷
                ReDim Preserve No(1 To J)   '重新定義數組并使其值為當前的點號
                No(J) = iResult
            End If
        End If
    Next I

    '設置最小為無窮大,最短路徑點為空
    MinS = 1E+38
    MinPoint = 0
    
    '找出已經查過點中長度最短的點
    For I = iNode To J
        If RS(No(I)) < MinS Then
            II = I
            MinS = RS(No(I))
            MinPoint = No(I)
        End If
    Next I
    
    '如果沒有結果,即起點與終點沒有通路,則退出程序
    If MinS = 1E+38 Then
        MsgBox "即起點與終點沒有通路!", vbOKOnly, "關于搜索最短路徑"
        Exit Sub
    End If
    
    '將兩點互換,減少循環。
    No(II) = No(iNode)
    No(iNode) = MinPoint
    
    '標記已經作為結果點判斷過
    NodeUse(MinPoint) = True
    LL = MinPoint
    
    '判斷結果點是否等于終點,如果等于則已經找到最短路徑
    If MinPoint = EndNo Then Exit For
Next iNode

'Begin檢索最短路徑節點
ReDim NodeShortPath(1 To nNode)
nNodeShortPath = 1
LL = MinPoint
NodeShortPath(nNodeShortPath) = LL
Do
    LL = ResultNo(LL)
    nNodeShortPath = nNodeShortPath + 1
    NodeShortPath(nNodeShortPath) = LL
    If (LL = StartNo) Then Exit Do
Loop
'End檢索最短路徑節點
ShortPath = result(EndNo)
End Sub

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人午夜视频| 久久国产视频网| 亚洲欧美在线视频观看| 亚洲国产精品99久久久久久久久| 日韩欧美国产不卡| 日韩精品专区在线| 亚洲精品一线二线三线无人区| 日韩午夜激情av| 精品国产乱码久久久久久浪潮 | 欧美精品1区2区| 欧美日韩大陆一区二区| 欧美一级片在线观看| 日韩视频免费直播| 久久精品一区二区三区四区| 国产亚洲一二三区| 亚洲欧美在线另类| 午夜精品免费在线观看| 黄网站免费久久| 成人精品在线视频观看| 91老司机福利 在线| 欧美日韩不卡在线| 久久亚洲二区三区| 亚洲美女在线国产| 美女视频一区在线观看| 国产mv日韩mv欧美| 欧美天堂一区二区三区| 欧美xxxxx裸体时装秀| 国产精品久久久久7777按摩| 亚洲一二三区在线观看| 精品一区二区日韩| 91蝌蚪国产九色| 欧美一区二区三区思思人| 中文字幕高清不卡| 蜜桃精品视频在线观看| 9色porny自拍视频一区二区| 宅男噜噜噜66一区二区66| 亚洲欧洲99久久| 蜜桃av一区二区在线观看| 91色九色蝌蚪| 久久久久综合网| 午夜精品成人在线视频| 成人精品国产免费网站| 日韩视频在线观看一区二区| 亚洲日本在线天堂| 成人性视频免费网站| 日韩小视频在线观看专区| 亚洲欧美一区二区三区国产精品| 老司机午夜精品| 欧美视频一区二区三区在线观看| 亚洲精品在线三区| 青青草成人在线观看| 在线观看免费一区| 国产精品伦理在线| 国模少妇一区二区三区| 6080国产精品一区二区| 一区二区三区不卡在线观看| 成人午夜私人影院| 国产视频一区二区在线观看| 美腿丝袜在线亚洲一区| 欧美精品在欧美一区二区少妇| 自拍偷拍欧美精品| 成人av资源在线观看| 国产日韩欧美一区二区三区乱码| 精品亚洲国产成人av制服丝袜| 欧美美女bb生活片| 日韩中文字幕1| 91麻豆精品国产综合久久久久久 | 欧美r级电影在线观看| 亚洲国产成人av| 欧美色国产精品| 亚洲高清三级视频| 88在线观看91蜜桃国自产| 丝袜美腿亚洲一区| 欧美日本国产视频| 日本成人在线网站| 日韩欧美一区电影| 国产一区91精品张津瑜| 精品国产免费人成电影在线观看四季 | 91麻豆自制传媒国产之光| 国产精品第一页第二页第三页| av午夜精品一区二区三区| 最新国产成人在线观看| 91极品视觉盛宴| 日韩高清一区在线| 日韩欧美自拍偷拍| 国产高清亚洲一区| 中文字幕亚洲不卡| 欧美日本在线播放| 激情综合色丁香一区二区| 精品少妇一区二区三区免费观看 | 亚洲一区二区三区在线看| 欧美人与禽zozo性伦| 青青草原综合久久大伊人精品| 久久色.com| 91麻豆.com| 日本不卡一区二区三区 | 成人精品小蝌蚪| 亚洲柠檬福利资源导航| 欧美日韩国产在线观看| 久久成人羞羞网站| 亚洲女人的天堂| 欧美一级一区二区| 北条麻妃国产九九精品视频| 亚洲风情在线资源站| 欧美成人官网二区| 91蜜桃在线免费视频| 免费在线观看成人| 中文字幕一区二区日韩精品绯色| 在线电影院国产精品| 成人免费视频一区| 免费的国产精品| 一区二区中文字幕在线| 欧美精品亚洲二区| 国产91在线观看| 日韩精品一级中文字幕精品视频免费观看| 精品国产乱子伦一区| 色婷婷av一区二区三区大白胸| 九九精品一区二区| 亚洲图片欧美色图| 一区免费观看视频| ww久久中文字幕| 欧美精品在线一区二区三区| 成人avav影音| 黄网站免费久久| 亚洲va欧美va人人爽| 国产精品美女久久久久高潮| 日韩午夜在线观看视频| 欧美日韩中文国产| 色94色欧美sute亚洲线路一久| 国产精品中文有码| 日本欧美一区二区| 亚洲成人av一区二区三区| 亚洲欧洲日本在线| 中文字幕精品一区| 国产天堂亚洲国产碰碰| 26uuu另类欧美| 日韩欧美国产一二三区| 欧美群妇大交群中文字幕| 色丁香久综合在线久综合在线观看| 国产精品一区在线| 国产激情视频一区二区在线观看| 美女免费视频一区二区| 日韩主播视频在线| 丝袜美腿亚洲综合| 日韩国产高清在线| 热久久久久久久| 奇米色一区二区三区四区| 天堂va蜜桃一区二区三区漫画版| 亚洲一区中文日韩| 一区二区三区免费观看| 亚洲精品高清在线观看| 夜夜精品视频一区二区 | 精品一区二区三区在线视频| 日韩高清中文字幕一区| 免费观看久久久4p| 久久精品99国产国产精| 捆绑调教一区二区三区| 韩国女主播一区| 国产精品一级在线| 99久久精品免费看| 色综合天天做天天爱| 91黄色激情网站| 欧美精品日韩一本| 精品日韩一区二区| 国产日本一区二区| 中文字幕一区二区三区不卡在线| 亚洲精品免费在线播放| 亚洲午夜电影网| 美女网站在线免费欧美精品| 国产精品91一区二区| a美女胸又www黄视频久久| 色中色一区二区| 欧美一级理论片| 日本一区二区综合亚洲| 亚洲免费观看高清完整版在线 | 国产裸体歌舞团一区二区| 风间由美性色一区二区三区| 91精品福利在线| 欧美大片日本大片免费观看| 中文字幕av一区二区三区高| 一区二区成人在线视频| 精品系列免费在线观看| 91麻豆精品视频| 日韩欧美国产一区二区三区| 亚洲手机成人高清视频| 免费在线观看视频一区| 成人avav在线| 欧美成人欧美edvon| 欧美日韩国产在线观看| 亚洲欧美日韩系列| 亚洲精品免费播放| 色婷婷久久久亚洲一区二区三区| 一本大道久久a久久综合| 欧美一级黄色录像| 国产精品拍天天在线| 日日摸夜夜添夜夜添精品视频| 国产精品99久久久久| 91麻豆精品国产91久久久 | 久久国产精品区| 成人av在线播放网站|