¿Geocodificación de direcciones de EE. UU. que no se pueden enviar por Internet?

46

Para un proyecto de una sola vez, necesito geocodificar unos pocos miles de direcciones. En el pasado, he utilizado varios recursos en línea para este tipo de cosas (por ejemplo, la API de Google Maps), pero las direcciones con las que trabajo deben ser confidenciales, lo que significa que no se debe enviar a través de Internet, a menos que haya algo de hierro. - garantía de privacidad. ¿Qué otras opciones tengo?

    
pregunta Matt Parker 22.07.2010 - 21:13

12 respuestas

24

Eche un vistazo a Geocoder::US 2.0 , el sucesor de geocoder.us:

enlace

Es un puerto ruby del módulo perl del mismo autor.

    
respondido por el tcarobruce 22.07.2010 - 21:58
10

Si usar la API de geocodificación de Google u otra fuente en línea es su preferencia en lugar de las opciones locales, sugeriría buscar en el Tor Project (se instala fácilmente a través del paquete llamado 'el paquete de Vidalia').

  

Tor te protege rebotando tus comunicaciones alrededor de un   Red de relés gestionados por voluntarios de todo el mundo: evita ...   los sitios que visita después de conocer su ubicación física.

Junto con la inyección de direcciones aleatorias y el uso de ssl (https) para cifrar las comunicaciones a sus puntos finales (asegúrate de que también estás haciendo esto), no puedo pensar en una forma más segura de geocodificar remotamente. Cualquiera que sea el servicio de geocodificación que esté usando, nunca podrá identificar de dónde provienen las solicitudes, y con https nadie más lo hará. Nota: no uses un servicio de geocodificación que requiera una clave de api para esto, o ya no serás anónimo. (Google ya no requiere una clave de api).

Un 'beneficio' adicional de este procedimiento es que ya no estará restringido a ningún número de solicitudes de geocodificación, ya que sus solicitudes parecerán que provienen de múltiples direcciones IP. Sin embargo, no recomiendo o endoso el abuso de estas hermosas 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).

Caso de estudio en Python - una vez que haya instalado el paquete de Vidalia y tenga el proxy ejecutándose en 127.0.0.1:8118 (el predeterminado), en Python 2.7 o superior puede configurar un https urllib2 proxy utilizando:

import urllib2
proxy = urllib2.ProxyHandler({'https': '127.0.0.1:8118'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
response = urllib2.urlopen("https://maps.google.com/maps/geo?q=Los+Angeles&sensor=false&gl=us")

Tenga en cuenta que los proxies urllib2 no funcionan con https hasta al menos Python 2.7 o algo así, 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 he probado con Python 2.7.1.

Vidalia cambia su origen de identidad / dirección IP aparente cada 10 minutos, pero si se encuentra con tasas lentas u otros problemas (la cuota superó los errores), o si es especialmente paranoico y desea cambiar su identidad con más frecuencia, puede < a href="http://technomosh.blogspot.com/2010/09/working-with-tor-in-python.html"> cambia tu identidad Tor usando el código de python aquí (ligeramente modificado a continuación). Deberá 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 ser necesario reiniciar Vidalia después de todos los cambios.

p = "MySuperSecurePassword"
def renewTorIdentity():
    success = False
    try:
        s = socket.socket()
        s.connect(('localhost', 9051))
        s.send('AUTHENTICATE "' + p + '"\r\n')
        resp = s.recv(1024)
        if resp.startswith('250'):
            s.send("signal NEWNYM\r\n")
            resp2 = s.recv(1024)
            if resp2.startswith('250'):
                success = True
    except:
        success = False
    return success
    
respondido por el Victor Van Hee 07.06.2011 - 12:24
7

Una opción es usar Geo-Coder-US , que es un módulo Perl de código abierto que utiliza los datos de Tigre / Línea del Censo de EE. UU. para geocodificar. No lo he usado personalmente, pero se ve excelente. El enlace anterior incluye una buena descripción general y un enlace a una versión que ya tiene los archivos censales necesarios reunidos.

    
respondido por el Matt Parker 22.07.2010 - 21:18
6

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:

enlace

Para conservar la privacidad, puede difundir las consultas a todos los proveedores al separarlos 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 en su contra. Hay 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.

    
respondido por el Nicolas Marchildon 02.08.2010 - 19:35
5

Aunque todavía se encuentra en las primeras etapas de desarrollo, enlace tiene como objetivo proporcionar una base de datos abierta de direcciones mundiales y servicios de geocodificación asociados.

Aunque no es privado, la naturaleza de una base de datos de direcciones abierta puede significar que está disponible para descargar en su totalidad (o al menos en regiones seleccionadas) para permitir la geocodificación sin conexión.

    
respondido por el geographika 09.11.2010 - 18:28
4

Dependiendo de la ubicación de la dirección, puede descargar y utilizar las funciones de OpenStreetMap.

Echa un vistazo: enlace

Además, si se encuentra en los EE. UU., existe el proyecto TIGER junto con la API de PostGIS TigerGeocoding. enlace

    
respondido por el George Silva 22.07.2010 - 21:16
4

La mayoría de las respuestas lo llevan a una base de datos local. Si bien eso ciertamente funcionaría, también debe considerar si gecoding es su dominio central. (¿En eso es para lo que eres bueno? Si es así, probablemente ya tienes los datos que están recomendando. Si no, Y QUIERES QUE SEA, entonces debes descargar los datos y simplemente 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 hacia la API y luego en el camino hacia usted. En segundo lugar, asegúrese de que está realizando una solicitud POST en lugar de una solicitud GET para la API. Al usar POST, solo está pasando una solicitud de URL con una carga útil y los únicos resultados que golpearían el registro del servidor es el hecho de que se realizó una solicitud de geocodificación y verificación de 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 o se escribirán en un registro del servidor. No es mucho más seguro que eso.

Entonces, si bien un cuadro local sería seguro, 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 empresa de verificación de direcciones que se especializa en geocodificación segura de API - SmartyStreets .

    
respondido por el Jeffrey 30.04.2012 - 23:11
3

Pensé que el código detrás de enlace estaba disponible para descargar, de modo que podría obtenerlo y un archivo de datos TIGER y más o menos configura tu propia instalación local. No veo eso inmediatamente después de volver a visitar ese sitio, pero es posible que desee mirar un poco alrededor.

    
respondido por el Joe Germuska 22.07.2010 - 21:17
3

¿Por qué no usa los mismos geocodificadores que usó antes, simplemente 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.

    
respondido por el Vadim 22.07.2010 - 21:22
3

La búsqueda en la página principal de OpenStreetMap es un sistema llamado Nominatim . Puedes llamarlo como un servicio de geocodificación (si eres amable) pero todo es de código abierto, por lo que también puedes configurarlo en tu propio servidor.

Esto está usando los datos de OpenStreetMap cargados en la base de datos de 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 carece de recursos. ... pero es gratis y abierto!

    
respondido por el Harry Wood 30.07.2010 - 19:09
1

Hilo viejo pero vale la pena mencionarlo. enlace utilizando los datos de TIGER 2013, listos para ejecutar su propia instancia de servidor en la nube de Amazon EC2.

    
respondido por el Biba 05.05.2015 - 20:27
1

Configure PostGIS Tiger Geocoder en su caja de Linux local. Definitivamente, es más engorroso que la API en línea, pero quizás la mejor opción 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. Si no está familiarizado con SQL o PostGIS, las consultas de SQL pueden tardar más tiempo.

Puede consultar configuración de mi sistema y my script para obtener más detalles. Debe incluir toda la información que necesita.

    
respondido por el dracodoc 27.11.2015 - 23:39

Lea otras preguntas en las etiquetas