2010-10-15 44 views
6

這是一個很遠的鏡頭,但我想我可能會在開始骯髒的工作之前嘗試。圖解化(城域)地圖的算法

我有一個項目來構建一個應用程序,該應用程序將針對已定義的輸入工位(頂點)和線條(邊緣),即一些公共交通的真實地圖,將給定地圖模式化爲地鐵地圖。我對這個問題做了一些研究,這是一個相當於3-SAT問題的NP完全問題。我也有一些關於如何生成這樣的地圖的理論觀點,但它們不夠詳細。

我在找的是這個問題的任何其他現有解決方案,某種僞代碼,(幾乎)任何其他編程語言中的某些真實代碼等等,任何會減少我需要花費工作的時間在算法本身上,這將返回給我更多時間來處理應用程序的其他方面。

如果有人見過任何可以幫助我的東西,我會非常感激。

+1

「......對於已定義的輸入工位(頂點)和線條(邊緣),即一些公共交通的實際地圖,將給定地圖模式化爲地鐵地圖。」在這種情況下,「地圖」和「地鐵地圖」之間的區別是什麼還不清楚。你能提供一個例子嗎? – fairidox 2010-10-15 02:02:57

+0

您需要提供有關地鐵地圖不同約束條件的更多詳細信息,例如應該如何顯示車站名稱,車站應該如何顯示線路加入/交叉的站點,應該如何顯示沿着同一路徑的兩條線路? – 2010-10-15 06:00:58

+0

法線貼圖將是一張地圖,其中地標和地點之間的關係是保存的 - 也就是說,所有東西都按比例縮放。另一方面,地鐵地圖不會保留這些比例,而只是以一種視覺上吸引人的方式顯示相關信息。 在這個時刻,名字或十字架如何顯示並不重要,我總是可以在以後看到。最好是平行線彼此相鄰顯示,但這也是一種選擇,任何可以讓我掌握的基礎都是好的。 – Adis 2010-10-15 10:43:27

回答

5

如果您因谷歌搜索「地鐵地圖佈局問題」和「地鐵地圖線路過境」,您會發現很多參考文獻,因爲它在過去10年中一直非常積極地進行了研究。

這個問題似乎並非微不足道,將「藝術」特徵轉化爲數學約束似乎是最困難的任務之一。

反正這裏有三個出版物,我發現有趣的開始(以及許多,許多人):

Metro Map Layout Using Multicriteria Optimization

Line Crossing Minimization on Metro Maps

The Metro Map Layout Problem

HTH!

+0

考慮到時間較短,我們最終實現了自己的非常有限的算法,這對於項目範圍來說足夠好。 如果其他人對這個問題感興趣,這個出版物是一個非常好的開始: http://www1.informatik.uni-wuerzburg.de/pub/wolff/pub/nw-dlhqm-10.pdf – Adis 2012-04-16 08:51:58

+0

好的工作!恭喜! – 2012-04-16 12:27:34

0

這只是一些建議與handwaving - 採取一撮鹽。

我對「地鐵」地圖的看法是線條傾向於八個基本方向之一,並且電臺有規律的間隔。

我假設你試圖將一組真實座標轉換爲「metro」座標。

我會從您的主要路線(例如城市循環)開始,然後按重要性遞增地添加其他路線。

對於每條路線,您都希望找到使用最少數量的沿八個基本方向行進的直線的最接近的近似值。您可以通過從真實座標的邊框開始,將其分割爲網格,然後找到從網格方形到網格方形的「metro」路線,然後逐步細化該路線以減少彎曲數量而不扭曲地圖如果可能的話,也不會引入與其他路線的交叉口。

這樣做後,縮放每一行,使連續的站在「城市」視圖上相距相同的距離。

我的猜測是你仍然想支持手動調整結果。

祝你好運!

+0

感謝回覆,我有這樣的想法,包括手動調整。我只是希望在我自己做這件事之前,有人可能會有一些代碼讓我開始。 – Adis 2010-10-15 10:47:39

0

感覺就像一個規劃問題。 看起來像你的硬約束是:

  • 每個站必須在一個點。一個點是與X點之間的距離的網格(我會想辦法讓這種靜態的2釐米)

  • 不應該有2個站上的相同點

  • 應該有足夠的空間來繪製車站標籤。請注意,標籤可以分配從站點分配的不同方向。

  • 應該有足夠的空間來繪製地鐵線路。

看起來你的軟約束是:

  • 對於每個站,儘量減少分配給該站的點實際地理位置距離。

然後丟掉Drools Planner這樣的東西,here's an example of hard and soft constraints for nurse rostering