2010-10-01 44 views
16

Tôi có hai vị trí GEO. Làm thế nào tôi có thể tính toán khoảng cách giữa chúng?Khoảng cách giữa hai địa điểm GEO

+1

http: // stackoverflow.com/questions/1420045/how-to-find-distance-from-the-latitude-và-longitude-of-two-locations – ArK

Trả lời

8

Tọa độ GPS là tọa độ địa lý trên hình cầu WGS84. Theo mô hình này, công thức của Vincenty cho kết quả độ chính xác dưới milimet. Đối với hầu hết các ứng dụng, đó là hoặc là quá mức cần thiết hoặc thực sự lừa đảo, vì bề mặt trái đất không được mô hình hóa bởi WGS84 với quy mô đó.

Bạn có thể so sánh accurracy các phương pháp khác nhau về khoảng cách tính toán on this page (liên kết bị hỏng; kiểm tra source code thay). Như bạn có thể thấy, sự gần đúng hình cầu và khoảng cách vi phân (sau này sử dụng định lý Pythagore với số liệu địa phương chính xác) là không chính xác cho nhiều trường hợp.

Trong số các phương pháp còn lại, đầu tiên sử dụng bán kính trung bình của hình cầu để chuyển đổi từ vĩ độ địa lý sang địa lý, trong khi thứ hai sử dụng quy tắc cosin để có kết quả chính xác hơn trong trường hợp khoảng cách 'nhỏ' ('nhỏ' chủ yếu phụ thuộc vào sự khác biệt về vĩ độ).

Tập lệnh riêng biệt chỉ chứa hai phương thức can be found here, cung cấp hàm số distance() và mong đợi bốn đối số: hai vĩ độ, chênh lệch về kinh độ (tất cả trong radian) và cờ boolean cho biết khoảng cách có nhỏ không .

+0

Tôi làm cách nào để sử dụng tập lệnh khoảng cách này? – powtac

+0

@powtac: đã thêm mã ví dụ vào http://mercurial.intuxication.org/hg/js-hacks/raw-file/tip/geo/distance.js; vui lòng sửa đổi tập lệnh để bao gồm các chuyển đổi lat/long nếu bạn thấy thuận tiện hơn ... – Christoph

+0

Tất cả các liên kết trong bài đăng này hiện đã bị vỡ. –

8

This page có mã JavaScript để tính toán khoảng cách của hai vị trí địa lý, nếu đó là những gì bạn đang theo dõi.

3

Tùy thuộc vào mức độ chính xác mà bạn muốn.

Bạn có thể thực hiện nó bằng phép tam giác tam giác cơ bản - tức là tính toán sự khác biệt giữa kinh độ của chúng, đó là một mặt; thì sự khác biệt giữa vĩ độ của họ, đó là thứ hai. Bây giờ bạn có thể tính toán mặt thứ ba (tức là khoảng cách thực tế giữa hai) một cách dễ dàng đủ với toán học cơ sở cơ sở.

Tuy nhiên, phương pháp đó bỏ qua độ cong của bề mặt trái đất, vì vậy nếu bạn cần tính đến điều đó, bạn sẽ cần phải bắt đầu thông minh hơn một chút. Nhưng bạn sẽ không cần phải lo lắng về điều đó trừ khi khoảng cách là khá lớn hoặc bạn cần một mức độ rất chính xác. Đối với hầu hết các mục đích, phương pháp trig cơ bản là tốt.

Điểm khác, tất nhiên là các phương pháp này cung cấp cho bạn một phép đo đường thẳng. Đây có thể là những gì bạn muốn, nhưng bạn cũng có thể muốn biết khoảng cách để đi du lịch - tức là trên đường. Điều này hoàn toàn khác, vì bạn cần có bản đồ chính xác của tất cả các con đường có liên quan. Nếu đây là những gì bạn cần, có thể dễ dàng ủy quyền cho dịch vụ bản đồ của Google (hoặc một trong các lựa chọn thay thế tương tự khác).

23

Nếu bạn sử dụng Google Maps API v3 bạn có thể tính toán khoảng cách như sau:

Bao gồm Google Maps JavaScript tập tin với các thư viện hình học:

http://maps.google.com/maps/api/js?sensor=true&libraries=geometry 

Khoảng cách có thể được đo lường ngay bây giờ bằng cách sử dụng phương pháp computeDistanceBetween():

var from = new google.maps.LatLng(49.004, 8.456); 
var to = new google.maps.LatLng(49.321, 8.789); 
var dist = google.maps.geometry.spherical.computeDistanceBetween(from, to); 
+0

Rất tốt nhưng đừng quên nó cho đến khi 25 000 yêu cầu mỗi ngày sau khi bạn phải trả tiền vì vậy hãy cẩn thận khi bạn sử dụng nó trên ứng dụng hoặc trang web của bạn. – Matohawk

+0

@Matohawk để tính toán khoảng cách không có truy vấn nào tới chương trình phụ trợ G được gửi! Vì vậy, không có giới hạn để sử dụng chức năng này hơn 25.000 lần một ngày. – powtac

+1

Cảm ơn, tôi không biết rằng nó có ý nghĩa nên chúng tôi không cần google api cho điều đó. Tôi tin rằng google tính toán trên máy chủ của họ giá trị để tối ưu hóa phép tính. – Matohawk

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