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:
queryLayer := TADOQUERY.Create(nil);
// Get Polygons
sqlString := 'select polygons from obj';
queryLayer.SQL.Add(sqlString);
queryLayer.connection := MainConnection;
queryLayer.Open;
Konvertierung von String zu Polygon: ca. 3:30 min
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:
const
//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));
Zeichnen der Polygone: 3Sec
Hat jemand eine Idee, wie ich die Polygonverwaltung besser gestalten kann?
Wie speichert ihr große Datenmengen effizient?
Eignet sich
SQL?
vielen Dank
Jacks