首先,我想让人们知道,这是我开发具有如此大量数据的地图应用程序的第一次旅程。所以,我陷入了下面列出的技术或技术......
概述
我想要完成的是能够将我公司的美国市场信息加载到某种形式的基于网络的地图软件上。目前我正在尝试使用Google Maps JS api和GeoJSON数据完成此操作,但我并不反对其他选择。我已经将大约163个文件(范围从6MB到200KB)从ArcGIS导出到GeoJSON文件中,然后加载到数据库中(当前为GeoJSON字符串)。我们开发了一个UI,它根据当前地图边界和相应记录中的Max / Min计算来加载数据。
我遇到的问题是地图本身的渲染时间,这在不同区域,状态或缩放级别之间切换时很烦人。加载数据的API调用在被检索数据的大小方面是可接受的。我的老板说这对概念证明很有帮助,但是希望看得更快,更快。
问题
您可以提出哪些建议来延长渲染时间?
我正在努力实现的目标是否有更好的选择(第三方库,技术等)?
一位同事建议输出地图形状,然后使用图像叠加基于坐标的信息。有什么输入?
答案 0 :(得分:1)
您的问题的一个解决方案可能是减少多边形或折线图层(文件)中的顶点数量,同时保留要素的形状。这样,geoJSON文件就会更小,更容易渲染。 您可以使用ArcGIS for Desktop中提供的工具。 看到 How to Simplify Line or Polygon 要么 Simplify Polygon
我确信在QGIS或任何其他开源GIS软件中都有类似的工具。
您的问题还有其他解决方案,例如在地图图块中预渲染数据,这些数据可以覆盖在Google地图底图上。这可能是最快的解决方案,但更复杂。 也许this可能是一个很好的起点。
几个随机的想法。 在我工作的一个项目中,我发现通过REST服务加载的geoJson表现糟糕。 我发现浏览器的JavaScript引擎很难解析大的geoJson响应。我最终决定批量加载数据(多个请求)。表现大幅提升。
我注意到你使用了163个文件(图层?)。您是否同时显示它们(不是否)或者您有一些控制面板可以打开/关闭图层?如果您同时显示它们,那么性能肯定会受到影响,您应该研究生成具有主题分组图层的地图图块。通过这种方式,您可以设置几个可以打开和关闭的图块层。
此外,如果用于生成图块的数据频繁更改而不是图块也不是一个好主意。那么也许你应该研究一下Web地图服务。 WMS从存储在数据库中的数据动态生成地图。 GeoServer支持WMS,配置和使用都很简单。