<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hirnfasching.de &#187; Koordinaten</title>
	<atom:link href="http://hirnfasching.de/tag/koordinaten/feed/" rel="self" type="application/rss+xml" />
	<link>http://hirnfasching.de</link>
	<description>Gemischter Wahnsinn</description>
	<lastBuildDate>Sat, 21 Jan 2012 21:28:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Pest oder Cholera?</title>
		<link>http://hirnfasching.de/2009/02/07/pest-oder-cholera/</link>
		<comments>http://hirnfasching.de/2009/02/07/pest-oder-cholera/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 16:11:15 +0000</pubDate>
		<dc:creator>Sebastian</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Koordinaten]]></category>

		<guid isPermaLink="false">http://hirnfasching.de/?p=92</guid>
		<description><![CDATA[Im Rahmen eines „kleinen“, privaten Softwareprojektes wollte ich jede Menge Informationen in einer Datenbank speichern. Da ich es schon von anderen Projekten her kannte, fiel die Wahl ohne Zögern auf MySQL als DBMS.Und weil man&#8217;s endlich mal „richtig“ mit Fremdschlüsseln etc. machen will, wird eben InnoDB als Storage Engine genommen. So weit, so gut &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Im Rahmen eines „kleinen“, privaten Softwareprojektes wollte ich jede Menge Informationen in einer Datenbank speichern. Da ich es schon von anderen Projekten her kannte, fiel die Wahl ohne Zögern auf MySQL als <abbr title="Datenbank-Management-System">DBMS</abbr>.Und weil man&#8217;s endlich mal „richtig“ mit  <a title="Wikipedia-Artikel zu Fremdschlüsseln" href="http://de.wikipedia.org/wiki/Schl%C3%BCssel_(Datenbank)#Fremdschl.C3.BCssel">Fremdschlüsseln</a> etc. machen will, wird eben <em>InnoDB</em> als Storage Engine genommen.</p>
<p><span id="more-92"></span></p>
<p>So weit, so gut &#8211; wären da nur nicht die GPS-Koordinaten, die mit in die zentrale Tabelle sollen. Sicher, sowas kann man in Form von geographischen Koordniaten (also &#8220;<em>X</em> Grad Ost und <em>Y</em> Grad Nord&#8221;) einfach als zwei Fließkommawerte in die Datenbank schreiben. Das wird nur später dann zum Knieschuß, wenn man Abfragen in der Art „alle Einträge in Entfernung von höchstens <em>X</em> von Punkt <em>Y</em>“ starten möchte. Denn entweder wird das Ergebnis sagenhaft ungenau, wenn man stumpf einen einfachen („rechtwinkligen“) Wertebereich von Breiten- und Längenbreitengraden selektiert, oder man darf für jeden einzelnen Punkt eine korrekte trigonometrische <a title="Entfernungsberechnung auf einer Kugeloberfläche" href="http://de.wikipedia.org/wiki/Orthodrome#Beispiel_Berechnung_der_Entfernung_Berlin_-_Tokio">Entfernungsberechnung</a> machen (lassen). Was letzteres für die Rechenlast des Datenbankservers bedeutet, wird man sich wohl leicht vorstellen können.</p>
<p>Nun ist es so, daß MySQL grundsätzlich auch sogenannte <em>Spatial Extensions</em>, also spezielle geometrische Datentypen wie Punkte nebst passenden Indizes bietet. Leider beherrschen die nur rechtwinklige und keine Kugel-Koordinatensysteme, weshalb ich gestern erstmal in mühevoller Kleinarbeit MySQL das Umrechnen von geografischen in <a title="Wikipedia-Artikel zum UTM-Koordinatensystem" href="http://de.wikipedia.org/wiki/UTM-Koordinatensystem">UTM-Koordinaten</a> inklusive Zonennummer beigebracht habe. Das mit dem Hintergedanken, per Trigger eine Point-Spalte (und eine Integer-Spalte für die Zonennummer) in Abhängigkeit der Längen- und Breitengradspalte aktualisieren zu lassen.</p>
<p>Gesagt, getan. Doch was muß ich heute feststellen, als ich das Projekt weiterführen will? <em>InnoDB</em> unterstützt zwar immerhin Point-Spalten, jedoch keine Spatial Indizes. Das tut nur <em>MyISAM</em>, was wiederum keine Fremdschlüssel unterstützt. Damit wären wir dann auch bei der Fragestellung des Titels angekommen: Die eine Storage Engine unterstützt das eine dringend benötigte Feature, die andere Storage Engine das andere Feature.  <img src='http://hirnfasching.de/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Jetzt ist guter Rat wieder teuer.</p>
<p>In meiner Verzweiflung habe ich sogar kurz hinüber zu <em>PostgreSQL</em> geschielt, dieses Vorhaben dann aber nach einem Blick in die meiner Meinung wenig hilfreiche Dokumentation schnell wieder fallen gelassen. Weitere Alternativvorschläge werden dankbar angenommen. <img src='http://hirnfasching.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://hirnfasching.de/2009/02/07/pest-oder-cholera/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

