Benzer Harita Yollarını Bulma


9

Eğim / mesafe / şekil / vb gibi özniteliklere sahip bir harita üzerinde belirli bir rota verildiğinde, benzer (öznitelikler açısından) ancak farklı bir noktada başlayan bir yol bulabilen bir algoritma arıyorum dünyanın farklı bir bölgesinde.

Açıkçası hemen hemen her durumda mükemmel bir uyum bulmak imkansız olacaktır, ancak ideal olarak benzerliği ölçme yöntemi ile "en iyi eşleşen" bir sistem türünü arıyorum.

Aramaya çalıştım, ancak sorgularımın çoğu Harita Eşleştirme sorunları veya aynı yol boyunca GPS noktaları için rota benzerliği ile geliyor. Doğru terminolojiyi bilmiyor olabilirim! Bu sorunun bir adı var mı? Bunu çözmek için hangi algoritmayı kullanabilirim?


1
"Güzergahlar" bir hat (yol / yol / vb.) Ağına kısıtlanıyor mu? Algoritmanın en yakın rotanın kaynak rota olduğuna karar vermesini nasıl önlersiniz, ancak sadece biraz daha kısa / daha uzun?
Spacedman

1
"Nitelikler açısından benzerdir" mantıklıdır, ancak çok çeşitli olası çözümlere izin verecek kadar belirsizdir. Daha spesifik olabilir misiniz?
whuber

@ Spacedman Evet, rotalar bir yol ağıyla sınırlandırılmıştır. Amaç, Çin'den bir yol rotası almak ve evime yakın, çok benzer bir yol bulmak. Bu kısıtlamayı gerçekten uygulamanın en iyi yolundan emin değilim.
Chris Foster

@whuber Üzgünüm. Açıklığa kavuşturmak için, benzer eğimler (rotanın benzer alanlarında) ve benzer toplam mesafe olması en önemlisidir.
Chris Foster

Yanıtlar:


6

Harita eşleme aradığınızdan farklı. Eşleme, bir hata gps gözlemini doğrusal sokak ağıyla eşleştirmenin uygun yoludur. Sorunuzun GPS noktalarıyla da bir ilgisi yok. Çünkü statik rotaların (geçici olmayan) desenini karşılaştırmak ve benzer olanları bulmak istiyorsunuz. Ne arıyorsun olan doğrusal özelliğin (CBS değil yani makine öğrenme anlamında) eşleşmesi . GPS izi ile ilgili literatür, "Yörünge (uzamsal zamansal) Desen Madenciliği" başlığı altında yer alan mekansal-zamansal desen eşleşmesidir.

Daha fazla bilgi için, " uzamsal yörünge ile hesaplama " kitabından (Yörünge Kalıbı Madenciliği) bölümüne bakınız . Çeşitli rotaları veya yörüngeleri karşılaştırmak ve karşılaştırmak (yani azimut, segment uzunluğu, sinuosite, beeline vb.) Hakkında birçok fikir edineceksiniz.


4

Sorunuz vektör verilerine dayanmaktadır. Ancak soruyu bir raster analizine dönüştürme konusunda size daha iyi hizmet edildiğini düşünüyorum. Bunu yaparken de bir dereceye kadar sorunuzu genelleştireceksiniz.

Sorunuzu çözmek için bir algoritma aşağıdaki gibi olacaktır:

  1. Orijinal rotayı rasterleştirin ve her bir hücrenin parametrelerini belirtimlerinize (eğim / mesafe / şekil / vb.) Göre yapın. Bir yolun mevcut olması da bir parametredir. Bu, n nesneli tek boyutlu bir liste haline gelir -> rutin (n)

resim açıklamasını buraya girin

  1. Orijinal rotanızın en az bir kopyası olduğunu bildiğiniz bir test alanı bulun. Bu alanı orijinal rotanızla aynı parametrelerle rasterleştirin. Bu raster a.

resim açıklamasını buraya girin

  1. Raster a'da 1,1 hücresiyle başlayın ve tüm raster boyunca düzenli bir şekilde hareket edin.
  2. Her hücre için bir işlev çağrılır. Bu işlev, hücrenin rutin listeye (0) karşılık gelip gelmediğini kontrol eder, eğer öyleyse aynı kontroller çevredeki hücreler üzerinde yapılır. Başarıyla, fonksiyon hücreyi rutin (1) ve benzeri için kontrol etmeye devam eder. Eğer rutin listeye (n) kadar başarılı olursa, koordinatlar rutin listede (n) alternatif bir rota olarak saklanır
  3. Rasterdeki son piksele ulaşıncaya kadar tekrarlayın.

resim açıklamasını buraya girin

Yukarıda, rota listesindeki parametrelere göre rotalar için üç seçenek göreceksiniz.

Ayıca:

  • Yukarıdaki örnek rasterler sadece bir parametreye göre ölçülür. Gerçek dünya meydan okumanızda bir piksel birkaç parametrenin birleşimi olacaktır.
  • Bu göreve sahip olursam, yukarıda belirtilen işlevi yinelemeli bir şekilde yazmaya çalışırdım. Bu daha verimli olur ve aynı başlangıç ​​noktasına sahip birkaç alternatif parkurun olduğu "yön değiştirme parkurları" sorununu çözer.
  • Rotanızın dönüşleri sorun olarak kabul edilmez. Bu, yanıtların orijinal rotanızla aynı sırada bağlanan piksellerin bir listesi olduğu anlamına gelir. Bükülmeler ve dönüşler sorun değil. Kendiliğinden kesişen yolların çözümün bir parçası olmaması için algoritmayı yazmanız gerekebilir.
  • Algoritmayı, oyundaki ölçütler için farklı tolerans düzeyleri ayarlayabileceğiniz şekilde tasarlayın. Bu size daha fazla esneklik sağlayacaktır.
  • Operatif bir ortamda, spesifikasyonlarınıza göre piksellerin meydana gelme alanı taranarak tüm süreç daha verimli hale getirilebilir. Eğer orada değillerse, anket alanı negatiftir, bu nedenle alanı analiz etmek için zaman kullanmanın bir nedeni yoktur.
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.