Problem mit Koordinatentransformationen

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

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.

Matrixmultiplikation ist einfach:

Edit: Unfug getilgt.

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

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

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


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:

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

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.

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

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.

Nahmd,

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

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

nö, nur diese zusätzliche Ausgabe:


sub postgis {

	my ($label, $imageX, $imageY) = @_;

	my ($x, $y) = transform ($imageX, $imageY);

	my ($lon, $lat) = epsg3857toDegrees ($x, $y);

        printf "insert into refnodes values(ST_SetSRID(ST_MakePoint(%8d, %8d),3857),'%s');\n",
               $x, $y, $label;
}
...
#------------------------------------------------------
# und jetzt noch ernster
#------------------------------------------------------
printf"\n";

postgis ("Bildmitte   ",  0            ,  0             );
postgis ("Oben  links ", -$imageWidth/2, +$imageHeight/2);
postgis ("Oben  rechts", +$imageWidth/2, +$imageHeight/2);
postgis ("Unten links ", -$imageWidth/2, -$imageHeight/2);
postgis ("Unten rechts", +$imageWidth/2, -$imageHeight/2);

Ich wohl auch:

und hier das Image: http://www.mofald.gov.np/districtmap/25Lalitpur/01_Admin.jpg

So langsam versteh ich die Welt nicht mehr - oder die mich nicht?

So, und jetzt hab ich mir durch ein verd. “rm * ~” den ganzen Kram zerschossen :frowning:

Melde mich irgendwann mal wieder.

Gruss
walter

Bingo!

ich musste ja alles nochmals von vorne durchspielen und jetzt funzt es. Wird wohl ein komisches Kalibrierungsfile gewesen sein. Die jetzt noch zu erkennenden geringfügigen Abweichungenen kommen von der Neukalibrierung, sind also nicht schlimm.

Danke nochmals an alle Helfer und Gruss
walter

Oh, gerade gesehen: https://josm.openstreetmap.de/wiki/Help/Plugin/PicLayer

Ich bekomme beim Kalibrieren des Bildes vom Lalitpur-Distrikt die folgende cal-Datei

#JOSM PicLayer plugin calibration data
#Thu Feb 19 18:27:34 CET 2015
POSITION_Y=3195594.011383851
POSITION_X=9497775.91890219
M12=54.696858132803214
M11=0.29141155222927567
M10=0.0034887618851810187
M02=2.717468729812156
INITIAL_SCALE=6124.726383092037
M01=-0.0034888386184205216
M00=0.29141176398165014

Die Abweichung in den Skalierungsfaktoren ist nicht weiter tragisch, die resultierende Skalierung S*M00 bzw M11 stimmt auf Promille genau überein.
Gravierend ist die Abweichung in PX und PY (Bildmittelpunkt in projizierten Koordinaten) zu Post #24

POSITION_Y=3132393.459019553
POSITION_X=9534742.422238246

Auch die Eckpunkte des Bildes
NW 3215180/9481030
SO 3168480/9514920
stimmen im Rahmen der Kalibriergenauigkeit gut mit den Angaben in #9 überein.
Alles in Mercator/3857.

Fazit: Schon beim Erzeugen des cal-Files ging was schief. Der Bildmittelpunkt in #24 passt nicht zu den Ecken in #9 (und bei mir).

Da ist noch das beschrieben, was im Wiki als alte Version des cal-Files bezeichnet wird (nur Skalierung, Translation und Rotation).
Die neuere berechnet aus den drei Skalierungspunkten eine affine Transformation mit Scherungen und linearen Verzerrungen und schreibt z.B. kein ANGLE mehr.

Jo, kannte ich. Bezieht sich aber noch auf das alte CAL-Format mit Angle.

daher hab ich mich nicht näher damit beschäftigt.

Gruss
walter

Ach mist, hätte es mir wohl doch durchlesen sollen. Dachte, es wäre aktuell.

So sehe ich es inzwischen auch. Hatte vorhin 3-4 Images und wohl 10-12 Cals. Ein “Glück”, dass ich aus Versehen alles gelöscht habe. Die Programme hatte ich aber noch im offenen Editor; die brauchte ich nur noch abzuspeichern.

Zwischenstand:

Als nächstes muss ich im geladenen Bild das Rauschen rausfiltern und dann werden Shapes raus gemacht. Übrigens alles mit PostGIS/Raster und danach normales PostGIS.

Diese Texte kleben zu sehr am Rand und müssen noch weg.

Gruss
walter

Die “neue” .cal Beispieldatei im OSM-Wiki ist für eine topografische Karte in der UTM35 Projektion
(EPSG:32635). EPSG:3857 wird man wohl wegen der Verzerrung bei keinen ernst zu nehmenden Karten finden.

Die Projektion der Distrikt-Karte ist leider nicht bekannt. Bei dem kleinen Ausschnitt liegt die Abweichung aber im Rahmen der Genauigkeit der Kalibrierung. Durch die Kalibrier-Transformation wird sowieso auf die Projektion der Referenzdatei korrigiert.
In JOSM ist die Standardprojektion halt 3857. Andere gehen natürlich auch, aber wenn man Pech hat, muss man bei unterschiedlichen Ebenen ständig zwischen den Projektionen hin- und herschalten.

Bin ein wenig weiter gekommen:

Jetzt hab ich pro Gebiet ein Polygon mit einigermaßen glattem Verlauf, auf jeden Fall nicht mehr so stufig wie vorher. Allerdings liegen die Polygone ein wenig auseinander und es sind kleine Lücken dazwischen. Diese Lücken müsste man beseitigen können, in dem man eine neue Line erzeugt, die genau in der Mitte der Lücken verläuft. Oder indem man die Umrissen miteinander verschmilzt.

Mal sehen, wie weit ich noch komme. Das reizt mich halt ein wenig.

Gruss
walter