<?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>Blog - WapplerSystems [Aachen] &#187; Geokodierung</title>
	<atom:link href="http://www.wapplersystems.de/blog/category/geokodierung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wapplersystems.de/blog</link>
	<description></description>
	<lastBuildDate>Mon, 30 Jan 2012 21:37:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Google Maps Geo Interface zur Geokodierung mit PHP</title>
		<link>http://www.wapplersystems.de/blog/google-maps-geo-interface-zur-geokodierung-mit-php/</link>
		<comments>http://www.wapplersystems.de/blog/google-maps-geo-interface-zur-geokodierung-mit-php/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 20:10:40 +0000</pubDate>
		<dc:creator>wappler</dc:creator>
				<category><![CDATA[Geokodierung]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.wapplersystems.de/blog/?p=3</guid>
		<description><![CDATA[Die Suche nach Orten und deren Umwandlung in Koordinaten ohne JavaScript Warum Google Maps Geo API benutzen? Google stellt mit Google Maps nicht nur eine mächtige JavaScript-API zur Geokodierung (geocoding) von Orten zur Verfügung, sondern auch eine kostenlose Geo-API, die einem die Suche nach Orten und die direkte Verarbeitung der Daten ermöglicht. Die so gewonnenen [...]]]></description>
			<content:encoded><![CDATA[<h2>Die Suche nach Orten und deren Umwandlung in Koordinaten ohne JavaScript</h2>
<h3>Warum Google Maps Geo API benutzen?</h3>
<p>Google stellt mit Google Maps nicht nur eine mächtige JavaScript-API zur Geokodierung (geocoding) von Orten zur Verfügung, sondern auch eine kostenlose Geo-API, die einem die Suche nach Orten und die direkte Verarbeitung der Daten ermöglicht. Die so gewonnenen Daten können beispielsweise direkt in das eigene Portal einfließen und Umkreissuchen oder Visualisierungen von Geschäftsadressen realisieren. Die Rückgabe von Google der Daten im XML-Format ermöglicht sogar eine Filterung der Daten und somit ein direktes Feedback an den User bei Erfolg oder Misserfolg. Und dies ohne JavaScript und nur mit PHP. Die Prozesslogik bleibt somit dem Benutzer vorenthalten.</p>
<p><span id="more-3"></span></p>
<p>Die API ist kostenlos, unterliegt jedoch Beschränkungen in der Anzahl der Anfragen abgehend von einer IP-Adresse sowie einer lizenzrechtlichen Einschränkung. Es kommt auf die Art der Website und die Integrierung dieser API an, ob die API genutzt werden kann und ob das Limit erreicht wird oder nicht. Die kostenlose kommerzielle Nutzung ist generell erlaubt.</p>
<h3>Ziel</h3>
<p>Die Umwandlung eines Ausdrucks, beispielsweise &#8220;Aachen&#8221; oder &#8220;Aachen, Deutschland&#8221;, in die Koordinaten eines real existierenden Ortes ist dabei das Hauptziel. Es gilt dabei auf mehrfache Übereinstimmungen reagieren und die Ergebnisse korrekt interpretieren zu können.</p>
<h3>Technik</h3>
<p>Die Antwort der Google Maps Geo API wird als KML zurückgegeben. Diese ist eine XML-Datei, die aus zwei verschiedenen Strukturen besteht, die jeweils ineinander verschachtelt sind. Die Der KML-Teil ist immer gleich aufgebaut. Ab AddressDetails ändert sich jedoch die Tiefe der Antwort. Dies hängt mit den Strukturen der Länder zusammen. So liegt Aachen im Gebiet der Stadt Aachen, welches wiederum im Bundesland Nordrhein-Westfalen liegt. Die folgende XML-Datei zeigt die Antwort auf die Suche nach der Adresse &#8220;Am Bilderstock 7, Aachen&#8221;.</p>
<pre lang="XML">
<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <name>Am Bilderstock 7, Aachen</name>
    <Status><code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark id="p1">
<address>Am Bilderstock 7, 52078 Brand, Aachen, Deutschland</address>

      <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" Accuracy="8">
        <Country>
          <CountryNameCode>DE</CountryNameCode>
          <AdministrativeArea>
            <AdministrativeAreaName>Nordrhein-Westfalen</AdministrativeAreaName>
            <SubAdministrativeArea>
              <SubAdministrativeAreaName>Aachen</SubAdministrativeAreaName>
              <Locality>
                <LocalityName>Aachen</LocalityName>
                <DependentLocality>
                  <DependentLocalityName>Brand</DependentLocalityName>
                  <Thoroughfare>
                    <ThoroughfareName>Am Bilderstock 7</ThoroughfareName>
                  </Thoroughfare>
                  <PostalCode>
                    <PostalCodeNumber>52078</PostalCodeNumber>
                  </PostalCode>
                </DependentLocality>
              </Locality>
            </SubAdministrativeArea>
          </AdministrativeArea>
        </Country>
      </AddressDetails>
      <Point>
        <coordinates>6.150342,50.747268,0</coordinates>
      </Point>
    </Placemark>
  </Response>
</kml>
</pre>
<p>Die nun folgende Antwort zeigt, dass die Tiefe der Antwort stark variieren kann. In diesem Fall besitzt Afghanistan keine Bundesländer oder vergleichbare administrative Gebiete.</p>
<pre lang="XML">
<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <name>Kabul</name>
    <Status>
      <code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark id="p1">
<address>Kabol, Afghanistan</address>

      <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" Accuracy="4">
        <Country>
          <CountryNameCode>AF</CountryNameCode>
          <Locality>
            <LocalityName>Kabol</LocalityName>
          </Locality>

        </Country>
      </AddressDetails>
      <Point>
        <coordinates>69.195200,34.515500,0</coordinates>
      </Point>
    </Placemark>
  </Response>
</kml>
</pre>
<p>Ein flexibler Parser, der die XML-Struktur einliest und herausfinden kann, ob die gewünschte Tiefe vorhanden ist, ist von Nöten.</p>
<h3>Implementierung</h3>
<p>Zunächst muss man einen flexiblen XML Parser konstruieren, der die Antwort einlesen und untersuchen kann. Um zu wissen, was einen als Antwort erwarten kann, muss man sich die <a class="external-link-new-window" href="http://www.oasis-open.org/committees/ciq/download.shtml" target="_blank">xsd-Datei</a> der <em>AddressDetails</em> besorgen, worin die Struktur definiert ist. Damit wäre ein Teil der Arbeit schon erledigt. Was man mit dem Ergebnis anstellt, ist eine andere Sache. Beispielsweise sind mit dieser Technik Umkreissuchen leicht umsetzbar, da der gesuchte Ausdruck nicht aufwändig in der eigenen Datenbank gesucht werden muss. Diese Arbeit wird einem ebenfalls von Google Maps abgenommen. Erhält man letztendlich die Koordinaten und den Pfad (Land &#8211; Bundesland &#8211; Stadt &#8211; Straße) so kann man diese Informationen in der eigenen Datenbank mit Hilfe einer möglichst verlustfreien Datenbankstruktur abspeichern. Diese muss ebenfalls so flexibel wie die Variationen der möglichen Antworten sein.</p>
<p>Sie haben Interesse an dieser Technik oder benötigen unsere Unterstützung? Kontaktmöglichkeiten finden Sie <a class="internal-link" href="../../kontakt/" target="_self">hier</a>.</p>
<h3>Quellen</h3>
<ul>
<li><a class="external-link-new-window" href="http://www.oasis-open.org/" target="_blank">OASIS &#8211; Advancing open standards for the information society</a></li>
<li><a class="external-link-new-window" href="http://code.google.com/support/bin/answer.py?answer=80200&amp;topic=11364#geocodephp" target="_blank">Google Code FAQ &#8211; Geocoding Addresses with PHP</a></li>
<li><a class="external-link-new-window" href="http://code.google.com/apis/maps/documentation/index.html" target="_blank">Google Maps Dokumentation</a></li>
</ul>
<img src="http://www.wapplersystems.de/blog/?ak_action=api_record_view&id=3&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.wapplersystems.de/blog/google-maps-geo-interface-zur-geokodierung-mit-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

