ArcGIS ermöglicht Ihnen Karten-Cache-Kacheln bei Bedarf zu erstellen, wenn diese von Benutzern aufgesucht werden. 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 sich anzusehen.
Das bedarfsgesteuerte Caching ist zweifelsfrei eine nützliche Funktion, die bei falscher oder übermäßiger Verwendung jedoch Performance-Einbußen verursachen kann. Dieses Thema enthält Tipps für eine effektive Verwendung des bedarfsgesteuerten Cachings.
Erreichen der maximalen Performance
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 der Kartenservice Antialiasing verwendet, und 4096 x 4096 Pixel, wenn nicht.
Warum erstellt der Server die Kacheln nicht 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 Performance-Einbuß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.
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 sind 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. Sie können beispielsweise das Geoverarbeitungswerkzeug Polygon vereinfachen verwenden, um überzählige Stützpunkte zu entfernen, die die Caching-Werkzeuge verlangsamen könnten.
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. Bei großem Maßstab müssen Sie möglicherweise nur einen Bruchteil der Kartenfläche cachen, um den Großteil der Benutzeranforderungen zu erfüllen. Der hierdurch eingesparte Zeitaufwand und Speicherplatz kann dann verwendet werden, um weitere Maßstabsebenen zu cachen.
Testen und Optimieren der Karte
Viele Organisationen verfügen über komplexe Kartendokumente, 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: 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 Performance bereits jetzt akzeptabel ist, müssen Sie keine Anpassungen vorzunehmen.
Wenn Sie die Performance bei der bedarfsgesteuerten Kachelerstellung oder auch die Geschwindigkeit für die allgemeine Cache-Erstellung verbessern möchten, können Sie mithilfe der Werkzeugleiste Service-Editor in ArcMap Leistungsengpässe in der Karte identifizieren und beheben. Klicken Sie auf die Schaltfläche Analysieren , um potenzielle Performance-Probleme zu suchen und zu melden. Klicken Sie auf die Schaltfläche Vorschau , um zu sehen, wie schnell Ihre Karte dynamisch gezeichnet wird.
Legen Sie für eine erweiterte Erkennung ineffizienter Layer im Kartenservice die Server-Protokollierungsebene auf Ausführlich fest. Erstellen Sie eine Zeichnungsanforderung an den Kartenservice, z. B. durch Zoomen auf ein Lesezeichen in ArcMap. Überprüfen Sie dann ArcGIS Server-Protokolle in Manager, 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 Protokollierung auf die vorherige Ebene zurücksetzen müssen, wenn Sie fertig sind, da durch "Ausführlich" 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 Performance 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 dynamisch gezeichneten Service. Wenn kein vollständiger Cache erstellt werden kann und die Performance beim dynamisch gezeichneten Service akzeptabel ist, können Sie das Caching auch komplett überspringen. Diese Option liefert zwar nicht die beste Performance, aber die Daten sind immer auf dem neuesten Stand.
Nach Bedarf erstellte Statusberichte und Kacheln
Beachten Sie, dass nach Bedarf erstellte Kartenkacheln nicht im Cache Statusberichte wiedergegeben werden, der in ArcMap angezeigt wird. Diese Berichte überwachen nur Kacheln, die Sie mithilfe der Caching-Werkzeuge erstellt haben.
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 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-Editierwerkzeugen 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 in ArcMap 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 Ortes 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.