Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verwalten und Speichern von Polygonen (https://www.delphipraxis.net/193478-verwalten-und-speichern-von-polygonen.html)

Jacks 4. Aug 2017 11:53

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:
  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

Luckie 4. Aug 2017 12:00

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?

mkinzler 4. Aug 2017 12:02

AW: Verwalten und Speichern von Polygonen
 
GLTF(2)

Fritzew 4. Aug 2017 12:10

AW: Verwalten und Speichern von Polygonen
 
Zitat:

Zitat von mkinzler (Beitrag 1378080)

Da gibt es aber noch keine Pascal - Bindung oder?

mkinzler 4. Aug 2017 12:22

AW: Verwalten und Speichern von Polygonen
 
Format basiert auf json.

ASSIMP kann dieses Format

https://github.com/ev1313/Pascal-Assimp-Headers

Jacks 4. Aug 2017 12:37

AW: Verwalten und Speichern von Polygonen
 
Zitat:

Zitat von Luckie (Beitrag 1378079)
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?

Warum das öffnen der DB solange dauert? -> Keine Ahnung :(

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

Fritzew 4. Aug 2017 12:44

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

Namenloser 4. Aug 2017 12:55

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?

Jacks 4. Aug 2017 13:45

AW: Verwalten und Speichern von Polygonen
 
Zitat:

Zitat von Fritzew (Beitrag 1378085)
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

ok, danke für den Tipp. Aktuell ist es in EDIF Format.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf