2013-06-28 35 views
9

Tôi muốn tính khoảng cách giữa khoảng. 100.000 mã ZIP khác nhau. Tôi biết về mapdist chức năng trong ggmap góiXác định khoảng cách giữa hai mã ZIP (lựa chọn thay thế cho mapdist)

mapdist hoạt động hoàn hảo:

library(ggmap) 
mapdist('Washington', 'New York', mode = 'driving') 

#   from  to  m  km miles seconds minutes hours 
# 1 Washington New York 366284 366.284 227.6089 13997 233.2833 3.888056 


mapdist('20001', '10001', mode = 'driving') 

# from to  m  km miles seconds minutes hours 
# 1 20001 10001 363119 363.119 225.6421 13713 228.55 3.809167 

Tuy nhiên, mapdist dựa trên API Google Geocoding đó là tùy thuộc vào giới hạn truy vấn của 2.500 geolocation yêu cầu mỗi ngày.

Bạn có biết bất kỳ mã r thay thế nào để tính khoảng cách giữa hai điểm sử dụng một dịch vụ khác có giới hạn yêu cầu cao hơn (như Bản đồ Nokia hoặc Bing) không?

+0

Thay vào đó, bạn có thể sử dụng 'gdist' từ gói' Imap' tính toán [Khoảng cách vòng tròn lớn] (http://en.wikipedia.org/wiki/Great-circle_distance) nhưng tôi nghĩ bạn cần phải có được lat/tọa độ dài ... – agstudy

+0

@agstudy Điểm tốt. Ngoài ra còn có một công thức Haversine trong gói 'rdist' tôi tin. Lợi thế của việc làm theo cách này là bạn chỉ cần một tra cứu mã hóa địa lý cho mỗi điểm, thay vì một tra cứu mã hóa địa lý cho mỗi cặp điểm. Điều đó không quan trọng (nếu bạn chỉ muốn quan sát từ các cặp điểm khác nhau) hoặc có thể quan trọng rất nhiều (nếu tất cả các tuyến đường của bạn bắt đầu từ cùng một điểm) –

Trả lời

12

taRifx.geo::georoute (chỉ có sẵn here cho đến khi tôi đẩy ra một bản cập nhật khác, tại thời điểm này sẽ có sẵn qua install.packages) có thể sử dụng Bản đồ Bing (hỗ trợ tôi tin 25k mỗi ngày) và có thể trả lại khoảng cách.

georoute(c("3817 Spruce St, Philadelphia, PA 19104", 
      "9000 Rockville Pike, Bethesda, Maryland 20892"), 
      verbose=TRUE, returntype="time", 
      service="bing") 

Bạn sẽ có để có được một khóa API Bing Maps và đặt nó vào R cài đặt global của bạn (vị trí lý tưởng là trong .Rprofile), nhưng quan trọng là miễn phí:

options(BingMapsKey="whateverBingGivesYouForYourKey") 
+0

+1! đồ tốt. và 25k một ngày thực sự là một điểm tốt cho Bing. – agstudy

+1

Bạn cũng có thể sử dụng 'taRifx.geo :: geocode' để sử dụng Bing để mã hóa địa lý. –

+0

Mã hóa địa lý là quá trình tìm kiếm (lat/lon)? Xin lỗi tôi không biết thuật ngữ địa lý ... – agstudy

0

Nếu bạn bắt đầu phiên R mới và chạy library(ggmap) trong phiên mới, bạn có thể thực hiện 2500 truy vấn khác.

Chức năng distQueryCheck() cho biết số lượng truy vấn còn lại.