Геокодування США адреси, які не можна надсилати через Інтернет?


46

Для разового проекту мені потрібно геокодувати кілька тисяч адрес. Раніше я використовував різні Інтернет-ресурси для подібних речей (наприклад, API Google Maps), але адреси, з якими я працюю, повинні залишатися конфіденційними - це означає, що не надсилайте їх через Інтернет, якщо немає заліза -кладова гарантія конфіденційності. Які ще є варіанти?


4
Чи є конкретний населений пункт, в якому ви хочете зробити геокодування? Наприклад, Австралія, США, конкретний штат тощо
відзначте

Хороше запитання - мене цікавлять США в цілому, Колорадо, зокрема, графства Фронтового ряду.
Метт Паркер

1
Я б дійсно відкрив швидку дискусію з RTD, я знаю, що в цій галузі вони мають потужний ГІС і, ймовірно, можуть надати вам пряму підтримку. Інакше; Геокодер :: США - чудовий варіант. Ви можете запустити його всередину, і не доведеться ризикувати, коли ваші дані перейдуть через провід.
DEWright

@DEWright, це цікава ідея - тим більше для іншого мого питання . Дякую!
Метт Паркер

Відповіді:



10

Якщо використання API геокодування Google або іншого джерела в Інтернеті є вашим уподобанням, а не локальними параметрами, я б запропонував переглянути проект Tor (легко встановлюється через пакет, який називається "Vidalia Bundle").

Тор захищає вас, підстрибуючи свої комунікації навколо розподіленої мережі ретрансляцій, якими керують волонтери по всьому світу: це заважає ... сайтам, які ви відвідуєте, дізнаватися про ваше фізичне місцезнаходження.

Поряд з ін'єкцією випадкових адрес та використанням ssl (https) для шифрування зв'язку до їх кінцевих точок (переконайтесь, що ви також це робите), я не можу придумати більш безпечний спосіб дистанційного геокодування. Незалежно від служби геокодування, яку ви використовуєте, ніколи не вдасться визначити, звідки в кінцевому підсумку надходили запити, і з https ніхто інший також не буде. Примітка: не використовуйте службу геокодування, для якої потрібен ключ api, інакше ви більше не будете анонімними. (Google більше не потребує ключа api).

Побічною перевагою цієї процедури є те, що ви більше не будете обмежені будь-якою кількістю запитів геокодування, оскільки ваші запити будуть виглядати так, що вони надходять з декількох ip-адрес. Однак я не рекомендую або схвалюю зловживання цими чудовими безкоштовними API! Швидкість залишається обмеженою, якщо API обмежує швидкість (хоча швидкість передачі за допомогою Tor є дещо повільнішою, ніж підключення безпосередньо).

Приклад дослідження в Python - Після того, як ви встановили пакет Vidalia і проксі-сервер працює на 127.0.0.1:8118 (за замовчуванням), в Python 2.7 або вище ви можете налаштувати https urllib2 проксі, використовуючи:

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")

Зауважте, що проксі-сервери urllib2 не працюють з https до принаймні Python 2.7 або близько того, тому цей метод працює лише з останніми версіями Python. Переконайтеся, що ви маєте "https" (а не "http") в обох місцях у наведеному вище прикладі. Я протестував його лише з Python 2.7.1.

Vidalia змінює вашу особу / очевидне походження IP-адреси кожні 10 хвилин, але якщо ви стикаєтесь із повільними темпами чи іншими проблемами (квота перевищила помилки), або якщо ви особливо параноїчні і хочете частіше змінювати свою особу, ви можете змінити свою особу Tor використовуючи тут код python (трохи змінений нижче). Вам потрібно буде змінити пароль Tor на статичний (а не випадково згенерований), ввівши налаштування Vidalia. Можна також перезапустити Vidalia після всіх змін.

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

4
Це не тримає адреси конфіденційними, чи не так? Фізичне розташування машини, що надсилає запит, тут не має значення (не є конфіденційним).
underdark

4
Для більшості цілей фізичне розташування машини, що надсилає запит, дуже важлива для захисту анонімності даних, що надсилаються службі геокодування. Скажіть, що комп'ютер в Інституті вивчення X надсилає запит геокодування на 1000 адрес. Можна було (принаймні теоретично) ідентифікувати ці адреси як такі, що містять людей із Х хворобою. Навпаки, адреси, змішані з тисячами випадкових запитів від багатьох користувачів, і надходять з декількох IP-адрес, які не відповідають жодному користувачеві (ситуація з Тор), не можуть бути ідентифіковані за призначенням.
Віктор Ван Хе

Надсилання даних в Google (через Tor чи що-небудь) є основною проблемою конфіденційності. Google не пропонує "захищеної праскою гарантії конфіденційності".
Ніколя Рауль

7

Одним із варіантів є використання Geo-Coder-US , що є модулем Perl з відкритим кодом, який використовує дані Тигра / лінії перепису США для геокодування. Я не використовував його особисто, але він виглядає чудово. Посилання вище містить приємний огляд та посилання на версію, у якій вже зібрані необхідні файли перепису.


6

Бібліотека Geokit може використовувати будь-які Google, Yahoo, Geocoder.us, Geocoder.ca та Geonames. Він написаний на Ruby, а також є дочірня бібліотека для ваших проектів Ruby on Rails:

http://geokit.rubyforge.org/

Щоб зберегти конфіденційність, ви можете поширити запити на всіх постачальників, розділивши їх на набори, які рідше пов'язані з вашою діяльністю. Ви також можете вводити шум у свої адреси, додаючи реальні адреси з онлайн-телефонного каталогу. І я пропоную вам запустити цей сценарій з різних місць, таких як інтернет-кафе, поєднавши результати наприкінці.

Єдиний спосіб по-справжньому зберегти вашу конфіденційність - завантажити повний набір даних і запустити свій скрипт проти нього. Існує система Nominatim від OpenStreetMap. Він не повний для всіх міст, але ви можете використовувати це для зменшення списку адрес, надісланих іншим провайдерам.


5

Хоча ще на ранніх стадіях розвитку http://openaddresses.org/ має на меті забезпечити відкриту базу даних по всьому світу та пов'язані з ними послуги геокодування.

Хоча не приватна, природа відкритої бази даних може означати, що вона доступна для завантаження в повному обсязі (або принаймні для вибраних регіонів), щоб дозволити геокодування в режимі офлайн.



3

Я подумав, що код за http://geocoder.us/ доступний для завантаження таким чином, що ви можете отримати його та файл даних TIGER і більш-менш налаштувати власну локальну установку. Я не бачу цього відразу після перегляду цього сайту, але ви, можливо, захочете трохи озирнутися.


3

Чому б не використовувати ті самі геокодери, які ви використовували раніше, просто видаліть усі інші метадані?

Не надсилайте "Таємне місце розташування; 123 Головна вулиця, якесь місто", просто надсилайте над "123 Головна вулиця, якесь місто"? Адреси все одно є загальнодоступною інформацією. Просто не кажіть геокодеру, що у вас є список ядерних баз або всі місця розташування АНБ. Результати будуть у форматі таблиці, після чого ви зможете повторно долучити всі інші секретні метадані.


1
Так я відчуваю ситуацію. Це не так, як мій роботодавець ставиться до ситуації. Щоб принести користь сумніву, якщо ви отримаєте список адрес з розпізнаваної IP-адреси, це не так сильно, щоб уявити, що хтось міг би зрозуміти, до яких адрес відносяться.
Метт Паркер

1
@Matt Це одне, що консультанти корисні для :-). Інший варіант - змішати різні адреси з тими, які ви надсилаєте. Звичайно, це збільшує витрати, але вони все одно такі низькі ...
whuber

3

Пошук на домашній сторінці OpenStreetMap - це система під назвою Nominatim . Ви можете називати це службою геокодування (якщо ви обережні), але це все з відкритим кодом, тому ви можете встановити його і на власному сервері.

Для цього використовуються дані OpenStreetMap, завантажені в базу даних postGiS. Він відносно новий і все ще знаходиться в стадії розробки, і процес налаштування та завантаження даних не все настільки простий, і досить голодний. ... але це безкоштовно і відкрито!


3

Більшість відповідей спрямовують вас до локальної бази даних. Хоча це, безумовно, спрацює, ви також повинні врахувати, чи гекодування є вашим основним доменом. (Це те, в чому ви хороші? Якщо так, напевно, у вас вже є дані, які вони рекомендують. Якщо ні, і ви хочете, щоб вони були, тоді ви повинні завантажити дані та просто зробити це на локальному рівні. Однак, якщо вам просто потрібно щоб вирішити проблему і не хочуть впроваджувати безліч годин, збільшуючи виробництво, все ж є варіанти зробити це через API, не заважаючи безпеці.

Спочатку наполягайте на HTTPS, оскільки вам потрібні дані, щоб бути безпечними на шляху до API, а потім на шляху до вас. По-друге, переконайтеся, що ви робите запит POST замість GET-запиту в API. Використовуючи POST, ви просто передаєте URL-запит із корисним навантаженням, і єдиним результатом, який би вразив журнал сервера, є той факт, що запит на перевірку адреси та геокодування був зроблений у певний час та з певного IP-адреси. Ні подана адреса, ні повернена адреса не зберігаються на диску або записуються в журнал сервера. Це не набагато безпечніше, ніж це.

Тож, хоча місцева скринька, безумовно, буде надійною, вона може зажадати великої кількості розробок, щоб зробити те, що потрібно. Оскільки проблеми безпеки можуть бути усунені, ви можете (ще раз) розглянути можливість використання API.

Я працюю в компанії для перевірки адрес, яка спеціалізується на безпечному геокодування API - SmartyStreets .


1

Стара нитка, але варто згадати її. http://www.tigergeocoder.com/, використовуючи дані TIGER 2013, готові запустити власний екземпляр сервера в хмарі Amazon EC2.


1

Налаштуйте PostGIS Tiger Geocoder у вашому локальному вікні Linux. Це, безумовно, громіздкіше, ніж Інтернет API, але, можливо, найкраща ставка для вашої ситуації. При необхідності він може масштабувати до мільйонів адрес.

За допомогою ansible playbook налаштувати сервер в linux набагато простіше, ніж раніше. Запитання SQL-запитів, ймовірно, займе більше часу, якщо ви не знайомі з SQL або PostGIS.

Ви можете перевірити налаштування системи та мій сценарій для отримання більш детальної інформації. Він повинен містити всю необхідну інформацію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.