مكتبة Geopy هي مكتبة في لغة البرمجة بايثون متخصصة في الترميز الجغرافي تساعد في تحديد إحداثيات العناوين والمدن والبلدان والمعالم في جميع أنحاء العالم وذلك من خلال الربط مع مصادر الترميز الجغرافي المختلفة مثل: OpenStreetMap Nominatim و Google Geocoding API (V3) والتي يمكن الاطلاع عليها من خلال الرابط. حيث يمكن في البداية تثبيت الحزمة من خلال الكود:
In:
from geopy import geocoders
بعد ذلك يتم اعداد أداة تحديد الموقع الجغرافي (geolocator) كما يلي:
In: geolocator = geocoders.Nominatim(user_agent='myapplication')
حيث يمكن استبدال Nominatim بأي خدمة من مزودي تحديد المواقع الجغرافية الاخرى مثل خرائط Google، أو خرائط Bing، لمزيد من المعلومات استخدم الكود:
help(geocoders)
الان، يمكن تحديد الموقع الجغرافي من خلال الاستعلام عن العناوين والمدن والبلدان والمعالم من خلال الدالة:
geolocator.geocode(query, exactly_one, language, extratags, featuretype, ...)
حيث أن:
query | يمكن أن يكون شارع، مدينة، مقاطعة، ولاية، بلد أو رمز البريدي. |
exactly_one | عرض نتيجة واحدة أو قائمة من النتائج، الافتراضي (True) |
language | اللغة المفضلة التي سيتم عرض النتائج بها. |
extratags | لتضمين معلومات إضافية في النتيجة مثل رابط ويكيبيديا، ساعات العمل وغيرها. |
featuretype | يسمح بفلترة النتائج وفق بعض الخصائص مثل مبنى، مدينة او بلد وغيرها |
فمثلا يمكن تحديد احداثيات “برج المملكة” من خلال الكود:
In: location = geolocator.geocode('برج المملكة') print(location.latitude,location.longitude) Out: 24.71135095 46.674412069179105
او عنوانه من خلال الكود:
In: location = geolocator.geocode('برج المملكة') print(location.address) Out: برج المملكة, الملك فهد, العليا, بلدية العليا, محافظة الرياض, منطقة الرياض, 12214, السعودية
كذلك يمكن الحصول على البيانات للموقع الجغرافي:
In: location = geolocator.geocode('برج المملكة') print(location.raw) Out: {'place_id': 72000238, 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright', 'osm_type': 'way', 'osm_id': 264745922, 'lat': '24.71135095', 'lon': '46.674412069179105', 'class': 'building', 'type': 'commercial', 'place_rank': 30, 'importance': 0.44095611103381205, 'addresstype': 'building', 'name': 'برج المملكة', 'display_name': 'برج المملكة, الملك فهد, العليا, بلدية العليا, محافظة الرياض, منطقة الرياض, 12214, السعودية', 'boundingbox': ['24.7111133', '24.7115817', '46.6740278', '46.6747950']}
كما يمكن الحصول على نقطة تمثل خطوط الطول والعرض والارتفاع:
In: location = geolocator.geocode('برج المملكة') print(location.point) Out: 24 42m 40.8634s N, 46 40m 27.8834s E