2

我正在尝试将一个 500MB 的形状文件加载到 GeoServer 中,并让它在合理的时间范围内响应客户端请求(即使等待 30 分钟,它目前也没有响应)。我希望它提供图像拼贴;我正在使用 Google Maps API v3 ImageMapType 使用 GeoServer WMS URL 自动请求正确的图块。该图层由塔斯马尼亚沿海的数十万个多边形组成 - 因此该图层非常稀疏。我试过了:

  • 创建切片缓存(但 ETA 在 13 到 18 的缩放范围内为 15 年)并创建大量空白切片(估计 >95%)
  • 在加载到 GeoServer 之前删除图层中的所有属性(仍然等待一个小时才能开始播种切片缓存并且仍然没有任何进展)
  • 合并多边形,使图层中只有 10 个多边形(行为相同)
  • 使用切片缓存中的边界选项(相同的行为)
  • [编辑] 将图层重新投影到 EPSG:900913(相同的行为)
  • 将图层切割成 12 个部分以减少空白空间,将它们作为图层组加载,并从中播种切片缓存(即使其中 1 个图层也不会开始播种 - 还是太大了?)

我们正在研究的下一个选项是将图层分成 1 公里的网格并将所有 8000 个图层加载为图层组。我怀疑这会奏效。然而,这些层中的 1 个在为缓存播种时确实有效 - 所有缩放级别只需要几秒钟。

如何让 GeoServer 服务于这种大而稀疏的数据? 其他人肯定有这个问题吗?我需要对图层本身做一些特别的事情吗?或者我应该在 GeoServer 中配置什么?

4

1 回答 1

5

首先:一张 500MB 的地图对于 GeoServer 来说应该是小菜一碟,除非您在十多年前就购买了您的硬件。我每天都在处理更大的数据集。

也许您让 GeoServer 直接从磁盘访问 shapefile?

我推荐以下设置:

  • 确保安装了足够的 RAM。我刚刚看到我可以以不到 80 欧元的价格购买 24GB。这应该足以完全缓存您的数据库;

  • 安装带有 PostGIS 扩展的 Postgres;

  • 为确保不需要重新投影,您可以将所有坐标预先转换为 Google 的 marcator 投影 (EPSG:9009l3);

  • 确保几何列上有空间索引;

  • 如果您的地图是静态的,您可以预渲染图块。这确实会大大提高性能。尝试找到可以在合理时间内预渲染的缩放级别。无论如何,放大的图像通常更快,因为创建图像所涉及的元素更少;

此外,如果花费 30 分钟,我怀疑你永远不会得到结果。至少在此之前网络服务器已经超时。通过粘贴 URL 手动下载图像。如果您没有看到图片,请在文本编辑器中打开下载的图片:图片文件中可能有文本错误消息,而不是二进制数据。该错误消息通常描述了问题所在。

于 2013-05-28T01:17:34.650 回答