vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 25.09.11 09:44

Hallo Mathematiker

zur Zeit beschäftige ich mich mal wieder mit dem OpenStreetMap Kartenmaterial. Genauer gesagt, ich baue einen nativen Viewer, der direkt die einzelnen Tiles (Kacheln) der OSM TileServer downloaded, zusammenmontiert und visualisiert. Eine Kachel hat eine Größe von 256 x 256 Pixel.

Dazu wird einer Funktion die Koordinate und den Zoomlevel übergeben. Die Funktion liefert den TileX und TileY Wert zurück, woraus dann die Download-URI erzeugt wird. TileX und TileY sind Double-Werte, die ebenfalls den Offset der Koordinate relativ zur linken oberen Ecke des Tiles beinhalten. Somit kann ich einen exakten Punkt auf der Karte bestimmen. Das funktioniert soweit problemlos. Die Formel dazu kommt aus dem OSM Wiki, bzw. aus den OSM Foren.
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

   Friend Shared Function LongLatToTile(lon As Double, lat As Double, zoom As _
     Integer) As Point
      Dim lon_rad As Double = DegreeToRadian(lon)
      Dim lat_rad As Double = DegreeToRadian(lat)
      Dim n As Double = Math.Pow(2.0, zoom)
 
      Dim tileX As Double = ((lon + 180) / 360) * n
      Dim tileY As Double = (1 - (Math.Log(Math.Tan(lat_rad) + 1.0 / Math.Cos( _
        lat_rad)) / Math.PI)) * n / 2.0
 
      Return New Point(tileX, tileY)
   End Function
 
   Friend Shared Function DegreeToRadian(ByVal degree As Double) As Double
      Return (Math.PI / 180) * degree
   End Function
Beispielsweise liefert die Funktion bei meinem Heimatort mit der Koordinate Longitude=6.06194, Latitude=50.81686, Zoom=16 den Point(33871,5424995556;21992,8524077128) zurück. Wie gesagt, bis hierhin kein Problem.

Aber, wie bekomme ich eine Umkehrfunktion hin, die mir aus TileX, TileY und Zoom wieder eine Koordinate liefert? Ich muss gestehen, dass das meine mathematischen Fähigkeiten übersteigt, denn da habe ich wohl in der Schule gefehlt.

Im OSM Wiki gibt es eine Funktion, die allerdings nur die Koordinate der linken oberen Ecke des Tiles zurückliefert und den Offset dabei nicht berücksichtigt.

   Friend Shared Function TileToLongLat(tile_x As Double, tile_y As Double, _
     zoom As Integer) As Point
      Dim p As Point = New Point()
      Dim n As Double = Math.PI - ((2.0 * Math.PI * tile_y) / Math.Pow(2.0, _
        zoom))
 
      p.X = CSng((tile_x / Math.Pow(2.0, zoom) * 360.0) - 180.0)
      p.Y = CSng(180.0 / Math.PI * Math.Atan(Math.Sinh(n)))
 
      Return p
   End Function
Ich hoffe, mir kann jemand helfen...

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Preisser
Datum: 25.09.11 12:02

Hallo,

eine ungefähre Herleitung:

Für die vorletzte Zeile gibt es laut Derive allerdings mehrere Lösungen (da der Tangens periodisch ist), von denen ich mal eine genommen habe, die bei deinem Beispiel wieder die ursprünglichen Koordinaten liefert.
    Public Shared Function TileToLongLat(tileX As Double, tileY As Double, zoom _
      As Integer) As Point
        Dim lon As Double, lat As Double
        Dim n As Double = Math.Pow(2.0, zoom)
        lon = 360 / n * tileX - 180
        lat = (2 * Math.Atan(Math.Pow(Math.E, Math.PI - 2 * Math.PI * tileY / _
          n)) - 1 * Math.PI / 2) / Math.PI * 180
        Return New Point(lon, lat)
    End Function
(Point steht hier für eine Structure, bei denen die X- und Y-Koordinaten als Double abgespeichert werden (also nicht System.Windows.Drawing.Point)).

Beitrag wurde zuletzt am 25.09.11 um 12:13:52 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 25.09.11 12:19

Hallo Preisser,

ich ziehe meinen Hut vor Dir
Wenn ich noch mal sowas habe, weiß ich ja nun wen ich ansprechen muss...

Vielen lieben Dank!

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorRalfE (Moderator)
Datum: 25.09.11 12:19

GMap.NET ist nen Map-Control für zahlreiche Maps und enthält imho die gesuchte Funktion. Ist Open Source und vielleicht ist das Ding allgemein für dich interessant?

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 25.09.11 12:36

Danke für den Tipp. Schaue ich mir mal an...

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 25.09.11 13:09

Studierst du noch oder machst du etwas Mathematik beruflich? Mit 25 oder so habe ich bemerkt, dass meine Kenntnisse sehr abgenommen hatten, und seitdem habe ich regelmässig gedacht, ich sollte mich mal wieder ein wenig einarbeiten, um alles nicht ganz zu vergessen. Leider ist nichts daraus geworden. Vor ca einem Jahr dachte ich ich würde versuchen Einstein's ART Gleichungen einigermaßen zu verstehen, ich habe vier Bücher aus der McGraw-Hill "DeMystified" Reihe (exzellente Fachbücher) gekauft (Calculus, Linear Algebra, Differential Equations und Relativity - was ART betrifft fängt das Letzgenannte mit einer Einführung in Tensortheorie an...) Es war ziemlich erschreckend wie viel ich nicht mehr wußte. Von Matrizen habe ich zwei Kapitel durch, das ist ziemlich alles bis jetzt. Wenn ich endlich wirklich aufhöre zu arbeiten werde ich natürlich viel mehr Zeit dafür haben (nicht lachen).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Preisser
Datum: 25.09.11 13:18

Hallo,

ja ich studiere noch, allerdings Informatik (Bachelor), da hatte ich Mathe nur im 1. & 2. Semester (bin grade im 5.). Aber ich merke auch schon ab und zu, dass ich einige Sachen wieder vergesse.

Beitrag wurde zuletzt am 25.09.11 um 13:24:52 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 30.09.11 22:36

Hallo Preisser,

damit Du mal siehst, wie mir Deine Funktion geholfen hat, habe ich ein "Alpha" Release des
Controls mit einer kleinen Demo gemacht. Die Viewer Funktionalität ist soweit komplett, aber wie
gesagt - ist noch im Alpha-Stadium. Es fehlen jetzt noch die Layer und Marker - das wird noch ein
schönes Stück Arbeit werden

Download VB2010 Projekt...

Die Steuerung des Viewers:
- Moving Map mit gedrückter linker Maustaste.
- Moving Map mit Cursor Steuertasten (wenn der Viewer den Fokus hat)
- Zooming mit Scrollrad der Maus (exaktes zoomen unter dem Mauscursor)
- Zooming mit +- Taste auf dem Num-Pad (zoom auf übergebener Koordinate)
- Zooming mit PgUp / PgDown für Max/Min Zoom


Vielen Dank noch mal !!!

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 02.10.11 17:25

Interessante Arbeit. Der Server scheint auch ziemlich schnell zu sein. Bei mir wenn ich den Map nach München verschiebe und darauf klicke, und dann vergrößere, springt er immer nach Berlin zurück.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 02.10.11 17:32

Wenn Du über den Slider zoomst, dann springt er zur Ursprungskoordinate zurück. Das macht er nicht,
wenn Du mit dem Mousewheel zoomst.

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 02.10.11 20:03

Ah ja, ok. Nette Sache.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 03.10.11 07:57

Ich habe noch mal darüber nachgedacht und denke, es macht doch mehr Sinn, dass man beim Zoomen über
die "zoom" Property (Slider) den aktuellen Mittelpunkt der Karte zoomt.

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 03.10.11 08:28

So macht das Google maps.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 03.10.11 09:05

Mir wäre es übrigens lieber wenn ein Mausklick die aktuelle Stelle auswählen würde, sonst muss man den gesuchten Punkt immer in die Mitte bringen, und bei Vergrößerung verschiebt sich immer alles etwas (meine Erfahrung mit Google Maps).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 03.10.11 09:13

Meinst Du, den Punkt markieren, mit dem Slider zoomen und dann die Karte zentrieren?

Wir wollen ja nicht die schlechten Angewohnheiten von Google übernehmen - wir wollen ja besser
als Google werden

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 03.10.11 09:47

Ja, genau so. Sonst muss man vorsichtig zoomen und immer wieder mit der Maus das Bild zentrieren. Es muss aber ein Doppelklick sein, denke ich. Verschieben will man auch ohne den Hauptpunkt zu ändern.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 03.10.11 10:06

Ich sollte übrigens sagen, dass das bei mir oft sehr langsam ist und reagiert sehr unzuverlässig auf Mousewheel-Bewegung, deshalb verwende ich oft den Scrollbalken.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 03.10.11 10:55

Du meinst, bei Google ist das sehr langsam und ungenau, oder?

Ne andere Frage: Wenn ich mir die Doppelklick Koordinate merke und dann zoome, soll die gemerkte
Koordinate anschließend wieder gelöscht werden, so das beim nächsten zoomen wieder der Kartenmittelpunkt
angenommen wird?

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: ModeratorDaveS (Moderator)
Datum: 03.10.11 13:50

Nee, meine Internet Verbindung ist nur eine Mobilverbindung und manchmal sehr langsam, oder tut anscheinend manchmal gar nichts (sollte ziemlich schnell sein, laut Werbung...)

Ich weiß jetzt nicht wirklich was ich gerne hätte, müßte mich länger mit dem Thema auseinandersetzen. Ich habe zB gerade festgestellt, dass man in Google maps ein Menü bekommt mit "center map here", trotzdem scheint es irgendwie wegzurutschen wenn man einzoomt, aber vielleicht bin ich nicht genau genug. Ich bin mir aber sicher du schaffst hier wieder was tolles.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Preisser
Datum: 04.10.11 17:49

Hallo,

ja, coole Sache.

Ich muss allerdings gestehen, dass ich die Herleitung nicht komplett gelöst hatte, sondern die Zeile über dem sin = ... mit Derive (Programm) lösen lies, da ich auf die Schnelle nicht wusste, wie man (1+sin(x))/cos(x) nach Tangens auflösen kann.

Beitrag wurde zuletzt am 04.10.11 um 17:49:44 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 04.10.11 17:55

Ist ja nicht schlimm
Hast mir ja geholfen und das "wie" steht dabei auf einem andern Blatt.

>> ja, coole Sache.

Und es wird noch cooler

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 04.10.11 23:16

Psst, keinen verraten, aber ich habe eine neue Alpha Version Online gestellt. NaJa, ist schon fast
ne Beta. Die Alpha hat folgendes neu:

- Layer und Marker: Es können als Marker beliebige UI-Steuerelemente verwendet werden.
- Verbesserte Zoom Funktionalität (Gruß an Dave).
- Noch ein paar Public und Private Methoden und Properties hinzugekommen.
- Demoprogramm erweitert (schaut euch mal das Context Menü an. Da wartet eine Überraschung).
- Bug fixing.

So, das nächste Release wird dann ne richtige Beta sein, und die kommt dann natürlich auch ins richtige
Forum rein. Was fehlt noch zur nächsten Beta? Eine kleine Doku und natürlich noch ein WinForms Wrapper.
Denn nicht jeder kann WPF.

Download VB2010 Projekt...

Ich bin natürlich auf euer Feedback gespannt

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Mathematische Umkehrfunktion 
Autor: Snoopy
Datum: 09.10.11 12:04

Hallo Leute,

das Control ist in die Beta-Phase eingetreten. Der hier im Thema angegebene Alpha-Link ist nicht mehr
gültig. Weitere Informationen zur Beta sind im Betatester Forum eingestellt:

http://www.vbarchiv.net/forum/id28_i1601t1601_openstreetmap-viewer-v20-fuer-wpf-und-winforms.html

Gru?
---------------------------------------------------
Snoopy sagt - vb@rchiv find ich gut...
Schon gesehen? OSMMapViewer V2 Control

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel