Làm thế nào để chuyển đổi một điểm của các điểm thành hướng đi bộ?


8

Hãy tưởng tượng bạn có một danh sách các điểm (vĩ độ + kinh độ) mà bạn đã ghi lại trước đó bằng máy thu GPS. Bây giờ, bạn cần chuyển đổi nó thành một đại diện bằng văn bản của tuyến đường bạn đi theo. Thí dụ:

  1. Bắt đầu tại Redmond Avenue 12
  2. Đi bộ 200 m
  3. Rẽ trái đến Another St.
  4. Đi bộ 100 m
  5. Dừng lại ở St. 10 khác
  6. Kết thúc

Nó không thực sự cần phải rất chi tiết. Ý tưởng đầu tiên xuất hiện trong đầu tôi là sử dụng một dịch vụ bên ngoài (google, yahoo ...) để đảo ngược mã địa lý từng điểm. Sau đó áp dụng một thuật toán đơn giản để viết tuyến đường khi tôi phát hiện ra một sự thay đổi trong tên đường phố.

Bất kỳ lời khuyên nào về thuật toán tốt nhất để sử dụng hoặc bất kỳ triển khai (mở) hiện có nào đều được chào đón. Nó dường như không tầm thường.


1
Có đáng để chỉ ra rằng nếu tôi được bảo Start at Redmond Avenue 12Walk 200 mtôi sẽ không biết phải đi theo hướng nào? Xin lỗi vì nitpicking.
đánh dấu

@fmark, cảm ơn bạn. Bạn cứng nhắc nhưng nó không quan trọng trong trường hợp này. Các hướng dẫn được hiển thị trước khi các điểm đã được ghi lại, như là một phần của hệ thống thính giác nội bộ. Mức độ chi tiết không quan trọng bằng việc cho phép người khác biết tuyến đường aproximate được theo dõi.
Guido

Câu trả lời:


4

Nếu bạn có thể sử dụng dịch vụ bên ngoài, API chỉ đường của Google sẽ cung cấp chức năng này trực tiếp. Nó hỗ trợ các điểm mốc dọc theo đường dẫn, vì vậy bạn có thể làm:

http://maps.google.com/maps/api/directions/json?origin=Redmond+Avenue+12,01864
&destination=Concord,MA&waypoints=lat1,long1|lat2,long2|lat3,long3&sensor=true

Điều này sẽ trả về một JSONtài liệu với stepsmỗi hướng.

Nếu bạn muốn tự làm điều này, bạn có một vài bước để bắt đầu xử lý chỉ đường: bạn sẽ cần một bộ dữ liệu để định tuyến các đường dẫn, chẳng hạn như OSM và một công cụ định tuyến như pgRouting . Một cái gì đó như OSM2PostGIS cung cấp các công việc nặng cần thiết để có được một thiết lập như thế này đang chạy. Sau đó, bạn sẽ muốn định vị lại từng điểm của mình lên cạnh gần nhất, có thể được thực hiện trong PostGIS với ST_Line_Locate_Point( tài liệu ). Giữa tham chiếu tuyến tính trong PostGIS và pgRouting, bạn sẽ có thể tạo các hướng đủ hợp lý.


1
Cảm ơn bạn. Tôi biết rằng dịch vụ được cung cấp bởi Google, nhưng nó chỉ cho phép 25 điểm trên đường dẫn. GPS lưu một điểm cứ sau 10 giây, do đó tôi sẽ đạt đến giới hạn trong vòng chưa đầy 5 phút.
Guido

2
Đúng vậy, nó sẽ giới hạn bạn tới 25 điểm, nhưng bạn có thể sử dụng độ phân giải ít hơn vì các đường dẫn sẽ đi theo các cạnh trong dữ liệu cơ sở của Google cho phần lớn tuyến đường. Ngoài ra, bạn có thể gửi nhiều truy vấn cho một tuyến đường, sau đó phân tích kết quả lại với nhau (cũng có một ví dụ trong API cho việc này).
scw
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.