【问题标题】:Poor rendering time when plotting large shape files on Google Maps在 Google 地图上绘制大型形状文件时渲染时间很短
【发布时间】:2014-09-02 20:04:29
【问题描述】:

首先,我想告诉大家,这是我第一次使用如此庞大的数据集开发地图应用程序。所以,我被锁定在下面列出的技术或技术中......

概述

我想要实现的是能够将我公司在美国的市场信息加载到某种形式的基于网络的地图软件上。目前我正在尝试使用 Google Maps JS api 和 GeoJSON 数据来实现这一点,但并不反对其他替代方案。我从 ArcGIS 导出到 GeoJSON 文件中大约有 163 个文件(从 6MB 到 200KB 不等),然后加载到数据库中(当前为 GeoJSON 字符串)。我们开发了一个 UI,可以根据当前地图边界和相应记录中的 Max/Min 计算来加载数据。

我遇到的问题是地图本身的渲染时间,这在不同区域、状态或缩放级别之间切换时很烦人。就所检索数据的大小而言,加载数据的 API 调用是可以接受的。我的老板说它非常适合用于概念验证,但希望能更快地看到它。

问题

您可以提供哪些建议来增加渲染时间?

对于我想要完成的工作,是否有更好的选择(第 3 方库、技术等)?

一位同事建议导出地图形状并仅使用图像来覆盖基于坐标的信息。对此有何意见?

【问题讨论】:

    标签: google-maps gis geojson


    【解决方案1】:

    解决问题的一种方法是减少多边形或折线图层(文件)中的顶点数量,同时保留要素的形状。这样,geoJSON 文件会更小,更容易呈现。 您可以使用 ArcGIS for Desktop 中提供的工具。 看 How to Simplify Line or Polygon 或者 Simplify Polygon

    我确信QGIS 或任何其他开源 GIS 软件中都有类似的工具。

    还有其他解决方案可以解决您的问题,例如在地图图块中预渲染数据,这些数据可以覆盖在 Google 地图底图上。这可能是最快的解决方案,但更复杂。 也许this 可能是一个很好的起点。

    只是几个随机的想法。 在我从事的一个项目中,我注意到我通过 REST 服务加载的 geoJson 性能很差。 我发现浏览器的 JavaScript 引擎很难解析大型 geoJson 响应。我最终决定批量加载数据(多个请求)。性能大幅提升。

    我注意到您使用了 163 个文件(层?)。您是否同时显示它们(不不不)或者您有一些控制面板来打开/关闭图层?如果同时显示它们,那么性能肯定会受到影响,您应该考虑使用按主题分组的图层生成地图图块。通过这种方式,您会想出几个可以打开和关闭的图块层。

    此外,如果用于生成图块的数据经常更改而不是图块,则不是一个好主意。那么也许你应该研究一下网络地图服务。 WMS 根据存储在数据库中的数据动态生成地图。 GeoServer支持WMS,易于配置和使用。

    【讨论】:

    • 感谢您的文章,我现在将深入探讨。对于在地图图块中预渲染数据,您有什么建议或一个好的起点吗?谢谢!
    • 感谢您的更新!我目前正在努力建立一个 postgis\geoserver\leaflet 堆栈,该堆栈将从我们的 Intranet 提供给最终用户。我很高兴收到你们所有 GIS 人员的反馈。新要求包括深入市场以加载其中的所有区域,因此我的解决方案一直在苦苦挣扎。再次感谢您所做的一切!
    猜你喜欢
    • 2016-02-21
    • 2023-03-14
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多