Einzelnen Beitrag anzeigen

Jacks

Registriert seit: 7. Mär 2016
14 Beiträge
 
#1

Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 12:53
Datenbank: SQL • Version: 2014 • Zugriff über: TADO
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
  Mit Zitat antworten Zitat