در ادامهٔ کار طراحی سیستم آمارگیری از بازدید وبسایتها و در درگیری با چالش دادههای جغرافیایی بازدیدکنندگان چند باری به انحاء مختلف سرکار رفتم.
از آنجا که دیپسیک سرویس آنلاین رایگان و نامحدودی برای استخراج اطلاعات جغرافیایی از روی آیپی نمیشناخت به دنبال سرویسهای آفلاین رفتم (آنها که با یک دیتابیس آفلاین کار میکنند).
پیشنهاد اولیهٔ دیپسیک GeoLite2 از مکسمایند بود که مزیت مهمی هم دارد و آن ارائهٔ یک نوگت برای برنامهنویسان داتنت (منجمله اینجانب) بود.
همان اول کار برای نامنویسی در سایت مکسمایند و دریافت فایل دیتابیس به مشکل برخوردم (نفهمیدم مشکل از من بود یا از ایرانی بودنم بود یا از خود مکسمایند).
سراغ گزینهٔ دوم پیشنهادی یعنی DB-IP رفتم و تصمیم گرفتم فایل اکسل (CSV) منتشر شده توسط این سرویس را وارد دیتابیس برنامهام کنم و آیپیها را در آن بگردم.
پیادهسازی این روش پیچیده و سخت بود. اما در نهایت اتفاقی که افتاد این بود که نتایج تبدیل آیپی به کشور با استفاده از این سرویس کاملاً پرتوپلا بود. با وجود آن که عمدهٔ بازدیدکنندگان گنجور از ایران میآیند، ایران حتی در فهرست ۱۰ کشور برتر خروجی این سرویس نبود.
به گزینهٔ اول برگشتم. خوشبختانه یک سطر اطلاعات ورود به سایت مکسمایند را در سایت باگمینات پیدا کردم و با همان به آنچه میخواستم (آخرین دیتابیس شهرهای مکسمایند) دست پیدا کردم.
پیادهسازی پیدا کردن اطلاعات جغرافیایی از روی آیپی در این سرویس نسبتاً آسان بود و نتایج این بار معقول و نزدیک به واقعیت بودند.
گام بعدی که رابط کاربری نمایش اطلاعات جغرافیایی بود به کمک دیپسیک به سرعت به نتیجه رسید.
به مشکل عجیبی سر فرانسه برخوردم که بعداً فهمیدم که همان مشکل برای معدودی از کشورهای دیگر مثل نروژ وجود دارد. با وجود آن که تعداد قابل توجهی از بازدیدکنندگان طبق محاسبات سرویس من از فرانسه آمده بودند روی نقشه فرانسه را بدون بازدید نشان میداد. بعداً متوجه شدم که در دادههای نقشهها به دلیلی که دنبالش نگشتم کد ایزوی دو رقمی فرانسه را FR نزدهاند و برای پیدا کردن کشور از روی کد ایزو در سرویسی که من از آن استفاده کردهام به جای مراجعه به فیلدی به نام ISO_A2 به فیلد دیگری به نام ISO_A2_EH باید مراجعه میکردم (این را خودم و به کمک یار قدیمی -گوگل- فهمیدم و دیپسیک از یافتن و حل مشکل عاجز ماند).
خلاصه که فعلاً چالش استخراج دادههای جغرافیایی از روی آیپی حل شده به نظر میرسد: