MapCache Quickstart¶
MapCache ist ein Kachelserver, der den Zugriff auf WMS-Layer beschleunigt. MapCache kann als CGI-Anwendung unter vielen verschiedenen Webservern oder als Apache-Modul ausgeführt werden. OSGeoLive hat MapCache als Apache-Modul installiert und konfiguriert.
Dieses Quickstart zeigt, wie Sie einem MapCache-Setup einen neuen WMS-Layer hinzufügen, den Kacheldienst in einer OpenLayers-Anwendung anzeigen und einen Kachelcache aus der Befehlszeile seeden können.
Inhalt
Hinzufügen eines neuen Tileset und Anzeigen in OpenLayers¶
MapCache wird über XML-Dateien konfiguriert. OSGeoLive enthält eine Beispielkonfigurationsdatei unter /usr/local/share/mapcache/mapcache-quickstart.xml. Im Beispiel wird die OSGeoLive MapServe-Demoanwendung von Itasca County in den Vereinigten Staaten als Quelle verwendet.
In diesem Schnellstart richten wir Tile Caching für einen zusätzlichen WMS-Layer ein und zeigen die Kacheln in einer einfachen HTML-Seite an, die eine OpenLayers-Karte enthält.
Öffnen wir zunächst die MapCache-Konfigurationsdatei in FeatherPad - einem Texteditor. Öffnen Sie FeatherPad über die Befehlszeile mit erhöhten Berechtigungen, so dass Sie die Datei mit SystemTools > QTerminal speichern und dann den folgenden Befehl ausführen können:
sudo featherpad
Wir können sehen, welche Layer in unserer WMS-Quelle verfügbar sind, indem wir den folgenden Link öffnen: http://localhost/itasca/?service=wms&request=getcapabilities MapCache ist so konfiguriert, dass es für alle Anfragen, die es nicht verarbeiten kann, wie z. B. GetCapabilities, die Anfrage an MapServer weiterleitet, Dies erfolgt nach der unten gezeigten Regel:
<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>
Einer der Layer-Namen, die im WMS Capabilities-Dokument aufgeführt sind, ist ‚‘dlgstln2‘‘ - Streams von Itasca County. Wir fügen diesen als neues Kachelset zum MapCache-Service hinzu. Zuerst fügen wir einen <source> Block hinzu - dies ist die Konfiguration, um Daten vom WMS-Server abzurufen. Fügen Sie den folgenden XML-Block nach dem vorhandenen <source name="lake_source" type="wms">...</source> `` Block für die Seen in die Datei ``mapcache-quickstart.xml ein:
<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>
We use the <params> block to pass the WMS layer name, and the image format
back to the WMS server, along with the MapServer specific <map> parameter.
The URL to the WMS server is in the <http> block. For documentation on all
configuration file elements see the Configuration Documentation. Next we will add a
<tileset> block, which defines how the source will be stored and served as
tiles. Place the following block after the existing <tileset
name="lakes">...</tileset> block.
<tileset name="streams">
<source>streams_source</source>
<cache>disk</cache>
<grid>GoogleMapsCompatible</grid>
<format>PNG</format>
</tileset>
Wir setzen den Grid-Typ auf das integrierte Raster GoogleMapsCompatible-Grid fest, das in vielen Webmapping-Anwendungen als Standard-Tile-Schema verwendet wird. Der name=streams wird von Clientanwendungen für den Zugriff auf das Kachelset verwendet. Wir verwenden einen datenträgerbasierten Cache (anstatt Kacheln in einer Datenbank oder in einer Cloudumgebung zu speichern).
Jedes Mal, wenn Sie die MapCache-Konfigurationsdatei ändern, müssen Sie Apache neu laden, damit die Änderungen in Kraft treten. Dies kann über die Befehlszeile wie folgt ausgeführt werden:
sudo apachectl -k graceful
Sie sollten nun auf eine Kachel mit der folgenden URL zugreifen können: http://localhost/itasca/gmaps/streams-GoogleMapsCompatible/12/987/1433.png
Fügen wir nun das Kachelset zu unserer OpenLayers-Karte hinzu. Öffnen Sie die HTML-Seite mit dem folgenden Befehl:
sudo featherpad /var/www/html/mapcache-quickstart/index.html
Kommentieren Sie den JavaScript-Code unten aus:
,new ol.layer.Tile({
source: new ol.source.XYZ({
url: 'http://localhost/itasca/gmaps/streams@GoogleMapsCompatible/{z}/{x}/{y}.png'
})
})
Aktualisieren Sie nun die Seite unter http://localhost/mapcache-quickstart/ - Sie sollten den neuen Streams-Layer sehen, der von MapCache bereitgestellt wird.
Während Sie in der Karte navigieren, füllt sich der Kachel-Cache-Ordner unter /var/cache/mapcache mit PNG-Bildern.
Der Speicherort und Typ des Caches wird durch den folgenden Block in der Konfigurationsdatei festgelegt:
<cache name="disk" type="disk">
<base>/var/cache/mapcache</base>
<symlink_blank/>
</cache>
Hinzufügen von neuen Diensten¶
Sie können den Apache-WebServer so konfigurieren, dass mehrere verschiedene MapCache-Dienste ausgeführt werden, die jeweils über eine eigene Konfigurationsdatei verfügen. Dies erfolgt indem Sie die Datei /etc/apache2/conf-enabled/mapcache.conf bearbeiten. Da dies Super-Benutzerberechtigungen erfordert, können Sie die Datei für die Bearbeitung in FeatherPad öffnen, indem Sie den folgenden Befehl ausführen:
sudo featherpad /etc/apache2/conf-enabled/mapcache.conf
OSGeoLive verfügt über zwei MapCache-Dienste mit jeweils einem Alias und einer Konfigurationsdatei. Der Alias ist die URL, die für den Server verwendet werden soll, z. B. http://localhost/mapcache und 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>
Um einen neuen Dienst hinzuzufügen, fügen Sie einfach eine neue Zeile im folgenden Format hinzu und ersetzen WEB_PATH und PATH_TO_CONFIG_FILE durch die entsprechenden Parameter:
MapCacheAlias WEB_PATH "PATH_TO_CONFIG_FILE"
Weitere Informationen zur Konfiguration des Apache-Moduls finden Sie in den Apache Module Instructions .
Die Seeder-Anwendung¶
Kartenkacheln werden dynamisch erstellt, wenn sie vom Webserver angefordert werden. Um die Anforderungszeiten zu beschleunigen, können wir Kacheln mithilfe einer Befehlszeilenanwendung generieren. Dieser Prozess wird als seeding bezeichnet. Die MapCache-Befehlszeilenanwendung für diese Aufgabe ist mapcache_seed.
Um sicherzustellen, dass die von der seeder-Anwendung erstellten Kacheln über das Webserverkonto zugänglich sind, fügen wir sudo -u www-data hinzu, bevor wir die Anwendung mapcache_seed ausführen.
Im folgenden Beispiel geben wir drei Optionen an mapcache_seed weiter:
config:
/home/user/mapcache/mapcache-quickstart.xml- Pfad zur MapCache-Konfigurationsdateitileset:
lakes- this is the tileset name we are going to seed, and is found inmapcache-quickstart.xml- zoom:0,5- this is the range of zoom levels we are going to seed, from zoom level 0 (the extent of the world in a single tile) to zoom level 5
sudo -u www-data mapcache_seed --config /home/user/mapcache/mapcache-quickstart.xml --tileset lakes --zoom 0,5
Die vielen anderen mapcache_seed Optionen finden Sie in der Seeder-Dokumentation.
Wenn Sie einen Cache-Ordner entfernen möchten, können Sie dies über den folgenden Befehl durchführen:
sudo rm -r /var/cache/mapcache/lakes
What next?¶
Lesen Sie die`MapCache Dokumentation <https://mapserver.org/mapcache/index.html>`_.
Treten Sie der MapServer-Community, zu der MapCache gehört, auf den Mailing Listen bei, um Ideen auszutauschen, mögliche Verbesserungen zu diskutieren und um Fragen zu stellen.
