Eşleşen bağlantılar ve fikirler [kapalı]


43

OpenStreetMap ve vektörel yol ağını kullanıyorum ve bir harita eşleştirme algoritması uygulamak istiyorum.

Şu anda, her GPS konumu için, en yakın yol parçasını alabilmeyi ve bu konumun bu kesime izdüşümünü hesaplayabilmeyi başardım. eşlenmiş konum):

görüntü tanımını buraya girin

Bununla birlikte, GPS'in doğruluğu yetersizliğinden dolayı, bazen haritalanmış konum bölümden diğerine atlar ve zaman zaman bazı tutarsız haritalanmış konumlar sağlayabilir.

Mevcut algoritmam çok basit: saf GPS konumundan en yakın segmenti alıyorum ve eşlenen konumun bu noktada olduğuna karar veriyorum. Bunun gerçekten geliştirilebileceğini biliyorum.

Aracın yönünü dikkate almanın harita eşleşmesini iyileştireceğini, ancak harita eşlememi iyileştirmemi sağlayacak başka bir yaklaşım biliyor musunuz?

Herhangi bir bağlantı ve / veya açık kaynaklı yazılım arayabilir miyim?


4
bir daire ekleyebilirsiniz - Google hücre alımını kullanır ve yaklaşık konumunuzu göstermek için açık mavi bir daire oluşturur. Uygulamanız iyi görünüyor, iyi iş. Eğer GPS noktadan en yakın çizgiye oturur vektör veri varsa - Paul Ramsey tarafından yayını görebilen blog.cleverelephant.ca/2008/04/snapping-points-in-postgis.html
Mapperz

4
Aradığınız anahtar kelime Harita Eşleme'dir. Büyük konu.
Uffe Kousgaard

1
Uffe haklı, harita eşleştirmesi. Bu makaleyi birkaç yaklaşım için inceleyin: cens.ucla.edu/~mhr/cs219/maps/white00.pdf
lexicore

Teşekkürler! lexicore, bu yazıyı yazarken kağıt yazıcıma gönderiliyor. Genel bakış zamanı geldi. Bağlantı için teşekkürler.
scrrr

Algoritmayı iyileştiririm, aynı zamanda sadece köşelerden ziyade asıl yola girmeye çalışırım.
Devdatta Tengshe,

Yanıtlar:


11

Noktaların zaten yaptığınız gibi çizgiye yansıtılması doğrudan PostGIS'te yapılabilir. Yazdığım bir süre önce, burada

Ancak, noktalar yanlış segmente doğru segmentten daha yakın olduğunda probleminizi çözmek için belki bu olası bir yaklaşım olabilir.

  1. Puanların bir çizgisini oluşturun
  2. Algoritmalarda önerilen çözümleri , sadece nokta nokta yerine tüm çizgiye uyacak şekilde eşleştirmeye çalışın

Cevabınız için teşekkürler. Projeksiyon tamam: Ben zaten yapıyorum (ST_Closest üzerinden değil çünkü kullandığım spatialite içinde mevcut değil ama sorun değil). Ayrıca, bahsettiğiniz ve bakması ilginç olabilecek bu “Hausdorff mesafesinin” varlığı hakkında bilgi edindiğiniz soruya bakıyordum.
yonel

10

Sorunuzu ve çeşitli Cevapları okuduktan sonra, bu soruna ilgi duydum. Harita eşleme algoritmaları üzerinde biraz okuma yaptıktan sonra, aşağıdakileri anladım:

  • Gps Konumunu yola eşleştirmek için gerçek yol verisine vektör formatında ihtiyacınız vardır.
  • Farklı yollar için farklı ağırlıkların olması durumunda yardımcı olacaktır. Böylece, bir otoyolla eşleşen bir noktaya ait bir şans, daha sonra bir yan çizgiyle eşleşecek şekilde artacaktır.
  • Geçmişi ve gps okuma hızını almak gerekir. Örneğin, gps noktası uzun bir süre boyunca yan şeritle eşleşiyorsa, bunu hesaba katmalı ve doğrudan otoyolla eşleştirmemelisiniz. -Gerçek eşleştirme, çeşitli istatistiksel teknikler kullanılarak yapılır.

Daha fazla okuma için aşağıdakileri öneririm:


Evet, ayrıca genişleyebileceğim basit bir algoritma uygulayarak okuyordum ve oynamaya başladım. Şimdiye kadar OSM'den bazı veriler indirdim ve amaçlarımı en iyi nasıl saklayabileceğimi (ve erişebileceğimi) ile oynuyorum. Bu ilginç bir konu olduğunu düşünüyorum. :) Çalışan bir şey bulduktan sonra bu soruyu güncelleyeceğim. Ayrıca, bağlantılar için teşekkür ederiz!
scrrr

Ağırlıkları kullanırken dikkatli olacağım "Yani, otoyolla eşleşen bir noktaya gelme şansı daha yüksek olacak, sonra bir yan çizgiyle eşleşecek." ... Bu giriş verilerine bağlı ve çok yanlış gidebilir.
underdark

@Devdatta, ikinci linke 404 alıyorum. Benim yerine sadece düzenlemekten başka, alternatif bir bağlantınız var mı?
Chau

Bu makaleye ücretsiz erişim bağlantım yok. Fakat eğer akademik bir ortamdaysanız. Makale hızlı bir aramadan sonra hazır olmalı
Devdatta Tengshe


7

Kendi soruma cevap veriyorum!

1- Güzel bir pdf bu konuyu yeni buldum:

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

Ayrıca , belgede açıklanan harita eşleştiricisinin C ++ açık kaynak kodlu bir uygulamasına da bağlanır : http://eden.dei.uc.pt/~camara/files/mgemma.zip
(bu bir çevrimdışı harita eşleştiricisidir, benim anlayışım haritanın konumlarını WHOLE yolu ile giriş olarak hesapladığını ve her pozisyon için anında yapamayacağını).

2- sonra, bunu daha derinlemesine okudum ve bence gerçekten çok iyi: https://dspace.lboro.ac.uk/dspace-jspui/bitstream/2134/4860/1/velaga.pdf "Geliştirme Akıllı Ulaşım Sistemleri için Geliştirilmiş Ağırlığa Dayalı Bir Topolojik Harita Eşleştirme Algoritması "
Bu algoritma açıkça açıklanmış ve ağırlık ayar değerleri dokümanda da verilmiştir.


4

Harita eşleştirme konusunda çok fazla çalışma var bu makaleye bakın , oldukça yakın tarihli çalışmaların kısa bir incelemesi için (2007'den önce). Son zamanlarda, Gizli Markov Modellerine dayanan yaklaşımların normal şartlar altında oldukça iyi performans gösterdiği görülmektedir. Örneğin, bu makaleyi 2009'dan itibaren inceleyin. Fikir ve model oldukça basittir ve HMM'lere aşina olmasanız bile (size bu durumda panik yapmayın, çok şey var ait öğreticiler ve tanıtımları çevrimiçi)


1
Sadece fark Barefoot -Proje ben @ Nick önerir kağıda dayalı cevabım bahsetti.
nik

4

Yönteme "vektör konflasyonu" da denir. "JOSM conflation plugin", "Potlatch 2 birleştirme gibi yol vektörü birleştirme işlemini gerçekleştirmek için genel bir genel bakış ve liste (Açık Kaynak) yazılım paketleri listeleyen özel bir Wiki sayfası ( http://wiki.openstreetmap.org/wiki/Conflation ) var "," RoadMatcher "aracı (OpenJUMP için) ve diğerleri.


1
Konflasyonun her zaman çizgileri eşleştirmek yerine iki çizgi katmanıyla yaptığınızı düşündüm. Gerçekten aynı mı?
underdark

4

Harita Eşleme algoritmaları için, gerçek zamanlı veya çevrimdışı işleme gerekip gerekmediğinize bağlıdır. Daha sonraki durumda, son teknoloji algoslar, saniyede ~ 1000 puan işleyebilir. Hafıza gereklilikleri, kursun kapsamına bağlıdır. Gezegenin OSM yol ağını bu amaçla yaklaşık 16 Gb'ye kadar sıkıştırmayı başardık.

Ayrıca, ayırt etmek gerekir harita eşleştirmesini gelen yol çıkarsama : bunlar yüksek veya düşük frekanslı verileri var ise iki ayrı süreç olarak bulunmaktadır. Nispeten az puanınız olduğunda (örneğin, her kilometrede bir kentsel bağlamda 1 veri), cihazın nereye gittiğini tahmin etmek için yapılması gereken bir varsayım olduğu için , bu yol çıkarımıdır . Yol çıkarımı genellikle daha zor olmakla birlikte, modern cihazlarla / veri toplama fiyatıyla daha az problem yaşıyor.

Profilimi doğrudan OSM'de harita eşleştirmesi yapan bir API için kontrol edebilirsiniz: topolojik eşleştirme kullanır ve örneğin yüzer araç verileriyle iyi çalışır.


Kullanmakta olduğunuz algoritmaları genişletebilir misiniz? Ve karayolu ağının boyutunun azalması nasıl yardımcı olur?
Devdatta Tengshe

Daha az kapsama alanı = bellekte saklanacak daha küçük ağ. Bu hesaplama biraz hızlandırır. Referanslar: trb.metapress.com/content/p31485vw72645686
Fabrice Marchal

3

Strava Slide , bir yol ağı üzerinden biriken iz verilerinin "vadiler" gibi nasıl davranabileceğini ve önerilen rotanın bir boncuk dizisi gibi nasıl "yer değiştireceğini" açıklar.


2

Daha önce belirtilen çerçevelerin çoğunu test ettikten sonra Barefoot'u buldum ve gerçekten önerebilirim. Olasılıklı bir harita eşleştirme yaklaşımı olarak gizli markov modellerini kullanır (kendi makalesinde "Arabanı haritaya koyma " ). Açık kaynak kodlu ve aktif olarak BMW'nin CarIT Departmanı tarafından geliştirildi.


2

Konuya harita eşleme denir. Ancak, ilk çok iyi bir yaklaşım olarak, her gps noktası için en yakın noktaları aramanız yeterli olacaktır (doğru yolu tahmin eden herhangi bir düzeltme olmadan).

Graphhopper adlı Açık Kaynak projem, iOS için çalışan bir şey değildir ( güncelleme : şimdi de iOS'ta çalışır) ve ne istediğinizi tam olarak işlevsel bir Android uygulamasına da sahip değildir. Ancak, bir iOS uygulaması oluşturmak için sunucu sürümünü veya başlangıçta çevrimdışı Android demosunu kullanabilirsiniz. Harita eşleme algoritmasını burada yayınladım , sadece kaba bir prototip ama şaşırtıcı derecede iyi çalışıyor.


1

İyi bir test verisi edinmeye çalışın. Hedef cihazınızdaki kayıt noktalarına ek olarak, daha yüksek hassasiyetli bir izleme günlüğü GPS kullanın. Bu, GPS'teki ve altındaki OSM verilerindeki hataları tanımlayacaktır. Hassas eşikleri bilmek algoritmayı tasarlamayı çok daha kolay hale getirecektir.


1

Bölgeniz için yol verisi bulabilirseniz , FOSS ile otomatik toplu yapışma ile ilgilenebilirsiniz.

Verileri gerçek zamanlı olarak çizmek isteyip istemediğinize bağlı olarak veya daha sonra PC'nizde işlem sonrası işlem yapmayı planlıyorsanız, GRASS size yardımcı olabilir.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.