【问题标题】:Mapping 400MB KML data in Google Maps - how?在 Google 地图中映射 400MB KML 数据 - 如何?
【发布时间】:2011-05-22 08:41:39
【问题描述】:

回复,

我有一个 400MB 大的 KML 文件 - 1 周的行程和 5000 公里的记录。它已经剥离了非必要的数据。压缩后的 GPX 文件大约为 80MB 或 2.5MB。 KML 文件大约 30MB。我不确定有多少航点,但肯定有几十万。

如何在 Google 地图上绘制地图?有没有办法在不影响曲目质量的情况下减少文件?我正在使用 jQuery 和 Google Maps API v2 或 v3。

谢谢。

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

    我将一个 5 MB 的 kml 文件减少到大约 1.3 MB。第一步是删除所有轨迹点和许多路径点。一条直线只需要两个点,但 GPS 接收器可能会记录几十个。

    有一些自动化工具可以过滤曲目,但我更喜欢手动编辑。
    第二步,优化kml文件中的样式信息。 Google 地球桌面 (GED) 对于编辑路径和设置样式很有用,但它似乎永远不会删除样式,因此您最终会得到一兆字节(在我的情况下)重复的相同样式。

    kml 文件是纯文本格式,因此任何文本编辑器都可用于合并样式和删除重复项。这个任务很繁琐,很可能会出错,所以我找到了一个解决方法:

    制作一个重复的 kml 文件作为备份并删除所有样式信息。这既简单又快捷。保存文件并在 GED 中打开它。
    我将所有具有共享样式的元素组织到 kml 文件夹中。然后设置每个文件夹的样式,从而为数百个路径或航点定义一个定义。

    GED 中有一个最终缺陷(错误?);当您共享文件夹样式时,下面的所有文件夹(包括非子文件夹的文件夹)都会继承该样式。
    这是一个奇怪的行为 - 我认为这是一个错误!
    因此,将要更改的文件夹拖到列表底部。设置共享样式,然后将其拖回顶部或中间。

    我有步行、公共交通路线、长途路径、公共汽车站、火车站、停车场、酒吧、兴趣点和危险的文件夹,所以我需要设置大约九种样式。 这只需要一两分钟,因此它是一种不需要额外软件的高效解决方案。

    当我向文件中添加新的 walks 和 pubs 时,重复的样式开始再次累积,因此有时必须重新进行优化。 This is the optimized kml file.

    【讨论】:

      【解决方案2】:

      当您使用 Geosetter 创建 KMZ 时出于某种神奇的原因 > 导出到 google earth。它创建的 KMZ 虽然比 5mb 加载到 google earth 大得多,但没问题。

      【讨论】:

        【解决方案3】:

        值得考虑将您的 KML 文件导入融合表。

        http://www.google.com/fusiontables/public/tour/index.html

        与基于 KML 文件添加叠加层相比,后续性能将非常出色。

        【讨论】:

          【解决方案4】:

          我将一个小得多的 kml/kmz 文件分成几个块。但是,当我试图接近极限时,我仍然注意到 MASSIVE 减速。通常,当我在地图的全范围内时,谷歌地图不会显示标记,并且只有在我放大时才会显示(因此它需要处理的标记要少得多)。

          通常它只会在一部分地图图块上显示标记,而其他地图图块将为空。

          即使是在这方面速度最快的浏览器 Chrome 也几乎无法处理。

          【讨论】:

            【解决方案5】:

            通过 Google Maps API 使用 KML 文件非常容易。一个例子如下:

            KmlLayer(http://myserver/kmlfile.kml)
            

            请参阅API 3.0 Reference on the KmlLayer here

            但是您的大型 KML 文件存在问题。 未压缩 KML 文件的当前最大值为 10MB,比您的 30MB 小很多。请参阅reference on KML support here

            根据我的经验,将大型 KML 文件添加到地图也非常很慢。所以加载你的例如9MB 文件将花费大量时间。我建议你做的是减小文件的大小。
            您真的需要所有这些数十万个航路点吗?你的日志记录步骤是什么?喜欢每10秒?您是否需要将您的位置精确到米,每 100 米还不够吗?顺便说一句:你在做基于互联网的东西吗?我记得 Google 地球支持任意大型 KML 文件(但肯定比地图 API 大)。

            我不知道任何轨道平滑程序或“航点清除器”,但肯定有这样的东西,这就是您需要使您的 KML 文件更小的东西(30MB 对我来说仍然很大,你确定它只是航路点还是在 KML 中有描述等?你能缩短这些吗?颜色?使用全局 KML 颜色而不是为每个航路点定义颜色!)

            【讨论】:

            • 有一堆程序,比如GPSBabel。我想我主要关心的是对我的旅行有一个相当准确的表示。 100m 在有许多小街道、转弯和曲折的欧洲城市中是巨大的。在笔直的高速公路上行驶 100m 没什么大不了的。
            • 我听到你的问题,问题是谷歌的api存在局限性;-)在选择付费计划时,他们可能能够提升这些限制,但付费计划很贵。再说一遍:看看手头的 KML 文件,那里只有航路点吗?我创建了一个 KML 文件,并且为每个节点定义了颜色、厚度等,而它只需要定义一次。
            • 我设法将它降低到 72MB,点之间的距离为 100m。它看起来有点不准确,但仍然代表我的旅行路线。所以现在我想我必须把它分成8块;尽管如此,加载所有内容仍需要时间。那好吧。我以为有更简单的方法。谢谢。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-02-08
            • 2012-04-08
            • 2011-10-05
            • 1970-01-01
            • 1970-01-01
            • 2017-12-15
            • 1970-01-01
            相关资源
            最近更新 更多