ایجاد قابلیت اعتبارسنجی موقعیت مکانی با استفاده از پلتفرم نقشه های گوگل

هدف

شما اغلب نیاز به اعتبارسنجی موقعیت مکانی یک مکان دارید. چندین سرویس مختلف در پلتفرم نقشه‌های گوگل وجود دارد که می‌توانند در این مورد به شما کمک کنند. این سند به شما کمک می‌کند تا بین دو سرویس اصلی اعتبارسنجی موقعیت مکانی - API اعتبارسنجی آدرس و API کدگذاری جغرافیایی - یکی را انتخاب کنید.

API اعتبارسنجی آدرس، پیشنهادی از پلتفرم نقشه‌های گوگل است که به مشتریان کمک می‌کند تا صحت یا سقم آدرس را تأیید کنند.

ژئوکدینگ با استفاده از API ژئوکدینگ، فرآیند تبدیل آدرس‌ها به مختصات جغرافیایی است که می‌توانید از آن برای قرار دادن نشانگرها روی نقشه یا تعیین موقعیت روی نقشه استفاده کنید.

یک مرور کلی سطح بالا از تفاوت‌های بین اعتبارسنجی آدرس و API ژئوکدینگ را می‌توانید اینجا بیابید.

چه زمانی اعتبارسنجی آدرس را در مقابل API ژئوکدینگ انتخاب کنیم؟

Address-Validation-vs-Geocoding

نکاتی در مورد نمودار جریان فوق:

  • مورد استفاده تعامل کاربر به زمانی اشاره دارد که کاربر برای تعامل با نتایج حضور دارد.
  • تکمیل خودکار مکان‌ها یک API جاوا اسکریپت است، بنابراین برای ادغام با رابط‌های کاربری مناسب است.
  • ممکن است از مشکلات کیفیت داده‌ها در آدرس‌های فعلی خود آگاه باشید. بنابراین، اگرچه ممکن است فقط به کدهای جغرافیایی نیاز داشته باشید، توصیه می‌شود آن مکان‌ها را از طریق API اعتبارسنجی آدرس اجرا کنید تا مجموعه داده‌ها اصلاح شوند.

موقعیت‌های زیادی وجود دارد که ممکن است بر اساس درخت تصمیم بالا، یکی از محصولات را به دیگری ترجیح دهید. اما موقعیت‌های دیگری نیز وجود دارد که ممکن است شامل استفاده از هر دو محصول برای رسیدن به اهدافتان باشد.

شما می‌توانید در موارد زیر از API اعتبارسنجی آدرس به جای API کدگذاری جغرافیایی استفاده کنید:

  • احتمال زیادی وجود دارد که داده‌های مشکوک وجود داشته باشد، یا اینکه دریافت آدرس نادرست تأثیر منفی در آینده داشته باشد. دلیل این امر این است که API اعتبارسنجی آدرس، بازخورد بیشتری در مورد اینکه چرا یک ورودی نتیجه با دقت بالایی دریافت نکرده است، ارائه می‌دهد.
  • شما باید ورودی‌های کاربر (مثلاً غلط املایی یا فیلدهای از دست رفته) را اصلاح کنید، که این امر احتمال نمایش نتیجه دقیق در خروجی را افزایش می‌دهد.
  • منطقه مورد نظر شما در مقایسه با API ژئوکدینگ، فراداده‌های بیشتری از API اعتبارسنجی آدرس برمی‌گرداند، مانند طبقه‌بندی نوع ساختمان به مسکونی در مقابل تجاری.

شما می‌توانید در موارد زیر از Geocoding به جای Address Validation API استفاده کنید:

  • هدف اصلی شما بازیابی موقعیت مکانی یک آدرس است و دقت آدرس‌های تکی ممکن است چندان مهم نباشد.
    • برای مثال، برای تولید یک نقشه حرارتی از مجموعه بزرگی از داده‌ها.
  • شما به یک راهکار جهانی نیاز دارید و API اعتبارسنجی آدرس در همه مناطق هدف در دسترس نیست.

در ادامه چند مثال آورده شده است که قابلیت‌های API اعتبارسنجی آدرس را در مقایسه با API ژئوکدینگ نشان می‌دهد.

مثال آدرس نامعتبر

خیابان فیک ۱، مانتین ویو، کالیفرنیا ۹۴۰۴۳، ایالات متحده آمریکا

API اعتبارسنجی آدرس، این ورودی را به اجزای آدرس منحصر به فرد آن (خیابان، شهر، استان و غیره) تجزیه می‌کند. همچنین می‌تواند بازخورد دقیقی در مورد دلیل معتبر نبودن آدرس تا سطح PREMISE ارائه دهد.

خیابان جعلی در مانتین ویو، کالیفرنیا وجود ندارد، و API اعتبارسنجی آدرس این موضوع را در جزئیات سطح کامپوننت برگشتی منعکس می‌کند:

{
  "componentName": {
    "text": "Fake St",
    "languageCode": "en"
   },
   "componentType": "route",
   "confirmationLevel":"UNCONFIRMED_BUT_PLAUSIBLE"
 }

ویژگی مهمی که در این مورد باید بررسی شود، confirmationLevel است. با برگرداندن UNCONFIRMED_BUT_PLAUSIBLE در مقابل Fake St، API تشخیص داده است که می‌توان نام یک خیابان را UNCONFIRMED_BUT_PLAUSIBLE گذاشت، اما نمی‌توان آن را با داده‌های آدرس پشتیبان تطبیق داد.

با استفاده از نتیجه API به عنوان بازخورد، می‌توان نتیجه گرفت که مؤلفه خیابان این ورودی (خیابان جعلی) دچار مشکل است.

با استفاده از همان آدرس با API ژئوکدینگ، همانطور که در تصویر ابزار ژئوکدینگ مشاهده می‌کنید، می‌تواند با «کالیفرنیا» مطابقت ایجاد کند که می‌توانید آن را اینجا امتحان کنید:

alt_text

با این حال، نتیجه یک کد جغرافیایی از کل حالت است، با حداقل بازخورد در مورد اینکه کدام اجزای ورودی به طور بالقوه معیوب بوده‌اند.

مثال خطای املایی

خیابان کاخ باکینگهام، پلاک ۷۶، لندن ، SW1W 9TQ، بریتانیا

آدرس بالا شامل چند غلط املایی است، یکی در نام خیابان و دیگری در نام منطقه.

هر دو API اعتبارسنجی آدرس و ژئوکدینگ قادر به اصلاح این اشتباهات و دستیابی به نتیجه 76 Buckingham Palace Road, London, SW1W 9TQ هستند. با این حال، API اعتبارسنجی آدرس می‌تواند اطلاعات بیشتری در مورد این فرآیند ارائه دهد.

به یکی از اجزای آدرس که هنگام ورود اطلاعات اشتباه نوشته شده است، نگاهی بیندازید:

{
  "componentName": {
    "text": "Buckingham Palace Road",
    "languageCode": "en"
        },
        "componentType": "route",
        "confirmationLevel": "CONFIRMED",
        "spellCorrected": true
     }
}

API اعتبارسنجی آدرس، پرچمی را برمی‌گرداند که نشان می‌دهد اصلاحی در فیلد انجام شده است. منطق کسب‌وکار می‌تواند در برابر این پرچم پیاده‌سازی شود تا اصلاح با ارائه‌دهنده داده، مانند مشتری در یک پرداخت تجارت الکترونیک، دوباره بررسی شود.

مثال داده‌های گمشده و خطای املایی

بولشستراس ۸۶، ۱۲۵۸۷، DE

آدرس بالا در نام خیابان یک خطای املایی دارد و شهر (محله) برلین را از قلم انداخته است.

API اعتبارسنجی آدرس قادر است هر دوی این خطاها را برطرف کند و یک کد جغرافیایی سطح PREMISE و یک آدرس که تا سطح PREMISE تأیید شده است را برمی‌گرداند:

Bölschestraße 86, 12587 Berlin, DE

در این مورد، API مربوط به Geocoding قادر به غلبه بر خطاهای ورودی نیست و نتیجه‌ای معادل ZERO_RESULTS را برمی‌گرداند.

مثال اضافی از متادیتای آدرس

111 8th Avenue Ste 123 , New York, NY 10011-5201, US

این آدرس درست است به جز شماره واحد (Ste 123) که در داخل ساختمان وجود ندارد.

API اعتبارسنجی آدرس می‌تواند آدرس PREMISE (خیابان هشتم، پلاک ۱۱۱) را اعتبارسنجی کند و برخی فراداده‌ها در مورد ملک، از جمله اینکه تجاری است، ارائه دهد.

محل:

"business": true

علاوه بر این، مقدار dpvConfirmation که به عنوان بخشی از uspsData در پاسخ برگردانده می‌شود، S است:

"dpvConfirmation": "S"

مقدار dpvConfirmation برابر با S نشان می‌دهد که آدرس تا سطح PREMISE اعتبارسنجی شده است، اما شماره واحد ارائه شده در ورودی با آن آدرس مرتبط نیست.

API مربوط به Geocoding قادر به ارائه این اطلاعات نیست.

درک پاسخ API مربوط به ژئوکدینگ

نمای کلی

اگر از API مربوط به Geocoding استفاده می‌کنید، نتیجه‌ی geocode حاوی سرنخ‌های مختلفی در پاسخ است که می‌توان از آن‌ها برای درک جزئیات آدرس ارائه شده استفاده کرد.

نحوه کار API مربوط به Geocoding به این صورت است که اجزای آدرس را در یک سلسله مراتب حل می‌کند.

برای مثال، آدرس 123 Example Street, Chicago, 60007, USA به ترتیب زیر حل می‌شود:

/ Example Street/ Chicago/ 60007/ USA به همین ترتیب ارزیابی خواهند شد. اولین مورد منطبق در این مورد شیکاگو و به طور خاص، کد پستی 60007 است. بنابراین، Place_id زیر را برای آن کد پستی برمی‌گرداند:

ChIJwRKzf8ixD4gRHiXqucwr_HQ

API مربوط به Geocode شامل اطلاعات زیر در پاسخ است:

        "partial_match": true,
           "place_id": "ChIJwRKzf8ixD4gRHiXqucwr_HQ",
           "types": [
               "postal_code"
           ]

API مربوط به Geocoding می‌تواند تأیید کند که این آدرس به چه نوع مکانی تعلق دارد. فهرستی از types آدرس‌های برگردانده شده توسط API مربوط به Geocoding را می‌توانید اینجا بیابید.

اگر هیچ یک از اجزای ورودی حل نشده باشند، API مقدار زیر را برمی‌گرداند:

{
   "results": [],
   "status": "ZERO_RESULTS"
}

ارسال درخواست فقط با آدرس خیابان و بدون شماره خانه، نتیجه‌ای به شکل زیر برمی‌گرداند:

"types": [
  "route"
]

این یعنی API مربوط به Geocoding نتوانسته شماره خیابان را پیدا کند یا با آن مطابقت دهد.

نکته: برای اینکه بدانید یک آدرس وجود دارد یا خیر، بررسی کنید که آیا هر یک از پارامترها (مانند types ، partial_match, results, status) در پاسخ Geocoding API تنظیم شده‌اند یا خیر. این کار به تدریج سطح اطمینان وجود یک آدرس را افزایش می‌دهد، اما آن را ۱۰۰٪ دقیق نمی‌کند. به همین دلیل است که به API اعتبارسنجی آدرس نیاز داریم.

شما می‌توانید از تکنیک‌های بالا برای افزایش اطمینان در دقت آدرس از پاسخ API Geocoding به تنهایی استفاده کنید. با این حال، برخلاف نتیجه API اعتبارسنجی آدرس، API Geocoding بازخورد دقیقی برای تعیین دقت نتیجه برنمی‌گرداند.

نوع مکان

برای درک صحیح این بخش، باید انواع مختلف مکان‌هایی که می‌توانند از پاسخ API مربوط به Geocoding برگردانده شوند را درک کنید:

  • ROOFTOP نشان می‌دهد که نتیجه‌ی برگردانده شده یک کد جغرافیایی دقیق است که برای آن اطلاعات مکانی دقیقی تا دقت آدرس خیابان داریم.
  • RANGE_INTERPOLATED نشان می‌دهد که نتیجه‌ی برگردانده شده، تقریبی (معمولاً در یک جاده) را نشان می‌دهد که بین دو نقطه‌ی دقیق (مانند تقاطع‌ها) درون‌یابی شده است. نتایج درون‌یابی شده معمولاً زمانی بازگردانده می‌شوند که کدهای جغرافیایی پشت بام برای آدرس خیابان در دسترس نباشند.
  • GEOMETRIC_CENTER نشان می‌دهد که نتیجه‌ی برگردانده شده، مرکز هندسی یک نتیجه مانند یک چندخطی (مثلاً یک خیابان) یا چندضلعی (منطقه) است.
  • APPROXIMATE نشان می‌دهد که نتیجه‌ی برگردانده شده هیچ یک از موارد فوق نیست.

اگر یک API مربوط به Geocoding مقدار location_type برابر با ROOFTOP یا RANGE_INTERPOLATED را برگرداند، لزوماً به این معنی نیست که آدرس وجود دارد. به طور مشابه، اگر یک API مربوط به Geocoding مقدار partial_match را روی true تنظیم کند، ممکن است همچنان نتیجه‌ی درستی برای شما باشد.

حل این نوع تطابق نادرست با API ژئوکدینگ بسیار دشوار است. حداقل، می‌توانید پیاده‌سازی اعتبارسنجی اولیه پس از پردازش را روی کشور و محل درخواست/پاسخ در نظر بگیرید. حتی بهتر است، آدرس‌های واقعی خیابان‌ها را از نظر غلط املایی و/یا آدرس ناقص مقایسه کنید.

توجه : اگر تصمیم به استفاده از API Geocoding دارید، توصیه می‌شود که بررسی‌های کیفیت داده‌ها را بین درخواست اولیه و پاسخ API Geocoding به طور منظم انجام دهید.

تطابق جزئی و تطابق نادرست

اگر آدرسی تا حدی مطابقت داشته باشد، به این معنی که API مربوط به Geocoding نمی‌تواند آدرس را دقیقاً شناسایی کند، در این صورت پاسخ شامل موارد زیر خواهد بود:

"partial_match": true,
"types": [
           "locality",
           "political"
         ]

حتی مهم‌تر از انواع موقعیت مکانی بالا، در نظر گرفتن این است که چه زمانی partial_match = true است. در پاسخ، partial_match نشان می‌دهد که API مربوط به Geocoding، تطابق دقیقی برای درخواست اصلی برنگردانده است، اگرچه توانسته بخشی از آدرس درخواستی را تطبیق دهد.

شاید بخواهید درخواست اصلی برای یک آدرس ناقص را بررسی کنید. تطابق‌های جزئی اغلب برای آدرس‌های خیابانی رخ می‌دهند که در محدوده مشخص شده در درخواست وجود ندارند. تطابق‌های جزئی همچنین ممکن است زمانی که یک درخواست با دو یا چند مکان در یک محدوده مطابقت دارد، بازگردانده شوند.

برای مثال، « 21 Henr St, Bristol, UK » یک تطابق نسبی برای هر دو خیابان هنری و هنریتا برمی‌گرداند. توجه داشته باشید که اگر درخواستی شامل یک جزء آدرس با غلط املایی باشد، API مربوط به Geocoding ممکن است یک آدرس جایگزین پیشنهاد دهد. پیشنهادهایی که به این روش فعال می‌شوند، به عنوان یک تطابق نسبی علامت‌گذاری نمی‌شوند.

آدرس‌های مصنوعی

API مربوط به Geocoding ممکن است مکان‌هایی را برای آدرس‌های «مصنوعی» که به عنوان مکان‌های دقیق در پایگاه داده گوگل وجود ندارند، برگرداند.

در چنین سناریوهایی، شیء پاسخ اغلب حاوی یک شناسه مکان طولانی و ویژگی زیر است: geometry.location_type=APPROXIMATE .

اگر در پاسخ با این نشانه‌ها مواجه شدید، لطفاً آدرس ورودی را نامعتبر علامت‌گذاری کنید و سعی کنید آن را با روش دیگری دوباره اعتبارسنجی کنید.

توجه : این مثال دیگری است که در آن با استفاده از API اعتبارسنجی آدرس، در صورت وجود نداشتن آدرس، بازخورد مستقیم دریافت می‌کنید.

درک پاسخ API اعتبارسنجی آدرس

در حال حاضر مستندات بسیار خوبی در مورد چگونگی درک پاسخ‌های دریافتی از API اعتبارسنجی آدرس وجود دارد، بنابراین در اینجا به جزئیات بیشتر نمی‌پردازیم.

بهترین شیوه‌ها

مشخص کردن جغرافیا

هنگام فراخوانی APIهای اعتبارسنجی آدرس یا ژئوکدینگ، بهتر است سعی کنید محدوده جغرافیایی جستجوی آن آدرس را محدود کنید. این دو API این کار را به دو روش مختلف پیاده‌سازی می‌کنند:

  • API ژئوکدینگ - بایاس منطقه

    اگر می‌دانید که کدهای جغرافیایی قرار است در یک کشور خاص باشند، با استفاده از Region Biasing نتایج بسیار بهتری خواهید گرفت. برای مثال، اگر در کانادا در حال کدگذاری جغرافیایی هستید، توصیه می‌کنیم &region=ca را به درخواست‌های خود اضافه کنید تا به سمت کانادا متمایل شود. لطفاً توجه داشته باشید که Region Biasing فقط نتایج داخل آن منطقه را ترجیح می‌دهد . شما همچنان می‌توانید نتایج خارج از منطقه را دریافت کنید.

  • API اعتبارسنجی آدرس - کد منطقه

    به همین ترتیب، API اعتبارسنجی آدرس در صورت ارسال کد ISO2 در درخواست، با استفاده از فیلد regionCode ، نتایج دقیق‌تری تولید می‌کند.

ذخیره سازی شناسه های مکان

برای ذخیره اطلاعات از پلتفرم نقشه‌های گوگل در مورد مکان برای درخواست‌های آینده، می‌توانید شناسه مکان را به طور نامحدود در پایگاه داده خود به عنوان یک ویژگی از مکان ذخیره کنید . شما فقط باید یک بار برای هر شناسه مکان درخواست یافتن مکان ارسال کنید. همچنین می‌توانید هر بار که کاربر جزئیات تراکنش را درخواست می‌کند، شناسه مکان را جستجو کنید.

برای اطمینان از اینکه همیشه به‌روزترین اطلاعات را دارید، شناسه‌های مکان را هر ۱۲ ماه یکبار با استفاده از درخواست جزئیات مکان با پارامتر place_id به‌روزرسانی کنید.

توجه : لطفاً حتماً راهنمای بهترین شیوه‌ها برای ژئوکدینگ را نیز مرور کنید.

نتیجه‌گیری

این سند تفاوت‌های اصلی بین APIهای اعتبارسنجی آدرس و ژئوکدینگ را شرح می‌دهد. به طور خلاصه، در موارد زیر استفاده از API اعتبارسنجی آدرس را در نظر بگیرید:

  • آدرس پستی دقیق، به ویژه برای اهداف تحویل، مورد نیاز است.
  • داده‌های ورودی از کیفیت پایینی برخوردارند. API اعتبارسنجی آدرس، خطاهای ورودی را با اغماض بیشتری بررسی می‌کند، اجزای آدرس غیرقابل تأیید را برجسته می‌کند و اصلاحاتی را در داده‌های ورودی انجام می‌دهد.
  • برای آدرس، اطلاعات بیشتری لازم است، مانند آدرس مسکونی در مقابل آدرس تجاری (در مناطق منتخب موجود است).

مراحل بعدی

گزارش بهبود پرداخت، تحویل و عملیات با آدرس‌های معتبر را دانلود کنید و وبینار بهبود پرداخت، تحویل و عملیات با اعتبارسنجی آدرس را مشاهده کنید.

مطالعه بیشتر پیشنهادی:

مشارکت‌کنندگان

گوگل این مقاله را نگهداری می‌کند. نویسندگان زیر در ابتدا آن را نوشته‌اند.

نویسندگان اصلی:

هنریک والو | مهندس راهکارها

توماس انگلارت | مهندس راهکارها

سرتاک گنگولی | مهندس راه حل