it-swarm.com.de

Wie erhalte ich Breiten- und Längengrade für Adressen?

Ich arbeite derzeit mit einer Datenauflistung und eine meiner Datenspalten ist eine Adresse der Auflistung. Ich plane, jede meiner Adressen auf einer Google Map zu zeichnen, möchte jedoch vermeiden, die Adresse manuell in Google einfügen zu müssen, um die Parameter zu erhalten. Ich brauche Längengrad, Breitengrad. Meine Excel-Tabelle (oder ich habe sie in der Google Text & Tabellen-Tabelle) enthält ungefähr 500 Adressen.

Also habe ich gehofft, dass es eine Möglichkeit gibt, dies automatisch zu tun?

5
Narasimha

Mit freundlicher Genehmigung dieses großartigen Beitrags http://policeanalyst.com/using-the-google-geocoding-api-in-Excel/

Function GoogleGeocode(address As String) As String
Dim strAddress As String
Dim strQuery As String
Dim strLatitude As String
Dim strLongitude As String

strAddress = URLEncode(address)

'Assemble the query string
strQuery = "http://maps.googleapis.com/maps/api/geocode/xml?"
strQuery = strQuery & "address=" & strAddress 
strQuery = strQuery & "&sensor=false"

'define XML and HTTP components
Dim googleResult As New MSXML2.DOMDocument
Dim googleService As New MSXML2.XMLHTTP
Dim oNodes As MSXML2.IXMLDOMNodeList
Dim oNode As MSXML2.IXMLDOMNode

'create HTTP request to query URL - make sure to have
'that last "False" there for synchronous operation

googleService.Open "GET", strQuery, False
googleService.send
googleResult.LoadXML (googleService.responseText)

Set oNodes = googleResult.getElementsByTagName("geometry")

If oNodes.Length = 1 Then
For Each oNode In oNodes
  strLatitude = oNode.ChildNodes(0).ChildNodes(0).Text
  strLongitude = oNode.ChildNodes(0).ChildNodes(1).Text
  GoogleGeocode = strLatitude & "," & strLongitude
 Next oNode
 Else
 GoogleGeocode = "Not Found (try again, you may have done too many too fast)"
 End If
 End Function


Public Function URLEncode(StringVal As String, Optional SpaceAsPlus As Boolean = False) As String
Dim StringLen As Long: StringLen = Len(StringVal)

If StringLen>0 Then
ReDim result(StringLen) As String
Dim i As Long, CharCode As Integer
Dim Char As String, Space As String

If SpaceAsPlus Then Space = "+" Else Space = "%20"

For i = 1 To StringLen
  Char = Mid$(StringVal, i, 1)  
  CharCode = Asc(Char)

  Select Case CharCode
  Case 97 To 122, 65 To 90, 48 To 57, 45, 46, 95, 126
    result(i) = Char
  Case 32
    result(i) = Space
  Case 0 To 15
    result(i) = "%0" & Hex(CharCode)
  Case Else
    result(i) = "%" & Hex(CharCode)
  End Select
Next i
URLEncode = Join(result, "")
End If
End Function
10
Chris

Sie können Ihrem Google-Arbeitsblatt ein kleines Google Apps-Skript hinzufügen, damit es die Aufgabe für Sie erledigt. hier eine Demo (fügen Sie eine Adresse hinzu und diese wird für Sie geocodiert).
Und unter dem Code, um die Geokodierung durchzuführen:

function getLatLong(adress) {
  try{
    if(adress=="")return("");
    var geo = Maps.newGeocoder().geocode(adress);
    if(geo.status=="OK"){
      var lng = geo.results[0].geometry.viewport.southwest.lng;
      var lat = geo.results[0].geometry.viewport.southwest.lat;
      return([lat,lng]);
    }
    else{
      return("error");
    }
  }
  catch(err){
    return(err);
  }
}
6
Harold

SmartyStreets bietet Geokodierung von US-amerikanischen und internationalen Adressen. Es ist sehr einfach zu bedienen - fügen Sie Ihre Liste in das Web-Tool ein und es gibt den Längen- und Breitengrad innerhalb von Sekunden zurück. Es gibt andere Dienste, die Lat/Long-Daten auf ähnliche Weise zurückgeben können. Ich kenne SmartyStreets am besten, weil ich dort arbeite.

Denken Sie auch daran, dass das Einfügen von Adressen in Google Maps nicht unbedingt genaue Informationen liefert, da Google validate die Adresse nicht zuerst eingibt. SmartyStreets stellt sicher, dass Sie Daten über reale Standorte erhalten, anstatt dies nach bestem Wissen von Google zu erraten.

Andere Lösungen, die Sie ausprobieren möchten: AddressDoctor , Loqate oder andere Geokodierungsanbieter für internationale Adressen (eine schnelle Google-Suche bietet einige großartige Optionen).

1
Michelle

Anstatt Code einzufügen, würde ich empfehlen, die Daten in Google Spreadsheets zu übertragen und den Geocode durch ein fantastisches Tabellen-Add-On einzuschließen. Ab diesem Zeitpunkt platzieren Sie einfach die Adressen in einer einzelnen Spalte und wählen die Adressenspalte aus, die geocodiert werden soll

0
Lawrence Chang