2009-08-10 25 views
88

Có một phép tính đơn giản nào tôi có thể thực hiện để chuyển đổi km thành giá trị mà tôi có thể thêm vào một float lat hoặc lon để tính toán một hộp giới hạn cho các tìm kiếm không? Nó không cần phải hoàn toàn chính xác.Tính toán đơn giản để làm việc với lat/lon + km khoảng cách?

Ví dụ: nếu tôi được cung cấp lat/lon cho London, Anh (51.5001524, -0.1262362) và tôi muốn tính khoảng cách 25km về phía đông/tây từ điểm đó và khoảng cách 25km về phía bắc/phía nam điểm đó, tôi cần phải làm gì để chuyển đổi 25km thành số thập phân để thêm vào các giá trị ở trên?

Tôi đang tìm kiếm một quy tắc-of-thumb chung, ví dụ: 1km == +/- 0.XXX

Edit:

tìm kiếm ban đầu của tôi cho "lon lat" didn' t trả về kết quả này:

How to calculate the bounding box for a given lat/lng location?

Câu trả lời được chấp nhận dường như thích hợp cho các yêu cầu của tôi.

Trả lời

171

Quá trình chuyển đổi tương đối như sau:

  • Latitude: 1 ° = 110,574 km
  • Kinh độ: 1 ° = 111,320 * cos (vĩ độ) km

Điều này không hoàn toàn chính xác cho việc làm phẳng cực của Trái Đất - cho rằng bạn có thể muốn có một công thức phức tạp hơn bằng cách sử dụng ellipsoid tham chiếu WGS84 (mô hình được sử dụng cho GPS). Nhưng lỗi có thể không đáng kể cho mục đích của bạn.

Nguồn: http://en.wikipedia.org/wiki/Latitude

Thận trọng: Hãy nhận biết rằng tọa độ LatLong được thể hiện ở các mức độ, trong khi cos chức năng trong hầu hết (? Tất cả) ngôn ngữ thường chấp nhận radian, do đó một degree to radians conversion là cần thiết.

+0

Ý của bạn là cos (kinh độ) trong công thức thứ hai? – Odys

+1

Bạn đã nghĩ ra điều này bằng cách nào? Tôi đang thiếu một cái gì đó, bạn có thể vui lòng xây dựng trên các tính toán kinh độ? Ty – Odys

+4

@Odys: Nếu bạn so sánh hai điểm nằm trên cùng một dòng kinh độ (bắc/nam), chúng nằm trên một vòng tròn lớn và hệ số chuyển đổi chỉ là chu vi cực của Trái đất chia cho 360 độ. Nhưng nó khác với các phép đo đông-tây, bởi vì (ngoại trừ đường xích đạo) bạn không đo dọc theo "vòng tròn lớn", do đó chu vi "" tại một vĩ độ nhất định nhỏ hơn. Và yếu tố điều chỉnh hóa ra là cosin của vĩ độ. –

3

Nếu bạn đang sử dụng Java, Javascript hoặc PHP, sau đó có một thư viện mà sẽ thực hiện những tính toán chính xác, sử dụng một số amusingly phức tạp (nhưng vẫn nhanh) lượng giác:

http://www.jstott.me.uk/jcoord/

+0

Trang web hiện có thư viện. – midfield99

0

http://www.jstott.me.uk/jcoord/ - sử dụng này thư viện

  LatLng lld1 = new LatLng(40.718119, -73.995667); 
      LatLng lld2 = new LatLng(51.499981, -0.125313); 
      Double distance = lld1.distance(lld2); 
      Log.d(TAG, "Distance in kilometers " + distance); 
Các vấn đề liên quan