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

المشرف العام

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

التعرف على بيئة الإدخال بواسطة المتصفح جوبيتر
قراءة 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

متابعة القراءة...
 
أعلى