जियोकोडिंग यूएसए पते जो इंटरनेट पर नहीं भेजे जा सकते हैं?


46

एक बार की परियोजना के लिए, मुझे कुछ हज़ार पतों की जियोडोड करनी होगी। अतीत में मैंने इस तरह की चीज़ों के लिए विभिन्न ऑनलाइन संसाधनों का उपयोग किया है (उदाहरण के लिए, Google मैप्स एपीआई), लेकिन जिन पतों पर मैं काम कर रहा हूं, उन्हें गोपनीय रखा जाना चाहिए - जिसका अर्थ है कि इसे इंटरनेट पर नहीं भेजना, जब तक कि कुछ लोहा न हो। गोपनीयता की -clad गारंटी। मेरे पास अन्य विकल्प क्या हैं?


4
क्या कोई विशिष्ट इलाका है जिसमें आप जियोकोड करना चाहेंगे? उदाहरण के लिए, ऑस्ट्रेलिया, अमरीका, एक विशिष्ट राज्य, आदि
fmark

अच्छा सवाल - मैं अमेरिका में व्यापक रूप से, विशेष रूप से कोलोराडो में दिलचस्पी लेता हूं, फ्रंट रेंज ठीक-ठाक है।
मैट पार्कर

1
मैं वास्तव में आरटीडी के साथ एक त्वरित चर्चा खोलूंगा, मुझे पता है कि उस क्षेत्र में उनके पास एक शक्तिशाली जीआईएस है और संभावना है कि आप सीधे समर्थन दे सकते हैं। अन्यथा; जियोकोडर :: यूएस एक बेहतरीन विकल्प है। आप इसे आंतरिक रूप से चला सकते हैं और अपने डेटा को तार के पार जाने का जोखिम नहीं उठाना चाहिए।
DEWright

@ सच, ​​यह एक दिलचस्प विचार है - मेरे एक और प्रश्न के लिए और भी । धन्यवाद!
मैट पार्कर

जवाबों:


24

पर एक नज़र है Geocoder::US 2.0, geocoder.us के उत्तराधिकारी:

http://github.com/geocommons/geocoder

यह एक ही लेखक द्वारा पर्ल मॉड्यूल का एक रूबी पोर्ट है।


10

यदि Google जियोकोडिंग एपीआई या किसी अन्य ऑनलाइन स्रोत का उपयोग करना स्थानीय विकल्पों के बजाय आपकी प्राथमिकता है, तो मैं टोर प्रोजेक्ट (आसानी से 'विदालिया बंडल' नामक बंडल के माध्यम से स्थापित) में देखने का सुझाव दूंगा।

टॉर दुनिया भर के स्वयंसेवकों द्वारा चलाए जा रहे रिले के वितरित नेटवर्क के आसपास अपने संचारों को उछाल कर आपकी सुरक्षा करता है: यह आपके भौतिक स्थान को सीखने से रोकने वाली साइटों को रोकता है ...

यादृच्छिक पते के इंजेक्शन के साथ और ssl (https) का उपयोग करके अपने एंडपॉइंट्स को संचार एन्क्रिप्ट करें (सुनिश्चित करें कि आप भी ऐसा कर रहे हैं), मैं दूरस्थ रूप से जियोकोड के लिए अधिक सुरक्षित तरीके के बारे में नहीं सोच सकता। जो भी जियोकोडिंग सेवा आप उपयोग कर रहे हैं वह कभी भी यह पहचानने में सक्षम नहीं होगा कि आखिरकार अनुरोध कहां से आया, और https के साथ कोई और भी होगा। नोट: जियोकोडिंग सेवा का उपयोग न करें जिसके लिए इसके लिए एक एपी कुंजी की आवश्यकता होती है, या आप अब अनाम नहीं होंगे। (Google को अब किसी एपीआई कुंजी की आवश्यकता नहीं है)।

इस प्रक्रिया का एक पक्ष 'लाभ' यह है कि अब आप किसी भी प्रकार के जियोकोडिंग अनुरोधों तक सीमित नहीं रहेंगे, क्योंकि आपके अनुरोध ऐसे दिखेंगे जैसे वे कई आईपी पते से आ रहे हैं। हालांकि, मैं इन प्यारे मुफ्त एपीआई का दुरुपयोग करने की सिफारिश या समर्थन नहीं करता हूं ! अगर एपीआई सीमा दर (हालांकि टोर का उपयोग करके संचरण की गति सीधे जोड़ने की तुलना में काफी धीमी है) तो भी दर सीमित रहेगी।

पायथन में केस स्टडी - एक बार जब आपने विदालिया बंडल को स्थापित कर लिया है और प्रॉक्सी को 127.0.0.1:8118 (डिफ़ॉल्ट) पर चल रहा है, तो पायथन 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 proxies कम से कम पायथन 2.7 या उसके बाद तक https के साथ काम नहीं करता है, इसलिए यह विधि केवल हाल के पायथन संस्करणों के साथ काम करती है। सुनिश्चित करें कि आपको उपरोक्त उदाहरण में दोनों स्थानों पर 'https' ('http') नहीं मिला है। मैंने इसे केवल पायथन 2.7.1 के साथ परीक्षण किया है।

Vidalia हर 10 मिनट में आपकी पहचान / स्पष्ट आईपी पते की उत्पत्ति को बदल देती है, लेकिन यदि आप धीमी दरों या अन्य समस्याओं (कोटा से अधिक त्रुटियों) में भाग लेते हैं, या यदि आप विशेष रूप से पागल हैं और अपनी पहचान को अधिक बार बदलना चाहते हैं, तो आप अपनी टोर पहचान बदल सकते हैं यहां अजगर कोड का उपयोग करना (नीचे थोड़ा संशोधित)। आपको विडालिया सेटिंग्स में प्रवेश करके टॉर पासवर्ड को एक स्थिर (एक यादृच्छिक रूप से उत्पन्न एक के बजाय) में बदलना होगा। सभी परिवर्तनों के बाद विदालिया को पुनः आरंभ करने की भी आवश्यकता हो सकती है।

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
अधिकांश उद्देश्यों के लिए, जिओकोडिंग सेवा को भेजे जा रहे डेटा की गुमनामी की रक्षा करने में क्वेरी भेजने वाली मशीन का भौतिक स्थान बहुत महत्वपूर्ण है। बतादें कि इंस्टीट्यूट फॉर द स्टडी ऑफ एक्स के लिए एक कंप्यूटर 1000 पते के लिए जियोकोडिंग अनुरोध भेजता है। कोई व्यक्ति (सैद्धांतिक रूप से कम से कम) उन पतों की पहचान कर सकता है, जिनमें एक्स बीमारी से पीड़ित व्यक्ति हैं। इसके विपरीत, कई उपयोगकर्ताओं से हजारों यादृच्छिक अनुरोधों के साथ मिश्रित पते, और कई आईपी पते से आते हैं जो किसी भी एक उपयोगकर्ता (टोर स्थिति) के अनुरूप नहीं हैं, उद्देश्य के संबंध में पहचान योग्य नहीं हैं।
विक्टर वान ही

Google को (टोर या कुछ भी) डेटा भेजना एक मौलिक गोपनीयता समस्या है। Google "आयरन-क्लैड गारंटी ऑफ़ प्राइवेसी" की पेशकश नहीं करता है।
निकोलस राउल

7

एक विकल्प जियो-कोडर-यूएस का उपयोग करना है , जो एक ओपन-सोर्स पर्ल मॉड्यूल है जो यूएस जनगणना के टाइगर / लाइन डेटा को जियोकोड में उपयोग करता है। मैंने इसे व्यक्तिगत रूप से उपयोग नहीं किया है, लेकिन यह बहुत अच्छा लग रहा है। ऊपर दिए गए लिंक में एक अच्छा अवलोकन और एक संस्करण का लिंक शामिल है जिसमें पहले से ही आवश्यक जनगणना फाइलें इकट्ठी हैं।


6

ज्योकिट लाइब्रेरी में Google, Yahoo, Geocoder.us, Geocoder.ca और Geonames में से कोई भी उपयोग कर सकता है। यह रूबी में लिखा गया है, और रेल रूब परियोजनाओं पर आपकी रूबी के लिए एक बहन पुस्तकालय भी है:

http://geokit.rubyforge.org/

गोपनीयता का संरक्षण करने के लिए, आप सभी प्रदाताओं को उन सेटों में अलग करके प्रश्न फैला सकते हैं, जो आपकी गतिविधियों से जुड़े होने की संभावना कम है। आप ऑनलाइन फोन निर्देशिका से वास्तविक पते जोड़कर अपने पते में शोर को भी इंजेक्ट कर सकते हैं। और मेरा सुझाव है कि आप इस स्क्रिप्ट को विभिन्न स्थानों से चलाएं, जैसे कि इंटरनेट कैफे, परिणामों को अंत में संयोजित करना।

आपकी गोपनीयता को सही मायने में संरक्षित करने का एकमात्र तरीका डेटा का पूरा सेट डाउनलोड करना और इसके खिलाफ अपनी स्क्रिप्ट चलाना है। OpenStreetMap से Nominatim प्रणाली है। यह सभी शहरों के लिए पूर्ण नहीं है, लेकिन आप इसका उपयोग अन्य प्रदाताओं को भेजे गए पतों की सूची को कम करने के लिए कर सकते हैं।


5

हालाँकि अभी भी विकास के शुरुआती चरणों में http://openaddresses.org/ का उद्देश्य विश्वव्यापी पतों, और संबद्ध जियोकोडिंग सेवाओं का एक खुला डेटाबेस प्रदान करना है।

जबकि निजी नहीं, एक खुले पते डेटाबेस की प्रकृति का मतलब यह हो सकता है कि यह ऑफ़लाइन जियोकोडिंग की अनुमति देने के लिए इसकी संपूर्णता (या कम से कम चयनित क्षेत्रों के लिए) में डाउनलोड करने के लिए उपलब्ध है।


4

पता स्थित होने के आधार पर, आप OpenStreetMap सुविधाओं को डाउनलोड और उपयोग कर सकते हैं।

इसे देखें: http://www.openstreetmap.org/

इसके अलावा, यदि आप यूएसए में हैं तो पोस्टगिस टाइगरगॉइकिंग एपीआई के साथ टाइगर परियोजना भी है। http://svn.osgeo.org/postgis/trunk/extras/tiger_geocoder/


3

मैंने सोचा था कि http://geocoder.us/ के पीछे का कोड डाउनलोड के लिए उपलब्ध था ताकि आप इसे प्राप्त कर सकें और एक बाघ डेटा फ़ाइल और अपने स्वयं के स्थानीय इंस्टॉल को स्थापित कर सकें। मैं उस साइट को फिर से देखने के तुरंत बाद नहीं देख रहा हूँ, लेकिन आप थोड़ा इधर-उधर देखना चाह सकते हैं।


3

आपने पहले जितने भी जियोकोडर्स का इस्तेमाल किया है, उनका इस्तेमाल क्यों नहीं करते, बस बाकी सभी मेटा डेटा को हटा दें?

"सीक्रेट लोकेशन; 123 मेन स्ट्रीट, सम सिटी" पर मत भेजें, बस "123 मेन स्ट्रीट, सम सिटी" पर भेजें। पते सार्वजनिक सूचना वैसे भी हैं। जियोकोडर को केवल यह न बताएं कि आपके पास परमाणु ठिकानों या एनएसए के सभी स्थानों की सूची है। परिणाम तालिका प्रारूप में होंगे, आप तब अपने सभी अन्य गुप्त मेटा-डेटा को फिर से संलग्न कर सकते हैं।


1
मैं इस स्थिति के बारे में महसूस करता हूं। यह नहीं है कि मेरे नियोक्ता को स्थिति के बारे में कैसा महसूस होता है। संदेह का लाभ देने के लिए, यदि आपको पहचानने योग्य आईपी पते से पतों की एक सूची मिलती है, तो यह कल्पना करने के लिए इतना खिंचाव नहीं है कि कोई यह पता लगा सके कि पते किससे संबंधित हैं।
मैट पार्कर

1
@ मैट यह एक बात है कि सलाहकार :-) के लिए अच्छे हैं। एक अन्य विकल्प यह है कि आपके द्वारा भेजे गए के साथ विविध पते मिलाएं। बेशक, यह लागत बढ़ जाती है, लेकिन वे इतनी कम वैसे भी रहे हैं ...
whuber

3

OpenStreetMap मुखपृष्ठ पर खोज एक सिस्टम है जिसे नोमिनाटिम कहा जाता है । आप इसे जियोकोडिंग सेवा के रूप में कह सकते हैं (यदि आप कोमल हैं) लेकिन यह सब खुला स्रोत है, तो आप इसे अपने सर्वर पर भी सेट कर सकते हैं।

यह पोस्टग्रिज डेटाबेस में लोड किए गए OpenStreetMap डेटा का उपयोग कर रहा है। यह अपेक्षाकृत नया है और अभी भी विकास के अधीन है, और डेटा के साथ स्थापित करने और लोड करने की प्रक्रिया यह सब सीधा और काफी संसाधन भूखा नहीं है। ... लेकिन यह मुफ़्त और खुला है!


3

अधिकांश उत्तर आपको एक स्थानीय डेटाबेस की ओर ले जा रहे हैं। जबकि यह निश्चित रूप से काम करेगा, आपको यह भी विचार करना चाहिए कि क्या gecoding आपका मुख्य डोमेन है। (यह है कि आप क्या अच्छा कर रहे हैं? यदि ऐसा है, तो आप शायद पहले से ही डेटा वे सिफारिश कर रहे हैं। यदि नहीं, और आप इसे होना चाहते हैं, तो आपको डेटा डाउनलोड करना चाहिए और बस इसे स्थानीय रूप से करना चाहिए। हालांकि, अगर आपको अभी ज़रूरत है। एक समस्या को हल करने के लिए और उत्पादन के लिए रैंप पर अनगिनत घंटों में नहीं डालना चाहते, सुरक्षा से समझौता किए बिना एपीआई के माध्यम से करने के लिए अभी भी विकल्प हैं।

सबसे पहले, HTTPS पर जोर दें क्योंकि आपको API के रास्ते पर डेटा को सुरक्षित करने की आवश्यकता है और फिर वापस आपके रास्ते में। दूसरा, सुनिश्चित करें कि आप एपीआई के लिए GET अनुरोध के बजाय POST अनुरोध कर रहे हैं। POST का उपयोग करते हुए, आप बस एक पेलोड के साथ एक URL अनुरोध पारित कर रहे हैं और सर्वर लॉग को हिट करने वाला एकमात्र परिणाम यह तथ्य है कि एक निश्चित समय पर और एक निश्चित आईपी से एक पता सत्यापन और जियोकोडिंग अनुरोध किया गया था। न तो पता जमा किया गया और न ही पता लौटाया गया, इसे डिस्क पर संग्रहीत किया जाएगा या सर्वर लॉग में लिखा जाएगा। यह उससे ज्यादा सुरक्षित नहीं है।

इसलिए, जबकि एक स्थानीय बॉक्स निश्चित रूप से सुरक्षित होगा, इसके लिए बहुत से विकास की आवश्यकता हो सकती है। चूंकि सुरक्षा चिंताओं को शांत किया जा सकता है, आप एक एपीआई का उपयोग करने के विकल्प पर (फिर से) विचार करना चाह सकते हैं।

मैं एक एड्रेस वेरीफिकेशन कंपनी के लिए काम करता हूं जो सुरक्षित एपीआई जियोकोडिंग में माहिर है - SmartyStreets


1

पुराना धागा लेकिन यह उल्लेख के लायक है। http://www.tigergeocoder.com/ TIGER 2013 डेटा का उपयोग करते हुए, Amazon EC2 क्लाउड में अपना स्वयं का सर्वर इंस्टेंस चलाने के लिए तैयार।


1

अपने स्थानीय लिनक्स बॉक्स में PostGIS टाइगर जियोकोडर सेट करें। यह निश्चित रूप से ऑनलाइन एपीआई की तुलना में अधिक बोझिल है, लेकिन शायद आपकी स्थिति के लिए सबसे अच्छा शर्त है। और जरूरत पड़ने पर यह करोड़ों पतों का पैमाना हो सकता है।

Ansible playbook की मदद से linux में सर्वर को सेटअप करना पहले की तुलना में बहुत आसान है। यदि आप SQL या PostGIS से परिचित नहीं हैं, तो SQL क्वेरी लिखना अधिक समय लगेगा।

आप अधिक विवरण के लिए मेरा सिस्टम सेटअप और मेरी स्क्रिप्ट देख सकते हैं । इसमें आपको आवश्यक सभी जानकारी शामिल होनी चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.