

MapCache Quickstart¶
MapCache是一个tile服务器,可以加速对WMS层的访问。它可以作为CGI应用程序在许多不同的web服务器上运行,也可以作为Apache模块运行。OSGeoLive安装了MapCache并将其配置为Apache模块。
这个快速入门演示了如何将新的WMS层添加到MapCache设置中,在OpenLayers web地图中显示tile服务,以及如何从命令行为tile缓存设定种子。
Contents
添加新的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

现在让我们将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层提供服务。

当您浏览地图时,您将看到中的平铺缓存文件夹 /var/cache/mapcache
填充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
- zoom :
0,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 .

如果要删除缓存文件夹,可以运行以下命令:
sudo rm -r /var/cache/mapcache/lakes
接下来呢?¶
- 阅读 MapCache Documentation .
- 然后加入MapServer社区(MapCache是其一部分),在 Mailing Lists 交流想法,讨论潜在的软件改进并提出问题。