電力座標轉換TM2,TWD67,TWD97的原始程式碼!

之前有寫一點工作上自用的小程式,用MS的PPC程式編譯器寫得很灰心,
後來掏CoCo買了一套MobileVB,寫來順手多了,這套程式編輯器直接掛在
VB 6.0下,只要是會VB的人很快就能上手,現在提供原始碼,讓有興趣的人
去修改,不過要先去AppForge網站下載編譯程式才能把專案打開做修改.
程式碼下載:http://attach.mobile01.com/attach/200406/mobile01-ffc5aab1162f4bf6e78a5564179accd9.zip
2004-06-10 15:29 發佈
謝謝你了!
先下載,另外請問要引用這程式會有著作權的問題嗎?
原始演算法是那個老外網站抄來的,其中的TWD67->TWD97有一個算法是用7参數
轉換,可是我看不懂.只好用4參數轉換法.
引用這個程式碼無版權問題,都讓你DownLoad,不用介意版權了其實只要會VB的人
就可照著寫出來.
用MS的eVB也可以修改,那個"確定"按鈕的click程式碼如下:

Private Sub Button1_Click()
On Error Resume Next
'X_Factor = 0.00001549
'Y_Factor = 0.000006521

Select Case UCase(Mid(Pole(0).Text, 1, 1))
Case "J", "M", "P"
XX = 90000
Case "A", "D", "G", "K", "N", "Q", "T", "V"
XX = 170000
Case "B", "E", "H", "L", "O", "R", "U", "W"
XX = 250000
Case "C", "F"
XX = 330000
End Select

Select Case UCase(Mid(Pole(0).Text, 1, 1))
Case "A", "B", "C"
YY = 2750000
Case "D", "E", "F"
YY = 2700000
Case "G", "H"
YY = 2650000
Case "J", "K", "L"
YY = 2600000
Case "M", "N", "O"
YY = 2550000
Case "P", "Q", "R"
YY = 2500000
Case "T", "U"
YY = 2450000
Case "V", "W"
YY = 2400000
End Select

If Len(Pole(1).Text) > 4 Then '如果第2組編號有個位數的數值 , 例 AH0012
a = CLng(Mid(Pole(1).Text, 5, 1))
b = CLng(Mid(Pole(1).Text, 6, 1))
Else '如果第2組編號沒有個位數的數值 , 例 AH00
a = 0
b = 0
End If

'算出TM2座標
lblTM2X.Caption = XX + CLng(Mid(Pole(0).Text, 2, 2)) * 800 + _
(Asc(UCase(Mid(Pole(1).Text, 1, 1))) - 65) * 100 + _
CLng(Mid(Pole(1).Text, 3, 1)) * 10 + a ' A 的 ASC值為 65
lblTM2Y.Caption = YY + CLng(Mid(Pole(0).Text, 4, 2)) * 500 + _
(Asc(UCase(Mid(Pole(1).Text, 2, 1))) - 65) * 100 + _
CLng(Mid(Pole(1).Text, 4, 1)) * 10 + b

'轉換TM2為TWD67的經緯度
X67 = CDbl(lblTM2X.Caption)
Y67 = CDbl(lblTM2Y.Caption)
EE = 121 + (X67 - 250000) / 101745.445
NN = 24 + (Y67 - 2655032.3) / 110754.8256
E_Deg = Int(EE): lbl67E(0).Caption = E_Deg
N_Deg = Int(NN): lbl67N(0).Caption = N_Deg
EE = EE - E_Deg
NN = NN - N_Deg
E_Min = Int(EE * 60): lbl67E(1).Caption = E_Min
N_Min = Int(NN * 60): lbl67N(1).Caption = N_Min
EE = EE * 60 - E_Min
NN = NN * 60 - N_Min
E_Sec = Round((EE * 60), 1): lbl67E(2).Caption = E_Sec
N_Sec = Round((NN * 60), 1): lbl67N(2).Caption = N_Sec

''轉換TWD67為TWD97的經緯度

X97 = X67 + 807.8 + X_Factor * X67 + Y_Factor * Y67
Y97 = Y67 - 248.6 + X_Factor * Y67 + Y_Factor * X67
EE = 121 + (X97 - 250000) / 101745.445
NN = 24 + (Y97 - 2655032.3) / 110754.8256
E_Deg = Int(EE): lbl97E(0).Caption = E_Deg
N_Deg = Int(NN): lbl97N(0).Caption = N_Deg
EE = EE - E_Deg
NN = NN - N_Deg
E_Min = Int(EE * 60): lbl97E(1).Caption = E_Min
N_Min = Int(NN * 60): lbl97N(1).Caption = N_Min
EE = EE * 60 - E_Min
NN = NN * 60 - N_Min
E_Sec = Round((EE * 60), 1): lbl97E(2).Caption = E_Sec
N_Sec = Round((NN * 60), 1): lbl97N(2).Caption = N_Sec

End Sub

把這一段剪下,貼到eVB就OK了.
這不錯,改一改丟去VB.net上也可以用 :)
砍美眉,救小白,快找腋魔俠Online~
怎麼抓觸控筆的座標哩?
我們要不要來寫個 PPC 透過藍芽當 PC 的 touch pad.
請問有編譯好的執行檔嗎?
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?