인터넷을 통해 보낼 수없는 지오 코딩 미국 주소?


46

일회성 프로젝트의 경우 수천 개의 주소를 지오 코딩해야합니다. 과거에는 이런 종류의 일 (예 : Google Maps API)에 다양한 온라인 리소스를 사용했지만, 작업중인 주소는 기밀로 유지해야합니다. 개인 정보 보호 보장. 다른 옵션이 있습니까?


4
지오 코딩하려는 특정 지역이 있습니까? 예를 들어 호주, 미국, 특정 주 등
fmark

좋은 질문입니다. 저는 미국, 특히 콜로라도, 특히 Front Range 카운티에 관심이 있습니다.
매트 파커

1
RTD와의 빠른 토론을 시작하겠습니다. 그 분야에서 강력한 GIS가 있으며 직접적인 지원을 제공 할 수 있습니다. 그렇지 않으면; Geocoder :: US는 훌륭한 옵션입니다. 내부적으로 실행할 수 있으며 데이터가 전선을 통과 할 위험이 없습니다.
DEWright

@DEWright, 그것은 흥미로운 아이디어입니다- 내 또 다른 질문에 대해서는 더욱 그렇습니다 . 감사!
매트 파커

답변:



10

Google 지오 코딩 API 또는 다른 온라인 소스를 사용하는 것이 로컬 옵션보다 선호하는 경우 Tor 프로젝트 ( 'Vidalia Bundle'이라는 번들을 통해 쉽게 설치)를 살펴 보는 것이 좋습니다 .

Tor는 전 세계 자원 봉사자가 운영하는 분산 된 릴레이 네트워크를 통해 통신을 수신 거부하여 귀하를 보호합니다. 방문하는 사이트가 실제 위치를 학습하지 못하도록합니다.

임의 주소 주입 및 ssl (https)을 사용하여 엔드 포인트와의 통신을 암호화 (이 작업을 수행하고 있는지 확인)와 함께 원격으로 지오 코딩하는 더 안전한 방법을 생각할 수 없습니다. 어떤 지오 코딩 서비스를 사용하더라도 요청이 어디에서 왔는지 확인할 수 없으며 https를 사용하면 아무도 할 수 없습니다. 참고 : 이에 대한 API 키가 필요한 지오 코딩 서비스를 사용하지 마십시오. 더 이상 익명이 아닙니다. (Google은 더 이상 api 키를 요구하지 않습니다).

이 절차의 한 가지 장점은 요청이 여러 IP 주소에서 온 것처럼 보이기 때문에 더 이상 여러 지오 코딩 요청으로 제한되지 않는다는 것입니다. 그러나 나는 이 멋진 무료 API를 학대하는 것을 권장하거나 보증 하지 않습니다 ! API가 속도를 제한하는 경우 속도는 여전히 제한됩니다 (Tor를 사용한 전송 속도는 직접 연결하는 것보다 약간 느립니다).

Python의 사례 연구 -Vidalia Bundle을 설치하고 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 프록시는 적어도 Python 2.7 정도가 될 때까지 https와 함께 작동하지 않으므로이 방법은 최신 Python 버전에서만 작동합니다. 위 예에서 두 곳 모두에 'https'( 'http'아님)가 있는지 확인하십시오. 파이썬 2.7.1에서만 테스트했습니다.

Vidalia는 10 분마다 신원 / 명확한 IP 주소 출처를 변경하지만, 느린 속도 나 다른 문제 (견적 초과 오류)가 발생하거나 특히 편집증이 있고 신원을 더 자주 변경하려는 경우 Tor 신원을 변경할있습니다 여기에 파이썬 코드를 사용하십시오 (아래 약간 수정). Vidalia 설정을 입력하여 임의로 생성 된 암호가 아닌 Tor 암호를 정적 암호로 변경해야합니다. 모든 변경 후에 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
대부분의 경우 쿼리를 보내는 컴퓨터의 실제 위치는 지오 코딩 서비스로 전송되는 데이터의 익명 성을 보호하는 데 매우 중요합니다. Institute of the Study for X의 컴퓨터가 1000 개의 주소에 대한 지오 코딩 요청을 보낸다고 가정합니다. (이론적으로 적어도) X 질병을 가진 개인을 포함하는 주소를 식별 할 수 있습니다. 반대로, 많은 사용자의 수천 개의 임의 요청과 혼합되고 한 사용자와 일치하지 않는 여러 IP 주소 (Tor 상황)에서 오는 주소는 목적과 관련하여 식별 할 수 없습니다.
Victor Van Hee

Tor 등을 통해 Google에 데이터를 보내는 것은 기본적인 개인 정보 보호 문제입니다. Google은 "개인 정보에 대한 철저한 보증"을 제공하지 않습니다.
Nicolas Raoul

7

한 가지 옵션은 Geo-Coder-US 를 사용 하는 것인데, 이는 US Census의 Tiger / Line 데이터를 사용하여 지오 코딩하는 오픈 소스 Perl 모듈입니다. 개인적으로 사용하지는 않았지만 훌륭해 보입니다. 위의 링크에는 멋진 개요와 필요한 Census 파일이 이미있는 버전에 대한 링크가 포함되어 있습니다.


6

Geokit 라이브러리는 Google, Yahoo, Geocoder.us, Geocoder.ca 및 Geoname을 사용할 수 있습니다. Ruby로 작성되었으며 Ruby on Rails 프로젝트를위한 자매 라이브러리도 있습니다.

http://geokit.rubyforge.org/

개인 정보를 보호하기 위해 쿼리를 활동과 연결될 가능성이 적은 세트로 분리하여 모든 공급자에게 쿼리를 분산시킬 수 있습니다. 온라인 전화 번호부에서 실제 주소를 추가하여 주소에 노이즈를 삽입 할 수도 있습니다. 그리고 인터넷 카페와 같은 다양한 장소에서이 스크립트를 실행하여 최종 결과를 결합하는 것이 좋습니다.

개인 정보를 진정으로 보존하는 유일한 방법은 전체 데이터 세트를 다운로드하고 이에 대해 스크립트를 실행하는 것입니다. OpenStreetMap의 Nominatim 시스템이 있습니다. 모든 도시에 대해 완전한 것은 아니지만이를 사용하여 다른 공급자에게 보내는 주소 목록을 줄일 수 있습니다.


5

여전히 초기 개발 단계에 있지만 http://openaddresses.org/ 는 전세계 주소 및 관련 지오 코딩 서비스의 공개 데이터베이스를 제공하는 것을 목표로합니다.

비공개 주소는 아니지만 공개 주소 데이터베이스의 특성상 오프라인 지오 코딩을 허용하기 위해 전체 또는 최소한 일부 지역에서만 다운로드 할 수 있습니다.



3

http://geocoder.us/ 뒤에있는 코드 는 다운로드 할 수 있으며 TIGER 데이터 파일을 가져 와서 자체 로컬 설치를 설정할 수 있다고 생각했습니다. 해당 사이트를 다시 방문하자마자 보이지 않지만 조금 둘러보고 싶을 수도 있습니다.


3

이전에 사용했던 것과 동일한 지오 코더를 사용하지 말고 다른 메타 데이터를 모두 제거하십시오.

"비밀 위치; 123 메인 스트리트, 일부 도시"를 보내지 않고 "123 메인 스트리트, 일부 도시"를 보내지 않습니까? 어쨌든 주소는 공개 정보입니다. 지오 코더에게 핵 기지 또는 모든 NSA 위치 목록을 가지고 있다고 말하지 마십시오. 결과는 표 형식으로 표시되며 다른 모든 비밀 메타 데이터를 다시 첨부 할 수 있습니다.


1
이것이 내가 상황에 대해 어떻게 느끼는지입니다. 이것은 내 고용주가 상황에 대해 느끼는 방식이 아닙니다. 의심의 여지를 없애기 위해, 인식 가능한 IP 주소에서 주소 목록을 얻는다면 누군가가 주소와 관련된 것을 알아낼 수 있다고 생각하는 것은 그리 쉬운 일이 아닙니다.
매트 파커

1
@ 매트 그것은 컨설턴트에게 좋은 것 중 하나입니다 :-). 다른 옵션은 기타 주소를 보낸 주소와 혼합하는 것입니다. 물론, 그것은 비용을 증가 시키지만 어쨌든 너무 낮습니다 ...
whuber

3

OpenStreetMap 홈페이지 의 검색 은 Nominatim 이라는 시스템 입니다. 지오 코딩 서비스 (부드럽다면)라고 부를 수 있지만 모두 오픈 소스이므로 자체 서버에서도 설정할 수 있습니다.

postGiS 데이터베이스에로드 된 OpenStreetMap 데이터를 사용하고 있습니다. 비교적 새롭고 아직 개발 중이며 데이터를 설정하고로드하는 프로세스가 간단하고 리소스가 고갈 된 것은 아닙니다. ...하지만 무료이며 개방적입니다!


3

대부분의 답변은 로컬 데이터베이스를 향한 안내입니다. 그래도 작동하지만 gecoding이 핵심 도메인인지 여부도 고려해야합니다. (당신이 잘하는 것입니까? 그렇다면 그렇다면 이미 추천하고있는 데이터를 가지고있을 것입니다. 그렇지 않은 경우에는 데이터를 다운로드하여 로컬로 수행해야합니다. 그러나 필요한 경우 문제를 해결하고 생산을 위해 많은 시간을 허비하고 싶지 않은 경우 보안을 유지하면서 API를 통해 문제를 해결할 수있는 옵션이 여전히 있습니다.

먼저, API로가는 도중에 데이터를 안전하게 보호하고 다시 돌아 가야하기 때문에 HTTPS를 주장하십시오. 둘째, API에 대한 GET 요청 대신 POST 요청을 수행하고 있는지 확인하십시오. POST를 사용하면 페이로드와 함께 URL 요청을 전달하는 것입니다. 서버 로그에 도달하는 유일한 결과는 특정 시간과 특정 IP에서 주소 확인 및 지오 코딩 요청이 이루어진 것입니다. 제출 된 주소 나 반환 된 주소는 디스크에 저장되거나 서버 로그에 기록되지 않습니다. 그것보다 훨씬 안전하지 않습니다.

따라서 로컬 박스는 확실히 안전하지만 필요한 작업을 수행하려면 많은 개발이 필요할 수 있습니다. 보안 문제가 완화 될 수 있으므로 API 사용 옵션을 다시 고려할 수도 있습니다.

안전한 API 지오 코딩 ( SmartyStreets) 을 전문으로하는 주소 확인 회사에서 일하고 있습니다.


1

오래된 스레드이지만 언급 할 가치가 있습니다. http://www.tigergeocoder.com/ TIGER 2013 데이터를 사용하여 Amazon EC2 클라우드에서 자체 서버 인스턴스를 실행할 준비가되었습니다.


1

로컬 리눅스 박스에 PostGIS Tiger Geocoder를 설정하십시오. 온라인 API보다 성가 시지만 상황에 가장 적합한 방법 일 수 있습니다. 필요한 경우 수백만 개의 주소로 확장 할 수 있습니다.

플레이 가능한 플레이 북 덕분에 Linux에서 서버를 설정하는 것이 이전보다 훨씬 쉽습니다. SQL 또는 PostGIS에 익숙하지 않으면 SQL 쿼리 작성에 시간이 더 걸릴 수 있습니다.

자세한 내용은 시스템 설정스크립트 를 확인할 수 있습니다 . 필요한 모든 정보를 포함해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.