longitude latitude inversa google geocodificacion from address google-maps geocoding google-geocoder

google-maps - latitude - google maps api



¿Cómo funciona el geocodificador de Google? (2)

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

He estado estudiando algunas implementaciones de geocodificadores de código abierto como el geocodificador de geocommons o el nuevo Tiger Geocoder de PostGIS . 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 de direcciones que toma una cadena arbitraria y la normaliza ( tomando el ejemplo de aquí ):

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 alguna coincidencia difusa mágica para nombres donde el algoritmo central es la Distancia de Levenshtein .

Un buen ejemplo es el del artículo de Wikipedia donde calcula la distancia de Levenshtein entre las palabras gatito y sentado (la distancia es 3 ya que es la cantidad de ediciones requeridas para cambiar una cadena por la otra):

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é una porción del conjunto de datos de la calle Census Tiger gratis para crear este ejemplo.

En el ejemplo anterior, el segmento de calle de interés (Schaeffer Hills Dr) tiene un nodo desde 300 (300 Schaeffer Hills Dr) y un 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 lo interpolaría (atravesaría el 10% de él) hasta 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 (no 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, supongo que google usa mi ip para obtener información similar a un geoip , amplía algunos límites 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 ( ¡cual 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.

Actualizar:

OK, hasta ahora tenemos dos tipos de consejos enumerados

  • Geoip como pistas
  • Área de interés del cuadro delimitador (ver el ejemplo de Pablo).
  • ¿Otros?

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 las coordenadas de su 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 de la carretera, pero Todavía 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.


Una de las cosas que puede encontrar hurgando en el recuadro negro 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 mejora cuando sigue ese). 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 tu ejemplo de Misión, es genial, ya que puedes ver la sugerencia del mapa directamente en juego:

Consulta con ventana de mapa sobre Europa: resultados europeos

Consulta con ventana de mapa sobre América del Norte: resultados estadounidenses