You are not logged in.

#1 2015-02-18 17:01:07

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Problem mit Koordinatentransformationen

Hi, ich bin - mal wieder - echt am verzweifeln.

ich möchte mit dem PicLayer-Plugin von Josm georeferenzierte Bilder in "normale" Koordinaten umrechnen.

#JOSM PicLayer plugin calibration data
#Wed Feb 11 17:00:12 CET 2015
POSITION_Y=3357401.2929355833
POSITION_X=9361683.370541029
M12=374.5201595957242
M11=3.8189485056927093
M10=0.0
M02=69.2316515185077
INITIAL_SCALE=14768.73607618794
M01=0.0
M00=3.8189485056927093

und ich brauch die Koordinaten der linken oberen und rechten unteren Ecke. Das Image hat 1654*2338 Pixel und mehr sollte man eigentlich nicht brauchen.

Nur ich krieg es einfach nicht hin.

Gruss
walter

ps: Die Darstellung hier ist auch total daneben: http://wiki.openstreetmap.org/wiki/JOSM … ile_format Die Box mit dem "Mathematical background" bedarf wohl einiger Zeilenvorschübe an den richtigen Stellen.

Last edited by wambacher (2015-02-18 17:24:29)

Offline

#2 2015-02-18 17:25:37

gormo
Member
Registered: 2013-08-01
Posts: 2,110
Website

Re: Problem mit Koordinatentransformationen

wambacher wrote:

ps: Die Darstellung hier ist auch total daneben: http://wiki.openstreetmap.org/wiki/JOSM … ile_format Die Box mit dem "Mathematical background" bedarf wohl einiger Zeilenvorschübe an den richtigen Stellen.

Ich glaube, das ist Matrixschreibweise und die meinen drei Matritzenmutliplikationen. Ich kann die Formel lesen, bloß ist Matrixmultiplikation noch nie meine Stärke gewesen.


OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)

Offline

#3 2015-02-18 17:34:04

MHohmann
Member
From: Tartu, Estonia
Registered: 2009-06-07
Posts: 1,597
Website

Re: Problem mit Koordinatentransformationen

Ich glaube, beim "Mathematical background" ist es eher so gedacht, dass die eckigen Klammern eigentlich von ganz oben nach ganz unten reichen müssten (sich also über alle 3 Zeilen erstrecken), dann sieht man dort nämlich 3 Matrizen, die man multiplizieren muss. Und zwar so:

Zuerst wird die Matrix ganz rechts auf den Vektor (x, y, 1) angewandt, wobei (x, y) Pixelkoordinaten relativ zum Mittelpunkt des Bildes sind. Diese rechts Matrix skaliert den Wert einfach um den Faktor S/100. Wenn du also z.B. die linke obere Ecke von deinem Bild nimmst, hast du (x, y, 1) = (-827, -1169, 1) und mit der Matrix multipliziert kommst du auf (-122137, -172647, 1).

Als nächstes ist die affine Transformationsmatrix in der Mitte dran. Wenn du die auf das Ergebnis von eben anwendest, kommst du auf (-466367, -659703, 1).

Als letztes kommt noch die Matrix ganz links, die nichts anderes macht, als (PX, PY, 0) zu addieren, also eine Verschiebung, damit die Bildmitte an der angegebenen Koordinate landet. Auf das Ergebnis von oben angewendet kommst du auf (2891033, 8701980, 1).

Deine linke obere Ecke sollte also bei (2891033, 8701980) sein - in den Koordinaten der verwendeten Projektion (falls ich so weit richtig gerechnet habe). Die anderen Ecken sind nach der gleichen Methode rechts oben (2891033, 10020637), links unten (3823907, 8701980), rechts unten (3823907, 10020637).


SotM Baltics, 3.-4. August 2013, Tartu, Estonia: amenity=university, mappers=yes

Offline

#4 2015-02-18 17:40:18

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

gormo wrote:
wambacher wrote:

ps: Die Darstellung hier ist auch total daneben: http://wiki.openstreetmap.org/wiki/JOSM … ile_format Die Box mit dem "Mathematical background" bedarf wohl einiger Zeilenvorschübe an den richtigen Stellen.

Ich glaube, das ist Matrixschreibweise und die meinen drei Matritzenmutliplikationen. Ich kann die Formel lesen, bloß ist Matrixmultiplikation noch nie meine Stärke gewesen.

Klar, dass das ne Matrix darstellen soll - ist aber auch nicht gerade meine Stärke.

aber eventuell so?

 [x' ]    [1 0 PX]    [M00 M01  M02]    [S/100 0     0]    [x]
 [y' ]  = [0 1 PY] ×  [M10 M11 -M12]  × [0     S/100 0] ×  [y]
 [IGN]    [0 0  1]    [0   0    1  ]    [0     0     1]    [1]

Bringt mich auch nicht viel weiter, aber so könnte ich das schon mal ins Wiki reinklopfen - falls es nicht falsch sein sollte.

Last edited by wambacher (2015-02-18 17:49:59)

Offline

#5 2015-02-18 17:53:06

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,607
Website

Re: Problem mit Koordinatentransformationen

Upps, Edit-Konflikt. War gerade dabei, das in LaTeX zu machen (und hab's jetzt auch gemacht). Die alte Schreibweise war schon halbwegs richtig, aber eher wie man es in Matlab/Mathematica nutzt. Habe übrigens \times durch \cdot ersetzt, weil man für Matrixmultiplikation entweder gar kein Operatorzeichen oder einen Punkt verwendet.

Zu deinem Problem: Eigentlich ganz simpel. Für jeden Pixel deines Bildes (oder für die Eckpunkte oder was auch immer) musst du den Vektor berechnen (Achtung, hier wird mit homogenen Koordinaten gerechnet, deswegen die zusätzliche Komponente). Du fängst von rechts an und multiplizierst Stück für Stück, das ist alles.

Last edited by SammysHP (2015-02-18 17:55:21)

Offline

#6 2015-02-18 18:10:56

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

SammysHP wrote:

Upps, Edit-Konflikt. War gerade dabei, das in LaTeX zu machen (und hab's jetzt auch gemacht). Die alte Schreibweise war schon halbwegs richtig, aber eher wie man es in Matlab/Mathematica nutzt. Habe übrigens \times durch \cdot ersetzt, weil man für Matrixmultiplikation entweder gar kein Operatorzeichen oder einen Punkt verwendet.

Zu deinem Problem: Eigentlich ganz simpel. Für jeden Pixel deines Bildes (oder für die Eckpunkte oder was auch immer) musst du den Vektor berechnen (Achtung, hier wird mit homogenen Koordinaten gerechnet, deswegen die zusätzliche Komponente). Du fängst von rechts an und multiplizierst Stück für Stück, das ist alles.

Jo, so sieht es schon besser aus - bringt mich aber auch nicht viel weiter.

"Ganz simple" ist gut gesagt, wenn man Matrix-Rechnung gehabt hat.  Aber ich werde schon irgendwo eine Anleitung oder ne Formelsammlung finden.

@mhohmann: das Ergebnis lag einige 100 Km daneben, aber zumindest auf dem richtigen Kontinent wink

Gruss
walter

EDIT: Hab was in Java gefunden, auf dem ich aufbauen kann smile

Last edited by wambacher (2015-02-18 18:20:32)

Offline

#7 2015-02-18 19:56:16

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,607
Website

Re: Problem mit Koordinatentransformationen

Offline

#8 2015-02-18 19:59:30

MHohmann
Member
From: Tartu, Estonia
Registered: 2009-06-07
Posts: 1,597
Website

Re: Problem mit Koordinatentransformationen

Seltsam, dabei sollte meine Berechnung genau der Formel im Wiki entsprechen. Hast du einen Ansatzpunkt, welche Koordinaten ungefähr rauskommen sollten? Vielleicht stimmt etwas mit der Projektion nicht, oder mit der Formel im Wiki, oder in meiner Berechnung.


SotM Baltics, 3.-4. August 2013, Tartu, Estonia: amenity=university, mappers=yes

Offline

#9 2015-02-18 21:17:06

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

MHohmann wrote:

Seltsam, dabei sollte meine Berechnung genau der Formel im Wiki entsprechen. Hast du einen Ansatzpunkt, welche Koordinaten ungefähr rauskommen sollten? Vielleicht stimmt etwas mit der Projektion nicht, oder mit der Formel im Wiki, oder in meiner Berechnung.

ja, aber wirklich ganz grob:

nordwest: 3215600/9481550
südost:     3168370/9514770

sollte wohl hinhauen.

Gruss
walter

Offline

#10 2015-02-18 21:20:00

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

Jo, schau auch gut aus, gerade weil man  da mit matritzen rechnen kann.
Hab ich gerade installiert und arbeite mich ein.

Gruss
walter

Last edited by wambacher (2015-02-18 21:35:36)

Offline

#11 2015-02-18 22:51:00

MHohmann
Member
From: Tartu, Estonia
Registered: 2009-06-07
Posts: 1,597
Website

Re: Problem mit Koordinatentransformationen

Irgendwie komme ich mit den Zahlen auf keinen grünen Zweig... Zum einen hatte ich offenbar PX und PY vertauscht, aber auch wenn ich die passend habe, bringt das nicht viel. Der Punkt ist, dass ich mit den angegebenen Skalenfaktoren grob auf 3,8 * 148 = 562 Einheiten (in der gewählten Projektion) pro Pixel komme, mit deinen Koordinaten der Eckpunkte aber nur auf ganz grob 20 Einheiten pro Pixel. Da kommt irgendwas nicht richtig hin.


SotM Baltics, 3.-4. August 2013, Tartu, Estonia: amenity=university, mappers=yes

Offline

#12 2015-02-18 23:57:43

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

MHohmann wrote:

Irgendwie komme ich mit den Zahlen auf keinen grünen Zweig... Zum einen hatte ich offenbar PX und PY vertauscht, aber auch wenn ich die passend habe, bringt das nicht viel. Der Punkt ist, dass ich mit den angegebenen Skalenfaktoren grob auf 3,8 * 148 = 562 Einheiten (in der gewählten Projektion) pro Pixel komme, mit deinen Koordinaten der Eckpunkte aber nur auf ganz grob 20 Einheiten pro Pixel. Da kommt irgendwas nicht richtig hin.

meine ich auch, dass da was faul sein muß. Hab hoch ein paar neue Kalibrierungen vesucht und komme immer falsch hin.
Hier nochmals ein CAL-File aber zum selben Image. Hab es halt nochmals kalibriert und jetzt die dynamische Methode mit den 3 Referenzpunkten verwendet.

#JOSM PicLayer plugin calibration data
#Wed Feb 18 23:40:41 CET 2015
POSITION_Y=3144843.921914018
POSITION_X=9519879.519414948
M12=-50.87634699525655
M11=0.022148575397414223
M10=6.719567798201829E-5
M02=-23.772573686878683
INITIAL_SCALE=81985.45583742265
M01=-0.0010414742927757161
M00=0.022211044268432425

W = 1668
H = 2338

PX = POSITION_X
PY = POSITION_Y
S  = INITIAL_SCALE/100
print PX,PY,S

X1 = [-W/2,-H/2, 1]
X1 = [0,0,1]
print X1

X2 = [[S, 0, 0],
      [0, S, 0],
      [0, 0, 1]]
print X2

np.dot(X2,X1)

X3 = [[M00, M01, M02],
      [M10, M11,-M12],
      [  0,   0,   1]
     ]

print X3

X4 = [[ 1, 0, PX], 
      [ 0, 1, PY],
      [ 0, 0,  1]
     ]
print X4

np.dot(np.dot(np.dot(X4,X3),X2),X1)

damit krieg in in Python das raus: array([  9.51985575e+06,   3.14489480e+06,   1.00000000e+00]) 
und das ist fast POSITION_Y/POSITION_X:   9519879.                3144843.9
alles sehr merkwürdig.

Ich mach mal damit Schluss für heute. Dreh mich eh im Kreis.

Gruss
walter

Offline

#13 2015-02-19 00:59:44

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: Problem mit Koordinatentransformationen

Nahmd,

ich würde vor Installation von Libraries zuerst die Formeln prüfen.

Gruß Wolf

Offline

#14 2015-02-19 02:38:55

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

Netzwolf wrote:

Nahmd,

ich würde vor Installation von Libraries zuerst die Formeln prüfen.

Gruß Wolf

hab zwar keine Lib installiert sondern nur ein interaktives math programm, aber dass da irgendwo 'ne Formel oder die Matrix faul sein muss, war mir inzwischen schon klar - nur wo?

Danke für dein Beispiel. Ich werde es am DO mal in aller Ruhe analysieren und meine Auswertung daran anpassen.

Gruss
walter

EDT: wow, hab es mal überflogen und bin beeindruckt.

Last edited by wambacher (2015-02-19 02:47:26)

Offline

#15 2015-02-19 09:00:03

MHohmann
Member
From: Tartu, Estonia
Registered: 2009-06-07
Posts: 1,597
Website

Re: Problem mit Koordinatentransformationen

Wenn die Formeln im Wiki so falsch sind, ist es kein Wunder, wenn da Murks rauskommt cool


SotM Baltics, 3.-4. August 2013, Tartu, Estonia: amenity=university, mappers=yes

Offline

#16 2015-02-19 11:13:01

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,607
Website

Re: Problem mit Koordinatentransformationen

Grundsätzlich müsste die Formel aber stimmen. In welcher Reihenfolge man Rotation oder Skalierung durchführt, spielt keine Rolle. Wichtig ist, dass man die Translation zuletzt ausführt, weil man ansonsten nicht um das Zentrum des Bildes drehen würde.

m01 und m10 sind vertauscht und haben falsches Vorzeichen

Vertauscht? Wie wählen die bitte ihren Index?! Vorzeichen… das mache ich meistens durch ausprobieren (je nachdem, wie rum man projiziert).

S wirkt auch auf die Translationsparameter m02 und m12

Das wiederum macht Sinn.

Das Bild wird der Merkatorvergroesserung unterzogen. dazu muss S zusaetzlich durch den Cosinus der Breite dividiert werden

Gut zu wissen. Hätte ja auch auf irgendeine Art rechtwinklig sein können. wink

Ich werde den Teil im Wiki mal aktualisieren.

PS: Weiß jemand, wie man schnell an ein LaTeX-Plugin im Wiki kommen kann?

PPS: So besser?
latex_d89528e34d5bf80bd6248deb56fc1f30.png

Last edited by SammysHP (2015-02-19 11:40:12)

Offline

#17 2015-02-19 11:51:55

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

SammysH wrote:

So besser?
latex_d89528e34d5bf80bd6248deb56fc1f30.png

Aber sicher! Soooo verstehe ich das natürlich sofort wink

Ich mach mich nachher dran, die Sache umzusetzten und dann sehen wir weiter.

Gruss
walter

Offline

#18 2015-02-19 13:04:41

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,607
Website

Re: Problem mit Koordinatentransformationen

Wer ist denn für das Wiki zuständig? Wäre wirklich super, wenn dort das (ein) LaTeX-Plugin hinzugefügt werden könnte. Mit den Bildern ist das nervig.

Offline

#19 2015-02-19 13:16:50

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: Problem mit Koordinatentransformationen

Matrixmultiplikation ist einfach:

matmul.png

Edit: Unfug getilgt.

Last edited by Netzwolf (2015-02-22 12:23:00)

Offline

#20 2015-02-19 14:00:06

SammysHP
Member
From: Celle, Germany
Registered: 2012-02-27
Posts: 1,607
Website

Re: Problem mit Koordinatentransformationen

Ich bin von dir immer wieder überrascht. Gibs zu, du hast schon längst eine Zeitmaschine gebaut, damit du das alles schaffst und immer noch Zeit für solche Spielereien hast. big_smile

Offline

#21 2015-02-19 15:26:51

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

Leider immer noch daneben - wenn ich nicht völlig schief liege:

zuerst mal die Lage in Josm - ja, es ist Nepal:

tn_piclayer2.png
Das Image habe ich mit dem PicLayer-Pluging referenziert. Leider hat es keinen transparenten Hintergrund, aber ich hab Josm so eingestellt, dass man hoffentlich die nach diesen Image erfasste Außengrenze von Lalitpur einigermaßen erkennen kann.

Danach hab ich das Programm von Netzwolf um eine weitere Ausgabe erweitert und bekomme jetzt das:

Bildmitte   :   x:  9513536   y:  3179064     lon:  85.461555  lat: 27.444086
Oben  links :   x:  9496946   y:  3202516     lon:  85.312518  lat: 27.630889
Oben  rechts:   x:  9530127   y:  3202516     lon:  85.610592  lat: 27.630889
Unten links :   x:  9496946   y:  3155613     lon:  85.312518  lat: 27.256967
Unten rechts:   x:  9530127   y:  3155613     lon:  85.610592  lat: 27.256967

insert into refnodes values(ST_SetSRID(ST_MakePoint( 9513536,  3179064),3857),'Bildmitte   ');
insert into refnodes values(ST_SetSRID(ST_MakePoint( 9496946,  3202516),3857),'Oben  links ');
insert into refnodes values(ST_SetSRID(ST_MakePoint( 9530127,  3202516),3857),'Oben  rechts');
insert into refnodes values(ST_SetSRID(ST_MakePoint( 9496946,  3155613),3857),'Unten links ');
insert into refnodes values(ST_SetSRID(ST_MakePoint( 9530127,  3155613),3857),'Unten rechts');

Den zweiten Block konnte ich mit Cut&Paste in Postgresql/PostGIS eingeben. Zudem hab ich mit den Werten 9496946,3202516 (Oben links)  "meine" Daten in Postgis umgerechnet und danach beides (also die Rohdaten vom Script als auch mein in PostGIS umgerechtete Image) mittels QGIS dargestellt:

tn_piclayer1.png

Und ja: Qgis ist auf 3857 eingestellt.

Wie man leicht erkennt liegt das Bild noch ein wenig falsch, deckt sich aber total mit den vom Script errechneten Basiswerten. Daher können die Basiswerte auch nicht ok sein. Es müsste alles noch (um die halbe Bildgröße?) nach Nordwest verschoben werden.

Grübelnde Grüsse
walter

ps: so nah waren wir bisher nicht dran smile

Last edited by wambacher (2015-02-19 15:30:46)

Offline

#22 2015-02-19 15:40:54

seichter
Member
Registered: 2011-05-21
Posts: 2,993

Re: Problem mit Koordinatentransformationen

wambacher wrote:

X1 = [-W/2,-H/2, 1]
X1 = [0,0,1]
print X1

Ich weiß nicht, ob das noch was mit dem aktuellen Workflow zu tun hat, aber da wird der Wert der ersten Zeile (Pixelkoordinaten Bildmitte) in der nächsten Zeile durch die Koordinaten der Ecke (0,0) überschrieben.

Offline

#23 2015-02-19 15:49:08

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

seichter wrote:

Ich weiß nicht, ob das noch was mit dem aktuellen Workflow zu tun hat, ...

Nö, das ist mausetot. Ich nehme nur noch den Script von Netzwolf.

Last edited by wambacher (2015-02-19 15:50:30)

Offline

#24 2015-02-19 16:05:29

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,522
Website

Re: Problem mit Koordinatentransformationen

Nur nochmals zur Sicherheit:

./josmPiclayerCalDecoder.pl 1654 2338 nepal_01_Admin.jpg-move.cal

mit

#JOSM PicLayer plugin calibration data
#Wed Feb 18 02:01:41 CET 2015
POSITION_Y=3132393.459019553
POSITION_X=9534742.422238246
M12=-50.68955846622368
M11=0.021788490422173075
M10=0.0
M02=-23.031323884902726
INITIAL_SCALE=81985.45583742265
M01=0.0
M00=0.021788490422173075

ergibt obiges Ergebnis.

Offline

#25 2015-02-19 16:30:46

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: Problem mit Koordinatentransformationen

Nahmd,

wambacher wrote:

Danach hab ich das Programm von Netzwolf um eine weitere Ausgabe erweitert

Ich hoffe, dass war ein sachgemäßer Eingriff, denn bei unsachgemäßen Eingriffen erlischt die Garantie! tongue

wambacher wrote:

./josmPiclayerCalDecoder.pl 1654 2338 nepal_01_Admin.jpg-move.cal

mit

#JOSM PicLayer plugin calibration data
#Wed Feb 18 02:01:41 CET 2015
POSITION_Y=3132393.459019553
POSITION_X=9534742.422238246
M12=-50.68955846622368
M11=0.021788490422173075
M10=0.0
M02=-23.031323884902726
INITIAL_SCALE=81985.45583742265
M01=0.0
M00=0.021788490422173075

ergibt obiges Ergebnis.

Liefert bei mir im JOSM folgendes Ergebnis:

http://www.netzwolf.info/tmp/madhyamanchal.jpg

Und die Anzeige passt zu dem vom Skript berechneten Ergebnissen:

$ /opt/www/www.netzwolf.info/htdocs/2015/josmPiclayerCalDecoder.pl 1654 2338 <rahmen.png.cal
Bildmitte   :   x:  9513536   y:  3179064     lon:  85.461555  lat: 27.444086
Oben  links :   x:  9496946   y:  3202516     lon:  85.312518  lat: 27.630889
Oben  rechts:   x:  9530127   y:  3202516     lon:  85.610592  lat: 27.630889
Unten links :   x:  9496946   y:  3155613     lon:  85.312518  lat: 27.256967
Unten rechts:   x:  9530127   y:  3155613     lon:  85.610592  lat: 27.256967

Folgerung: wir nutzen eine unterschiedliche Projektion.
(die speichert das &$%" Piclayer nicht in die Config).

Ich hab beim JOSM eingestellt:

Merkator / EPSG:3857

Gruß Wolf

Last edited by Netzwolf (2015-02-19 16:42:51)

Offline

Board footer

Powered by FluxBB