Ich frage mich, welche Speichermethode zum schnellsten Lesen der Kartenvektoren für das Rendern führt. SHP? PostGres? SQLite? (Sie ändern sich nicht oft und ich brauche keine räumlichen Funktionen für diese Vektoren).
8
Ich frage mich, welche Speichermethode zum schnellsten Lesen der Kartenvektoren für das Rendern führt. SHP? PostGres? SQLite? (Sie ändern sich nicht oft und ich brauche keine räumlichen Funktionen für diese Vektoren).
Antworten:
Geschwindigkeitstests
In dieser Präsentation (ab 2007) werden einige sehr schnelle Tests von Shapefiles im Vergleich zur Datenbank (PostGIS) für MapServer vorgestellt .
Zusammenfassend:
Und die Zeiten im Detail, die auch bei der Entscheidung helfen können, ob das Speicherformat ein wichtiger Faktor ist.
Verwenden Sie in MapServer immer FastCGI, wenn Sie eine Datenbank verwenden, da die Datenbankverbindungen wiederverwendet werden können. Andernfalls muss bei jeder Anforderung eine neue Verbindung erstellt werden.
Implementierungen für Shapefile-Reader
Die Geschwindigkeit des Lesens eines Shapefiles (und von Daten aus einer Datenbank) hängt von der spezifischen Codierungsimplementierung ab.
Der Quellcode für MapServer, der ein Shapefile öffnet, ist hier zu sehen . Nach den Kommentaren können Sie sehen, wie wichtig es ist, einen Index zu haben. Normalerweise können Sie eine Datei nur in eine Richtung lesen, um einen Datensatz zu erhalten, aber mit einem Index können Sie in zwei Richtungen lesen.
Ein weiteres Beispiel für das Öffnen eines Shapefiles ist in der Python-Quelle für PyShp zu sehen . Wieder können Sie sehen, wie ein Index verwendet wird, um bestimmte Formen direkt zu finden.
Weitere Faktoren für Condsider
Die Einschränkungen des DBF-Formats (Einschränkungen der Feldgröße, keine Nullunterstützung, Einschränkungen der Textspeicherung) sollten ebenfalls berücksichtigt werden, wenn entschieden wird, ob eine Datenbank verwendet werden soll oder nicht.
Eine Datenbank bietet auch Möglichkeiten zum Sichern von Daten, zum einfacheren Zusammenfügen und Erstellen von Ansichten, zum Protokollieren und zu vielen anderen Funktionen, die Sie mit einer eigenständigen Datei nicht erhalten.
quelle
Im Gegensatz zu Dariapra zeigt mir meine Erfahrung bei der Entwicklung von Maperitive , dass der größte Engpass beim tatsächlichen Laden der Daten vor dem Rendern besteht. Es hängt sehr stark davon ab, wie groß das insgesamt gespeicherte Dataset ist und wie groß das Dataset ist, das Sie auf einmal rendern möchten. Wenn Sie alles in den Speicher laden können, sind Shapefiles wahrscheinlich besser als die Verwendung eines Datenbankmoduls.
quelle
Welches Programm verwenden Sie zum Rendern? Dies kann die Ergebnisse beeinflussen. Auf jeden Fall ist ein Shapefile mit einem räumlichen Index (z. B. http://mapserver.org/utilities/shptree.html ), der verwendet wird, häufig die schnellste Technik. Abgesehen davon: Es hängt von Ihrer Anwendung ab, aber das Zwischenspeichern Ihrer gerenderten Ergebnisse ist oft viel nützlicher, um die Leistung zu verbessern.
quelle
Shapefile ist die schnellste und wahrscheinlich beste Wahl. Es gibt Overhead für jede SQL-Datenbank, dann wird die Rückgabe großer Ergebnismengen verwaltet (die Konvertierung von Datenbankdatentypen in native Datentypen verlangsamt ebenfalls die Arbeit).
Versuchen Sie, ein Open Source-Paket von maptools.org zu verwenden, um Ihre Lesevorgänge durchzuführen . Die ArcGIS-Tools sind zwar speziell entwickelt, haben jedoch einen gewissen Aufwand und sind teuer.
Hoffe das hilft
quelle