2010-10-20 28 views
6

Tôi đã sử dụng đá quý geokit và geokit-ray cho đường ray trong một thời gian nhưng một câu hỏi mà tôi chưa tìm thấy là cách tìm trung tâm tổng hợp cho một tập hợp các điểm. Tôi biết cách tính khoảng cách giữa hai điểm, nhưng không quá 2.sử dụng geokit hoặc đá quý ruby ​​khác để tính trung tâm của một loạt tọa độ địa lý

Lý do của tôi là, tôi có một loạt điểm tất cả trong cùng một thành phố ... tất cả mọi thứ là hoàn hảo thành phố sẽ có một trung tâm Tôi chỉ có thể sử dụng, nhưng một số thành phố, nói berlin không có một trung tâm hoàn hảo. Họ có nhiều trung tâm và tôi chỉ muốn sử dụng toàn bộ danh sách các địa điểm tôi có trong cơ sở dữ liệu của mình để tính toán trung tâm cho một phân phối cụ thể. Có ai khác có vấn đề này không?

Bất kỳ mẹo nào? Cảm ơn

Trả lời

4

Chưa bao giờ sử dụng Geokit trước đây, toán học đằng sau hoạt động này tương đối đơn giản để tự thực hiện. Giả sử các điểm này bao gồm vĩ độ và kinh độ, bạn chỉ cần vĩ độ trung bình và kinh độ trung bình cho tất cả các điểm. Khi bạn có hai giá trị đó, bạn đã có điểm trung tâm của mình.

points = [[14, 19], [-5, 57], [23, -12]] 
points.transpose.map{|c| c.inject{|a, b| a + b}.to_f/c.size} 

Tương tự như vậy, nếu những điểm này là Geokit::LatLng đối tượng thay vì một mảng 2 chiều, bạn có thể chỉ ánh xạ giá trị lat và lng của họ chỉ đơn giản bằng cách gọi #to_a về họ trước đó.

points.map(&:to_a).transpose.map{|c| c.inject{|a, b| a + b}.to_f/c.size} 
+1

Nó không đáng giá, mọi thứ hơi phức tạp hơn là chỉ lấy trung bình nếu bạn đang tìm kiếm độ chính xác: http://www.geomidpoint.com/calculation.html –

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