AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verwalten und Speichern von Polygonen

Verwalten und Speichern von Polygonen

Ein Thema von Jacks · begonnen am 4. Aug 2017 · letzter Beitrag vom 4. Aug 2017
Antwort Antwort
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
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.567 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:00
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.518 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:02
GLTF(2)
Markus Kinzler
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
644 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:10
Da gibt es aber noch keine Pascal - Bindung oder?
Fritz Westermann
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.518 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:22
Format basiert auf json.

ASSIMP kann dieses Format

https://github.com/ev1313/Pascal-Assimp-Headers
Markus Kinzler
  Mit Zitat antworten Zitat
Jacks

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

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:37
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
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
644 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:44
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
Fritz Westermann
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 13:55
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?
  Mit Zitat antworten Zitat
Jacks

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

AW: Verwalten und Speichern von Polygonen

  Alt 4. Aug 2017, 14:45
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:34 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