2016-12-20 1 views
3

Arbeiten in MS Access 2013. Haben Sie eine Tonne von Standorten/Adressen, die standardisiert werden müssen.Adressstandardisierung innerhalb einer Datenbank

Beispiele hierfür sind Adressen wie:

  • 500 W Main St
  • 500 West Main St
  • 500 West Main Street

Sie erhalten den Punkt.

Ich habe überlegt, eine Abfrage auszuführen, die alle Datensätze abruft, in denen die linken (7) oder einige Zeichen mehr als einmal in der Datenbank vorhanden sind, aber es gibt offensichtliche Fehler in dieser Logik.

Gibt es eine Funktion oder Abfrage oder irgendetwas anderes, das mir helfen würde, eine Liste von Datensätzen zu erstellen, deren Adressen mehrfach existieren können, in leicht unterschiedlicher Art und Weise?

+0

Ich glaube nicht, dass solche Funktion existiert. Du musst selbst damit umgehen. – GurV

Antwort

10

Dies ist ein heikles Geschäft ... zu gleichen Teilen Black Magic und Science. Sie werden die Variationen von Boulevard allein erstaunt sein.

Deshalb verwende ich die Google API. Es kann zeitaufwendig für den anfänglichen Datensatz sein, aber nur neue Adds müssen aufgelöst werden.

Zum Beispiel

https://maps.googleapis.com/maps/api/geocode/json?address=500 S Main St,Providence RI 02903 

kehrt, teilweise

"formatted_address" : "500 S Main St, Providence, RI 02903, USA" 

und die gute Nachricht ist

https://maps.googleapis.com/maps/api/geocode/json?address=500 South Main Steet,Providence RI 02903 

kehrt die gleiche formatiert Adresse wie die vorherige Abfrage

"formatted_address" : "500 S Main St, Providence, RI 02903, USA" 

VBA Beispiel:

Auf den folgenden Code ausführen ...

' VBA project Reference required: 
' Microsoft XML, v3.0 

Dim httpReq As New MSXML2.ServerXMLHTTP 
httpReq.Open "GET", "https://maps.googleapis.com/maps/api/geocode/json?address=500 South Main Steet,Providence RI 02903", False 
httpReq.send 
Dim response As String 
response = httpReq.responseText 

... die String-Variable response enthält die folgenden JSON-Daten:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "500", 
       "short_name" : "500", 
       "types" : [ "street_number" ] 
      }, 
      { 
       "long_name" : "South Main Street", 
       "short_name" : "S Main St", 
       "types" : [ "route" ] 
      }, 
      { 
       "long_name" : "Fox Point", 
       "short_name" : "Fox Point", 
       "types" : [ "neighborhood", "political" ] 
      }, 
      { 
       "long_name" : "Providence", 
       "short_name" : "Providence", 
       "types" : [ "locality", "political" ] 
      }, 
      { 
       "long_name" : "Providence County", 
       "short_name" : "Providence County", 
       "types" : [ "administrative_area_level_2", "political" ] 
      }, 
      { 
       "long_name" : "Rhode Island", 
       "short_name" : "RI", 
       "types" : [ "administrative_area_level_1", "political" ] 
      }, 
      { 
       "long_name" : "United States", 
       "short_name" : "US", 
       "types" : [ "country", "political" ] 
      }, 
      { 
       "long_name" : "02903", 
       "short_name" : "02903", 
       "types" : [ "postal_code" ] 
      }, 
      { 
       "long_name" : "2915", 
       "short_name" : "2915", 
       "types" : [ "postal_code_suffix" ] 
      } 
     ], 
     "formatted_address" : "500 S Main St, Providence, RI 02903, USA", 
     "geometry" : { 
      "bounds" : { 
       "northeast" : { 
        "lat" : 41.82055829999999, 
        "lng" : -71.4028137 
       }, 
       "southwest" : { 
        "lat" : 41.8204014, 
        "lng" : -71.40319219999999 
       } 
      }, 
      "location" : { 
       "lat" : 41.8204799, 
       "lng" : -71.40300289999999 
      }, 
      "location_type" : "ROOFTOP", 
      "viewport" : { 
       "northeast" : { 
        "lat" : 41.8218288302915, 
        "lng" : -71.40165396970851 
       }, 
       "southwest" : { 
        "lat" : 41.8191308697085, 
        "lng" : -71.40435193029151 
       } 
      } 
     }, 
     "partial_match" : true, 
     "place_id" : "ChIJicPQAT9F5IkRfq2njkYqZtE", 
     "types" : [ "premise" ] 
     } 
    ], 
    "status" : "OK" 
} 
+0

Kann mit einem einfachen HttpWebRequest behandelt werden? – McNets

+0

@mcNets absolut, aber Sie müssen den JSON analysieren. –

+0

@mcNets Nicht zu erwähnen, können Sie 2.000 Zugriffe pro Tag haben, aber der erweiterte Zugriff ist sehr billig. AUCH Sie erhalten LAT/LNG damit auch –

Verwandte Themen