Estoy tratando de crear una secuencia de comandos de Python que tomará una dirección como entrada y escupirá su latitud y longitud, o latitudes y longitudes en caso de múltiples coincidencias, como Nominatim.¿Qué estructura de datos debo usar para geocodificar?
Por lo tanto, la posible entrada y salidas pueden ser: -
- En: Nueva York, EE.UU. => Salida: Nueva York (Lat: x1 lon: y1)
- En : Nueva York => salida: Nueva York (Lat: x1 lon: y1)
- En: Pearl Street, Nueva York, EE.UU. => salida: Pearl Street (Lat: x2 lon: y2)
- En: Pearl Street, EE.UU. => Salida: Pearl Street (Lat: x2 lon: y2), la calle Pearl (Lat: x3 lon: y3)
- En: Pearl Street => salida: Pearl Street (Lat: x2 lon: y2), la calle Pearl (Lat: x3 lon: y3)
- En: 103 Alkazam, Nueva York, EE.UU. => Fuera: Nueva York (lat: x1 lon: y1)
En 6, se devolvió Nueva York ya que no se encontró ningún lugar con la dirección 103 Alkazam, New York, USA
, pero al menos podría encontrar New York, USA
.
Inicialmente pensé en construir un árbol que representara la relación jerárquica donde los hermanos se ordenan alfabéticamente. Podría haber sido como: -
GLOBAL
|
---------------------------------------------
| | ...
USA
---------------
| | ...
CALIFORNIA NEW YORK
| |
----------- -------------
| |.. | |....
PEARL STREET PEARL STREET
Pero el problema era usuario puede proporcionar la dirección incompleta como en 2, 4 y 5.
Por lo tanto, la próxima pensado en utilizar un árbol de búsqueda y almacenar el completo dirección en cada nodo. Pero esto también es bastante malo ya que: -
- Esto almacenará datos altamente redundantes en cada nodo. Dado que esto será realmente un gran dato, la conservación del espacio importa.
- No podrá aprovechar el hecho de que el usuario ha reducido el espacio de búsqueda.
Tengo un requisito adicional. Necesito detectar errores ortográficos. Supongo que tendrá que tratarse como un problema aparte y puede tratar a cada nodo como cadenas genéricas.
Actualización 1
A poca elaboración. La entrada sería una lista, donde el elemento en el índice más bajo es padre del artículo en un índice más alto; y, por supuesto, pueden o no ser padres o hijos inmediatos. Por lo tanto, para la consulta 1, la entrada sería ["USA", "NEW YORK"]
. Por lo tanto, está perfectamente bien que USA, New York
no devuelva ningún resultado.
El usuario debería poder localizar un edificio si tiene la dirección y nuestros datos son tan detallados.
Actualización 2 (Omisión Caso)
Si Pearl Street, USA
usuario consulta, por lo que nuestro algo debe ser capaz de localizar la dirección, ya que sabe Pearl Street
tiene New York
como padre y USA
es su padre.
Actualización 3 (Caso Excedente)
Supongamos que las consultas de los usuarios para 101 C, Alley A, Pearl Street, New York
. Supongamos también que nuestros datos sí saben de 101 C
pero no de Alley A
. De acuerdo con él 101 C
es un hijo inmediato de Pearl Street
. Incluso en este caso, debería poder ubicar la dirección.
Así que son las únicas cosas con calles de ubicación, o calles y pueblos/ciudades, o es lugares en las calles (es decir63 Pearl street), calles y pueblos/ciudades, o algo más? – gbulmer
Puede ser no. Plano, calle, pueblo/ciudad, estado, país. Cualquier parte podría estar perdida. – AppleGrew
Creo que la etiqueta [missing-data] sería apropiada aquí. – moooeeeep