【问题标题】:Algorithm for schematizing (metro) maps用于模式化(地铁)地图的算法
【发布时间】:2010-10-15 00:53:31
【问题描述】:

这是一个很长的尝试,但我想我可以在开始肮脏的工作之前尝试一下。

我有一个项目来构建一个应用程序,该应用程序将针对定义的输入站(顶点)和线路(边),即一些公共交通的真实地图,将给定的地图模式化为地铁地图。我已经对该问题进行了一些研究,这是一个相当于 3-SAT 问题的 NP 完全问题。关于如何生成这样的地图,我也有一些理论上的想法,但还不够详细。

我正在寻找的是该问题的任何其他现有解决方案,某种伪代码,(几乎)任何其他编程语言中的一些真实代码等,任何可以减少我需要花在工作上的时间的东西算法本身,这将使我有更多时间来处理应用程序的其他方面。

如果有人看到任何可以帮助我的东西,我将非常感激。

【问题讨论】:

  • "...对于定义的输入站(顶点)和线(边),即一些公共交通的真实地图,将给定的地图模式化为地铁地图。"在这种情况下,不清楚“地图”和“地铁地图”之间的区别是什么。你能举个例子吗?
  • 您需要提供有关地铁地图不同约束的更多详细信息,例如应如何显示站名,应如何显示线路连接/交叉的车站,两条线路应如何遵循相同的路径显示?
  • 法线贴图是保留地标和地点之间关系的地图——也就是说,一切都按比例缩放。另一方面,地铁地图不会保留这些比例,而只是以视觉上吸引人的方式显示相关信息。目前,如何显示名字或十字架并不重要,我可以稍后再谈。最好是平行线并排显示,但这也是一种选择,任何我能拿到的底座都很好。
  • 无论如何,我认为你应该编辑你的帖子,试图区分真正的限制和偏好。如果你所有的限制都只是偏好,那么艺术家会比程序员做得更好:)
  • 尝试在您的答案中包含 [@name],以便通知另一部分

标签: algorithm math graph-algorithm


【解决方案1】:

如果您在 Google 上搜索“地铁地图布局问题”和“地铁地图线交叉”,您会发现很多参考资料,因为在过去 10 年中一直在非常积极地研究它。

这个问题似乎一点也不小,将“艺术”特征转化为数学约束似乎是最困难的任务之一。

无论如何,这里有三篇我觉得很有趣的出版物(在许多其他出版物中):

Metro Map Layout Using Multicriteria Optimization

Line Crossing Minimization on Metro Maps

The Metro Map Layout Problem

HTH!

【讨论】:

【解决方案2】:

与您的主题相似的研究:http://graphics.stanford.edu/papers/routemaps/

【讨论】:

    【解决方案3】:

    这只是一些关于挥手的建议 - 拿一点盐。

    我对“地铁”地图的概念是,线路倾向于八个主要方向之一,并且车站有规律地间隔。

    我假设您正在尝试将一组真实坐标转换为“地铁”坐标。

    我将从您的主要路线(例如,城市环线)开始,然后按重要性顺序逐步添加其他路线。

    对于每条路线,您都希望找到最接近的近似值,该近似值使用沿八个基本方向行驶的直线数量最少。您可以从实际坐标的边界框开始,将其拆分为网格,然后找到从网格正方形到网格正方形的“地铁”路线,然后连续优化该路线以减少弯道数量而不扭曲地图太多,并且尽可能不引入与其他路线的交叉点。

    完成此操作后,缩放每条线路,以使“地铁”视图中的连续站点相距相同。

    我的猜测是您仍然希望支持手动调整结果。

    祝你好运!

    【讨论】:

    • 感谢您的回复,我有类似的想法,包括手动调整。在我自己做之前,我只是希望有人能有一些代码让我开始。
    【解决方案4】:

    感觉像是一个计划问题。 看起来你的硬约束是:

    • 每个站点都必须在一个点上。一个点在网格上,点之间的距离为 X (我会在 2cm 上将此设为静态)

    • 同一地点不应有 2 个站点

    • 应该有足够的空间来绘制电台标签。请注意,可以为标签分配与分配站点的点不同的方向。

    • 应该有足够的空间来画地铁线。

    看起来你的软约束是:

    • 对于每个站点,最小化到指定给站点的点的实际地理位置距离。

    然后将类似 Drools Planner 之类的东西扔在上面,here's an example of hard and soft constraints for nurse rostering

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多