समय क्षेत्र [बंद] के लिए यूएस ज़िप कोड मैपिंग


84

जब उपयोगकर्ता हमारे ऐप के साथ पंजीकरण करते हैं, तो जब हम उन्हें राष्ट्रीय डेटाबेस के विरुद्ध मान्य करते हैं, तो हम उनके ज़िप कोड का पता लगाने में सक्षम होते हैं। इस ज़िप कोड से अपने समय क्षेत्र के अच्छे संभावित अनुमान को निर्धारित करने का सबसे अच्छा तरीका क्या होगा?

हम उन डेटा की मात्रा को कम से कम करने की कोशिश कर रहे हैं जिन्हें हमें स्पष्ट रूप से उनके लिए पूछना है। वे बाद में समय क्षेत्र को मैन्युअल रूप से सेट करने में सक्षम होंगे यदि हमारा सबसे अच्छा अनुमान गलत है। मुझे लगता है कि ज़िप कोड अमेरिका के बाहर के समय क्षेत्र का पता लगाने में मदद नहीं करेंगे, लेकिन उस मामले में हमें मैन्युअल रूप से कुछ भी पूछना होगा, और हम मुख्य रूप से अमेरिका के साथ परवाह नहीं करते हैं।

मैं जिप कोड डेटाबेस का एक बहुत मिल गया है, और अब तक केवल कुछ ही समय क्षेत्र में जानकारी होती है, लेकिन उन है कि इस तरह के रूप में, स्वतंत्र नहीं हैं इस एक । यदि ऐसा करने के लिए किसी सेवा की सदस्यता का भुगतान करना बिल्कुल आवश्यक है, तो यह इसके लायक नहीं होगा और हमें उपयोगकर्ताओं से स्पष्ट रूप से पूछना होगा।

हालाँकि भाषा विशेष रूप से प्रासंगिक नहीं है क्योंकि मैं शायद ज़रूरत की चीज़ों को परिवर्तित कर सकता हूँ, हम PHP और MySQL का उपयोग कर रहे हैं।


2
अनुमान लगाने के बारे में प्रश्न के लिए +1
क्रिस मैक्कल

जवाबों:


37

मुझे बस एक निशुल्क जिप डेटाबेस मिला है जिसमें डीएसटी में समय की ऑफसेट और भागीदारी शामिल है। मुझे एरिक जे का जवाब पसंद है, क्योंकि यह मुझे केवल ऑफ़सेट के विपरीत वास्तविक समय क्षेत्र चुनने में मदद करेगा (क्योंकि आप नियमों पर पूरी तरह से निश्चित नहीं हो सकते हैं), लेकिन मुझे लगता है कि मैं इसके साथ शुरू कर सकता हूं, और इसे करने की कोशिश करता हूं ऑफसेट / dst कॉन्फ़िगरेशन के आधार पर सबसे अच्छा समय क्षेत्र मैच खोजें। मुझे लगता है कि मैं विवेक परीक्षण के रूप में मुझे जिप जानकारी से क्या मिलता है, इसके खिलाफ जांच करने के लिए विकास 4.0 के उत्तर का एक सरल संस्करण स्थापित करने का प्रयास कर सकता हूं। यह निश्चित रूप से उतना आसान नहीं है जितना मुझे उम्मीद है, लेकिन एक संयोजन मुझे उपयोगकर्ता के समय क्षेत्र के कम से कम 90% सुनिश्चित होना चाहिए।


@ डग: जियो कोडिंग से संबंधित कोई भी चीज कभी भी 100% सही नहीं होगी, यह सब तब और अधिक होगा जब आप केवल जिप स्तर पर अभिनय कर रहे हों। फिर भी, यदि आप समय का 90% + सही हो सकते हैं, तो यह संभवतः आपके उपयोगकर्ताओं के लिए एक लाभ होगा। सबसे खराब संभावना है कि आप एक घंटे का है।
एरिक जे।

3
बाहर देखो, नि: शुल्क ज़िप डेटाबेस लगभग हमेशा अप्रचलित हैं, क्योंकि डाक सेवा मासिक रूप से फ़ाइल बदलती है। यह भी देखें semaphorecorp.com/cgi/zip5.html
joe snyder

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

2
@joesnyder लिंक टूट गया है, क्या आप अपडेट कर सकते हैं या कम से कम समझा सकते हैं कि क्या था?
dlsso


26

अधिकांश राज्य बिल्कुल एक समय क्षेत्र में हैं (हालांकि कुछ अपवाद हैं)। अधिकांश ज़िप कोड राज्य की सीमाओं को पार नहीं करते हैं (हालांकि कुछ अपवाद हैं)।

आप जल्दी से उन तथ्यों को जोड़कर ज़िप की प्रति समय क्षेत्र की अपनी सूची के साथ आ सकते हैं।

यहाँ ज़िप कोड श्रेणियों की एक सूची प्रति राज्य और समय क्षेत्र के अनुसार राज्यों की एक सूची है ।

आप ज़िप कोड की सीमाओं को देख सकते हैं और टाइम ज़ोन लाइन से विभाजित होने वाले राज्यों के लिए टाइम ज़ोन को मैप करने के लिए इस लिंक , या Google अर्थ का उपयोग करके टाइमज़ोन मैप से तुलना कर सकते हैं ।

जिन गैर-अमेरिकी देशों के साथ आप काम कर रहे हैं, उनमें से अधिकांश शायद एक समय क्षेत्र (फिर से, अपवाद हैं) में हैं। अपनी आवश्यकताओं के आधार पर, आप यह देखना चाहते हैं कि आपके शीर्ष-एन गैर-अमेरिकी आगंतुक कहां से आते हैं और बस अपने समय क्षेत्र की तलाश करते हैं।


1
वाह, क्या अपवाद हैं?
हमीश ग्रुबीजन

5
@ हामिश: कई टाइमज़ोन में राज्यों के लिए अपवाद आप विकिपीडिया लिंक (समय क्षेत्र के अनुसार राज्य) में देख सकते हैं। मेरे सहकर्मी राज्यों में जिप्स की मैपिंग कर रहे हैं, जैसा कि हम बोलते हैं और कुछ जिप्स के पार आए जो राज्य की रेखाओं को पार करते हैं। एक उदाहरण 42223 है।
एरिक जे।

2
यह भी ध्यान दें कि कुछ राज्यों (केवल एरिजोना और हवाई मुझे लगता है ) दिन के उजाले की बचत समय का पालन नहीं करते हैं।
जॉन-एरिक

1
अमेरिका के उत्तर पश्चिम में राज्यों में प्रति राज्य एक लाख और एक ज़िप कोड है; निष्पक्ष चेतावनी।
Qix - मोनासा ने २१

1
यह कुछ अपवादों से कहीं अधिक है। समय
क्रिस मोशिनिनी

12

मैंने एक ओपन-सोर्स (MIT लाइसेंस प्राप्त) MySQL डेटाबेस टेबल बनाया, जो ज़िप कोड और टाइमज़ोन को पार करता है और इसे sourceforge.net पर अपलोड किया है:

http://sourceforge.net/projects/zip2timezone/files/

यह चार स्थानों से प्राप्त होता है (प्राथमिक याहू प्लेसफाइंडर एपीआई - धन्यवाद @ क्रिस एन)

अधिक जानकारी और निर्देशों के लिए README फाइल देखें।


कोई भी मौका आपके पास अभी भी है जो कोड उत्पन्न करता है? अब यह कुछ साल पुराना है, और मुझे एक नया डेटासेट मिलने की उम्मीद है।
बिली

8

यदि आप चाहें, तो आप टाइमजोन के लिए ब्राउज़र जोश फ्रेजर से पूछ सकते हैं, उस पर एक अच्छा लिख ​​सकते हैं

var rightNow = new Date();
var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
var temp = jan1.toGMTString();
var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);

दूसरी बात जो आपको जानना आवश्यक है कि क्या स्थान दिन के समय की बचत समय (डीएसटी) का अवलोकन करता है या नहीं। चूंकि डीएसटी हमेशा गर्मियों के दौरान मनाया जाता है, इसलिए हम जनवरी में दो तारीखों के बीच के ऑफसेट समय की तुलना जून में दो तारीखों के बीच के ऑफसेट समय से कर सकते हैं। यदि ऑफसेट अलग हैं, तो हम जानते हैं कि स्थान डीएसटी का अवलोकन करता है। यदि ऑफ़सेट समान हैं, तो हम जानते हैं कि स्थान डीएसटी का पालन नहीं करता है।

var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
temp = june1.toGMTString();
var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
var dst;
if (std_time_offset == daylight_time_offset) {
    dst = "0"; // daylight savings time is NOT observed
} else {
    dst = "1"; // daylight savings time is observed
}

इसका सारा श्रेय जोश फ्रेजर को जाता है।

यह आपको अमेरिका के बाहर के ग्राहकों के साथ मदद कर सकता है, और यह आपके जिप के दृष्टिकोण को पूरक कर सकता है।

यहाँ एक SO प्रश्न हैं जो जावास्क्रिप्ट से टाइमज़ोन प्राप्त करने पर स्पर्श करते हैं


1
धन्यवाद! जैसा कि जोश ने अपनी साइट पर उल्लेख किया है, जॉन नाइलैंडर ने "एक और अधिक मजबूत समाधान लिखा है। इसके बजाय अपने संस्करण का उपयोग करें।" उसका संस्करण यहां है: bitbucket.org/pellepim/jstimezonedetect
ब्रैड पार्क्स

6

Google के पास इसके लिए एक विशिष्ट API है: https://developers.google.com/maps/documentation/timezone/

उदाहरण: https://maps.googleapis.com/maps/api/timezone/json?location=40.704822,-74.0137431×tamp=0

{
  dstOffset: 0,
  rawOffset: -18000,
  status: "OK",
  timeZoneId: "America/New_York",
  timeZoneName: "Eastern Standard Time"
}

उन्हें क्वेरिस्ट्रिंग पर एक यूनिक्स टाइमस्टैम्प की आवश्यकता होती है। प्रतिक्रिया से यह प्रतीत होता है कि timeZoneNameटाइमस्टैम्प के आधार पर, दिन के उजाले की बचत को ध्यान में रखता है, जबकि समय timeZoneId-क्षेत्र के लिए एक डीएसटी-स्वतंत्र नाम है।

अपने उपयोग के लिए, पायथन में, मैं बस पास timestamp=0कर रहा हूं और पाइत्ज़ से timeZoneIdएक tz_infoऑब्जेक्ट प्राप्त करने के लिए मूल्य का उपयोग कर रहा हूं , फिर मैं अपने कोड में किसी विशेष डेटाटाइम को स्थानीय करने के लिए उपयोग कर सकता हूं।

मुझे विश्वास है कि PHP के लिए भी आप http://pecl.php.net/package/timezonedb में "अमेरिका / न्यू_यॉर्क" पा सकते हैं।


4
नोट गूगल के जियोकोडिंग एपीआई के लिए लाइसेंस एक नक्शे पर प्रदर्शित करने के लिए परिणामों का उपयोग करने की आवश्यकता है कि ...
जोश

@Josh आप कह रहे हैं कि मैं उस स्थान पर टाइमज़ोन का निर्धारण करने के प्रयोजनों के लिए किसी स्थान को हथियाने के लिए जियोकोडिंग एपीआई का उपयोग नहीं कर सकता हूं?
क्रंचर

2
नीति पृष्ठ से: "आप Google मानचित्र पर या बिना मानचित्र के समय क्षेत्र एपीआई परिणाम प्रदर्शित कर सकते हैं। यदि आप मानचित्र पर समय क्षेत्र एपीआई परिणाम प्रदर्शित करना चाहते हैं, तो इन परिणामों को Google मानचित्र पर प्रदर्शित किया जाना चाहिए। यह निषिद्ध है। एक मैप पर टाइम ज़ोन एपीआई डेटा का उपयोग करने के लिए जो Google मानचित्र नहीं है। " Developers.google.com/maps/documentation/timezone/polurities
tamorell

4

रूबी रत्न को ज़िप कोड को टाइमज़ोन में बदलने के लिए: https://github.com/Katlean/TZip ( https://github.com/farski/TZip से कांटा )।

> ActiveSupport::TimeZone.find_by_zipcode('90029')
 => "Pacific Time (US & Canada)"

यह तेज़, छोटा है, और इसकी कोई बाहरी निर्भरता नहीं है, लेकिन ध्यान रखें कि ज़िप कोड सिर्फ टाइमज़ोन के लिए पूरी तरह से मैप नहीं करते हैं।


1
मूल TZip और Katlean दोनों का कांटा अच्छा है, लेकिन 100% सटीक नहीं है। कुछ ज़िप कोड (पिछले कुछ वर्षों में पेश किए गए) का कोई हिसाब नहीं है।
बिगटेक्स777

1

मैं अपनी खुद की साइट के लिए इस समस्या पर काम कर रहा हूं और ऐसा महसूस कर रहा हूं कि मैं बहुत अच्छे समाधान के साथ आया हूं

1) केवल एक समयक्षेत्र (अधिकांश राज्यों) वाले सभी राज्यों को समय क्षेत्र सौंपें

और फिर या तो

2 ए) शेष राज्यों के लिए जेएस समाधान ( जावास्क्रिप्ट / पीएचपी और टाइमज़ोन) का उपयोग करें

या

2 बी) @Doug द्वारा लिंक किए गए एक जैसे डेटाबेस का उपयोग करें।

इस तरह, आप अपने उपयोगकर्ताओं के बहुमत के लिए सस्ते (और अत्यधिक सटीक!) Tz पा सकते हैं और फिर बाकी राज्यों के लिए इसे प्राप्त करने के लिए एक और अधिक महंगी विधियों का उपयोग कर सकते हैं।

सुपर एलिगेंट नहीं है, लेकिन मुझे js या डेटाबेस का उपयोग करने के लिए प्रत्येक और हर उपयोगकर्ता के लिए बेहतर लग रहा था।


1

डग कवेन्डेक जवाब के अलावा। Tz_database के पास जाने के लिए निम्नलिखित दृष्टिकोण का उपयोग कर सकता है।

  1. डाउनलोड [मुक्त ज़िप कोड अक्षांश और देशांतर डेटाबेस]
  2. डाउनलोड [दुनिया के TZ समय के आकार का]
  3. शेपफाइल क्वेरी के लिए किसी भी मुफ्त लाइब्रेरी का उपयोग करें (जैसे .NET आसान जीआईएस .NET , एलजीपीएल)।
    var शेपफाइल = नया शेपफाइल (शेपफाइलपैथ);
    var shapeIndex = shapeFile.GetShapeIndexContainPoint (नया पॉइंटडी (लंबा, लंबा), 0 डी);
    var attrValues ​​= shapeFile.GetAttributeFieldValues ​​(shapeIndex);
    var timeZoneId = attrValues ​​[0];

पुनश्च सभी लिंक सम्मिलित नहीं कर सकते :( तो कृपया खोज का उपयोग करें।


1

यह एक yaml फ़ाइल डाउनलोड करेगा जो सभी टाइमज़ोन को उनके zipcodes की एक सरणी में मैप करेगी:

curl https://gist.githubusercontent.com/anonymous/01bf19b21da3424f6418/raw/0d69a384f55c6f68244ddaa07e0c2272b44cb1de/timezones_to_zipcodes.yml > timezones_to_zipcodes.yml

जैसे

"Eastern Time (US & Canada)" => ["00100", "00101", "00102", "00103", "00104", ...]
"Central Time (US & Canada)" => ["35000", "35001", "35002", "35003", "35004", ...]
etc...

यदि आप छोटे टाइमज़ोन पसंद करते हैं, तो आप इसे चला सकते हैं:

curl https://gist.githubusercontent.com/anonymous/4e04970131ca82945080/raw/e85876daf39a823e54d17a79258b170d0a33dac0/timezones_to_zipcodes_short.yml > timezones_to_zipcodes.yml

जैसे

"EDT" => ["00100", "00101", "00102", "00103", "00104", ...]
"CDT" => ["35000", "35001", "35002", "35003", "35004", ...]
etc...

1
इसमें प्रशांत समय के रूप में 96941 (माइक्रोनेशिया) शामिल हैं, और प्रशांत समय में एक ज़िप कोड के रूप में 83500 शामिल हैं, लेकिन मुझे विश्वास नहीं है कि संयुक्त राज्य अमेरिका में मौजूद है। डेटा कैसे बनाया गया था?
जस्टिन ब्लैंक


0

यह भी ध्यान दें, यदि आप याहू जियोकोडिंग सेवा का उपयोग कर रहे हैं, तो आपके पास सही ध्वज सेट करके समय-सीमा की जानकारी वापस आ सकती है।

http://developer.yahoo.com/geo/placefinder/guide/requests.html#flags-parameter


एक समय में उपयोगी हो सकता है, लेकिन याहू की महान जियोकोडिंग सेवा कई साल पहले EOL'd थी।
लालची

0

इसके लिए वास्तव में एक महान Google एपीआई है। यह एक स्थान पर ले जाता है और उस स्थान के लिए समय क्षेत्र लौटाता है। CSV फ़ाइल या डेटाबेस में प्रत्येक पते के परिणाम प्राप्त करने के लिए एक बैश या पाइथन स्क्रिप्ट बनाने के लिए पर्याप्त सरल होना चाहिए, फिर टाइमज़ोन जानकारी को सहेजें।

https://developers.google.com/maps/documentation/timezone/start

अनुरोध समापन बिंदु:

https://maps.googleapis.com/maps/api/timezone/json?location=38.908133,-77.047119&timestamp=1458000000&key=YOUR_API_KEY

उत्तर:

{
   "dstOffset" : 3600,
   "rawOffset" : -18000,
   "status" : "OK",
   "timeZoneId" : "America/New_York",
   "timeZoneName" : "Eastern Daylight Time"
}

यह ध्यान दिया जाना चाहिए, कि एपीआई 1k कॉल के लिए $ 5 है।
फ्लाइंगज़ेब्रा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.