Wie gehen Grafikprogrammierer mit dem Rendern von Scheitelpunkten um, die das Bild nicht verändern?

10

Der Titel ist also etwas umständlich. Ich werde einige Hintergrundinformationen geben und dann meine Frage stellen.

Hintergrund : Ich arbeite als Entwickler von Web- GIS- Anwendungen, habe aber in meiner Freizeit mit dem Rendern von Karten und der Verbesserung der Datenaustauschformate gespielt. Ich arbeite nur im 2D-Raum.

Ein interessantes Problem, auf das ich gestoßen bin, ist, dass beim Rendern eines Polygons in kleinem Maßstab (herausgezoomt) viele der Scheitelpunkte redundant sind. Ein Extremfall wäre, dass Sie ein Polygon mit 500.000 Eckpunkten haben, das nur ein einziges Pixel einnimmt. Wenn Sie diese Daten an den Browser senden, ist es sinnvoll, ~ 499.999 dieser Scheitelpunkte wegzulassen. Eine Möglichkeit, dies zu erreichen, besteht darin, ein Bild auf einem Server zu rendern und es als PNG zu senden: voila, das ist ein Punkt. Manchmal möchten wir jedoch, dass Daten an den Browser gesendet werden, wo sie mit SVG (oder Canvas oder Webgl) gerendert werden können, damit sie interaktiv sind.

Das Problem : Es stellt sich heraus, dass es mit modernen geografischen Datensätzen sehr einfach ist, die Rendering-Fähigkeiten von SVG zu überlasten. Um mit diesen Einschränkungen fertig zu werden, versuche ich herauszufinden, wie ein Datensatz für einen bestimmten Maßstab und eine bestimmte Kartenausdehnung (und gegebenenfalls für eine bekannte Breite und Höhe der Kartenpixel) visuell verlustfrei reduziert werden kann .

Ich habe nur mit dem Douglas-Peucker-Algorithmus eine große Reduzierung der Datengröße erzielt , und ich glaube, ich habe es geschafft, die Polygone auf ein Pixel genau zu halten. Leider behält Douglas-Peucker die Topologie nicht bei, sodass sich die Darstellung der Grenzen zwischen Polygonen geändert hat. Ich konnte nicht ohne weiteres andere Algorithmen finden, um sie auszuprobieren und an den Zweck anzupassen, aber ich habe nicht viel CS / Algorithmus-Hintergrund und erkenne sie möglicherweise nicht, wenn ich sie sehe.

canisrufus
quelle
1
Google für "Topologisch konsistente Douglas-Peucker" und Sie finden einige Links zu Abstracts einiger Artikel. Leider müssen Sie für die vollständigen Artikel bezahlen, die ich gesehen habe.
Doc Brown
@ DocBrown Danke! Questia scheint sogar eine kostenlose Testversion zu haben.
Canisrufus

Antworten:

3

Was Sie suchen, ist 2d level of detail algorithms.

Auf Google ist viel darüber dokumentiert, wenn Sie nach diesen hervorgehobenen Begriffen suchen.

Diese Frage zum Stapelüberlauf enthält die Informationen, nach denen Sie beim Rendern auf 2D-Detailebene suchen.

Gemeinschaft
quelle
+1 für das sehr relevante Vokabular. Es sieht so aus, als würde ich tatsächlich einen Detaillierungsgrad-Ansatz verwenden, benötige aber einen Polygon-Vereinfachungsalgorithmus, der meinen Anforderungen entspricht. Fand eine ordentliche Übersicht für 3D. Ich glaube, ich habe tatsächlich eine geeignete Vereinfachungsstrategie ausgearbeitet, obwohl ich keine Zeit hatte, sie zu codieren.
Canisrufus