2 votos

Conversión de latitud/longitud a ciudad y código postal, por lotes

Tengo ~10 millones de puntos de lat/lon, y necesito extraer la ciudad y el código postal de ellos.

Puedo hacer esto con OpenStreetMap utilizando el API de Nominatim (usando algo como http://nominatim.openstreetmap.org/reverse?query ) a través de geopy .

El problema es que la API sólo toma un par lat/lon a la vez, lo que, con retrasos de 1 segundo entre cada consulta, llevaría ~3000 horas en total o quizás más.

¿Existe una API similar en la que pueda enviar una solicitud por lotes con unos cuantos miles de pares al mismo tiempo? ¿O algo que pueda configurar (fácilmente) a nivel local y que me dé la misma información?

Además, sé que es posible configurar Nominatim localmente. Sin embargo, parece bastante complejo, y sólo necesito una parte de los datos, no todo. Y es un trabajo de una sola vez, así que probablemente no necesitaré esto en el futuro.

Algunos detalles extra: los pares lat/lon son de Rusia, los resultados que obtengo de OSM son muy buenos, así que me gustaría tener lo mismo o algo similar.

4voto

Giovanni Toraldo Puntos 1998

Descubrí que la complejidad de instalar una instancia propia de Nominatim se puede mitigar utilizando un contenedor Docker donde el script de configuración ya está preparado.

He utilizado un docker script disponible en https://github.com/helvalius/nominatim-docker . Entonces la instalación es sólo la siguiente:

git clone https://github.com/helvalius/nominatim-docker.git
cd nominatim-docker
docker build --build-arg OSM=http://data.gis-lab.info/osm_dump/dump/latest/RU.osm.pbf -t nominatim
docker run nominatim

Dónde OSM puede ser sustituido por una URL a cualquier otro volcado de OSM.

Y tras unas 10 horas de espera (en el caso de Rusia), tendrás tu propia instancia de Nominatim. Una vez que el procesamiento haya terminado, el contenedor docker puede ser eliminado junto con todas las dependencias de Nominatim, como PostgreSQL.

No es la solución sencilla que quería, pero está bien y resuelve el problema (¡aunque más lento de lo que me gustaría!). Pero aún así me gustaría saber si hay opciones más simples y rápidas - en caso de que necesite esto de nuevo en el futuro.

2voto

Mark Sparks Puntos 26

Si quiere seguir con OSM, necesitará que Nominatim lo procese, o uno de los otros Geocodificadores OSM . Los datos de direcciones en OSM se construyen jerárquicamente. El simple análisis de los datos en bruto no servirá de nada, hay que construir una jerarquía de direcciones. Esto es lo que suelen hacer los geocodificadores de OSM. O eche un vistazo a instancias alternativas de Nominatim / terceros proveedores .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X