خريطة الشارع المفتوحة (OpenStreetMap) والتي يرمز لها بالرمز (OSM) هي خريطة مفتوحة المصدر تم إطلاقها عام 2004 بواسطة ستيف كوست من المملكة المتحدة وهي عبارة عن مشروع تعاوني ويجمع بياناتها أكثر من مليون مستخدم مسجل وتدعم من خلال مؤسسة خريطة الشارع المفتوحة وهي مؤسسة غير ربحية. في هذا المقال سوف نعطي مقدمة عن آلية الإستفادة منها بواسطة لغة البرمجة آر R من خلال إتباع الخطوات التالية:
اولاً: تفعيل الحزم (packages) اللازمة
In:
library(osmdata)
library(sf)
library(ggmap)
حيث أن:
osmdata | استيراد بيانات “خريطة الشارع المفتوحة” كمعالم بسيطة أو كائنات مكانية. |
sf | دعم المعالم البسيطة (Simple Features) ، وهي طريقة موحدة لترميز البيانات المكاني. |
ggmap | تصوير البيانات المكانية وتعمل مع الحزمة ggplot2 المتخصصة في تصوير البيانات. |
ثانياً: يمكن معرفة المعالم (features) المكانية المتوفرة على الخريطة من خلال الدالة:
In:
available_features()
مثلاً، من ضمن المعالم “shop” والذي يحوي جميع تصنيفات المتاجر والتي يمكن يمكن الحصول عليها من خلال الدالة:
In:
available_tags("shop")
يمكن إستبدال “shop” بأي معلم (features) للحصول على تصنيفات مختلفة لكل المعالم.
ثالثاً: تحديد الموقع وإضافة المعالم الى استعلام (Overpass query)
In:
Place=c(left = 46.5, bottom = 24.5, right = 46.95, top = 24.85)
q = Place%>%
opq()%>%
add_osm_feature(key ="shop", value ="supermarket")
حيث تم الإستعلام عن محلات السوبرماركت (supermarket) ضمن المتاجر (shop) في مدينة الرياض. تم الإعتماد على خطوط الطول والعرض لأنها أكثر دقة من البحث بإستخدام أسم المدينة وأكثر مرونة في الإستعلام.
رابعاً: إرجاع الاستعلام على شكل كائن مكاني لخريطة الشارع المفتوحة وبتنسيق sf من خلال الدالة:
In:
Supermarket = osmdata_sf(q)
خامساً: تصوير البيانات المكانية على الخريطة بإستخدام الكود:
In:
bbox= Place
mad_map = get_map(bbox ,maptype = "terrain", force=TRUE, source = "osm")
ggmap(mad_map)+
geom_sf(data=Supermarket$osm_points,
inherit.aes =FALSE,
colour="#238443",
fill="#004529",
alpha=.5,
size=4,
shape=21)+
labs(x="longitude ",y="latitude")
حيث تكون النتيجة كما يلي: