عمل خرائط تفاعلية عن طريق البايثون باستخدام المكتبة folium


Folium 


هي احد المكتبات ذات الفعالية العالية والمستخدمة في بيئة البايثون لاظهار البيانات الجغرافية حيث يتم انشاء خرائط لاي مكان بالعالم بمعرفة قيم خطوط الطول والعرض .
والخرائط التي يتم انتاجها عبارة عن خرائط تفاعلية تستطيع التكبير والتصغير عليها والتحكم بالعرض 
يتم استخدام هذه المكتبة بالاضافة الي مكتبات اخرى مثل
Pandas ,numpy 
باجراء تحليلات احصائية ومعالجة جداول البيانات وايظهارها مباشرة علي الخريظة واخراج الخرائط 

تحميل   البيانات

  يتم  تحميل البيانات لمنطقة   برلين من موقع Airbnb  حيث يتم الحصول على طبقة  تحتوي مواقع الشقق المتاحة للإيجار والسعر  والمالك وغيرها من المعلومات ضمن منطقة برلين  وساقوم بعمل عرضين توضح بأي منطقة في برلين  تتركز الشقق المتاحة heatmap و خريطة تظهر عدد الشقق المتاحة ومواقعها MarkerCluster

الشقق المتاحة لمدينة برلين من الرابط التالية

نقوم بتحميل البيانات من الرابط التالي باختيار بيانات مدينة برلين
listings.csv الملف ذو الاسم

التقسيمات الادارة لبرلين


MarkerCluster


من العروض الجميلة للخرائط ويتم برمجته ببساطة عن طريق البايثون باستخدام المكتبة
folium
يستخدم عند عرض البيانات الكبيرة حيث يتم تقسيم البيانات إلى مجموعات حسب الموقع الجغرافي وإظهار عدد تكرار الظاهرة بالموقع الجغرافي وفق لون محدد وعند عمل تقريب علي الموقع الجغرافي يعمل على زيادة دقة التوزيع حسب درجة التقريب 

import  folium 
import geopandas as gpd
import numpy as  np
#from folium.plugins import HeatMap
from folium.plugins import MarkerCluster
#  ايضافة الطبقة 
m= gpd.read_file('C:\\Users\\marte\\Desktop\\bezirksgrenzen.shp\\prise.shp')
#  عمل   خلية تحتوي  الاحداثيات ضمن مصفوفة
m['lat']=m.geometry.x
m['lon']=m.geometry.y
point_array=m[['lon','lat']].values
# انشاء  الخريطة   
map4=folium.Map(location=[52.42,13.4],zoom_start=10,control_scale=True)
#  ايضافة طبقة للتقسمات  الادارية لبرلين 
One = gpd.read_file('C:\\Users\\marte\\Desktop\\bezirksgrenzen.shp')
folium.GeoJson(One).add_to(map4)
# MarkerCluster ايضافة الاحداثيات الي الخريطة   بنمط العرض 
marker_cluster=MarkerCluster().add_to(map4)
for  i  in range(0,len(m)):
    lat=m['lat'][i]
    lon=m['lon'][i]
    folium.RegularPolygonMarker(location=[lon,lat],fill_color='#2b8cb2',number_of_sides=6,radius=8).add_to(marker_cluster)
 # htmlحفظ الخريطة كملف    
map4.save(outfile= "MarkerCluster.html")  


Heatmap

الخرائط   الحرارية تستخدم لتوضيح  تركيز الظاهرة وتواترها في موقع معين     حيث يتم اختيار نصف قطر دائرة وضمن هذه الدائرة  يتم حساب عدد الشقق المتاحة للإيجار ضمن هذه الدائرة

import  folium 
import geopandas as gpd
import numpy as  np
from folium.plugins import HeatMap
# انشاء  الخريطة  
map3=folium.Map(location=[52.5,13.4],zoom_start=10,control_scale=True)
#  ايضافة البيانات   التي سيتم عرضها علي الخريطة
m= gpd.read_file('C:\\Users\\marte\\Desktop\\bezirksgrenzen.shp\\prise.shp'
#عمل خريطة حرارية  لاظهار المناطق  التي  تحتوي عدد  كبير من  الشقق المتاحة للايجار  
HeatMap(point_array,radius=11).add_to(map3)
 # htmlحفظ الخريطة كملف  
map3.save(outfile= "HeatMap.html") 
 

تستطيع تحسين العرض السابق من خلال توسيع الاكواد السابقة

كاتب المقال Martin Elia