5.6. 演练:使用GeoWebCache使用GeoServer创建瓦片

假设您对WMS中的图层和符号感到满意,但您希望它绘制得更快,并且对许多同时使用的用户可用。在这种情况下,使用GeoWebCache创建瓦片可能是有意义的,因为GeoWebCache直接构建到GeoServer中。在本演练中,您将使用GeoWeb缓存为在上一课中发布的费城邻里地图组图层WMS创建瓦片缓存。

  1. 启动GeoServer并打开GeoServer Web管理页。

  2. 使用图层预览链接预览geog585:neighborhoodymap组图层(带有绿色图标的图层)。使用OpenLayers预览,以便可以缩放和平移。注意地图的性能和外观。您将看到标签在每个瓦片上重新定位,这肯定表明瓦片尚未使用。

  3. 在GeoServer Web管理页面中,单击Tile Layers链接。

  4. 单击geog585:neighborhoodymap链接,然后选择Tile缓存选项卡。在这里可以设置用于缓存层的参数。如果您在此停止,您的缓存将按需创建。在我们的例子中,我们实际上希望为大多数级别预生成瓦片,这样它们就不需要按需构建。GeoWebCache将此称为“种子”缓存。

  5. 再次单击Tile Layers,并在geog585:neighbourhoodymap的行中,单击Seed/Truncate。

../../_images/seed_truncate.png

图5.4 GeoServer中的瓦片层

  1. 向下滚动,填写表单以创建新任务,如下图所示。注意,您的瓦片创建任务将使用Google Maps瓦片方案(900913)创建PNG图像。

../../_images/create_new_seed_task.png

图5.5 GeoServer中的瓦片层图形用户界面

  1. 在表单底部,单击“提交”。虽然你看不见,但你的电脑正忙着按不同的比例画你的地图。这可能会占用计算机的内存和CPU资源,并且在缓存发生时,您可能会看到对其他应用程序的性能影响。如果要查看处理器的工作状态,请打开Windows任务管理器,查看java.exe正在使用的CPU和内存资源。

  2. 每隔30秒左右,单击刷新列表链接以查看缓存的进度。单击此链接时,任务状态消失,表示缓存已完成。

../../_images/refresh_list.png

图5.6 GeoServer中的瓦片层进度窗口

  1. 在GeoServer Web管理页面中,单击Tile Layers并使用下拉列表以EPSG:900913格式使用PNG格式预览缓存(参见下图)。这一次,当你左右摇动时,你应该看到地图立即出现。如果平移时标签不更改位置,则可以验证是否正在使用瓦片缓存。

../../_images/preview_tiled_layer.png

图5.7在GeoServer中预览结果的瓦片层图形用户界面

注意:请确保使用的是“瓦片层预览”,而不是“层预览预览”。“瓦片层预览”对层使用稍有不同的URL,该URL指示应使用瓦片缓存。另外,不要担心缓存是否在Tile Layers页上报告为N/A或0.0b大小。这看起来很正常,即使您现在已经构建了缓存。

虽然使用瓦片缓存可以提高性能,但您可能会注意到出现了一些重复的标签。这是地图瓦片要避免的一个难题,因为每个瓦片都不“知道”相邻瓦片上的标签。为了缓解这个问题,瓦片缓存软件通常会绘制一个比瓦片大得多的区域,然后将其分割成单独的瓦片。GeoWebCache将这个大区域称为“元瓦片”(Esri称之为“超级瓦片”)。如果愿意,可以尝试调整元瓦片的大小;尽管重复的标签仍然可以出现在元瓦片边界处,但重复的标签将越来越少。您还可能会发现,TileMill下一个演练中的设置和选项使获取所需的标签变得更容易。