2012-06-12 14 views
14

Tengo curiosidad sobre cómo funciona el geocodificador de Google.¿Cómo funciona el geocodificador de Google?

He estado estudiando algunas implementaciones de geocodificadores de código abierto como geocommons' geocoder o PostGIS's new Tiger Geocoder. Esto es más o menos lo que sé hasta ahora (para demostrar con suerte que he estado haciendo mi tarea):

Me doy cuenta de que en el núcleo de los geocodificadores de fuente abierta, hay tres elementos principales.

1.- Un normalizador dirección de que tiene una cadena arbitraria y normaliza (taking the example from here):

normalize_address('address string'); 

e.g.: SELECT naddy.* FROM normalize_address('29645 7th Street SW Federal Way 98023') AS naddy; 

address | predirabbrev |  streetname  | streettypeabbrev | postdirabbrev | internal | location | stateabbrev | zip | parsed 
---------+-------------+-----------------------+------------------+---------------+----------+----------+-------------+-------+-------- 
29645 |    | 7th Street SW Federal | Way    |    |   |   |    | 98023 | 

y:

2.- Un geocodificador que hace algo de coincidencia aproximada mágica para los nombres donde el algoritmo central es el Levenshtein Distance.

Un buen ejemplo es el del artículo de Wikipedia donde se calcula la distancia Levenshtein entre las palabras gatito y sentado (la distancia es de 3 ya que es el número de ediciones necesarias para cambiar una cadena en el otro):

kitten → sitten (substitution of 's' for 'k') 
sitten → sittin (substitution of 'i' for 'e') 
sittin → sitting (insertion of 'g' at the end). 

3.- Alguna interpolación de los segmentos de la calle al final para adivinar dónde está la casa. Descargué un fragmento del Census Tiger street dataset gratuito para crear este ejemplo.

street interpolation example

En el ejemplo anterior, el segmento de calle de interés (Schaeffer Hills Dr) tiene una desde el nodo que comienza en 300 (de modo 300 Schaeffer Hills Dr) y una al nodo que termina en 400 (400 Schaeffer Hills Drv). Si coincidía con este Schaeffer Hills Drv, y la solicitud era para la calle 310, entonces el algoritmo simplemente interpolate (atravesaría el 10%) hacia donde está mi flecha verde.

Esto es lo que hacen las herramientas de geocodificador de código abierto. Sin embargo, Google es claramente más inteligente que eso y utiliza todo tipo de sugerencias no tradicionales.

¿Cómo es eso?

Por ejemplo, puedo escribir 680 Mission st (ninguna ciudad, estado, condado, nada en absoluto). La mayoría de los normalizadores de dirección estándar explotarían porque encontrarían demasiadas coincidencias. Pero como estoy en SF, estoy adivinando google usa mi ip para obtener geoip-like information, some expanding bounding como una pista con alguna búsqueda difusa, y de inmediato encuentra el segmento más cercano que coincide y me dice que esa es mi respuesta (que es correcta !).

Estoy buscando respuestas que puedan arrojar más luz sobre cómo funciona el geocodificador Google además de las técnicas que describí anteriormente.

Actualización:

bien, hasta ahora tenemos dos tipos de consejos enumeran

  • GeoIP como pistas
  • Área de Interés cuadro delimitador (véase el ejemplo de Pablo).
  • Otros?
+3

I Sospe t nadie con información precisa podrá responder a su pregunta sin violar un acuerdo de confidencialidad. –

+0

puede que tenga más suerte haciendo esta pregunta aquí: http://gis.stackexchange.com/ –

+0

@Suvi Sí sé sobre gis.stackexchange. Sin embargo, este foro tiene órdenes de magnitud más de ojos y esperaba que pudiera: -/ – rburhum

Respuesta

6

Una de las cosas que puede encontrar hurgando en la caja negra es que el geocodificador de Google no es totalmente sensible al orden de los tokens (no hay una expectativa forzada de calle/ciudad/estado/país, aunque lo hace mejor cuando sigues eso). Lo cual me dice que podrían estar volcando todo en algún tipo de búsqueda de texto completo y luego ver lo que regresa. O tal vez no. Intente buscar "sault saint marie adams 200" y "sault saint marie 200 adams".

Con respecto a su ejemplo Misión, que es un gran uno, como se puede ver el mapa pista que entran en juego directamente:

Query with map window over Europe: European results.

de consultas con ventana del mapa Europa: resultados europeos

Query with map window over North America: American results.

de consultas con el mapa ventana sobre América del Norte: resultados americanas

4

Hay otra fuente de datos: mapas de propiedades del condado. Estos no solo incluyen carreteras, sino también líneas de propiedad (y sus direcciones). A menudo puede ver esto en el mapa de Google, en realidad mostrará líneas débiles que separan las propiedades adyacentes. A veces incluso esbozan edificios (los mapas del condado a menudo incluyen estos también).

También puede hacer la búsqueda inversa, dadas sus coordenadas de GPS encontrar su dirección exacta puede ser tan simple como una consulta 2D para encontrar el polígono de propiedad en el que se encuentra. He visto este trabajo correctamente cuando estaba físicamente lejos desde la carretera pero aún dentro de la propiedad y devolvió la dirección correcta a pesar de que el teléfono estaba más cerca de otra calle.

Tenga en cuenta que estos mapas tienden a ser públicos y algunos condados incluso tienen su propia interfaz en línea. Incluso puedes buscar quién posee un argumento en particular.

+0

La geocodificación inversa es un problema mucho más fácil. Simplemente obtenga lat/lon y ajuste a la función más cercana (parcela o segmento de la calle). Esto abre el tema de las características de Parcel, que son otra fuente de datos para hacer geocodificación. El proceso para un geocódigo * tradicional * contra ellos es muy similar al enfoque del segmento de la calle. Así que mi pregunta aún no ha sido respondida :(Gracias por señalarlo – rburhum

+1

Gracias por aclarar mi respuesta como incorrecta, ahora está eliminada. Pensé que el Libro Blanco de Geolocalización de Google también estaba discutiendo la infraestructura potencial relacionada con la geocodificación que de alguna manera podría ser relevante. asegúrese, +1 para su respuesta. ¡Salud! – arttronics

Cuestiones relacionadas