Datenbank: SQL • Version: 2014 • Zugriff über: TADO
Verwalten und Speichern von Polygonen
Hi Zusammen,
aktuell bin ich nicht zufrieden mit der Lade-Geschwindigkeit von großen Mengen (100.000) Polygonen. Die Zeiten für 150.000 Polygone (ca. 200Stützstellen) betragen: Öffnen der Datenbank: ca. 35 sec
Delphi-Quellcode:
Konvertierung von String zu Polygon: ca. 3:30 min
queryLayer := TADOQUERY.Create(nil);
// Get Polygons sqlString := 'select polygons from obj'; queryLayer.SQL.Add(sqlString); queryLayer.connection := MainConnection; queryLayer.Open; Meine Daten sind in einer SQL Datenbank abgelegt. Der Polygon-String ist folgendermaßen aufgebaut (polygon (pointlist (pt 5443635 4815174) (pt 5444761 4815174) (pt 5444761 4815049) ....
Delphi-Quellcode:
Zeichnen der Polygone: 3Secconst //Iterativ gehe ich über alle Character -> suche nach der ersten Zahl -> X und dann nach der zweiten Zahl -> Y PolyStr := queryLayer.FieldByName('polygon').AsString; while TCharacter.isDigit(Char(PolyStr[i])) do begin ch := PolyStr[i]; xValue[X] := ch; Inc(X); Inc(i); end; ... //selbes für Y MyPoly[index].X := StrToInt(String(xValue)); MyPoly[index].Y := StrToInt(String(yValue)); Hat jemand eine Idee, wie ich die Polygonverwaltung besser gestalten kann? Wie speichert ihr große Datenmengen effizient? Eignet sich SQL? vielen Dank Jacks |
AW: Verwalten und Speichern von Polygonen
Kannst du die Polygone nicht so in der DB ablegen, dass du dir die Konvertierung sparen kannst? Und warum dauert das Öffnen der DB solange?
|
AW: Verwalten und Speichern von Polygonen
|
AW: Verwalten und Speichern von Polygonen
Zitat:
|
AW: Verwalten und Speichern von Polygonen
|
AW: Verwalten und Speichern von Polygonen
Zitat:
Ich bin häufig auf den Begriff "Spatial Database" gestoßen. Läuft damit die Verwaltung der Objekte besser ab? https://docs.microsoft.com/de-de/sql...ata-sql-server |
AW: Verwalten und Speichern von Polygonen
Ist das Dein eigens Format, also verwaltest Du die Datenbank selber?
Dann schreibe doch die Polygone als Blob binär in die Datenbank. Spart die Umwandlung |
AW: Verwalten und Speichern von Polygonen
Ich würde erst mal messen, wo die meiste Zeit verschwendet wird. Ein Binärformat mag zwar schneller sein als ein Textformat, aber ich kann mir eigentlich nicht vorstellen, dass es so viel ausmacht. 100% Speedup wäre vielleicht drin, aber das wäre immer noch langsam. Ich habe anhand deiner Daten mal überschlagen und komme auf eine Verarbeitungsgeschwindigkeit von 2.85 MB pro Sekunde. Das ist sehr wenig. DDR4-RAM schafft zwischen 12 und 25 GB pro Sekunde.
Außerdem frage ich mich, ob du wirklich alle 150 000 Polygone auf einmal laden musst. Ist Lazy Loading keine Option? |
AW: Verwalten und Speichern von Polygonen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz