Geocoding für Adressen über Internet
Verfasst: Mi, 03.11.2010 16:16
Hallo Leute,
Ich versuche für eine Adressdatenbank aus den Angaben Ort, Straße und Hausnummer, die Geokoordinaten (Breiten- und Längengrad) zu ermitteln.
Diese Daten werden benötigt, um für eine Suche im Umfeld (z.B. 50 km) alle Adressen zu berechnen und in einer Karte anzuzeigen.
Die Berechnung selbst und Anzeige auf der Karte bekomme ich hin.
Mein Problem ist die Ermittlung der Geoloordinaten.
Diese lassen sich aus dem Internet abfragen. Ich habe da eine Lösung unter Excel (*schauder*) gefunden, das war von Jörg Napp aus Weingarten,
und funktioniere über eine Yahoo-API. Die Antwort liegt im XMS-Format vor.
Der Quellcode läuft prima unter Excel und mit einer Genauigkeiten bis zur Hausnummer - aber leider nur unter Excel.
Nun wollte ich das ganze in OOO umsetzen, scheitere aber schon bei der Variablendefinition.
Dim Request As XMLHTTP
Dim Response As DOMDocument
Dim Section As IXMLDOMNode
Dim Node As IXMLDOMNode
Die versteht OOO nicht und ich habe leider keinen Plan wie ich die Definieren kann
Nachfolgend der EXCEL-Basic-Code
Quelle http://joergnapp.de/geocoding_mit_excel/
Ausführbare Excel-Datei http://joergnapp.de/wp-content/uploads/ ... coding.xls
Hat jemand ne Idee wie ich das umssetzen kann?
Grüße
Mobbi
Ich versuche für eine Adressdatenbank aus den Angaben Ort, Straße und Hausnummer, die Geokoordinaten (Breiten- und Längengrad) zu ermitteln.
Diese Daten werden benötigt, um für eine Suche im Umfeld (z.B. 50 km) alle Adressen zu berechnen und in einer Karte anzuzeigen.
Die Berechnung selbst und Anzeige auf der Karte bekomme ich hin.
Mein Problem ist die Ermittlung der Geoloordinaten.
Diese lassen sich aus dem Internet abfragen. Ich habe da eine Lösung unter Excel (*schauder*) gefunden, das war von Jörg Napp aus Weingarten,
und funktioniere über eine Yahoo-API. Die Antwort liegt im XMS-Format vor.
Der Quellcode läuft prima unter Excel und mit einer Genauigkeiten bis zur Hausnummer - aber leider nur unter Excel.
Nun wollte ich das ganze in OOO umsetzen, scheitere aber schon bei der Variablendefinition.
Dim Request As XMLHTTP
Dim Response As DOMDocument
Dim Section As IXMLDOMNode
Dim Node As IXMLDOMNode
Die versteht OOO nicht und ich habe leider keinen Plan wie ich die Definieren kann
Nachfolgend der EXCEL-Basic-Code
Code: Alles auswählen
Private Function Geocode(Address As String) As Collection
' Bei Yahoo eine ID beantragen
Const APPID = "XXXXXXXXX"
Const YahooURL = "http://local.yahooapis.com/MapsService/V1/geocode"
Dim url As String
Dim Request As XMLHTTP
Dim Response As DOMDocument
Dim Section As IXMLDOMNode
Dim Node As IXMLDOMNode
' Adresse basteln
url = YahooURL & "?appid=" & APPID & "&location=" & Address
' Abfrage der Adresse
Set Request = New XMLHTTP
Request.Open "get", url, False
Request.send
' Antwort verarbeiten
Set Response = New DOMDocument
Response.loadXML Request.responseText
' XML-Antwort analysieren
Set Section = Response.selectSingleNode("//ResultSet/Result")
Set Geocode = New Collection
For Each Node In Section.childNodes
Geocode.Add Node.Text, Node.nodeName
Next
Geocode.Add Section.Attributes.getNamedItem("precision").Text, "Precision"
' Ressourcen freigeben
Set Section = Nothing
Set Response = Nothing
Set Request = Nothing
End Function
Public Function Latitude(Address As String) As Double
Dim coords As Collection
Set coords = Geocode(Address)
Latitude = Val(coords("Latitude"))
End Function
' Ermittelt den Längengrad einer Adresse
Public Function Longitude(Address As String) As Double
Dim coords As Collection
Set coords = Geocode(Address)
Longitude = Val(coords("Longitude"))
End Function
' Ermittelt die Straße einer Adresse
Public Function Street(Address As String) As String
Dim coords As Collection
Set coords = Geocode(Address)
Street = coords("Address")
End Function
' Ermittelt die Stadt einer Adresse
Public Function City(Address As String) As String
Dim coords As Collection
Set coords = Geocode(Address)
City = coords("City")
End Function
' Ermittelt die Präzision des Geocodings einer Adresse
Public Function Precision(Address As String) As String
Dim coords As Collection
Set coords = Geocode(Address)
Precision = coords("Precision")
End Function
Ausführbare Excel-Datei http://joergnapp.de/wp-content/uploads/ ... coding.xls
Hat jemand ne Idee wie ich das umssetzen kann?
Grüße
Mobbi