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

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.

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>

Wir verwenden den Block <params> um den WMS-Layer-Namen und das Bildformat an den WMS-Server zurückzugeben, zusammen mit dem MapServer-spezifischen <map> parameter. Die URL zum WMS-Server befindet sich im Block <http> . Die Dokumentation zu allen Konfigurationsmöglichkeiten finden Sie in der Configuration Documentation.

Als Nächstes fügen wir einen <tileset> -Block hinzu, dieser definiert, wie die Quelle gespeichert und als Kacheln bereitgestellt werden soll. Platzieren Sie den folgenden Block nach dem <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

../../_images/stream_tile.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.

../../_images/openlayers.png

Während Sie in der Karte navigieren, füllt sich der Kachel-Cache-Ordner unter /var/cache/mapcache mit PNG-Bildern.

../../_images/tilecache.png

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-Konfigurationsdatei

  • tileset: lakes - dies ist der Name des Tilesets, das wir seeden werden. Sie finden es in der Datei mapcache-quickstart.xml.

  • zoom: 0,5 - das ist der Bereich der Zoomstufen, die wir seeden wollen, von Zoomstufe 0 (die Ausdehnung der Welt in einer einzigen Kachel) bis zur Zoomstufe 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.

../../_images/seeder.png

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

Was kommt als Nächstes?