ที่อยู่ Geocoding USA ที่ไม่สามารถส่งผ่านอินเทอร์เน็ตได้?


46

สำหรับโครงการที่ใช้ครั้งเดียวฉันต้องกำหนดรหัสทางภูมิศาสตร์สองสามพันที่อยู่ ในอดีตที่ผ่านมาฉันเคยใช้แหล่งข้อมูลออนไลน์ที่หลากหลายสำหรับสิ่งนี้ (เช่น Google Maps API) แต่ที่อยู่ที่ฉันทำงานด้วยต้องเป็นความลับซึ่งหมายความว่าจะไม่ส่งทางอินเทอร์เน็ตเว้นแต่จะมีธาตุเหล็กอยู่บ้าง - รับประกันความเป็นส่วนตัว ฉันมีตัวเลือกอื่น ๆ อีกบ้าง?


4
มีสถานที่เฉพาะที่คุณต้องการใช้รหัสภูมิศาสตร์หรือไม่? ตัวอย่างเช่นออสเตรเลียสหรัฐอเมริการัฐที่ระบุ ฯลฯ
fmark

คำถามที่ดี - ฉันสนใจในสหรัฐอเมริกาในวงกว้างโดยเฉพาะอย่างยิ่งโคโลราโดเขตแดนที่แม่นยำ
Matt Parker

1
ฉันจะเปิดการสนทนาอย่างรวดเร็วกับ RTD ฉันรู้ว่าพวกเขามี GIS ที่ทรงพลังและน่าจะให้การสนับสนุนโดยตรงกับคุณ มิฉะนั้น; Geocoder :: US เป็นตัวเลือกที่ยอดเยี่ยม คุณสามารถเรียกใช้ภายในและไม่ต้องเสี่ยงข้อมูลของคุณไปในสาย
DEWright

@DEWright ว่าเป็นความคิดที่น่าสนใจ - มากยิ่งขึ้นดังนั้นสำหรับคำถามของฉันอีก ขอบคุณ!
Matt Parker

คำตอบ:



10

หากใช้ Google Geocoding API หรือแหล่งข้อมูลออนไลน์อื่นคือการตั้งค่าของคุณมากกว่าตัวเลือกในท้องถิ่นฉันขอแนะนำให้ดูในโครงการ Tor (ติดตั้งผ่านชุดข้อมูลที่เรียกว่า 'The Vidalia Bundle')

Tor ปกป้องคุณจากการตีกลับการสื่อสารของคุณผ่านเครือข่ายการถ่ายทอดข้อมูลแบบกระจายที่ดำเนินการโดยอาสาสมัครทั่วโลก: ป้องกันไม่ให้ ... เว็บไซต์ที่คุณเข้าชมไม่สามารถเรียนรู้ตำแหน่งทางกายภาพของคุณได้

นอกเหนือจากการฉีดที่อยู่แบบสุ่มและการใช้ ssl (https) เพื่อเข้ารหัสการสื่อสารไปยังจุดสิ้นสุดของพวกเขา (ตรวจสอบให้แน่ใจว่าคุณกำลังทำสิ่งนี้อยู่ด้วย) ฉันไม่สามารถนึกถึงวิธีที่ปลอดภัยกว่าสำหรับการเข้ารหัสทางภูมิศาสตร์จากระยะไกล บริการ Geocoding ใดก็ตามที่คุณใช้งานอยู่จะไม่สามารถระบุได้ว่าคำขอมาจากที่ใดและท้ายที่สุดด้วย https ที่ไม่มีใครต้องการ หมายเหตุ: อย่าใช้บริการ Geocoding ที่ต้องใช้รหัส 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 จะไม่ทำงานกับ https จนกว่าอย่างน้อย Python 2.7 หรือมากกว่าดังนั้นวิธีนี้ใช้ได้กับ Python เวอร์ชันล่าสุดเท่านั้น ตรวจสอบให้แน่ใจว่าคุณมี 'https' (ไม่ใช่ 'http') ในทั้งสองสถานที่ในตัวอย่างด้านบน ฉันทำการทดสอบด้วย Python 2.7.1 เท่านั้น

วิดาเลียเปลี่ยนข้อมูลประจำตัว / ที่อยู่ IP ของคุณชัดเจนทุก 10 นาที แต่ถ้าคุณใช้อัตราช้าหรือปัญหาอื่น ๆ (โควต้าเกินข้อผิดพลาด) หรือหากคุณหวาดระแวงเป็นพิเศษและต้องการเปลี่ยนข้อมูลประจำตัวของคุณบ่อยขึ้นคุณสามารถเปลี่ยนข้อมูลประจำตัวของ Tor ใช้รหัสไพ ธ อนที่นี่ (แก้ไขเล็กน้อยด้านล่าง) คุณจะต้องเปลี่ยนรหัสผ่าน 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
สำหรับจุดประสงค์ส่วนใหญ่ที่ตั้งทางกายภาพของเครื่องที่ส่งเคียวรีนั้นสำคัญมากในการปกป้องข้อมูลที่ไม่ระบุตัวตนของข้อมูลที่ส่งไปยังบริการ Geocoding สมมติว่าคอมพิวเตอร์ในสถาบันเพื่อการศึกษา X ส่งคำขอพิกัดทางภูมิศาสตร์สำหรับที่อยู่ 1,000 แห่ง หนึ่งสามารถ (อย่างน้อยในทางทฤษฎี) ระบุที่อยู่เหล่านั้นว่าเป็นบุคคลที่มีโรค X ในทางตรงกันข้ามที่อยู่ผสมกับคำขอสุ่มหลายพันรายการจากผู้ใช้จำนวนมากและมาจากที่อยู่ IP หลายรายการที่ไม่สอดคล้องกับผู้ใช้คนใดคนหนึ่ง (สถานการณ์ Tor) ไม่สามารถระบุได้ด้วยความเคารพต่อวัตถุประสงค์
Victor Van Hee

การส่งข้อมูลไปยัง Google (ผ่าน Tor หรืออะไรก็ตาม) เป็นปัญหาความเป็นส่วนตัวขั้นพื้นฐาน Google ไม่เสนอ "การรับประกันความเป็นส่วนตัวแบบหุ้มเกราะ"
Nicolas Raoul

7

ทางเลือกหนึ่งคือใช้Geo-Coder-USซึ่งเป็นโมดูล Perl แบบโอเพ่นซอร์สที่ใช้ข้อมูล Tiger / Line ของ US Census เพื่อ Geocode ฉันไม่ได้ใช้มันเป็นการส่วนตัว แต่มันก็ดูดีมาก ลิงค์ด้านบนมีภาพรวมที่ดีและลิงค์ไปยังเวอร์ชันที่มีไฟล์ Census ที่จำเป็นประกอบอยู่แล้ว


6

ห้องสมุด Geokit สามารถใช้ Google, Yahoo, Geocoder.us, Geocoder.ca และ Geonames ใด ๆ ก็ได้ มันเขียนใน Ruby และยังมีห้องสมุดน้องสาวสำหรับโครงการ Ruby on Rails ของคุณ:

http://geokit.rubyforge.org/

เพื่อเป็นการอนุรักษ์ความเป็นส่วนตัวคุณสามารถกระจายข้อความค้นหาไปยังผู้ให้บริการทั้งหมดโดยแยกพวกเขาออกเป็นชุดที่มีโอกาสน้อยที่จะเชื่อมโยงกับกิจกรรมของคุณ คุณสามารถฉีดเสียงในที่อยู่ของคุณโดยเพิ่มที่อยู่จริงจากสมุดโทรศัพท์ออนไลน์ และฉันขอแนะนำให้คุณเรียกใช้สคริปต์นี้จากสถานที่ต่าง ๆ เช่นอินเทอร์เน็ตคาเฟ่รวมผลลัพธ์ในตอนท้าย

วิธีเดียวที่จะรักษาความเป็นส่วนตัวของคุณอย่างแท้จริงคือการดาวน์โหลดชุดข้อมูลแบบเต็มและเรียกใช้สคริปต์ของคุณ มีระบบ Nominatim จาก OpenStreetMap มันไม่สมบูรณ์สำหรับเมืองทั้งหมด แต่คุณสามารถใช้เพื่อลดรายการที่อยู่ที่ส่งไปยังผู้ให้บริการรายอื่น


5

แม้ว่ายังอยู่ในช่วงเริ่มต้นของการพัฒนาhttp://openaddresses.org/มีจุดประสงค์เพื่อจัดทำฐานข้อมูลแบบเปิดของที่อยู่ทั่วโลกและบริการ Geocoding ที่เกี่ยวข้อง

ในขณะที่ไม่เป็นส่วนตัวลักษณะของฐานข้อมูลที่อยู่แบบเปิดอาจหมายความว่าสามารถดาวน์โหลดได้ทั้งหมด (หรืออย่างน้อยที่สุดสำหรับภูมิภาคที่เลือก) เพื่ออนุญาตการเข้ารหัสภูมิศาสตร์แบบออฟไลน์


4

คุณสามารถดาวน์โหลดและใช้คุณสมบัติ OpenStreetMap ทั้งนี้ขึ้นอยู่กับที่อยู่ของที่อยู่

ลองดู: http://www.openstreetmap.org/

นอกจากนี้หากคุณอยู่ในสหรัฐอเมริกามีโครงการ TIGER พร้อมกับ PostGIS TigerGeocoding API http://svn.osgeo.org/postgis/trunk/extras/tiger_geocoder/


3

ฉันคิดว่าโค้ดที่อยู่เบื้องหลังhttp://geocoder.us/นั้นสามารถดาวน์โหลดได้ซึ่งคุณสามารถรับได้รวมถึงไฟล์ข้อมูล TIGER และตั้งค่าการติดตั้งในเครื่องของคุณเอง ฉันไม่เห็นสิ่งนั้นในทันทีที่เข้าสู่ไซต์นั้นอีกครั้ง แต่คุณอาจต้องการมองไปรอบ ๆ


3

ทำไมไม่ใช้ geocoders แบบเดียวกับที่คุณเคยใช้ก่อนเพียงแค่ลบข้อมูลเมตาอื่น ๆ ทั้งหมด?

อย่าส่ง "ตำแหน่งลับ: 123 ถนนสายหลักบางเมือง" เพียงส่ง "123 ถนนสายหลักบางเมือง" หรือไม่ ที่อยู่เป็นข้อมูลสาธารณะอย่างไรก็ตาม อย่าบอก geocoder ว่าคุณมีรายชื่อฐานนิวเคลียร์หรือที่ตั้ง NSA ทั้งหมด ผลลัพธ์จะอยู่ในรูปแบบตารางจากนั้นคุณสามารถแนบเมตาดาต้าลับอื่น ๆ ของคุณทั้งหมด


1
นี่คือสิ่งที่ฉันรู้สึกเกี่ยวกับสถานการณ์ นี่ไม่ใช่ความรู้สึกของนายจ้างที่มีต่อสถานการณ์ เพื่อให้ได้รับประโยชน์จากข้อสงสัยหากคุณได้รับรายการที่อยู่จากที่อยู่ IP ที่เป็นที่รู้จักก็ไม่น่าแปลกใจที่จะจินตนาการว่ามีใครบางคนสามารถเข้าใจได้ว่าที่อยู่นั้นเกี่ยวข้องกับอะไร
Matt Parker

1
@ Matt นั่นคือสิ่งหนึ่งที่ปรึกษาที่ดีสำหรับ :-) อีกตัวเลือกหนึ่งคือการผสมที่อยู่เบ็ดเตล็ดกับที่อยู่ที่คุณส่ง แน่นอนมันเพิ่มค่าใช้จ่าย แต่ก็ต่ำมากอยู่แล้ว ...
whuber

3

การค้นหาในหน้าแรกของ OpenStreetMapเป็นระบบที่เรียกว่าNominatim คุณสามารถเรียกมันว่าเป็นบริการ Geocoding (ถ้าคุณอ่อนโยน) แต่มันเป็นโอเพนซอร์สทั้งหมดดังนั้นคุณจึงสามารถตั้งค่ามันบนเซิร์ฟเวอร์ของคุณเองได้เช่นกัน

นี่ใช้ข้อมูล OpenStreetMap ที่โหลดลงในฐานข้อมูล postGiS มันค่อนข้างใหม่และอยู่ระหว่างการพัฒนาและกระบวนการตั้งค่าและโหลดข้อมูลไม่ตรงไปตรงมาและค่อนข้างหิวโหย ... แต่มันฟรีและเปิดกว้าง!


3

คำตอบส่วนใหญ่จะนำคุณไปยังฐานข้อมูลท้องถิ่น ในขณะที่ใช้งานได้จริงคุณต้องพิจารณาด้วยว่าการเข้ารหัส gecoding เป็นโดเมนหลักของคุณหรือไม่ (นั่นคือสิ่งที่คุณทำได้ดีหรือไม่ถ้าเป็นเช่นนั้นคุณอาจมีข้อมูลที่พวกเขาแนะนำอยู่แล้วหากไม่และคุณต้องการให้เป็นเช่นนั้นคุณควรดาวน์โหลดข้อมูลและทำในพื้นที่อย่างไรก็ตามถ้าคุณต้องการ เพื่อแก้ปัญหาและไม่ต้องการเพิ่มเวลาในการผลิตเป็นจำนวนมากยังคงมีตัวเลือกให้ทำผ่าน 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

คุณสามารถตรวจสอบการตั้งค่าระบบและสคริปต์ของฉันสำหรับรายละเอียดเพิ่มเติม ควรมีข้อมูลทั้งหมดที่คุณต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.