You are not logged in.

Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

1

Tuesday, May 17th 2011, 4:54pm

Umrechnung Polarkoordinaten auf 2D Pixelkoordinaten

Hallo Forum,

ich möchte für eine Webanwendung unterschiedliche Orte mit Fähnchen auf einer 2-Dimensionalen Ortskarte markieren. Die Orte haben die Koordinaten der OpenGeoDB "Lon" und "Lat" des Polarkoordinatensystems. Das Problem ist, dass die einzelnen Karte nausschnitte als PNG Format vorliegen, und daher müssten die Koordinaten mithilfe einer Abbildungsvorschrift auf die Pixelkoordinaten der jeweiligen Karte umgerechnet werden. Hat vielleicht jemand einen Tip, wie man sowas berechnen kann?

Danke

jbr

Unregistered

2

Tuesday, May 17th 2011, 4:58pm

Das kommt auf die Kartenprojektion an.
PS: Hier hast du als Beispiel die Formel für die Mercator-Projektion: http://de.wikipedia.org/wiki/Mercator-Pr…Cr_normale_Lage

This post has been edited 1 times, last edit by "jbr" (May 17th 2011, 5:00pm)


Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

3

Wednesday, May 18th 2011, 11:35am

danke jbr. Dort steht, wie man von WGS84 in das X/Y UTM Koordinatensystem umrechnet. Der nächste Schritt wäre, die UTM Koordinaten in die Pixelkoordinaten umzurechnen. Leider stehe ich wieder etwas auf dem Schlauch, weil ich hierzu eine homogene Transformationsmatrix bestimmen, muss, und keine Ahnung habe, wie man das bewerkstelligt...

Für Tipps wäre ich dankbar.

kakTuZ

größtenteils harmlos

  • "kakTuZ" is male

Posts: 309

Date of registration: Oct 14th 2003

Location: Hannover

Occupation: Software Developer

4

Wednesday, May 18th 2011, 8:50pm

Wie gross ist denn die "Ortskarte"? Wenn es sich da nur um eine kleine geographische Region (z.b "nur" eine Stadt") dann könntest du das näherungsweise machen. Einfach für den Kartenausschnitt min/max Lat und Long bestimmen und dann die einzelnen Orte linear projizieren. Könntest dir so jegliche Koordinatentransformation sparen.
#! /bin/bash
yes 'arch is still the best'

KaiStapel

Trainee

Posts: 59

Date of registration: Sep 11th 2007

Location: FG SE, LUH

5

Sunday, May 22nd 2011, 11:28am

Btw, hier ein schöner Vergleich der verschiedenen Projektionsmöglichkeiten.

Im Quellcode von Protovis findet ihr sicher auch die Implementierungsdetails.

Schöne Grüße
Kai
© by Kai

paradroid

Junior Schreiberling

Posts: 231

Date of registration: Feb 28th 2002

6

Monday, May 23rd 2011, 8:19am

danke jbr. Dort steht, wie man von WGS84 in das X/Y UTM Koordinatensystem umrechnet. Der nächste Schritt wäre, die UTM Koordinaten in die Pixelkoordinaten umzurechnen. Leider stehe ich wieder etwas auf dem Schlauch, weil ich hierzu eine homogene Transformationsmatrix bestimmen, muss, und keine Ahnung habe, wie man das bewerkstelligt...

Für Tipps wäre ich dankbar.

Also, irgendetwas musst Du über Deine Kartenbitmaps schon wissen, sonst geht das gar nicht. Ich nehme mal an, dass Du einen Punkt R der Karte (z.B. die Mitte) in Lat/Lon oder UTM gegeben hast und den Maßstab kennst (z.B. 5 pixel = 100 m oder so).

Du rechnest nun Deinen Referenzpunkt R in UTM um, dann rechnest Du Dein Fähnchen in UTM um. Wenn beide nah genug aneinander liegen, bekommst Du Koordinaten in derselben UTM-Zone (z.B. 32), dann ist alles okay.
Du kannst dann die Differenzkoordinaten (dx,dy) in km bestimmen. Die rechnest Du mit Deinem Kartenmaßstab in Pixel um (im Beispiel *1000/100*5), dann hast Du Differenzkooardinaten in Pixeln relativ zu Deinem Referenzpunkt R.
Fertig.

# transmission terminated #

Neo

Erfahrener Schreiberling

  • "Neo" is male
  • "Neo" started this thread

Posts: 322

Date of registration: Jul 24th 2005

Location: Hannover

Occupation: Informatik

7

Monday, May 30th 2011, 1:47pm

Ich habe jetzt eine Lösung gefunden. Zunächst rechne ich die Lat/Lon Winkel in UTM Koordinaten um. Viele Kartenausschnitte basieren auf UTM Abbildungen. Dann wähle ich zur Interpolation 3 Stadtpunkte (in XY Pixelkoordinaten bzgl der Kartengrafik) aus meiner PNG-Karte, z.B. Hannover, Hamburg und Bremen, als Referenz. Dann berechne die Skalierungs und Translationsparameter, um die UTM Koordinaten in die jeweiligen Pixelkoordinaten der Städte in meiner Grafik umzurechnen. (Skalierung und Translation fasse ich zu einer gemeinsamen Matrix zusammen). Da ich 3 Städte gewählt habe, interpoliere ich die Skalierungs, bzw. Translationsparameter der Städte, um möglichst präzise zu rechnen.