AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

Ein Thema von verkouter · begonnen am 27. Feb 2018 · letzter Beitrag vom 2. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2   
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#1

Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 16:39
Ich möchte ein Programm schreiben, das eine Exceltabelle (siehe Anhang) in ein Stringgrid liest.(funktioniert)
Dann sollen alle Koordinate auf ein Image gezeichnet werden z.B. als Kreis.
Die Gauß Krüger-Koordinaten sind eigendlich nur Meterangaben in Bezug auf ein Meridian.
Eigendlich muß die Zeichnung ja nur aus den Differenzen der Koordinaten gezeichnet werden, dabei wäre der kleinste Hochwert aber am weitesten Oben auf dem Image,
ist in Wirkichkeit aber am weitesten unten.
Angehängte Dateien
Dateityp: zip Mappe1.zip (68,9 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.175 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 16:48
dabei wäre der kleinste Hochwert aber am weitesten Oben auf dem Image
Kommt auf dein Koordinatensystem an, das kannst du ja anders definieren (MSDN-Library durchsuchenSetMapMode und seine Freunde)
oder dir einfach nur denken es sei anders und von der Unterkante subtrahieren.

z.B. TCanvas und dein Monitor zählen von oben nach unten, aber Bitmaps (deren gespeicherten Lines) von unten nach oben (der Canvas eines Bitmap aber wieder von oben nach unten) ... "standardmäßig"
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (27. Feb 2018 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
884 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 18:28
Das mit den Bitmaps ist falsch. Man kann sich das aussuchen, wie rum Bitmaps zählen sollen. Positive Höhen so wie du sagst, negative Höhen von oben nach unten.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#4

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 18:51
Zu erst geht es mir um die Aufbereitung der Kooerdinaten im Stringgrid.
Habe das vorher in Excel gemacht. Soll jetzt aber direkt im Programm stattfinden.
Ich muss zuerst in der Hochwertspalte den kleinsten Wert ermittel ??? ,diesen von allen Werten abziehen, und dass selbe nochmal bei den Rechtswerten.
Daran scheitert es schon.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
884 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 19:24
Auf das StringGrid greift man mit Delphi-Referenz durchsuchenTStringGrid.Cells zu. Für das Minimum durchläuft man die Spalte und nutzt Delphi-Referenz durchsuchenMath.Min.

Delphi-Quellcode:
Minimum := StrToFloat(StringGrid.Cells[1,1]);
for i := 2 to StringGrid.RowCount - 1 do
Minimum := Math.Min(Minimum, StrToFloat(StringGrid.Cells[1,i]));
Weitere Hilfe nur mit Projekt.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.175 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 27. Feb 2018, 20:01
Zitat:
Zu erst geht es mir um die Aufbereitung der Kooerdinaten im Stringgrid.
Da klang deine Frage/Beschreibung im ersten Post aber irgendwie anders. Dort ging es ja schon um das Zeichnen und Koordinaten.

Delphi-Quellcode:
Minimum := StrToFloat(StringGrid.Cells[1,1]);
for i := 2 to StringGrid.RowCount - 1 do
Minimum := Math.Min(Minimum, StrToFloat(StringGrid.Cells[1,i]));
Das findet dann erstmal das Kleinste, für den Anfang.

Minimum := Math.Min(Minimum, StrToFloat(StringGrid.Cells[1,i]));
entspricht dabei
if StrToFloat(StringGrid.Cells[1,i]) < Minimum then Minimum := StrToFloat(StringGrid.Cells[1,i]);
Und bei nachfolgenden Suchen, nach dem nächst größeren Wert, werden nun nur noch die Werte betrachtet, die größer als das Minimum des vorherigen Durchgangs sind,
also if (X < DiesesMinimum) and (X > LetztesMinimum) then


Oder die Zeilen erstmal aufsteigend sortieren und dann einfach nur noch alle Zeilen von oben nach unten durchgehn.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (27. Feb 2018 um 20:03 Uhr)
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 28. Feb 2018, 16:59
Danke erstmal für Eure Hilfe. Ich sortiere jetzt die 2. Spalte nach Größe und dann die 3. Spalte. Bekomme so die kleinsten und größten Werte.
Durch Tauschen von x und y habe ich jetzt eine eingenordete Zeichnung hinbekommen. Gauß-Krüger ???
Hat vielleicht noch Jemand eine Idee, wie ich das ganze um den Bildmittelpunkt drehen könnte. Dabei möchte ich aber nicht das Image drehen, sondern die Koordinaten
neu berechnen.
Angehängte Dateien
Dateityp: zip Gauß Krüger.zip (99,9 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
884 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 1. Mär 2018, 14:58
https://de.wikipedia.org/wiki/Drehmatrix
Man beachte die Formel unter "Diese Matrixmultiplikation ergibt".

Für eine Drehung um einen Punkt, der nicht (0,0) ist, braucht es dann schon Kenntnisse in Affiner Geometrie. Dafür kann man zur Not mein RedeemerAffineGeometry aus RedeemerSVG verwenden:
AffineTransformation(AffineRotation(90, 100, 200), Point(x,y)) <-- Das dreht den Punkt (x,y) an der Position (100,200) um 90°.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 2. Mär 2018, 15:43
Habe im Internet was zur Drehmatrix gefunden, was ich auch gleich eingebaut habe.
Verstanden habe ich es aber bis jetzt noch nicht.
Wenn ich meine Zeichnung z.B um 33 Grad drehe, werden die Werte negativ, was das Bild natürlich
extrem nach Links verschiebt. Da bin ich noch auf der Suche, irgendwie mit meinen Max-Werten das auszugleichen.
Angehängte Dateien
Dateityp: zip Gauß Krüger.zip (115,5 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

AW: Brauche Denkanstoß für Zeichnung mit Gauß Krügerkoordinaten

  Alt 3. Mär 2018, 14:10
Ungetestet:

Delphi-Quellcode:
procedure TForm1.ToolButton2Click(Sender: TObject);
var winkel,x,y,xc,yc :real;
Img : TImage;
i:integer;
begin

winkel:=strtofloat(edit1.Text);

// Mitte berechnen
xc := (max1+min1) / 2;
yc := (max2+min2) / 2;
for i := stringgrid1.RowCount-1 downto 1 do
begin
x:=strtofloat(stringgrid1.Cells[1, i]);
y:=strtofloat(stringgrid1.Cells[2, i]);


winkel := -winkel; // da Y Achse von unten nach oben
// Winkelfunktionen benoetigen Rad anstatt Grad
winkel := DegToRad(winkel);

// in den Ursprung verschieben
x := xc - x;
y := yc - y;

// drehen

xn := x * cos (Winkel) - y * Sin(Winkel);
yn := x * sin (Winkel) + y * Cos(Winkel);

// zurueck verschieben
x := xc + x;
y := yc + y;

stringgrid1.Cells[3,i]:=floattostr(x);
stringgrid1.Cells[4,i]:=floattostr(y);

end;
zeichnen;
end;

Bitte gewoehn dir frueh genug an, den Programmcode einzuruecken.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 01:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf