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>
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
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
- dies ist der Name des Tilesets, das wir seeden werden. Sie finden es in der Dateimapcache-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.
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?¶
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.