../_images/logo_mapcache.png ../_images/OSGeo_project.png

MapCache Quickstart

MapCache是一个tile服务器,可以加速对WMS层的访问。它可以作为CGI应用程序在许多不同的web服务器上运行,也可以作为Apache模块运行。OSGeoLive安装了MapCache并将其配置为Apache模块。

这个快速入门演示了如何将新的WMS层添加到MapCache设置中,在OpenLayers web地图中显示tile服务,以及如何从命令行为tile缓存设定种子。

添加新的Tileset并在OpenLayers中显示

MapCache是使用XML文件配置的。OSGeoLive在 /usr/local/share/mapcache/mapcache-quickstart.xml . 该示例使用美国Itasca县的OSGeoLive demo MapServer应用程序作为其源。

在这个快速入门中,我们将为另一个WMS层设置tile缓存,并在一个包含OpenLayers映射的简单HTML页面中显示tile。

首先让我们在FeatherPad-一个文本编辑器中打开MapCache配置文件。从具有提升权限的命令行打开FeatherPad,以便可以使用“系统工具”>“QTerminal”保存文件,然后运行以下命令:

sudo featherpad

打开以下链接,我们可以查看源WMS服务器中哪些层可用:http://localhost/itasca/?service=wms&request=getcapabilities MapCache配置为使用以下规则将其无法处理的任何请求(如getcapabilities)转发到MapServer:

<forwarding_rule name="catch all">
  <http>
    <url>http://localhost/cgi-bin/mapserv?map=/usr/local/www/docs_maps/mapserver_demos/itasca/itasca.map</url>
  </http>
</forwarding_rule>

WMS功能文档中列出的图层名称之一是 dlgstln2 -伊塔斯卡县的溪流。我们将把它作为一个新的tileset添加到MapCache服务中。首先我们添加一个 <source> 块-这是从WMS服务器检索数据的配置。在现有的 <source name="lake_source" type="wms">...</source> 用于湖泊 mapcache-quickstart.xml

<source name="streams_source" type="wms">
  <getmap>
    <params>
      <FORMAT>image/png</FORMAT>
      <LAYERS>dlgstln2</LAYERS>
      <MAP>/usr/local/www/docs_maps/mapserver_demos/itasca/itasca.map</MAP>
    </params>
  </getmap>
  <http>
    <url>http://localhost/cgi-bin/mapserv?</url>
  </http>
</source>

我们使用 <params> 块将WMS图层名称和图像格式以及特定于MapServer的图像格式传递回WMS服务器 <map> 参数。WMS服务器的URL位于 <http> 阻止。有关所有配置文件元素的文档,请参阅 Configuration Documentation .

接下来我们将添加一个 <tileset> 块,它定义如何将源存储和作为分片使用。在现有块之后放置以下块 <tileset name="lakes">...</tileset> 块。

<tileset name="streams">
  <source>streams_source</source>
  <cache>disk</cache>
  <grid>GoogleMapsCompatible</grid>
  <format>PNG</format>
</tileset>

我们将网格类型设置为“内置” GoogleMapsCompatible 网格在许多web映射应用程序中用作默认的平铺方案。这个 name=streams 由客户端应用程序用来访问tileset。我们使用基于磁盘的缓存(而不是在数据库或云环境中存储磁贴)。

无论何时修改MapCache配置文件,都需要重新加载Apache,以使更改生效。这可以从命令行运行,如下所示:

sudo apachectl -k graceful

现在您应该能够使用以下URL访问互动程序:http://localhost/itasca/gmaps/streams@GoogleMapsCompatible/12/987/1433.png

../_images/stream_tile.png

现在让我们将tileset添加到OpenLayers映射中。使用以下命令打开HTML页面:

sudo featherpad /var/www/html/mapcache-quickstart/index.html

取消注释下面的JavaScript代码:

,new ol.layer.Tile({
    source: new ol.source.XYZ({
        url: 'http://localhost/itasca/gmaps/streams@GoogleMapsCompatible/{z}/{x}/{y}.png'
    })
})

现在刷新页面http://localhost/mapcache快速启动/-您应该会看到MapCache正在为新的streams层提供服务。

../_images/openlayers.png

当您浏览地图时,您将看到中的平铺缓存文件夹 /var/cache/mapcache 填充PNG图像。

../_images/tilecache.png

缓存的位置和类型由配置文件中的以下块设置:

<cache name="disk" type="disk">
  <base>/var/cache/mapcache</base>
  <symlink_blank/>
</cache>

添加新服务

您可以通过编辑 /etc/apache2/conf-enabled/mapcache.conf 文件。由于这需要超级用户权限,您可以通过运行以下命令在FeatherPad中打开它进行编辑:

sudo featherpad /etc/apache2/conf-enabled/mapcache.conf

OSGeoLive有两个MapCache服务,每个服务都有一个别名和一个配置文件。别名是要在服务器上使用的URL,例如。http://localhost/mapcache以及http://localhost/itasca

<IfModule mapcache_module>
   <Directory /path/to/directory>
      Order Allow,Deny
      Allow from all
   </Directory>
   MapCacheAlias /mapcache "/usr/share/doc/libapache2-mod-mapcache/examples/mapcache.xml"
   MapCacheAlias /itasca "/home/user/mapcache.xml"
</IfModule>

要添加新服务,只需按以下格式添加新行,用相关参数替换WEB_PATH和PATH_To_CONFIG_文件:

MapCacheAlias WEB_PATH "PATH_TO_CONFIG_FILE"

Apache Module Instructions 有关配置Apache模块的更多详细信息。

播种机应用

地图分幅是在web服务器请求时动态创建的。为了加快请求时间,我们可以使用命令行应用程序生成分片。此过程称为 播种 ,而MapCache命令行应用程序是 mapcache_seed .

为了确保我们添加的web服务器帐户可以访问由seeder应用程序创建的磁贴 sudo -u www-data 在运行 mapcache_seed 应用。

在下面的示例中,我们将三个选项传递给 mapcache_seed

  • 配置/home/user/mapcache/mapcache-quickstart.xml -这是MapCache配置文件的路径
  • 蒂莱塞lakes -这是我们要播种的瓷砖集名称,可以在中找到 mapcache-quickstart.xml
  • zoom0,5 -从0级到5级的缩放范围
sudo -u www-data mapcache_seed --config /home/user/mapcache/mapcache-quickstart.xml --tileset lakes --zoom 0,5

对其他人来说 mapcache_seed 选项请参见 Seeder Documentation .

../_images/seeder.png

如果要删除缓存文件夹,可以运行以下命令:

sudo rm -r /var/cache/mapcache/lakes

接下来呢?