Bedarfsgesteuertes Karten-Caching
In ArcGIS Server können Sie Karten-Cache-Kacheln bei Bedarf, d. h. wenn diese von Benutzern aufgesucht werden, erstellen. Der erste Benutzer, der zu einer nicht gecachten Fläche navigiert, muss warten, bis die entsprechenden Kacheln vom Server gezeichnet wurden. Die Kacheln werden dann dem Cache-Ordner des Service hinzugefügt und bleiben auf dem Server, bis der Serveradministrator sie aktualisiert oder löscht. Dies bedeutet, dass nachfolgende Besucher der Fläche nicht warten müssen, bis die Kachel erstellt wurde.
Bei sorgfältig abgewägtem Einsatz können Sie mit dem bedarfsgesteuerten Caching viel Zeit und Speicherplatz sparen. Die meisten Karten enthalten unwirtliche, unbrauchbare oder für die Kartenbenutzer irrelevante Flächen, insbesondere bei großen Maßstäben. Das bedarfsgesteuerte Caching entlastet Sie, da Sie diese nicht benötigten Kacheln nicht erstellen und speichern müssen. Benutzer haben aber dennoch die Möglichkeit, die betreffenden Flächen bei Bedarf anzuzeigen.
Das bedarfsgesteuerte Caching ist zweifelsfrei eine nützliche Funktion, die bei falscher oder übermäßiger Verwendung jedoch Leistungseinbußen verursachen kann. Dieses Thema enthält Tipps für eine effektive Verwendung des bedarfsgesteuerten Cachings.
Erreichen der maximalen Leistung
Ein Vorteil beim Caching der vollständigen Karte besteht darin, dass Sie schnell aussagekräftige, komplexe Karten bereitstellen können, da der Server lediglich gekachelte Bilder der Karte verteilt und nicht bei jeder Anforderung die Karte zeichnen muss. Bei Verwendung des bedarfsgesteuerten Cachings muss der Server hingegen Kacheln dynamisch zeichnen, wenn ein Benutzer zu einem bislang nicht gecachten Bereich navigiert. Dieses dynamische Zeichnen dauert länger als eine reguläre Anforderung, da der Server eine Gruppe von Kacheln gleichzeitig erstellt. Diese Kachelgruppe hat Abmessungen von 2048 x 2048 Pixel, wenn Antialiasing verwendet wird, bzw. von 4096 x 4096 Pixel wenn nicht.
Warum erstellt der Server die Kacheln nicht einfach nacheinander? In diesem Fall würden zahlreiche doppelte Beschriftungen generiert, da die Label-Engine nicht erkennen kann, welche Beschriftungen auf den benachbarten Kacheln bereits vorhanden sind. Der Server erstellt daher eine Gruppe von Kacheln. Sie müssen die Karte somit auf das Zeichnen von großen Flächen mit einer akzeptablen Geschwindigkeit vorbereiten. In diesem Abschnitt werden verschiedene Möglichkeiten vorgestellt, die Leistungseinbußen beim bedarfsgesteuerten Caching zu minimieren.
Bestimmen der Flächen für das bedarfsgesteuerte Caching
Das Wichtigste beim Konfigurieren eines bedarfsgesteuerten Cachings ist, die bei Bedarf und die vorab zu cachenden Flächen zu bestimmen. Erstellen Sie niemals den gesamten Cache mithilfe von bedarfsgesteuertem Caching. Sie sollten für die Flächen der Karte, für die Sie ein hohes Benutzeraufkommen erwarten, stets vorab Kacheln erstellen. Sie minimieren so die Wahrscheinlichkeit, dass ein Benutzer durch die bedarfsgesteuerte Anforderung von Kacheln Serverressourcen in Anspruch nimmt.
Wie bestimmen Sie die am häufigsten angeforderten Flächen der Karte? Dies hängt weitgehend vom Zweck und von der Zielgruppe der Karte ab. In der Regel werden die Grundkarte, besiedelte Orte, Straßen, Küsten, Parks und andere relevante Punkte häufiger als andere Flächen aufgesucht. Microsoft Hotmap ist eine interessante Fallstudie, die gängige Kacheln in einer Online-Grundkarte mit verschiedenen Maßstäben zeigt. Beachten Sie, dass bei größeren Maßstäben der Anteil der nicht verwendeten Kacheln zunimmt.
Thematische Karten können stark abweichende Trends für gängige Orte anzeigen. Beispielsweise weisen von einem Bergbauunternehmen verwendete Karten die größte Nutzung in Bereichen mit einer hohen Dichte von Bergwerken auf. Dies kann auch unbesiedelte oder bergreiche Flächen betreffen, die für die Allgemeinheit eher uninteressant sind.
Um die vorab im Cache zu speichernden Flächen zu bestimmen, analysieren Sie die Verwendungsmuster der aktuellen Karten (online oder auf dem Desktop). Durch eine informelle Beobachtung der von Benutzern am häufigsten aufgesuchten Bereiche und der abgerufenen Features gewinnen Sie wertvolle Informationen.
Die Datenverfügbarkeit und die Auflösung ist ebenfalls wichtig. Wenn in bestimmten Bereichen nur wenige oder keine Daten vorliegen, können Sie das Caching dieser Flächen überspringen. Selbst wenn ein Benutzer eine bedarfsgesteuert erstellte Kachel anfordert, nimmt das Zeichnen des Bereichs aufgrund des geringen Inhalts nur wenig Zeit in Anspruch.
Die Daten sind möglicherweise eng an den Zweck der Karte gebunden. Wenn Sie beispielsweise mit dem Verkehrsministerium zusammenarbeiten, möchten Sie vermutlich Flächen mit einer hohen Straßen- und Schienendichte vorab cachen. Werkzeuge für eine räumliche Analyse, z. B. Kernel Density, unterstützen Sie beim Ermitteln der Bereiche mit vielen relevanten Features.
Nachdem Sie die Bereiche bestimmt haben, die von Benutzer am häufigsten aufgesucht werden, sollten Sie diese Flächen mithilfe einer Feature-Class isolieren. Diese Feature-Class wird referenziert, wenn Sie das Werkzeug "Cache-Kacheln für Kartenserver verwalten" ausführen, um sicherzustellen, dass Kacheln nur innerhalb der Feature-Class-Grenzen erstellt werden.
Sie können auch mehrere Werkzeuge in einem Modell oder Skript verknüpfen, um diese Feature-Class mit gängigen Orten zu erhalten. Das Modell kann beispielsweise verschiedene Eingaben für voraussichtlich gängige Features enthalten, die Features optional puffern oder deren Dichte bestimmen und schließlich die Ausgabe nachverarbeiten, um sicherzustellen, dass die resultierende Feature-Class für eine Caching-Vorlage geeignet ist. Beispiel: Die Feature-Class, innerhalb deren Grenzen Sie Features cachen, soll nicht zu viele kleine Features enthalten. Mit dem Werkzeug Polygone aggregieren können Sie kleine Löcher und Polygone entfernen, und mit dem Werkzeug Zusammenführen (Dissolve) erstellen Sie ein aus mehreren Features bestehendes Multipart-Feature.
Je besser Sie gängige Flächen der Karte isolieren, umso mehr Anforderungen können mithilfe vorab gecachter Kacheln erfüllt werden, anstatt Kacheln bei Bedarf zu erstellen. Sie stellen beispielsweise fest, dass Sie bei einer großen Maßstabsebene nur einen Bruchteil der Kartenfläche cachen müssen, um 99 Prozent der Benutzeranforderungen zu erfüllen. Der hierdurch eingesparte Speicherplatz kann dann verwendet werden, um weitere Maßstabsebenen zu cachen.
Testen und Optimieren der Karte
Viele Organisationen verfügen über komplexe Kartendokumente (MXDs), die ursprünglich für ein Desktop-GIS erstellt wurden. Diese Karten müssen häufig an die kurzen Antwortzeiten angepasst werden, die von Webbenutzern erwartet werden.
Bevor Sie die Karte ändern, sollten Sie einen Test-Cache für einen kleinen Bereich erstellen, um einige Grunddaten zu erhalten. Wählen Sie einen Bereich aus, der eine repräsentative Auswahl der Geographie in der Karte enthält, z. B. städtisch und ländlich, flach und bergig usw. Achten Sie auf die Zeit, die zum Erstellen des Test-Caches benötigt wird. Aktivieren Sie dann das bedarfsgesteuerte Caching, und zoomen Sie auf einen nicht gecachten Bereich. Ermitteln Sie, wie lange es bei verschiedenen Maßstäben dauert, bis die Kacheln angezeigt werden. Wenn die Leistung bereits jetzt akzeptabel ist, müssen Sie keine Anpassungen vorzunehmen.
Wenn Sie die Leistung bei der bedarfsgesteuerten Kachelerstellung oder auch die Geschwindigkeit für die allgemeine Cache-Erstellung verbessern möchten, können Sie mithilfe der Werkzeugleiste "Karten-Service-Publishing" in ArcMap Leistungsengpässe in der Karte identifizieren und beheben. Verwenden Sie die Werkzeugleiste, um eine Karten-Service-Definitionsdatei (MSD) zu speichern, die Sie dann beim Veröffentlichen des Karten-Service als Quelldokument verwenden können. Bei vielen Karten-Services führt die Verwendung einer MSD anstelle einer MXD als Quelldokument zu einem erheblichen Leistungsgewinn.
Legen Sie für eine erweiterte Erkennung ineffizienter Layer im Karten-Service die ArcGIS Server-Protokollierungsebene "Info:Detailliert" fest. Erstellen Sie eine Zeichnungsanforderung an den Karten-Service, z. B. durch Zoomen auf ein Lesezeichen in ArcMap. Überprüfen Sie dann die ExportMapImage-Anforderung in den Protokollen, und beachten Sie die zum Zeichnen jedes Layers benötigte Zeit. Sie können so schnell erkennen, welche Layer die meiste Zeit benötigen. Es wird empfohlen, diesen Vorgang für willkürlich ausgewählte Kartenflächen in den verschiedenen gecachten Maßstäben zu wiederholen. Denken Sie daran, dass Sie die Protokollierungsebene auf "Normal" zurücksetzen müssen, wenn Sie fertig sind, da durch "Info:Detailliert" mehr Protokollinformationen als normalerweise erforderlich geschrieben werden.
Erstellen Sie nach dem Optimieren der Karte einen weiteren Test-Cache, und ermitteln Sie, wie lang die bedarfsgesteuerte Erstellung der Kachel dauert. Wenn die Leistung weiterhin nicht akzeptabel ist, haben Sie folgende Möglichkeiten:
- Speichern Sie eine größere Fläche vorab im Cache. Hierdurch wird die Wahrscheinlichkeit verringert, auf eine bedarfsgesteuerte Kachel zu treffen. Sie können das bedarfsgesteuerte Caching auf besonders unwirtliche Flächen bei den größten Maßstäben beschränken und so sicherstellen, dass möglichst wenige Features gleichzeitig gezeichnet werden müssen.
- Erstellen Sie einen vollständigen Cache. Wenn Sie alle Kacheln vorab im Cache speichern, müssen keine Kacheln bedarfsgesteuert erstellt werden. Dies ist die beste Wahl, wenn Sie genügend Zeit und Speicherplatz zum Erstellen eines vollständigen Caches haben und wenn dieser nur selten aktualisiert werden muss. Wenn Serverausfälle während des Cachings ein Thema sind, können Sie die Caching-Aufträge so programmieren, dass diese nachts und am Wochenende ausgeführt werden. Der Cache wird so nach und nach aufgefüllt. Sie können auch nur eine Service-Instanz für das Caching zuweisen, während andere Instanzen Benutzeranforderungen verarbeiten.
- Verwenden Sie einen dynamischen Service. Wenn kein vollständiger Cache erstellt werden kann und die Leistung beim dynamischen Service akzeptabel ist, können Sie das Caching auch komplett überspringen. Diese Option liefert zwar nicht die beste Leistung, aber die Daten sind immer auf dem neuesten Stand.
Aktualisieren von Kacheln
Wenn Sie die Quelldatenbank bearbeiten, müssen Sie den Cache aktualisieren, damit Benutzer die Änderungen sehen können. Wenn Sie, wie empfohlen, eine Fläche basierend auf einer Feature-Class vorab im Cache speichern und den Rest des Caches bei Bedarf auffüllen, müssen Sie darauf achten, dass die Aktualisierungen alle erforderlichen Flächen einschließen.
Ihnen stehen zwei Strategien zum Aktualisieren des Caches zur Verfügung, wenn Sie Kacheln bedarfsgesteuert erstellen:
-
Löschen Sie alle Kacheln, die bedarfsgesteuert erstellt wurden, bevor Sie eine Aktualisierung ausführen. Wenn Sie Kacheln bedarfsgesteuert erstellen, haben Sie wahrscheinlich eine bestimmte Fläche basierend auf einer Feature-Class vorab gecacht. Normalerweise führen Sie auch die Aktualisierung auf Grundlage dieser Feature-Class aus, sodass die bedarfsgesteuert erstellten Kacheln anschließend veraltet sind, wenn Sie diese nicht löschen.
Führen Sie zum Löschen der Kacheln "Cache-Kacheln für Kartenserver verwalten" im Modus "Delete Tiles" (Kacheln löschen) aus. Sie sollten Sie Kacheln basierend auf einer Umkehrung der Feature-Class löschen, die Sie für das Precaching verwendet haben. Erstellen Sie mit den ArcGIS-Editierwerkzeuge ein Polygon, das die volle Ausdehnung der Karte darstellt, und schneiden Sie dann für die Fläche, die vorab gecacht wurde, ein Loch in das Polygon. Das resultierende Kreisringpolygon kennzeichnet die Fläche, für die Kacheln gelöscht werden sollen. Informationen zum Schneiden von Löchern in ein Polygon mit dem Befehl "Ausschneiden" finden Sie unter Schneiden von Kreisringlöchern in vorhandene Polygone.
Alternativ können Sie alle Kacheln im Cache löschen, bevor Sie die Aktualisierung starten. Dies kann jedoch bei einem großen Cache relativ aufwendig sein.
Wenn Sie die Befürchtung haben, dass Benutzer nach jeder Aktualisierung auf das bedarfsgesteuerte Caching eines bestimmten Orts warten müssen, können Sie diesen Ort zu der vorab gecachten Fläche hinzufügen. Bei einem sorgfältigen Precaching ist das bedarfsgesteuerte Caching nur selten für die weniger relevanten Flächen der Karte erforderlich. Wird ein Ort regelmäßig von den Benutzern aufgesucht, sollte dieser vorab gecacht werden.
-
Beschränken Sie die Cache-Aktualisierungen auf Flächen, in denen Daten bearbeitet wurden. Eine Möglichkeit, dies zu realisieren, besteht darin, mittels Geodatabase-Archivierung oder einem benutzerdefinierten Werkzeug alle Änderungen seit der letzten Aktualisierung zu verfolgen, diese geänderten Flächen in eine Feature-Class zu exportieren und die Kacheln basierend auf der Feature-Class-Grenze zu aktualisieren.
Wenn Sie sicher sind, dass nur bearbeitete Flächen aktualisiert wurden, müssen Sie die bedarfsgesteuert erstellten Kacheln nicht aktualisieren.