2013-03-06 40 views
6

Tôi có một vấn đề về thuật toán nhỏ.Vĩ độ/Kinh độ và mét

Tôi đang phát triển một ứng dụng Android. Tôi nhận tọa độ GPS. Ví dụ: vĩ độ: 23.23907, kinh độ: 50.45786.

Vì vậy, tôi nhận được một điểm. Tôi muốn tính toán chi tiết giới hạn trên điểm này cộng hoặc trừ 5 mét. I.e .:

[23.23907 - 5 meters ; 23.23907 + 5 meters] 
[50.45786 - 5 meters ; 50.45786 + 5 meters] 

Cách tính toán này?

Cảm ơn bạn rất nhiều!

+2

Kiểm tra out this: http://stackoverflow.com/questions/639695/how-to-convert-latitude-or-longitude-to-meters – Trinimon

+0

có thể trùng lặp [tìm tọa độ ở một khoảng cách nào đó từ nguồn] (http: // stackoverflow.com/questions/14398378/finding-a-coordinate-at-some-distance-from-the-source) – Joni

Trả lời

14

Công thức haversine có thể được đơn giản hóa rất nhiều khi bạn làm việc theo hướng bắc-nam và đông tây.

Nếu chu vi của trái đất là C, điểm cách d km về phía nam của một điểm nhất định là 360 * d/C độ về phía nam. Điểm d km về phía đông là 360 * d/(C * cos (vĩ độ)) độ về phía đông. Cô sin trong mẫu số xuất phát từ thực tế là độ dài của kinh độ tại một vĩ độ nhất định ngắn hơn đường xích đạo bởi nhiều điều đó.

Vì vậy, nếu the Earth's circumference là 40075.04 km, để di chuyển 5 m về phía bắc/nam, bạn sẽ thêm/trừ 0.0000449 từ vĩ độ và sử dụng cùng một kinh độ. Để di chuyển 5 m về phía tây/đông, bạn sẽ sử dụng cùng một vĩ độ và cộng/trừ 0,0000449/cos (vĩ độ) đến kinh độ. Đừng quên về các trường hợp cạnh mặc dù: gần cực bạn phải kẹp vĩ độ đến 90 °, và gần kinh độ 180 ° bạn sẽ có quá thêm hoặc trừ 360 ° để giữ kinh độ trong phạm vi chính xác.

Với con số của bạn phạm vi hóa ra là xấp xỉ:

latitude: [23.23903 ; 23.23911] 
longitude: [50.45781 ; 50.45791] 

Cập nhật: Lưu ý rằng điều này vẫn giả định rằng Trái đất là một khối cầu hoàn hảo, which it's not. Hệ thống GPS ví dụ mô hình trái đất như một ellipsoid, nơi đường xích đạo là 6378.137km và các cực ở 6356.7523142km từ trung tâm của Trái đất. Sự khác biệt là khoảng 1/300 và rất quan trọng đối với nhiều ứng dụng, nhưng trong trường hợp này, nó nằm trong lề lỗi.

Chỉnh sửa công thức cho kinh độ phải đơn giản vì các giá trị song song vẫn là vòng tròn: bạn chỉ cần hoán đổi cos(latitude) cho hệ số chính xác. Việc tính toán correct latitude khó hơn vì các kinh tuyến không phải là hình tròn mà là hình elip, và chiều dài hồ quang của hình elip không thể được tính toán bằng các hàm cơ bản, vì vậy bạn phải sử dụng các xấp xỉ.

+0

Cảm ơn rất nhiều, điều này thật đơn giản! – Apaachee

+0

@AntoineMathys: đúng, tôi đã thêm ghi chú vào đó. – Joni

4

Tôi muốn thêm một nhận xét rất quan trọng (đối với người lãnh đạo hoặc cho những người đã bị lãng quên này):

cosin được tính trên vĩ độ theo radian và không có trong độ.

chuyển đổi: radian = PI/180 * độ


(Tôi xin lỗi vì bản thân mình để làm cho một câu trả lời, nhưng với danh tiếng hiện tại của tôi là 35 tôi không thể viết bình luận)

Các vấn đề liên quan