Bản đồ liên kết phù hợp và ý tưởng? [đóng cửa]


44

Tôi đang sử dụng OpenStreetMap và mạng đường vectơ của nó và tôi muốn triển khai thuật toán so khớp bản đồ.

Hiện tại tôi có thể, đối với từng vị trí GPS, để lấy đoạn đường gần nhất và tính toán hình chiếu của vị trí này cho đoạn đó, giống như trên hình ảnh này (Ghim màu đỏ là vị trí GPS thuần túy, màu xanh lam là đoạn được ánh xạ và màu Xanh lục vị trí được ánh xạ):

nhập mô tả hình ảnh ở đây

Tuy nhiên, do sự thiếu chính xác của GPS, đôi khi vị trí được ánh xạ nhảy từ phân đoạn này sang phân khúc khác và có thể cung cấp một số vị trí được ánh xạ không nhất quán theo thời gian.

Thuật toán hiện tại của tôi là rất cơ bản: từ vị trí GPS thuần túy, tôi có được phân đoạn gần nhất và quyết định rằng vị trí phù hợp được ánh xạ là trên vị trí này. Tôi biết rằng điều này có thể thực sự được cải thiện.

Tôi có thể tưởng tượng rằng việc đưa hướng xe vào tài khoản sẽ cải thiện việc khớp bản đồ nhưng bạn có biết cách tiếp cận nào khác cho phép tôi cải thiện trình so khớp bản đồ của mình không?

Tôi tìm kiếm bất kỳ liên kết và / hoặc phần mềm nguồn mở?


4
bạn có thể thêm một vòng tròn - Google sử dụng tiếp nhận tế bào và tạo một vòng tròn màu xanh nhạt để hiển thị vị trí xấp xỉ của bạn. Bạn ứng dụng có vẻ tốt, làm việc tốt. Nếu bạn có dữ liệu vectơ, bạn có thể chụp đến dòng gần nhất từ ​​điểm GPS của mình - xem bài đăng của blog
Mapperz

4
Từ khóa bạn đang tìm kiếm là Map Map. Chủ đề lớn.
Uffe Kousgaard

1
Uffe là đúng, phù hợp với bản đồ. Kiểm tra bài viết này để biết một vài cách tiếp cận: cens.ucla.edu/~mhr/cs219/maps/white00.pdf
lexicore

Cảm ơn! lexicore, giấy đang được gửi đến máy in của tôi khi tôi gõ này. Thời gian để có được một cái nhìn tổng quan. Cảm ơn vi đương link.
Scrrr

Tôi sẽ cải thiện Thuật toán, bằng cách cố gắng bám vào đường thực tế, thay vì chỉ các đỉnh.
Devdatta Tengshe

Câu trả lời:


11

Việc chiếu các điểm lên đường như bạn đang làm có thể thực hiện trực tiếp trong PostGIS. Tôi đã viết về một thời gian trước đây, ở đây

Nhưng để giải quyết vấn đề của bạn khi các điểm gần với phân khúc sai hơn phân khúc đúng có lẽ đây có thể là một cách tiếp cận khả thi.

  1. Xây dựng một danh sách các điểm
  2. Hãy thử các giải pháp được đề xuất trong Thuật toán cho các phân đoạn khớp để khớp với toàn bộ dòng thay vì chỉ từng điểm một

Thx cho câu trả lời của bạn. Dự đoán là OK: Tôi đã thực hiện nó (không thông qua ST_Closest vì nó không có sẵn trong spatialite mà tôi đang sử dụng nhưng điều đó vẫn ổn). Tôi cũng chỉ nhìn vào Câu hỏi mà bạn đề cập và tìm hiểu về sự tồn tại của "khoảng cách Hausdorff" này có thể thú vị để xem xét.
yonel

10

Sau khi đọc Câu hỏi của bạn và các Câu trả lời khác nhau, tôi đã quan tâm đến vấn đề này. Sau khi đọc một chút về các thuật toán so khớp bản đồ, tôi đã hiểu như sau:

  • Để khớp vị trí gps với đường, bạn cần dữ liệu đường thực tế ở định dạng vector
  • Nó sẽ giúp nếu bạn có trọng lượng khác nhau cho các con đường khác nhau. Vì vậy, cơ hội của một điểm phù hợp với đường cao tốc sẽ cao hơn, sau đó với một đường bên.
  • Bạn cần phải lấy lịch sử và tốc độ của việc đọc gps. Ví dụ: nếu điểm gps đã khớp với làn bên trong một thời gian dài, bạn nên tính đến điều đó và không khớp trực tiếp với đường cao tốc. -Sự khớp thực tế được thực hiện bằng nhiều kỹ thuật thống kê.

Để đọc thêm, tôi đề nghị như sau:


Vâng, tôi cũng đã đọc và bắt đầu chơi với việc thực hiện một thuật toán đơn giản mà tôi có thể mở rộng. Cho đến nay tôi đã tải xuống một số dữ liệu từ OSM và tôi đang chơi với cách tôi có thể lưu trữ (và truy cập) nó tốt nhất cho mục đích của mình. Đó là một chủ đề thú vị tôi nghĩ. :) Tôi sẽ cập nhật câu hỏi này khi tôi có một cái gì đó hoạt động. Ngoài ra, cảm ơn bạn đã liên kết!
Scrrr

Tôi sẽ cẩn thận với việc sử dụng trọng số "Vì vậy, khả năng điểm phù hợp với đường cao tốc sẽ cao hơn, sau đó phù hợp với đường bên." ... Điều đó phụ thuộc vào dữ liệu đầu vào và có thể rất sai.
underdark

@Devdatta, tôi nhận được 404 trên liên kết thứ hai. Thay vì tôi chỉ chỉnh sửa nó đi, bạn có một liên kết thay thế?
Châu

Tôi không có một liên kết truy cập miễn phí đến bài viết đó. Nhưng nếu bạn đang ở trong một thiết lập học tập. Bài viết nên có sẵn sau khi tìm kiếm nhanh
Devdatta Tengshe

@Chau: Tôi tìm thấy PDF tại địa chỉ: researchgate.net/profile/Alain_Kornhauser/publication/...
Devdatta Tengshe

7

Trả lời câu hỏi của riêng tôi!

1- Một .pdf đẹp tôi vừa tìm thấy về chủ đề này:

http://safari.ce.sharif.edu/file/2011-06-06/259/2009_An%20off-line%20map-matching%20alacticm%20for%20incomplete%20map%20database.pdf

cũng liên kết đến việc triển khai mã nguồn mở C ++ của trình so khớp bản đồ được mô tả trong tài liệu: http://eden.dei.uc.pt/~camara/files/mgemma.zip
(đây là trình so khớp bản đồ ngoại tuyến, theo cách hiểu của tôi là rằng nó tính toán các vị trí khớp với bản đồ với đường dẫn WHOLE làm đầu vào và không thể thực hiện điều đó một cách nhanh chóng cho từng vị trí).

2- Sau đó, tôi vừa đọc bài này một cách sâu sắc và theo ý kiến ​​của tôi thực sự tốt: https://dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/4860/1/velaga.pdf "Phát triển một thuật toán lập bản đồ tôpô dựa trên trọng lượng nâng cao cho các hệ thống vận chuyển thông minh "
Thuật toán được giải thích rõ ràng và các giá trị điều chỉnh trọng lượng cũng được cung cấp trong tài liệu.


4

Có rất nhiều công việc về khớp bản đồ, hãy xem bài viết này để khảo sát ngắn gọn về một số công việc khá gần đây (trước năm 2007). Gần đây, các cách tiếp cận dựa trên Mô hình Markov ẩn dường như hoạt động khá tốt trong các trường hợp thông thường. Ví dụ, hãy xem bài viết này từ năm 2009. Ý tưởng và mô hình khá đơn giản và không nên gây cho bạn quá nhiều khó khăn để thực hiện ngay cả khi bạn không quen thuộc với HMM (trong trường hợp này, đừng hoảng sợ, có rất nhiều các hướng dẫn và giới thiệu trực tuyến)


1
Chỉ cần nhận ra rằng Dự án Barefoot mà tôi đã đề cập trong câu trả lời của mình được dựa trên bài báo mà @Nick khuyến nghị.
nik

4

Phương pháp này còn được gọi là "vector conflation". Có một trang Wiki dành riêng ( http://wiki.openstreetmap.org/wiki/Conflation ) cung cấp tổng quan chung và liệt kê các gói phần mềm (Nguồn mở) để thực hiện kết hợp vectơ đường như "plugin kết hợp JOSM", "sáp nhập Potlatch 2 công cụ "," RoadMatcher "(cho OpenJUMP) và các công cụ khác.


1
Tôi luôn nghĩ rằng sự kết hợp là một cái gì đó bạn làm với hai lớp dòng thay vì khớp các điểm trên các dòng. Có thực sự giống nhau không?
underdark

4

Đối với thuật toán Ghép bản đồ, tùy thuộc vào việc bạn cần xử lý thời gian thực hay ngoại tuyến. Trong trường hợp sau, thuật toán tiên tiến có thể xử lý ~ 1000 điểm mỗi giây. Yêu cầu bộ nhớ phụ thuộc vào phạm vi bảo hiểm của khóa học. Chúng tôi đã quản lý để siết chặt mạng lưới đường OSM của hành tinh trên khoảng 16 Gb cho mục đích đó.

Ngoài ra, bạn cần phải phân biệt đồ khớp từ con đường suy luận : đây là hai quá trình riêng biệt tùy thuộc nếu bạn có dữ liệu tần số cao hay thấp. Khi bạn có tương đối ít điểm (ví dụ: 1 dữ liệu mỗi km trong bối cảnh đô thị), đó là suy luận đường dẫn vì thường có một số giả định được thực hiện để đoán thiết bị đang di chuyển ở đâu. Suy luận đường dẫn thường khó hơn nhưng ít gặp vấn đề hơn với các thiết bị hiện đại / giá thu thập dữ liệu.

Bạn có thể kiểm tra hồ sơ của tôi để biết API phù hợp với bản đồ trực tiếp trên OSM: ví dụ, nó sử dụng kết hợp tôpô và hoạt động tốt với dữ liệu xe hơi nổi.


Bạn có thể mở rộng trên các thuật toán mà bạn đang sử dụng? Và làm thế nào để giảm kích thước mạng lưới đường bộ giúp đỡ?
Devdatta Tengshe

Bảo hiểm ít hơn = mạng nhỏ hơn để giữ trong bộ nhớ. Điều đó tăng tốc tính toán một chút. Tài liệu tham khảo: trb.metapress.com/content/p31485vw72645686
Fabrice Marchal

3

Strava Slide mô tả cách dữ liệu theo dõi tích lũy trên mạng lưới đường có thể hoạt động giống như "thung lũng" và cách tuyến đường được đề xuất sẽ "rơi vào vị trí" giống như một chuỗi hạt.


2

Sau khi thử nghiệm hầu hết các khung đã đề cập trước đó, tôi đã tìm thấy Barefoot và thực sự có thể giới thiệu nó. Nó sử dụng các mô hình markov ẩn như một cách tiếp cận phù hợp với bản đồ xác suất (chi tiết trong bài báo của họ "Đưa xe lên bản đồ" ) và được triển khai trong Java. Nó là nguồn mở và được phát triển tích cực bởi Bộ CarIT của BMW.


2

Chủ đề được gọi là khớp bản đồ. Nhưng như một xấp xỉ đầu tiên rất tốt, có lẽ đủ tốt để chỉ cần tra cứu các điểm gần nhất cho mọi điểm gps (mà không có bất kỳ sửa chữa nào đoán đúng cách).

Dự án mã nguồn mở của tôi có tên là graphhopper không phải là thứ hoạt động cho iOS ( cập nhật : hiện tại nó cũng hoạt động trên iOS), cũng không phải là ứng dụng Android đầy đủ chức năng cho những gì bạn muốn. Nhưng bạn có thể sử dụng phiên bản máy chủ để xây dựng ứng dụng iOS hoặc sử dụng bản demo Android ngoại tuyến để bắt đầu. Tôi đã phát hành thuật toán khớp bản đồ ở đây , chỉ là một nguyên mẫu thô nhưng hoạt động tốt đến mức đáng ngạc nhiên.


1

Hãy thử và có được một số dữ liệu thử nghiệm tốt. Sử dụng GPS ghi nhật ký theo dõi độ chính xác cao hơn, ngoài các điểm ghi nhật ký trên thiết bị mục tiêu của bạn. Điều này sẽ xác định lỗi trong GPS và trong dữ liệu OSM cơ bản. Biết các ngưỡng hợp lý sẽ giúp việc thiết kế thuật toán dễ dàng hơn nhiều.


1

Nếu bạn có thể lấy dữ liệu đường cho khu vực của mình, bạn có thể quan tâm đến Chụp nhanh hàng loạt tự động với FOSS

Tùy thuộc vào việc bạn muốn vẽ dữ liệu trong thời gian thực hay bạn dự định thực hiện một số xử lý hậu kỳ tại PC sau đó, GRASS có thể giúp ích.



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.