Translate

Thứ Hai, 2 tháng 11, 2015

Phần mềm Tính khoảng cách theo tọa độ Google Maps

1- Dng tọa độ thập phân trên Google Maps:
Ta nhấn một điểm bất kỳ trên Google Maps, kết quả thông báo là một chuỗi gồm 2 nhóm số thập phân cách nhau bởi dấu phẩy và space, vd:
14.123456, -102.056789
Nhóm số trước là vĩ độ, sau là kinh độ.
Vĩ độ hay kinh độ đều viết dạng như nhau nhưng kinh độ có thể dài hơn. Mỗi nhóm số được đặc trưng bởi 4 phần, ví dụ:
 -102.056789
* Phần ký tự đầu tiên là dấu - nếu vĩ độ thuộc bán cầu nam, hoặc kinh độ thuộc bán cầu tây. Thuộc bán cầu bắc hay bán cầu đông sẽ không có dấu -
* Phần số trước chấm là phần nguyên của số. Vĩ độ gồm từ 1 đến 2 ký tự. Kinh độ từ 1 đến 3 ký tự.
* Dấu chấm . bắt buộc phải có tách phần lẽ thập phân phía sau
* Phần lẽ gồm 6 số thập phân, có thể ít hơn.

2- Dng tọa độ trên Google Earth với độ - phút - giây:
42°55'34.87'' S 124°45'17.77'' E
* Phần ghi độ: là 1 đến 2 ký tự của vĩ độ, 1 đến 3 ký tự của kinh độ, buộc kèm ký hiệu độ °. Nút xanh cuối góc phải: nhấn để điền ký hiệu độ °

* Phần ghi phút: là 2 ký tự, buộc kèm ký hiệu phút '
* Phần ghi giây: là 2 ký tự số nguyên của giây, dấu chấm . tiếp là 2 ký tự phần lẽ thập phân của giây, buộc kèm ký hiệu giây ''
=> Các số độ, phút và giây viết dính liền nhau. Sau đó có space và tiếp đến là chữ Hoa N hay S cho vĩ độ bắc hay nam bán cầu, hoặc chữ Hoa E hay W cho kinh độ đông hay tây (với đường Greenwich)

3- Phần mềm tính khoảng cách theo tọa độ



Download:

3a- Chức năng tính khoảng cách:
Các nút Clear để xóa dữ liệu ở ô cùng màu bên dưới. Để nhanh, bạn copy tọa độ từ Google Maps và nhấn nút Paste để đưa dữ liệu vào.
Bạn cũng có thể gõ trực tiếp các số liệu, khi gõ: màu chữ là màu đỏ vì chưa đúng định dạng, cho đến khi bạn gõ số liệu chính xác, màu chữ tự động thành đen.
Sau khi có tọa độ điểm đầu và điểm cuối, nhấn nút dài "Tính khoang cách…", kết quả hiện lên, như trong hình là 17458.6m
3b- Chức năng chuyển đổi độ-phút-giây ra số thập phân và ngược lại.
* Ô dài màu lục non bên trái tự động chuyển đổi tọa độ từ dạng thập phân, ra dạng độ-phút-giây kề dưới.
* Ô dài màu xanh nhạt bên phải tự động chuyển đổi tọa độ từ dạng độ-phút-giây thành dạng thập phân ở ô lục đậm kề trên.
Khi gõ, chữ màu đỏ. Bạn gõ đúng số liệu theo định dạng, màu chữ thành đen và tự chuyển đổi.
Nút xanh cuối góc phải: nhấn để điền ký hiệu độ °


4- Dành cho các bạn thích VB6
4a- RegEx (Regular Expressions)
* Mẫu lọc tọa độ dạng số thập phân:
"^(-?)([\d]|[1-8][\d]).([\d]{3,})(, )(-?)([\d]|[1-9][\d]|1[0-7][\d]).([\d]{3,})$"

* Mẫu lọc tọa độ dạng độ-phút-giây-lẽ thập phân và N, S, E, W:
"^([\d]|[1-8][\d])°([0-5][\d])'([0-5][\d].[\d]{2})''( [NS] )([\d]|[1-9][\d]|1[0-7][\d])°([0-5][\d])'([0-5][\d].[\d]{2})''( [EW])$"

4b- Các Function:
* Function chuyển thập phân ra độ-phút-giây:
Public Function DeciToDMS_dec(ByVal Deci As String) As String
    On Error Resume Next ''Ex: Deci = -13.345678, -167.789012
    Dim stemp$, lso#, MM$()
    Dim NS As String * 1, EW As String * 1
'''truongphu - camduc - camlam - khanhhoa
    stemp = Trim(Deci)
    MM = Split(stemp, ", ")
    If Left(MM(0), 1) = "-" Then NS = "S" Else NS = "N"
    If Left(MM(1), 1) = "-" Then EW = "W" Else EW = "E"
    lso = Abs(CDbl(MM(0))) ' lây sô duong
    stemp = Int(lso) & "°" ' lây phân nguyên
    lso = lso - Int(lso) 'lây phân thâp phân
    lso = lso * 60 'nhân 60
    stemp = stemp & Format(Int(lso), "00") & "'" ' Format lây phân nguyên luôn là 2 sô
    lso = lso - Int(lso) 'lây phân thâp phân
    lso = lso * 60
    stemp = stemp & Format(lso, "00.00") & "''" & " " & NS & " "

    lso = Abs(CDbl(MM(1))) ' lây sô duong
    stemp = stemp & Int(lso) & "°" ' lây phân nguyên
    lso = lso - Int(lso) 'lây phân thâp phân
    lso = lso * 60
    stemp = stemp & Format(Int(lso), "00") & "'" ' Format lây phân nguyên luôn là 2 sô
    lso = lso - Int(lso)
    lso = lso * 60
    stemp = stemp & Format(lso, "00.00") & "''" & " " & EW
    DeciToDMS_dec = stemp
End Function

* Function độ-phút-giây ra thập phân:
Public Function DMS_decToDeci(ByVal DegMinSec As String) As String
    On Error Resume Next ''Ex: DegMinSec = 17°33'12.63'' N 103°47'52.85'' E
    Dim stemp$, MM$(), VV$(), KK$()
    stemp = Replace(DegMinSec, "  ", " ")
    stemp = Trim(stemp)
    MM = Split(stemp, " ")
    stemp = Replace(MM(0), "''", "")
    stemp = Replace(stemp, "'", "°")
    VV = Split(stemp, "°")
'''truongphu - camduc - camlam - khanhhoa
    stemp = Replace(MM(2), "''", "")
    stemp = Replace(stemp, "'", "°")
    KK = Split(stemp, "°")
   
    If MM(1) = "S" Then stemp = "-"
    stemp = stemp & Format(CDbl(VV(0)) + (CDbl(VV(1)) + CDbl(VV(2)) / 60#) / 60#, "#.000000")
    If MM(3) = "W" Then stemp = stemp & ", -" Else stemp = stemp & ", "
    stemp = stemp & Format(CDbl(KK(0)) + (CDbl(KK(1)) + CDbl(KK(2)) / 60#) / 60#, "#.000000")
    DMS_decToDeci = stemp
End Function

* Function đổi độ thành Radian
Public Function Rads(ByVal Degree As Single) As Single
  Const PI = 3.1416
  Rads = Degree / 180 * PI  ' Ðôi Ðô thành Radian

End Function

Không có nhận xét nào:

Đăng nhận xét

Trực tuyến

Mục lục Toàn bộ (theo thứ tự thời gian)

Trực tuyến