<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Latest posts for the topic "bearing korrekt?"]]></title>
		<link>http://forum.geonames.org/gforum/posts/list/3.page</link>
		<description><![CDATA[Latest messages posted in the topic "bearing korrekt?"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>bearing korrekt?</title>
				<description><![CDATA[ Hallo!

Erstmal danke für diesen großartigen und dazu noch kostenlosen Service, den es hoffentlich noch lange geben wird.  :D 

Doch nun zu meiner Frage:
findNearbyPlaceName, gibt beim Style FULL auch ein Feld "bearing" aus.
Dieses soll wohl die Himmelsrichtung angeben, in der sich der Ort, aus Richtung der GPS-Koordinaten befindet.
Wird dieses Feld korrekt gebildet? Und was bedeutet die zurückgelieferte Grad-Angabe?

Im englischen Wikipedia-Artikel ist Bearing so beschreiben:
<blockquote>Bearings are in these terms 0°= north, 45°=Northeast, 90°= East, 135°=southeast, 180°= South, 225°= Southwest, 270°= West, 315°= Northwest and 360°= North.&nbsp;
		</blockquote>
Für einen Ort der Nordöstlich liegt, gibt die Datenbank aber 301.6703 zurück, was laut der oben zitierten Definition Nordwestlich wäre.
Eine Software zur Ermittlung des "Bearing", gibt 28,68° zurück - wie GeoNames auf 301.67 kommt ist mir ein Rätsel.

Teilweise wird hier auch ein Wert größer 360 zurückgegeben (z.B. 402.1893).

Leider finde ich hier auf der Seite keine Beschreibung zum Bearing, deshalb hoffe ich, mir kann hier jemand weiterhelfen.

Hier mal ein Beispiel, das beide Probleme enthält:
<a href='http://ws.geonames.org/findNearbyPlaceName?lat=26.260014&lng=-98.579807&radius=25&maxRows=20&style=FULL' target='_new' rel="nofollow">http://ws.geonames.org/findNearbyPlaceName?lat=26.260014&lng=-98.579807&radius=25&maxRows=20&style=FULL</a>

Die GPS-Position befindet sich (laut GoogleMaps) süd-westlich von Cuevitas. Das Bearing ergibt wie gesagt "Nordwestlich".
Ein Stück weiter unten in der XML-Rückgabe findet sich auch das Bearing mit 402°. (name = Los Ebanos)

Danke schonmal im Voraus!

Cu, Jens]]></description>
				<guid isPermaLink="true">http://forum.geonames.org/gforum/posts/list/678.page#3050</guid>
				<link>http://forum.geonames.org/gforum/posts/list/678.page#3050</link>
				<pubDate><![CDATA[Sun, 25 Nov 2007 12:34:45]]> GMT</pubDate>
				<author><![CDATA[ Jens D.]]></author>
			</item>
			<item>
				<title>Re:bearing korrekt?</title>
				<description><![CDATA[ Hallo Jens

Da hast Du völlig recht, da stimmt was nicht. Ich habe den Code von einem Contributor erhalten und ungetetest ins cvs gestellt :
http://geonames.cvs.sourceforge.net/geonames/geonames/java/src/org/geonames/utils/Bearing.java?sortdir=down&view=log

Wenn Du möchtest kannst du dir den Code ansehen und den Fehler korrigieren. Ich habe im Moment keine Zeit dazu. Ich habe dem Contributor auch ein Email geschickt und hoffe er hat Zeit dafür und werde die Funktion im Webservice wieder rausnehmen.

Das ist eines der Probleme mit Open source. Erstens kommen kaum Beiträge und wenn welche kommen, muss man sich um das Testing, Dokumentation und alles kümmern. Unter dem Strich hat man mehr Arbeit   Ich zögere deshalb auch mehr code von GeoNames ins sourceforge csv zu stellen.


Gruss


Marc]]></description>
				<guid isPermaLink="true">http://forum.geonames.org/gforum/posts/list/678.page#3053</guid>
				<link>http://forum.geonames.org/gforum/posts/list/678.page#3053</link>
				<pubDate><![CDATA[Mon, 26 Nov 2007 11:25:22]]> GMT</pubDate>
				<author><![CDATA[ marc]]></author>
			</item>
			<item>
				<title>Aw:bearing korrekt?</title>
				<description><![CDATA[ Hallo Marc,

danke für deine Antwort!

Leider bin ich in Java nicht so bewandert, deshalb möchte ich in so einer zeitkritischen Anwendung wie der GeoNames-Datenbank, lieber nicht rumbasteln.

Ich kann dir allerdings meinen Visual Basic-Code zur Verfügung stellen, der das Bearing ermittelt.
Vielleicht kannst Du in einer freien Minute damit ja was Anfangen, oder jemand anderes übersetzt das in optimierter Form nach Java:

<span class="genmed"><b>Code:</b></span><br>
		<div style="overflow: auto; width: 100%;">
		<pre>
Public Function Bearing&#40;ByRef Lat1 As Double, ByRef Lng1 As Double, ByRef Lat2 As Double, ByRef Lng2 As Double&#41; As Double
    Dim x As Double
    Dim y As Double

    Const PI As Double = 3.14159265358979
    Const PIdiv2 As Double = PI / 2#
    Const PIdiv4 As Double = PI / 4#
    Const PImul2 As Double = PI * 2#
    Const div180mulPI = 1# / 180# * PI          ' DegToRad&#40;&#41;
    Const div180mulPIdiv2 = div180mulPI / 2#    ' DegToRad&#40;&#41; / 2
    Const mul180divPI = 1# * 180# / PI          ' RadToDeg&#40;&#41;

    x = Log&#40;Tan&#40;&#40;Lat2 * div180mulPIdiv2&#41; + PIdiv4&#41; / Tan&#40;&#40;Lat1 * div180mulPIdiv2&#41; + PIdiv4&#41;&#41;
    y = &#40;Lng2 - Lng1&#41; * div180mulPI
    If Abs&#40;y&#41; &gt; PI Then
        If y &gt; 0# Then
            y = PImul2 - y
        Else
            y = PImul2 + y
        End If
    End If
    
    ' Bearing = atan2&#40;y, x&#41; * mul180divPI -&gt; atan2&#40;&#41; gibt's in VB nicht, deshalb:
    If Abs&#40;y&#41; &lt; 0.0000001 Then
        If x &lt; 0# Then
            Bearing = 180#
        'Else
        '    Bearing = 0#
        End If
    ElseIf Abs&#40;x&#41; &lt; 0.0000001 Then
        If y &lt; 0# Then
            Bearing = 270#
        Else
            Bearing = 90#
        End If
    Else
        Bearing = Atn&#40;y / x&#41; * mul180divPI
        If Bearing &lt; 0# Then
            If x &lt; 0# Then
                Bearing = Bearing + 180#
            Else
                Bearing = Bearing + 360#
            End If
        Else
            If y &lt; 0# Then Bearing = Bearing + 180#
        End If
    End If
End Function
</pre>
		</div>

Davon abgesehen, denke ich sollte es nicht die Aufgabe von GeoNames sein, solche Zusätzinformationen zu errechnen, die auch leicht auf dem Client ermittelt werden können. Das lastet nur unnötigt den Server aus und macht die Abfragen für alle langsamer.
Ich benötige die Style FULL-Ausgabe, da nur dort bestimmte Felder die ich brauche enthalten sind - das Bearing kann man -wenn man es benötigt- auch leicht auf dem Client selbst ermitteln. Nur meine Meinung. ;-)

Cu, Jens]]></description>
				<guid isPermaLink="true">http://forum.geonames.org/gforum/posts/list/678.page#3057</guid>
				<link>http://forum.geonames.org/gforum/posts/list/678.page#3057</link>
				<pubDate><![CDATA[Mon, 26 Nov 2007 18:07:03]]> GMT</pubDate>
				<author><![CDATA[ Jens D.]]></author>
			</item>
	</channel>
</rss>