জিওপাই জিওকোডার থেকে পৃথক ঠিকানার উপাদানগুলি (শহর, রাজ্য, ইত্যাদি) কীভাবে ফিরে আসবেন?


10

আমি জিওপাই ল্যাট, এলএনজি ঠিকানা জিওকোডে ব্যবহার করছি। আমি প্রতিটি ঠিকানার জন্য আইটেমযুক্ত ঠিকানার উপাদানগুলি (রাস্তার, শহর, রাজ্য, জিপ )ও বের করতে চাই।

জিওপি ঠিকানার সাথে একটি স্ট্রিং ফিরিয়ে দেয় - তবে প্রতিটি উপাদান আলাদা করার কোনও নির্ভরযোগ্য উপায় আমি খুঁজে পাচ্ছি না। উদাহরণ স্বরূপ:

{street: '123 Main Street', city: 'Los Angeles', state: 'CA', zip: 90034, country: 'USA'}

গুগল জিওকোডিং এপিআই এই পৃথক উপাদানগুলি ফেরত দেয় ... জিওপাই থেকে এগুলি পাওয়ার কোনও উপায় আছে কি? (বা একটি ভিন্ন জিওকোডিং সরঞ্জাম?)

উত্তর:


8

লুবার, আমি আপনার পোস্টটি স্ট্যাক ওভারফ্লোতে দেখেছি তবে ধারাবাহিকতার জন্য এখানে একটি অনুরূপ উত্তর পোস্ট করতে চলেছি। এটি একটি ভাল প্রশ্ন। আমি ঠিকানা যাচাইকরণ শিল্পে কাজ করি এবং আগে আপনার ধরণের সমস্যা মোকাবিলা করেছি।

আমি একটি মন্তব্যে এই স্ট্যাক ওভারফ্লো প্রশ্নের সাথে লিঙ্ক করেছি ; এবং এটি জেনে রাখা গুরুত্বপূর্ণ যে সম্পূর্ণ ফ্রিফর্ম রাস্তার ঠিকানাগুলির ফর্ম্যাট সম্পর্কে সত্যই কোনও গ্যারান্টি নেই। লিঙ্কযুক্ত পোস্টে উল্লিখিত হিসাবে, সম্পূর্ণ ঠিকানাগুলি এগুলির মতো দেখতে পারে:

1) 102 মূল রাস্তা যিনিটাউন, রাজ্য

2) 400n 600e # 2, 52173

3) পো # 104 60203

4) 1234 LKSDFJlkjsdflkjsdljf #asdf 12345

5) 205 1105 14 90210

(কারণগুলি লিঙ্কযুক্ত পোস্টে ব্যাখ্যা করা হয়েছে।) আমি বুঝতে পারি যে জিওপি একটি নির্দিষ্ট ফর্ম্যাটে ঠিকানাগুলি প্রত্যাবর্তন করে - ব্যবহৃত জিওকোডারের উপর নির্ভর করে (যার ফলস্বরূপ ফর্ম্যাটটি জিওপাইয়ের নিয়ন্ত্রণের বাইরে থাকে), তবে ঠিকানাগুলি একটি নির্দিষ্ট ব্যবস্থার মধ্যে সমস্ত ধরণের উপায় দেখতে পারে উপাদান (কমা থাকার মতো), এবং এটি জেনে রাখা গুরুত্বপূর্ণ যে মানকযুক্ত ঠিকানাগুলিতে কমা নেই (ইউএসপিএস প্রকাশনা অনুযায়ী 28)।

আমি সম্প্রতি লাইভএড্রেস নামে পরিচিত একটি এপিআইতে কাজ করতে সহায়তা করেছি ; এটি সবেমাত্র জিওকোডিং এবং একক-লাইন ঠিকানা পার্সিং সমর্থন করার জন্য আপগ্রেড করা হয়েছিল।

জিওপিকে জিওকোডের জন্য নকশাকৃত করা হয়েছে, উপাদানগুলিকে বিভক্ত করার জন্য নয় (যে কাজটি এখানে আসবে না সে কারণে এটি কার্যত সত্যই কঠিন)। LiveAddress হবে , কিন্তু, ঠিকানা componentize এবং ঠিকানা সম্পর্কে স্থানাঙ্ক এবং অন্যান্য তথ্য ফিরে এবং কেবল যদি ঠিকানাগুলি বাস্তব হয়; কোনও "অনুমান" ফলাফল নেই।

পাইথন ব্যবহার করে একটি একক-লাইন ঠিকানা উপাদানগুলিতে পার্স করতে, কেবলমাত্র পুরো ঠিকানাটিকে "রাস্তার" ক্ষেত্রের মধ্যে রেখে দিন:

import json
import pprint
import urllib

LOCATION = 'https://api.smartystreets.com/street-address/'
QUERY_STRING = urllib.urlencode({ # entire query sting must be URL-Encoded
    'auth-token': r'YOUR_API_KEY_HERE',
    'street': '1 infinite loop cupertino ca 95014'
})
URL = LOCATION + '?' + QUERY_STRING

response = urllib.urlopen(URL).read()
structure = json.loads(response)
pprint.pprint(structure)

ফলস্বরূপ JSON অবজেক্টে এমন একটি componentsঅবজেক্ট থাকবে যা দেখতে এরকম কিছু দেখবে:

"components": {
        "primary_number": "1",
        "street_name": "Infinite",
        "street_suffix": "Loop",
        "city_name": "Cupertino",
        "state_abbreviation": "CA",
        "zipcode": "95014",
        "plus4_code": "2083",
        "delivery_point": "01",
        "delivery_point_check_digit": "7"
}

প্রতিক্রিয়াটিতে সম্মিলিত ফার্স্টলাইন এবং ডেলিভারি_লাইন 2ও অন্তর্ভুক্ত থাকবে যাতে আপনার যদি তাদের প্রয়োজন হয় তবে আপনাকে ম্যানুয়ালি কনটেটেট করতে হবে না।


অন্য এক API হতে পারে address-parser.net/try.php
SIslam

3

আপনার json ফাইলটি লেখা শক্ত নয়।

import json

result = '123 Main Street, Los Angeles, CA, 90034, USA'

sp = result.split(',')
dumpJson = json.dumps({'street':sp[0], 'city': sp[1], 'state': sp[2], 
                      'zip': sp[3], 'country': sp[4]})


>>> dumpJson
'{"city": " Los Angeles", "state": " CA", "street": "123 Main Street", 
          "zip": " 90034", "country": " USA"}'

আমি এটি আপনাকে সাহায্য করে আশা করি...


1
আমাকে এটিকে নিম্নোক্ত করতে হবে, অভিপ্রায়টি ভাল না বলে নয়, তবে ঠিকঠাক উপাদানগুলি কমা দিয়ে সীমিত করা হয়েছে বলে কোনও গ্যারান্টি নেই। একক-লাইন ঠিকানাগুলিকে উপাদানগুলিতে পার্স করার বিষয়ে এই প্রশ্নটি স্ট্যাক ওভারফ্লোতে দেখুন । জিওপি একটি নির্দিষ্ট ফর্ম্যাটটি ফিরিয়ে দিতে পারে, মানকৃত ঠিকানাগুলিতে কমা নেই।
ম্যাট

@ ম্যাট এটি আমার সমাধান। হতে পারে এটি তার সমস্যাটি সমাধান করতে পারে তবে একটি ভাল সমাধানের জন্য একটি ভাল উপায় খুঁজে পেতে তাকে সহায়তা করতে পারে .. এটি সম্পূর্ণ তার উপর নির্ভর করে ... আমি দেখতে পাচ্ছি আপনার একটি সমাধান রয়েছে, কেবল এটি এখানে লিখুন ... এর পাশে আপনার দরকার নেই লিখুন যখন আপনি নিম্নগামী, এটি আপনার উপর নির্ভর করে .. আমাদের সাহায্য করার মতো অন্য কিছু নয়। আপনাকে শুভকামনা ..
অ্যারাগন

2
আমি ডাউন বোতামটি ক্লিক করার পরে, এটি উত্তরটি উন্নত করতে সহায়তা করার জন্য একটি মন্তব্য দেওয়ার পরামর্শ দিয়েছিল, তাই আমি করেছি। আমি বোঝাতে চাইনি যে আপনার উত্তরটি সহায়ক নয় বা এখানে নেই; এটি অবশ্যই সম্প্রদায়কে মূল্য যোগ করে! এটি একটি সহজ সমাধান যা অন্যরা সম্ভবত অনুরূপ সমস্যার জন্য উপেক্ষা করবে। আমি নিশ্চিত যে অন্যরাও এটি দরকারী হিসাবে পাবেন।
ম্যাট

শুধু এখানে মন্তব্য করতে - প্রশ্নের ভাল উত্তর। এই উত্তরটির গুণাগুণ প্রয়োগের একটি উপায় হ'ল এক সারিতে নির্দিষ্ট নির্দিষ্ট দৈর্ঘ্যের শনাক্তকরণের জন্য একটি রেইজেক্স - যেমন একটি জিপকোডের জন্য প্রত্যাশিত। শুধু আমার 2 সি।
জেসন এম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.