Para un proyecto único, necesito geocodificar algunos miles de direcciones. En el pasado, he usado varios recursos en línea para este tipo de cosas (por ejemplo, API de Google Maps), pero las direcciones con las que estoy trabajando deben mantenerse confidenciales, lo que significa que no se debe enviar por Internet, a menos que haya algo de hierro -reclaro de garantía de privacidad. ¿Qué otras opciones tengo?
geocoding
united-states
privacy
Matt Parker
fuente
fuente
Respuestas:
Echa un vistazo a
Geocoder::US 2.0
, el sucesor de geocoder.us:http://github.com/geocommons/geocoder
Es un puerto rubí del módulo perl del mismo autor.
fuente
Si prefieres utilizar la API de Geocodificación de Google u otra fuente en línea en lugar de las opciones locales, te sugiero que busques en el Proyecto Tor (que se instala fácilmente a través del paquete denominado "Paquete Vidalia").
Junto con la inyección de direcciones aleatorias y el uso de SSL (https) para cifrar las comunicaciones a sus puntos finales (asegúrese de que también lo esté haciendo), no puedo pensar en una forma más segura de geocodificar de forma remota. Cualquier servicio de geocodificación que esté utilizando nunca podrá identificar de dónde provienen las solicitudes, y con https, nadie más lo hará. Nota: no use un servicio de geocodificación que requiera una clave de API para esto, o ya no será anónimo. (Google ya no requiere una clave de API).
Un "beneficio" secundario de este procedimiento es que ya no estará restringido a ninguna cantidad de solicitudes de geocodificación, ya que sus solicitudes parecerán que provienen de múltiples direcciones IP. Sin embargo, no recomiendo ni apruebo el abuso de estas encantadoras API gratuitas. La velocidad seguirá siendo limitada si la API limita la velocidad (aunque la velocidad de transmisión con Tor es bastante más lenta que la conexión directa).
Estudio de caso en Python: una vez que haya instalado el paquete Vidalia Bundle y tenga el proxy ejecutándose en 127.0.0.1:8118 (predeterminado), en Python 2.7 o superior puede configurar un proxy https urllib2 usando:
Tenga en cuenta que los servidores proxy urllib2 no funcionan con https hasta al menos Python 2.7 más o menos, por lo que este método solo funciona con versiones recientes de Python. Asegúrese de tener 'https' (no 'http') en ambos lugares en el ejemplo anterior. Solo lo probé con Python 2.7.1.
Vidalia cambia su identidad / origen aparente de dirección IP cada 10 minutos, pero si se encuentra con tasas lentas u otros problemas (errores de cuota excedida), o si es especialmente paranoico y desea cambiar su identidad con más frecuencia, puede cambiar su identidad Tor usando el código de Python aquí (ligeramente modificado a continuación). Tendrá que cambiar la contraseña de Tor a una estática (en lugar de una generada aleatoriamente) ingresando la configuración de Vidalia. También podría necesitar reiniciar Vidalia después de todos los cambios.
fuente
Una opción es usar Geo-Coder-US , que es un módulo Perl de código abierto que usa los datos de Tigre / Línea del Censo de EE. UU. Para geocodificar. No lo he usado personalmente, pero se ve excelente. El enlace de arriba incluye una buena descripción y un enlace a una versión que ya tiene los archivos necesarios del Censo reunidos.
fuente
La biblioteca Geokit puede usar cualquiera de Google, Yahoo, Geocoder.us, Geocoder.ca y Geonames. Está escrito en Ruby, y también hay una biblioteca hermana para sus proyectos de Ruby on Rails:
http://geokit.rubyforge.org/
Para conservar la privacidad, puede difundir consultas a todos los proveedores separándolos en conjuntos que tienen menos probabilidades de estar vinculados a sus actividades. También puede inyectar ruido en sus direcciones agregando direcciones reales de un directorio telefónico en línea. Y le sugiero que ejecute este script desde varios lugares, como cibercafés, combinando los resultados al final.
La única forma de preservar verdaderamente su privacidad es descargar el conjunto completo de datos y ejecutar su script contra él. Existe el sistema Nominatim de OpenStreetMap. No está completo para todas las ciudades, pero podría usarlo para reducir la lista de direcciones enviadas a otros proveedores.
fuente
Aunque todavía se encuentra en las primeras etapas de desarrollo, http://openaddresses.org/ tiene como objetivo proporcionar una base de datos abierta de direcciones mundiales y servicios de geocodificación asociados.
Si bien no es privado, la naturaleza de una base de datos de direcciones abiertas podría significar que está disponible para descargar en su totalidad (o al menos para regiones seleccionadas) para permitir la geocodificación fuera de línea.
fuente
Dependiendo de dónde se encuentre la dirección, puede descargar y usar las funciones de OpenStreetMap.
Compruébalo: http://www.openstreetmap.org/
Además, si se encuentra en los EE. UU., Existe el proyecto TIGER junto con la API PostGIS TigerGeocoding. http://svn.osgeo.org/postgis/trunk/extras/tiger_geocoder/
fuente
Pensé que el código detrás de http://geocoder.us/ estaba disponible para descargar de tal manera que pudiera obtenerlo y un archivo de datos TIGER y más o menos configurar su propia instalación local. No veo eso inmediatamente después de volver a visitar ese sitio, pero es posible que desee mirar un poco.
fuente
¿Por qué no usar los mismos geocodificadores que usó antes, solo elimine todos los demás metadatos?
¿No envíe "Ubicación secreta; 123 Main Street, Some City", simplemente envíe "123 Main Street, Some City"? Las direcciones son información pública de todos modos. Simplemente no le digas al geocodificador que tienes una lista de bases nucleares o todas las ubicaciones de la NSA. Los resultados estarán en formato de tabla, luego puede volver a adjuntar todos sus otros metadatos secretos.
fuente
La búsqueda en la página de inicio de OpenStreetMap es un sistema llamado Nominatim . Puede llamarlo como un servicio de geocodificación (si es amable), pero todo es de código abierto, por lo que también puede configurarlo en su propio servidor.
Esto está utilizando los datos de OpenStreetMap cargados en la base de datos postGiS. Es relativamente nuevo y aún está en desarrollo, y el proceso de configuración y carga de datos no es tan sencillo y requiere bastante recursos. ... pero es gratis y abierto!
fuente
La mayoría de las respuestas lo guían hacia una base de datos local. Si bien eso ciertamente funcionaría, también debe considerar si la codificación geográfica es su dominio principal. (¿Es eso en lo que eres bueno? Si es así, probablemente ya tienes los datos que recomiendan. Si no, Y QUIERES QUE SEA, entonces debes descargar los datos y hacerlo localmente. Sin embargo, si solo necesitas Para resolver un problema y no querer dedicar innumerables horas a la producción, todavía hay opciones para hacerlo a través de una API sin comprometer la seguridad.
Primero, insista en HTTPS porque necesita que los datos estén seguros en el camino a la API y luego en el camino de regreso a usted. En segundo lugar, asegúrese de hacer una solicitud POST en lugar de una solicitud GET a la API. Con POST, solo está pasando una solicitud de URL con una carga útil y el único resultado que afectaría el registro del servidor es el hecho de que se realizó una solicitud de verificación de geocodificación y dirección en un momento determinado y desde una determinada IP. Ni la dirección enviada ni la dirección devuelta se almacenarán en el disco ni se escribirán en un registro del servidor. No se vuelve mucho más seguro que eso.
Entonces, si bien una caja local definitivamente sería segura, podría requerir mucho desarrollo para hacer lo que necesita. Dado que las preocupaciones de seguridad pueden ser pacificadas, es posible que desee considerar (nuevamente) la opción de usar una API.
Trabajo para una compañía de verificación de direcciones que se especializa en geocodificación API segura: SmartyStreets .
fuente
Hilo antiguo pero vale la pena mencionarlo. http://www.tigergeocoder.com/ utilizando datos de TIGER 2013, listos para ejecutar su propia instancia de servidor en la nube de Amazon EC2.
fuente
Configure PostGIS Tiger Geocoder en su caja de Linux local. Definitivamente es más engorroso que la API en línea, pero quizás sea la mejor apuesta para su situación. Y puede escalar a millones de direcciones si es necesario.
Con la ayuda de Ansible Playbook, configurar el servidor en Linux es mucho más fácil que antes. La redacción de consultas SQL probablemente llevará más tiempo si no está familiarizado con SQL o PostGIS.
Puede consultar la configuración de mi sistema y mi script para obtener más detalles. Debe incluir toda la información que necesita.
fuente