設定座標(校園地圖)


海洋大學校園週邊地圖(複製自Google Earth, <<下載>>)

地圖左上角10進制座標: 東經 121.77066  /  北緯 25.15373

地圖左上角60進制座標: 東經 121度46分14.376秒  /  北緯 25度09分13.428秒

地圖右下角10進制座標: 東經 121.78237  /  北緯 25.14711

地圖左上角60進制座標: 東經 121度46分56.532秒  /  北緯 25度08分49.596秒

 

Public Class Form1

 Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles  PictureBox1.MouseMove

  Label1.Text = "(" + Str(e.X) + "," + Str(e.Y) + ")"

 End Sub

End Class

在PictureBox1的MouseMove事件中顯示游標的座標訊息如下:

此座標為PictureBox1的原始座標,必須進行坐標平移與尺度轉換

座標轉換之步驟包含以下:

轉換函數公式如下:

1. 將游標XY座標分別換算為地圖10進位經緯座標如下

Function Degx(Byval x as single)

  Degx=121.77066+x*(121.78237-121.77066)/843

End Function

 

Function Degy(Byval y as single)

  Degy=25.14711+(520-y)*(25.15373-25.14711)/520

End Fuction

 

2. 將10進位座標轉換為60進位座標如下

Function DMS( ByVal x as single) as string     '將10進制轉為60進制

    dim d, m, s

    d = x \ 1         '取度

    m = (x - d) * 60 \ 1  '算分

    s =  ((x- d) * 60 - m) * 60  '算秒

    DMS = str(d) & "度" & str(m) & "分" & str(s) & "秒"

End Sub

 

如何改寫原程式碼 Label1.Text = "(" + Str(e.X) + "," + Str(e.Y) + ")"

將60進位的座標正確顯示如下?