Categories: 3D Renderings

FeatureLayer-Rendering: welche Vorteile Ihnen WebGL in 2D bieten kann.

Die Version 4.5 der ArcGIS API für JavaScript ermöglicht es Usern, FeatureLayer mit WebGL (beta) in 2D-Mapansichten darzustellen. Dies ist ein wichtiger Schritt zur Verbesserung der Gesamtleistung von FeatureLayer und bietet Ihnen die Möglichkeit, mehr Daten in der Ansicht anzuzeigen und die Visualisierung schnell zu aktualisieren. So zeigt beispielsweise der WebGL-fähige FeatureLayer im unteren Bild eine Ebene mit mehr als einer Million Polygonen an und aktualisiert den Renderer der Ebene mit 60 Bildern pro Sekunde, wenn der User einen Slider bewegt.

WebGL (Web Graphics Library) ist eine JavaScript-API, die die Grafikkarte (GPU) Ihres Computers verwendet, um 2D- oder 3D-Grafiken anzuzeigen. WebGL wird bereits zur Darstellung von Daten in 3D-Szenenansichten verwendet. Die Version 4.5 der ArcGIS API für JavaScript bietet die gleichen Funktionen wie schnelles GPU-Rendering und interaktive Updates für FeatureLayer in 2D-Mapansichten.

Die Entwicklung mit WebGL zur Darstellung von 2D-Inhalten bietet eine größere Kontrolle darüber, wie und wann Features auf dem Bildschirm gezeichnet werden, im Gegensatz zu einer universelleren Zeichentechnologie wie Scalable Vector Graphics (SVG), die wir derzeit verwenden, um FeatureLayer in 2D darzustellen. WebGL ermöglicht es uns, den Code zu optimieren, um schnell jedes Feature auf dem Bildschirm neu zu zeichnen, wenn sich die visuellen Variablen Größe, Farbe, Deckkraft oder Drehung in einem Renderer ändern.

WebGL ist nicht neu im 2D-Bereich in der ArcGIS API für JavaScript. Wir verwenden es bereits, um VectorTileLayer in MapView zu rendern. Warum also die Mühe machen, es für FeatureLayer zu verwenden? Vektorkacheln eignen sich aufgrund ihrer Leistungsvorteile hervorragend zur Darstellung von BasisMapsLayern und sogar zur thematischen Visualisierung großer Datensätze. Vektorkacheln sind jedoch eine statische, vorgekochte Ansicht der Daten. Im Gegensatz dazu verfügt FeatureLayer über eine Fülle von dynamischen Funktionen, einschließlich Bearbeitung, Abfrage/Filterung und Support für on-the-fly Rendering und Projektion. Der FeatureLayer erreicht dies durch die direkte Zusammenarbeit mit dem Feature Service, der Daten basierend auf den Bedürfnissen der Ebene zurückgeben kann. Die Überarbeitung von FeatureLayer mit einer ähnlichen Implementierung wie VectorTileLayer ermöglicht es uns, dem User die dynamischen Fähigkeiten von FeatureLayer zur Verfügung zu stellen und gleichzeitig die folgenden Vorteile von WebGL zu nutzen:

Schnelles Rendern.

WebGL ebnet den Weg für eine verbesserte User Experience bei der Änderung der Visualisierung von Features. Dies zeigt sich besonders deutlich in Apps, die Usern UI-Controls zur Verfügung stellen, die den Renderer eine Ebene für Datenexploration oder Style-Authoring verändern. Denken Sie an ein Beispiel, das 180.000 stimmberechtigte Standorte zeigt. Der User kann den Slider bewegen, um Bereiche zu erkunden, die für jeden Kandidaten ähnliche Siegesmargen aufweisen. Trotz der großen Datenmenge wird die Visualisierung reibungslos und schnell aktualisiert.

Darüber hinaus werden FeatureLayer mit WebGL-Support hervorgehoben, die automatisch angezeigt werden, wenn User auf Features klicken oder tippen, um das Popup anzuzeigen. Sie können auch die highlight()-Methode in der FeatureLayerView aufrufen, um Funktionen in anderen Workflows hervorzuheben, z.B. um Abfrage-/Auswahlergebnisse anzuzeigen und Funktionen bei Zeigerbewegungen hervorzuheben.

Weitere Daten können in der Ansicht angezeigt werden.

Die aktuelle 2D-Implementierung von FeatureLayer rendert Grafiken mit SVG, was die Anzahl der Features, die in der Ansicht angezeigt werden können, begrenzt. Da nun alle modernen Browser WebGL unterstützen, können wir die Drawing-Pipeline optimieren, so dass Sie Hunderttausende, ja sogar Millionen von Funktionen im Browser anzeigen können. Dies veranlasste uns, unsere Methodik zum Abrufen von Features zu verbessern und die Grenze der Anzahl der Features, die wir in der View zeichnen können, zu erhöhen.

Die ArcGIS API für JavaScript nutzt bereits Feature Tile Abfragen, um Features auf vorsehbare Weise zu erhalten. Dabei wird die Ansicht in quadratische Kacheln unterteilt und räumlich abgefragt, je nach Größe der einzelnen Kacheln. Da diese Anfragen vorhersehbar sind, können wir jede Kachel im Browser, ArcGIS und im CDN zwischenspeichern, wodurch die Belastung durch den Feature-Service effektiv minimiert wird. Dies verbessert die allgemeine Abfrageleistung, indem nach Möglichkeiten einer dieser Caches genutzt wird, anstatt die Daten direkt abzufragen.

In Version 4.5 fragen wir deutlich mehr Features über progressive Feature-Tile-Unterteilungen ab. Wenn beispielsweise die Antwort auf eine einzelne Feature-Tile-Anfrage mehr Features enthält, als in der maxRecordCount des Dienstes erlaubt sind, dann wird diese Tile in vier kleinere Feature-Tiles unterteilt, deren Extents verwendet werden, um nach nach weiteren Features zu suchen. Feature-Kacheln werden schrittweise unterteilt, bis die Anzahl der zurückgebenden Features für den Umfang jeder Kachel kleiner als der maxRecordCount ist. Einige Funktionen können möglicherweise nicht zurückgegeben werden, da die Anzahl der pro Kachel erstellten Unterteilungen begrenzt ist. Wir werden weiterhin mit diesen Grenzwerten experimentieren, so dass eine angemessene Anzahl von Merkmalen zurückgegen wird. Die folgende Animation zeigt, wie sich die Feature-Kacheln unterteilen, wenn Sie Features aus einem Dienst holen, der mehr als 180.000 Polygon-Einträge enthält.

Sie werden feststellen, dass die Kacheln nach der Position der Features unterteilt sind. Bereiche, in denen kleinere Kacheln vorhanden sind, zeigen Orte an, die eine höhere Dichte an Merkmalen aufweisen. Da dieser Datensatz stimmberechtigte Bezirksgrenzen darstellt, ist es sinnvoll, dass die Positionen kleinerer Kacheln mit den Positionen großer Städte korrelieren, die mehr Bezirke haben als ländliche Gebiete.

WebGL für FeatureLayer aktivieren.

Um das Rendern von FeatureLayer in WebGL bei 4.5 zu aktivieren, fügen Sie das folgende Skript in Ihre Anwendung ein, bevor Sie die ArcGIS API für JavaScript in Ihre Webanwendung laden:

Copy to Clipboard

Diese neue Technologie ist derzeit nur bei der Visualisierung von Feature-Services auf ArcGIS Online verfügbar. Der Support für client-seitige Feature-Sammlungen und nicht gehostete Enterprise Feature Services wird zu einem späteren Release unterstützt.

Schlußfolgerungen.

Die WebGL-Implementierung von FeatureLayer befindet sich derzeit in der Beta-Phase. Es ist geplant, die Geschwindigkeit, Qualität und Reaktionsfähigkeit des Drawing-Prozesses in einem zukünftigen Release zu verbessern. Zudem wird aktiv daran gearbeitet, das Web-Worker-Framework der API zu nutzen, um die Message von Feature-Kacheln in einen separaten Prozess zu überführen. Wenn die Beta-Implementierung die gleiche Supportstufe erreicht wie die aktuelle Implementierung, wird WebGL zum Standard für die Darstellung von FeatureLayer in MapView.

Beachten Sie die folgenden Einschränkungen für die Darstellung von 2D-FeatureLayern mit WebGL bei 4.5:

  • Der Support ist auf Ebenen beschränkt, die aus Feature-Services erstellt wurden, die auf ArcGIS Online gehostet werden. Nicht gehostete Enterprise Feature Services und client-Seitige Feature-Sammlungen werden in einem zukünftigen Release unterstützt.
  • Das Ausführen von Abfragemethoden auf dem FeatureLayerView wird nicht unterstützt.
  • Location mit einer sehr hohen Featuredichte in großen Maßstäben zeigen möglicherweise nicht alle verfügbaren Merkmale in kleinen Maßstäben an.
  • Sehr große Datensätze können, insbesondere bei kleinen Mengen, potenziell lange Initialladezeiten erfordern. Server- und Client-seitiges Feature-Tile-Caching ermöglicht es Features, nach dem ersten Daten-Download viel schneller zu laden. Mehr F&E wird in die Verbesserung der Effizienz der Ladezeiten investiert.

Vielen Dank für Ihren Besuch.

3DMaster