عمل خرائط تفاعلية عن طريق البايثون باستخدام المكتبة 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

استخدام البايثون في تحليل البيانات المكانية

نقوم  بهذه الدرس  بعمل مدخل للبايثون في معالجة البيانات الجغرافية  باستخدام بعض التعليمات الضرورية حيث سأقوم بعرض بعض النقاط  المهمة 

التعرف على بيئة الإدخال  بواسطة المتصفح جوبيتر
قراءة shapefile  ضمن البايثون

اظهار البيانات المخزنة  ضمن الطبقة ونمط البيانات   ورسم الطبقة

طريقة   اختيار عناصر من  الطبقة

ايجاد   تقاطع بين  طبقتين مختلفتين

تصنيف الطبقة   وفق سمة معينة

حفظ   الطبقة  علي جهاز الكمبيوتر خاصتك

تغيير نظام الإسقاط  للطبقة

رسم طبقات  مختلفة معا 

Anaconda

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

Geopandas

 الحزمة  geopandas  هي حزمة مفتوحة المصدر  للتعامل مع البيانات الجيومكانية  وهي تعتبر توسيع للحزمة pandas

لتستطيع  التعامل مع البيانات الجغرافية   وهي تعتمد على بعض المكتبات الأخرى  مثل matplotlib , fiona

Fiona  تمكن البايثون من  قراءة بيانات نظام المعلومات الجغرافية الطبقات  وانظمة الإسقاط وتتوافق مع كل المكتبات التي يستخدمها البايثون لنظام المعلومات الجغرافية  

قم   بإضافة الحزمة  geopandas من   خلال كتابة الأمر التالي   ضمن anaconda prompt

conda install -c conda-forge geopandas 

نقوم بفتح انكوندا  فتظهر الواجهة البرمجية  كما في الصورة بالاسفل ومن  ثم نقوم بفتح جوبيتر لادخال الكود البرمجي

الكود البرمجي

نقوم   بايضافة   الحزمة Geopandas  ونكتب الامر pd.options.display.max_rows=10 لإظهار عشرة أسطر من الجدول اثناء عرض البيانات الجيومكانية على شكل جداول   

import geopandas  as gpd 
pd.options.display.max_rows=10


نقوم بتحميل طبقة  المدن الهامة في العالم وطبقة  دول العالم اضغط هنا
ونقوم بتحميل الطبقات

تحميل طبقة ضمن البايثون


#تحميل الطبقات 
Martin =gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_admin_0_countries_2\\ne_10m_admin_0_countries.shp')
City=gpd.read_file('C:\\Users\\marte\\Downloads\\Compressed\\ne_10m_populated_places\\ne_10m_populated_places.shp')

رسم الطبقة

تتيح   المكتبة  geopandas استخدام   matplotlib لصنع الخرائط  والاخراج بواسطة التعليمة  Polt

#  رسم طبقة 
Martin.plot()
City.plot()

اختيار عناصر من الطبقة

نقوم   باختيار دول شمال أفريقيا  ودول الشرق الاوسط ,كذلك سوريا والمغرب  الامثلة التالية تبين الاختيار بطرق مختلفة

#   اختيار عنصر من طبقة    
arab_country=Martin[Martin['REGION_WB']=='Middle East & North Africa']

Syria=Martin[Martin['ADMIN']=='Syria']

maroco=countries[countries['NAME_NL'].str.contains('Marokko')]

maroco.plot()
arab_country.plot()

عرض بيانات الطبقة ونمط البيانات

عن طريق التعليمة head  
نحصل على جدول  يحتوي على معلومات الطبقة بالإضافة إلى عمود للعناصر الجيومترية



City.head()


نحصل علي نمط البيانات من خلال التعليمة type



North_Africa.type
arab_country.type


لاختيار عواميد محدد من الطبقة   
حيث سأقوم  بعمل طبقة تحتوي علي الاسم  والقيم الهندسية


# اختيار   عواميد محددة  من  الحدول 
countries = arab_country[['geometry', 'NAME_NL']]
countries

التقاطع بين طبقتين

نقوم  باختيار المدن العربية التي تقع بالشرق الاوسط  وشمال افريقيا باستخدام التعليمة sjoin

#   اختيار  النقاط التي تقع ضمن المضلع 

arabcity=gpd.sjoin(City,arab_country,op='within')

#cities_with_country = geopandas.sjoin(cities, countries, how="inner", op='intersects')

تصنيف الطبقة وفق لسمة معينة

نقوم    بتصنيف الطبقة   وفق ل عمود معين من الصفات  ونستطيع التحكم بالألوان المستخدمة  واضافة دليل للتصنيف وعدد التصنيفات  والتحكم بالألوان والعرض في المثال التالي سأقوم فقط  بتصنيف الدول حسب الاسم لتظهر كل دولة بلون مختلف

 
#تصنيف  الطبقة وفق  عمود  محدد
arab_country.plot(column='ADMIN', figsize=(11,11))
 

تحويل نظام الاسقاط

نقوم باظهار العناصر الجيومترية لمدينة دمشق وهي عبارة عن الاحداثيات

Damascus=arabcity[arabcity['NAME_left']=='Damascus']
Damascus.geometry
area
0.0    POINT (36.29805003041707 33.50197985420613)
Name: geometry, dtype: object

نقوم   بتحويل طبقة   المدن العربية  إلى نظام الإسقاط  ميركاتور باستخدام الامر{ ‘crs = {‘init’ :’epsg:3857


arabcity.crs = {'init' :'epsg:3857'}
arabcity.crs
 

اعادة تسمية عمود السمات ضمن الطبقة

نقوم بإعادة تسمية العمود NAME_NL’   إلى الاسم Martin

#  اعادة  تسمية احد عواميد   الطبقة 
countries2 = countries.rename(columns={'NAME_NL':'martin'})
countries2.head()

حفظ الطبقة

نقوم بحفظ طبقة  المدن العربية على  شكل ملف json ضمن ال directory   


# حفظ طبقة 
arabcity.to_file('utput.json')

نقوم    بكتابة pwd    لمعرفة مسار الحفظ

رسم الطبقات معا

نقوم برسم  طبقة المدن وطبقة الدول العربية  معا ونقوم برسم المدن باللون الاحمر والبلدان باللون الاسود والتعبئة بلا لون ونقوم بضبط الامتداد  من خلال ax.set(xlim=(-16,65),ylim=(10,45))

#رسم عدة طبقات  معا 
ax=arab_country.plot(edgecolor='k',facecolor='none',figsize=(13,13))
arabcity.plot(ax=ax,color='red')
ax.set(xlim=(-16,65),ylim=(10,45))

في دروس لاحقة سيتم تنفيذ مشاريع كاملة باستخدام البايثون

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

توسيع برنامج ArcGIS برمجيا – ComboBox and Histogram

في هذا الدرس ستتعلم:

  • كيفية إضافة ComboBox ضمن toolbar في ArcGIS، وكيفية برمجة ComboBox.
  • إنشاء مخطط تواتر Histogram وتخزينه عن طريق مكتبة MatPlotLib في Python.

في هذا الدرس سنقوم بإضافة قائمتين منسدلتين ComboBox إحداهما لاختيار متابعة القراءة “توسيع برنامج ArcGIS برمجيا – ComboBox and Histogram”

توسيع برنامج ArcGIS برمجيا بواسطة Arcpy

في هذا الدرس ستتعلم:

  • إضافة خصائص Python API في برنامج ArcGIS .
  • كيفية إضافة toolbar في ArcGIS وإضافة أزرار يمكن برمجتها في الـ toolbar.
  • كيفية تصدير البيانات إلى اكسل عن طريق تصميم زر مخصص مبرمج بواسطة ArcPy.

تتيح إضافة Python API تعديل واجهة المستخدم في برنامج ArcMap، هذه الإضافة تسمح للمستخدم بإضافة تطبيقات يمكن برمجتها باستخدام لغة البرمجة Python على شكل أزرار يمكن وضعها في قوائم وشرائط أدوات متابعة القراءة “توسيع برنامج ArcGIS برمجيا بواسطة Arcpy”

تعلم البرمجة في برنامج ArcGIS – الدرس الثاني

الدرس الثاني:

في هذا الدرس ستتعلم:

  • استخدام arcpy خارج بيئة ArcGIS، من تطبيق IDLE الخاص ب Python27
  • قراءة البيانات الوصفية attribute
  • انشاء حلقات for بالاعتماد على البيانات الوصفية.

بإمكانك استخدام arcpy لجميع المهام التي تستطيع إنجازها في ArcGIS Desktop، لكن ما يميز استخدام arcpy عن انشاء toolbox في برنامج ArcGIS هو إمكانية تكرار الأوامر بشكل آلي It متابعة القراءة “تعلم البرمجة في برنامج ArcGIS – الدرس الثاني”

تعلم البرمجة في برنامج ArcGIS – الدرس الأول

في هذا الدرس ستتعلم

  • استخدام بايثون من داخل برنامج ArcGIS
  • اختيار Layer موجودة ضمن ملف mxd
  • إنشاء Layer جديدة حسب معيار معين.
  • أوامر الـخاصة بقائمة الـ geoprocessing مثل Merge، Dissolve، clip، buffer.
  • اجراء عملية اختيار بناء على البيانات الوصفية Selection by attributes.

متابعة القراءة “تعلم البرمجة في برنامج ArcGIS – الدرس الأول”

الدرس الأول – تعلم البرمجة للمبتدئين – Python

مرحبا بك في دورة تعلم البرمجة للمبتدئين:

رسوم الدورة:

هذه الدورة ليست مجانية والسعر هو نشر المعرفة وذلك عن طريق دعوة صديقين يودان البدأ بتعلم البرمجة للانضمام لنا عن طريق ذكرهم في التعليقات على صفحة الفيسبوك أو ارسال رابط الدورة لهم 🙂

لمن هذه الدورة:

لأي شخص يود البدء المحتوى لايفترض أي معرفة سابقة في البرمجة أي طلاب المدرسة أو الجامعة أو أي شخص يحب تعلم البرمجة بغض النظر عن العمر. البايثون أصبحت لغة البحث العلمي وهي مفيدة للباحثين من جميع الاختصاصات. بالاضافة الى كونها اللغة الأهم حاليا في تعلم الالة وتحليل البيانات الكبيرة. وأقتبس هنا Bjarne Stroustrup مخترع لغة الـ C++ حيث أدرجها ضمن اللغات الخمس التي يجب تعلمها يمكنك مشاهدة الفديو هنا.

متابعة القراءة “الدرس الأول – تعلم البرمجة للمبتدئين – Python”