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

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

?? shortpath.bas

?? 該系統能實現VB+Mapinfo的基本功能
?? 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一区二区三区免费野_久草精品视频
日本成人在线视频网站| 欧美日韩精品三区| 久久久亚洲精华液精华液精华液| 日本在线不卡视频| 亚洲一卡二卡三卡四卡五卡| 欧洲人成人精品| 国产精品综合一区二区| 亚洲在线成人精品| 国产精品卡一卡二| 欧美精品xxxxbbbb| 欧美系列亚洲系列| 成人激情开心网| 成人福利视频在线| 亚洲成人中文在线| 欧美高清在线一区| 欧美色窝79yyyycom| 国产精品综合二区| 久久成人免费网站| 人人爽香蕉精品| 天天色 色综合| 亚洲成人av在线电影| 一区二区三区免费| 亚洲影院在线观看| 一区二区三区日韩精品| 亚洲精品高清视频在线观看| 中文字幕一区二区三区不卡| 中文字幕在线播放不卡一区| 日本一区二区动态图| 久久久777精品电影网影网| 国产午夜精品美女毛片视频| 久久久精品国产免大香伊| 26uuu色噜噜精品一区二区| 精品国产乱码久久| 久久精品在这里| 亚洲免费观看视频| 一区二区三区四区不卡在线| 石原莉奈在线亚洲三区| 美美哒免费高清在线观看视频一区二区 | 日本人妖一区二区| 黑人巨大精品欧美一区| 国产福利一区二区三区视频 | 日韩免费看的电影| 中文字幕av不卡| 一区二区成人在线观看| 国产精品亚洲专一区二区三区| 狠狠久久亚洲欧美| 91影院在线观看| 亚洲精品一线二线三线无人区| 久久精品一二三| 日韩电影在线免费| 国产91丝袜在线观看| 69p69国产精品| 亚洲欧美区自拍先锋| 国产乱码精品一品二品| 欧美日韩激情一区二区三区| 国产人妖乱国产精品人妖| 亚洲一区二区三区不卡国产欧美| 精品一区二区三区蜜桃| 欧美性猛片aaaaaaa做受| 久久久一区二区三区捆绑**| 亚洲6080在线| 日本韩国一区二区三区视频| 26uuu国产电影一区二区| 亚洲mv大片欧洲mv大片精品| 成人永久看片免费视频天堂| 精品国产一区二区三区忘忧草| 一区二区三区在线观看动漫| 高清国产一区二区三区| 久久久久97国产精华液好用吗| 久久国产三级精品| 日韩一区和二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 色天使久久综合网天天| 亚洲欧美激情视频在线观看一区二区三区| 热久久一区二区| 91精品国产91久久综合桃花| 亚洲国产精品自拍| 在线成人av影院| 免费不卡在线视频| 欧美不卡视频一区| 国产麻豆精品在线| 国产精品初高中害羞小美女文| 欧美亚洲综合久久| 日韩二区在线观看| 精品日本一线二线三线不卡| 国产一区二区三区黄视频 | 色婷婷久久综合| 亚洲国产婷婷综合在线精品| 9191成人精品久久| 国产东北露脸精品视频| 亚洲蜜臀av乱码久久精品蜜桃| 色屁屁一区二区| 久久国产三级精品| 中文字幕一区二区三区在线观看| 91久久精品午夜一区二区| 一区二区三区不卡视频| 欧洲av在线精品| 久久国产尿小便嘘嘘尿| 亚洲欧洲制服丝袜| 欧美精品一区二区在线观看| 91在线观看视频| 国产一区二区主播在线| 亚洲最大的成人av| 久久精品一区四区| 欧美sm极限捆绑bd| 欧美日韩中文字幕一区| 波多野结衣精品在线| 久久精品99国产精品日本| 亚洲激情中文1区| 国产精品丝袜一区| 国产无遮挡一区二区三区毛片日本| 欧美在线影院一区二区| 不卡av在线网| 国产iv一区二区三区| 九九久久精品视频| 国产一区二区三区免费观看| 国产精品每日更新| 欧美一级视频精品观看| 国产一区二区三区黄视频| 精品国产露脸精彩对白| 国产精品一二三区在线| 亚洲精品乱码久久久久久日本蜜臀| 欧美裸体一区二区三区| 国产精一区二区三区| 国产一区二三区| 国产在线国偷精品免费看| 日韩精品亚洲专区| 亚洲国产精品影院| 天天综合日日夜夜精品| 午夜电影网亚洲视频| 热久久国产精品| 国产一区二区三区在线观看免费| 久久精工是国产品牌吗| 国产在线不卡一区| 色哟哟在线观看一区二区三区| 99re8在线精品视频免费播放| 色狠狠一区二区| 欧美视频日韩视频| 精品女同一区二区| 亚洲国产成人自拍| 亚洲图片欧美色图| 亚洲成年人网站在线观看| 免费成人在线观看| 国产在线精品国自产拍免费| 成人avav影音| 欧美电影在线免费观看| 亚洲精品在线观看网站| 日本一区二区三区dvd视频在线| 亚洲欧美视频在线观看视频| 麻豆一区二区99久久久久| 99久久精品国产毛片| 欧美视频精品在线| 中文字幕第一区第二区| 五月天国产精品| 91麻豆swag| 久久久久久久久免费| 亚洲一二三四在线| 高清视频一区二区| 精品国产露脸精彩对白| 一区二区三区成人在线视频| 国产中文字幕精品| 在线观看网站黄不卡| 国产精品私人自拍| 国产精品亚洲一区二区三区妖精| 在线观看日韩国产| 久久久久久麻豆| 蜜芽一区二区三区| 一本到不卡精品视频在线观看| 国产午夜三级一区二区三| 麻豆国产欧美一区二区三区| 欧美性极品少妇| 亚洲少妇30p| 99国产精品久久久久| 欧美经典一区二区| 国产成人av电影在线播放| 日韩限制级电影在线观看| 日韩精品一二三四| 欧美一区二区精美| 琪琪一区二区三区| 91精品国产高清一区二区三区| 亚洲第一激情av| 欧美精选一区二区| 美女在线视频一区| 精品国产伦一区二区三区观看方式 | 欧美一区二区在线观看| 亚洲18女电影在线观看| 欧美性videosxxxxx| 免费看日韩精品| 久久久久高清精品| 91蜜桃网址入口| 亚洲一级二级三级| 欧美精品色综合| 国产一区二区三区国产| 国产精品丝袜久久久久久app| 丰满少妇久久久久久久| 亚洲免费在线看| 久久综合久久鬼色中文字| www.日韩在线| 亚洲国产精品精华液网站| 欧美一区二区三区不卡|