【问题标题】:Generating maps Dynamically动态生成地图
【发布时间】:2011-06-10 20:20:49
【问题描述】:

我希望以类似于标志性的伦敦地铁 [tube] 地图的风格生成交通地图。

这些地图会不时更改,并且需要很多地图,因此我希望从数据库或数据集动态生成它们,而不是在inkscape [或类似的] 中手动绘制它们。

有谁知道是否有任何库 api 等可以帮助完成这项任务,或者有任何关于如何 [或如何不] 执行此任务的一般建议?

我认为 svg 将是解决此问题的最佳方式,而且可能需要基本的交互性。

我在 php 中工作,否则它是 GDlib、ImageMagick ?

提前致谢。

.k

【问题讨论】:

  • 您确实可以即时绘图。请参阅:php.net/manual/en/book.image.php。但是,图像处理需要大量典型的最大内存限制。您是否考虑过使用某种管理界面(或触发任何数据更改的侧脚本)来 a)在更改时插入数字,然后 b)重新创建静态图像?这种方式客户端请求不需要处理任何实际的图像创建。

标签: php image-processing map svg


【解决方案1】:

嗯,答案真的不在于如何使用 GD 或 ImageMagick,有相应的手册。至于辅助库,大多数库都专注于图形,其他任何你必须自己编写的东西。作为一种解决方案,您最好的选择是让您的管理界面在后端数据发生更改时生成图像并缓存图像,因为没有理由每次有人访问它时都构建图像。

对于生成地图,我认为您最好的选择是定义具有一条或多条“线”的站点,这些“线”确定与周围站点的某种关系指标,以及 x、y。您可能只需要确定一个“父”站,因为您只是从 a-b 画线。这样一来,您就可以按照通常在实际火车上渲染它们的方式定位它们,使用线路和周围的车站来绘制映射。

听起来不是一个太难的问题。 3张桌子:

  • 车站 [stationid,name,x,y,meta1,meta2],
  • 展示位置 [placementid,stationid,lineid,parentstationid],
  • 行 [lineid,name,meta1,meta2,colour,etc]。

SVG 会非常擅长这种事情,您可以避免整个图像构建和缓存过程,但要小心浏览器支持问题。

听起来是个很有趣的项目,祝你好运:)

【讨论】:

    【解决方案2】:

    当我需要从数据库中的数据生成图表时,我使用的一种策略是以某种 XML 方式(例如 Oracle SQLX 或 Cocoon XSP/ESQL 或 eXist-db XQuery)提取数据并通过 XSLT 处理它生成 SVG。如果您不想编写任何代码(当然 XSL 除外 ;-),那么好的旧 Cocoon 非常适合这种工作。

    SVG 本身可以加载到一些图形工具中进行重新处理。

    【讨论】:

      【解决方案3】:

      这些地图会不时更改 需要时间和很多,所以 而不是手动绘制它们 inkscape [或类似的] 我希望 让它们从一个动态生成 数据库或数据集。

      如果我处于您的位置,我要做的第一件事就是尝试证明 Google Maps API 不适用于您的应用程序。然后,也许,证明 ArcGIS 不起作用。 (即使它们不起作用,它们也被广泛使用,您可以在简历中添加线条。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多