일회성 프로젝트의 경우 수천 개의 주소를 지오 코딩해야합니다. 과거에는 이런 종류의 일 (예 : Google Maps API)에 다양한 온라인 리소스를 사용했지만, 작업중인 주소는 기밀로 유지해야합니다. 개인 정보 보호 보장. 다른 옵션이 있습니까?
일회성 프로젝트의 경우 수천 개의 주소를 지오 코딩해야합니다. 과거에는 이런 종류의 일 (예 : Google Maps API)에 다양한 온라인 리소스를 사용했지만, 작업중인 주소는 기밀로 유지해야합니다. 개인 정보 보호 보장. 다른 옵션이 있습니까?
답변:
Geocoder::US 2.0
geocoder.us의 후속 제품인을 살펴보십시오 .
http://github.com/geocommons/geocoder
동일한 저자의 펄 모듈의 루비 포트입니다.
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
한 가지 옵션은 Geo-Coder-US 를 사용 하는 것인데, 이는 US Census의 Tiger / Line 데이터를 사용하여 지오 코딩하는 오픈 소스 Perl 모듈입니다. 개인적으로 사용하지는 않았지만 훌륭해 보입니다. 위의 링크에는 멋진 개요와 필요한 Census 파일이 이미있는 버전에 대한 링크가 포함되어 있습니다.
Geokit 라이브러리는 Google, Yahoo, Geocoder.us, Geocoder.ca 및 Geoname을 사용할 수 있습니다. Ruby로 작성되었으며 Ruby on Rails 프로젝트를위한 자매 라이브러리도 있습니다.
개인 정보를 보호하기 위해 쿼리를 활동과 연결될 가능성이 적은 세트로 분리하여 모든 공급자에게 쿼리를 분산시킬 수 있습니다. 온라인 전화 번호부에서 실제 주소를 추가하여 주소에 노이즈를 삽입 할 수도 있습니다. 그리고 인터넷 카페와 같은 다양한 장소에서이 스크립트를 실행하여 최종 결과를 결합하는 것이 좋습니다.
개인 정보를 진정으로 보존하는 유일한 방법은 전체 데이터 세트를 다운로드하고 이에 대해 스크립트를 실행하는 것입니다. OpenStreetMap의 Nominatim 시스템이 있습니다. 모든 도시에 대해 완전한 것은 아니지만이를 사용하여 다른 공급자에게 보내는 주소 목록을 줄일 수 있습니다.
여전히 초기 개발 단계에 있지만 http://openaddresses.org/ 는 전세계 주소 및 관련 지오 코딩 서비스의 공개 데이터베이스를 제공하는 것을 목표로합니다.
비공개 주소는 아니지만 공개 주소 데이터베이스의 특성상 오프라인 지오 코딩을 허용하기 위해 전체 또는 최소한 일부 지역에서만 다운로드 할 수 있습니다.
주소가있는 위치에 따라 OpenStreetMap 기능을 다운로드하여 사용할 수 있습니다.
확인하십시오 : http://www.openstreetmap.org/
또한 미국에 거주하는 경우 PostGIS TigerGeocoding API와 함께 TIGER 프로젝트가 있습니다. http://svn.osgeo.org/postgis/trunk/extras/tiger_geocoder/
http://geocoder.us/ 뒤에있는 코드 는 다운로드 할 수 있으며 TIGER 데이터 파일을 가져 와서 자체 로컬 설치를 설정할 수 있다고 생각했습니다. 해당 사이트를 다시 방문하자마자 보이지 않지만 조금 둘러보고 싶을 수도 있습니다.
이전에 사용했던 것과 동일한 지오 코더를 사용하지 말고 다른 메타 데이터를 모두 제거하십시오.
"비밀 위치; 123 메인 스트리트, 일부 도시"를 보내지 않고 "123 메인 스트리트, 일부 도시"를 보내지 않습니까? 어쨌든 주소는 공개 정보입니다. 지오 코더에게 핵 기지 또는 모든 NSA 위치 목록을 가지고 있다고 말하지 마십시오. 결과는 표 형식으로 표시되며 다른 모든 비밀 메타 데이터를 다시 첨부 할 수 있습니다.
OpenStreetMap 홈페이지 의 검색 은 Nominatim 이라는 시스템 입니다. 지오 코딩 서비스 (부드럽다면)라고 부를 수 있지만 모두 오픈 소스이므로 자체 서버에서도 설정할 수 있습니다.
postGiS 데이터베이스에로드 된 OpenStreetMap 데이터를 사용하고 있습니다. 비교적 새롭고 아직 개발 중이며 데이터를 설정하고로드하는 프로세스가 간단하고 리소스가 고갈 된 것은 아닙니다. ...하지만 무료이며 개방적입니다!
대부분의 답변은 로컬 데이터베이스를 향한 안내입니다. 그래도 작동하지만 gecoding이 핵심 도메인인지 여부도 고려해야합니다. (당신이 잘하는 것입니까? 그렇다면 그렇다면 이미 추천하고있는 데이터를 가지고있을 것입니다. 그렇지 않은 경우에는 데이터를 다운로드하여 로컬로 수행해야합니다. 그러나 필요한 경우 문제를 해결하고 생산을 위해 많은 시간을 허비하고 싶지 않은 경우 보안을 유지하면서 API를 통해 문제를 해결할 수있는 옵션이 여전히 있습니다.
먼저, API로가는 도중에 데이터를 안전하게 보호하고 다시 돌아 가야하기 때문에 HTTPS를 주장하십시오. 둘째, API에 대한 GET 요청 대신 POST 요청을 수행하고 있는지 확인하십시오. POST를 사용하면 페이로드와 함께 URL 요청을 전달하는 것입니다. 서버 로그에 도달하는 유일한 결과는 특정 시간과 특정 IP에서 주소 확인 및 지오 코딩 요청이 이루어진 것입니다. 제출 된 주소 나 반환 된 주소는 디스크에 저장되거나 서버 로그에 기록되지 않습니다. 그것보다 훨씬 안전하지 않습니다.
따라서 로컬 박스는 확실히 안전하지만 필요한 작업을 수행하려면 많은 개발이 필요할 수 있습니다. 보안 문제가 완화 될 수 있으므로 API 사용 옵션을 다시 고려할 수도 있습니다.
안전한 API 지오 코딩 ( SmartyStreets) 을 전문으로하는 주소 확인 회사에서 일하고 있습니다.
오래된 스레드이지만 언급 할 가치가 있습니다. http://www.tigergeocoder.com/ TIGER 2013 데이터를 사용하여 Amazon EC2 클라우드에서 자체 서버 인스턴스를 실행할 준비가되었습니다.